Improve handling of generated include dirs am: 57b9e1da75
am: 8f2425e6b4
Change-Id: I5f1c7edb44b3cc4827895587ffc4aa902f725f00
This commit is contained in:
@@ -512,8 +512,12 @@ func inPathList(p Path, list []Path) bool {
|
||||
}
|
||||
|
||||
func FilterPathList(list []Path, filter []Path) (remainder []Path, filtered []Path) {
|
||||
return FilterPathListPredicate(list, func(p Path) bool { return inPathList(p, filter) })
|
||||
}
|
||||
|
||||
func FilterPathListPredicate(list []Path, predicate func(Path) bool) (remainder []Path, filtered []Path) {
|
||||
for _, l := range list {
|
||||
if inPathList(l, filter) {
|
||||
if predicate(l) {
|
||||
filtered = append(filtered, l)
|
||||
} else {
|
||||
remainder = append(remainder, l)
|
||||
|
@@ -1497,14 +1497,20 @@ func (mt *librarySdkMemberType) organizeVariants(member android.SdkMember) *nati
|
||||
for _, variant := range member.Variants() {
|
||||
ccModule := variant.(*Module)
|
||||
|
||||
// Separate out the generated include dirs (which are arch specific) from the
|
||||
// include dirs (which may not be).
|
||||
exportedIncludeDirs, exportedGeneratedIncludeDirs := android.FilterPathListPredicate(
|
||||
ccModule.ExportedIncludeDirs(), isGeneratedHeaderDirectory)
|
||||
|
||||
info.archVariantProperties = append(info.archVariantProperties, nativeLibInfoProperties{
|
||||
name: memberName,
|
||||
archType: ccModule.Target().Arch.ArchType.String(),
|
||||
ExportedIncludeDirs: ccModule.ExportedIncludeDirs(),
|
||||
ExportedSystemIncludeDirs: ccModule.ExportedSystemIncludeDirs(),
|
||||
ExportedFlags: ccModule.ExportedFlags(),
|
||||
exportedGeneratedHeaders: ccModule.ExportedGeneratedHeaders(),
|
||||
outputFile: ccModule.OutputFile().Path(),
|
||||
name: memberName,
|
||||
archType: ccModule.Target().Arch.ArchType.String(),
|
||||
ExportedIncludeDirs: exportedIncludeDirs,
|
||||
ExportedGeneratedIncludeDirs: exportedGeneratedIncludeDirs,
|
||||
ExportedSystemIncludeDirs: ccModule.ExportedSystemIncludeDirs(),
|
||||
ExportedFlags: ccModule.ExportedFlags(),
|
||||
exportedGeneratedHeaders: ccModule.ExportedGeneratedHeaders(),
|
||||
outputFile: ccModule.OutputFile().Path(),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1518,6 +1524,11 @@ func (mt *librarySdkMemberType) organizeVariants(member android.SdkMember) *nati
|
||||
return info
|
||||
}
|
||||
|
||||
func isGeneratedHeaderDirectory(p android.Path) bool {
|
||||
_, gen := p.(android.WritablePath)
|
||||
return gen
|
||||
}
|
||||
|
||||
// Extract common properties from a slice of property structures of the same type.
|
||||
//
|
||||
// All the property structures must be of the same type.
|
||||
@@ -1580,16 +1591,11 @@ func extractCommonProperties(commonProperties interface{}, inputPropertiesSlice
|
||||
func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *nativeLibInfo, builder android.SnapshotBuilder, member android.SdkMember) {
|
||||
// a function for emitting include dirs
|
||||
addExportedDirCopyCommandsForNativeLibs := func(lib nativeLibInfoProperties) {
|
||||
// Do not include ExportedGeneratedIncludeDirs in the list of directories whose
|
||||
// contents are copied as they are copied from exportedGeneratedHeaders below.
|
||||
includeDirs := lib.ExportedIncludeDirs
|
||||
includeDirs = append(includeDirs, lib.ExportedSystemIncludeDirs...)
|
||||
if len(includeDirs) == 0 {
|
||||
return
|
||||
}
|
||||
for _, dir := range includeDirs {
|
||||
if _, gen := dir.(android.WritablePath); gen {
|
||||
// generated headers are copied via exportedGeneratedHeaders. See below.
|
||||
continue
|
||||
}
|
||||
// lib.ArchType is "" for common properties.
|
||||
targetDir := filepath.Join(lib.archType, nativeIncludeDir)
|
||||
|
||||
@@ -1676,13 +1682,14 @@ func nativeIncludeDirPathsFor(lib nativeLibInfoProperties, systemInclude bool) [
|
||||
var result []string
|
||||
var includeDirs []android.Path
|
||||
if !systemInclude {
|
||||
includeDirs = lib.ExportedIncludeDirs
|
||||
// Include the generated include dirs in the exported include dirs.
|
||||
includeDirs = append(lib.ExportedIncludeDirs, lib.ExportedGeneratedIncludeDirs...)
|
||||
} else {
|
||||
includeDirs = lib.ExportedSystemIncludeDirs
|
||||
}
|
||||
for _, dir := range includeDirs {
|
||||
var path string
|
||||
if _, gen := dir.(android.WritablePath); gen {
|
||||
if isGeneratedHeaderDirectory(dir) {
|
||||
path = filepath.Join(nativeGeneratedIncludeDir, lib.name)
|
||||
} else {
|
||||
path = filepath.Join(nativeIncludeDir, dir.String())
|
||||
@@ -1707,9 +1714,10 @@ type nativeLibInfoProperties struct {
|
||||
// This is "" for common properties.
|
||||
archType string
|
||||
|
||||
ExportedIncludeDirs android.Paths
|
||||
ExportedSystemIncludeDirs android.Paths
|
||||
ExportedFlags []string
|
||||
ExportedIncludeDirs android.Paths
|
||||
ExportedGeneratedIncludeDirs android.Paths
|
||||
ExportedSystemIncludeDirs android.Paths
|
||||
ExportedFlags []string
|
||||
|
||||
// exportedGeneratedHeaders is not exported as if set it is always arch specific.
|
||||
exportedGeneratedHeaders android.Paths
|
||||
|
@@ -288,20 +288,15 @@ func TestSnapshotWithCcSharedLibrary(t *testing.T) {
|
||||
cc_prebuilt_library_shared {
|
||||
name: "mysdk_mynativelib@current",
|
||||
sdk_member_name: "mynativelib",
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
arm64: {
|
||||
srcs: ["arm64/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"arm64/include/include",
|
||||
"arm64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm64/include_gen/mynativelib"],
|
||||
},
|
||||
arm: {
|
||||
srcs: ["arm/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"arm/include/include",
|
||||
"arm/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -311,20 +306,15 @@ cc_prebuilt_library_shared {
|
||||
cc_prebuilt_library_shared {
|
||||
name: "mynativelib",
|
||||
prefer: false,
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
arm64: {
|
||||
srcs: ["arm64/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"arm64/include/include",
|
||||
"arm64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm64/include_gen/mynativelib"],
|
||||
},
|
||||
arm: {
|
||||
srcs: ["arm/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"arm/include/include",
|
||||
"arm/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -337,13 +327,12 @@ sdk_snapshot {
|
||||
}
|
||||
`),
|
||||
checkAllCopyRules(`
|
||||
include/Test.h -> include/include/Test.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_shared/mynativelib.so -> arm64/lib/mynativelib.so
|
||||
include/Test.h -> arm64/include/include/Test.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/mynativelib.so -> arm/lib/mynativelib.so
|
||||
include/Test.h -> arm/include/include/Test.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
@@ -389,20 +378,15 @@ cc_prebuilt_library_shared {
|
||||
sdk_member_name: "mynativelib",
|
||||
device_supported: false,
|
||||
host_supported: true,
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
x86_64: {
|
||||
srcs: ["x86_64/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"x86_64/include/include",
|
||||
"x86_64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86_64/include_gen/mynativelib"],
|
||||
},
|
||||
x86: {
|
||||
srcs: ["x86/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"x86/include/include",
|
||||
"x86/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -414,20 +398,15 @@ cc_prebuilt_library_shared {
|
||||
prefer: false,
|
||||
device_supported: false,
|
||||
host_supported: true,
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
x86_64: {
|
||||
srcs: ["x86_64/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"x86_64/include/include",
|
||||
"x86_64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86_64/include_gen/mynativelib"],
|
||||
},
|
||||
x86: {
|
||||
srcs: ["x86/lib/mynativelib.so"],
|
||||
export_include_dirs: [
|
||||
"x86/include/include",
|
||||
"x86/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -442,13 +421,12 @@ sdk_snapshot {
|
||||
}
|
||||
`),
|
||||
checkAllCopyRules(`
|
||||
include/Test.h -> include/include/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
|
||||
include/Test.h -> x86_64/include/include/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
|
||||
include/Test.h -> x86/include/include/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
@@ -485,20 +463,15 @@ func TestSnapshotWithCcStaticLibrary(t *testing.T) {
|
||||
cc_prebuilt_library_static {
|
||||
name: "mysdk_mynativelib@current",
|
||||
sdk_member_name: "mynativelib",
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
arm64: {
|
||||
srcs: ["arm64/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"arm64/include/include",
|
||||
"arm64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm64/include_gen/mynativelib"],
|
||||
},
|
||||
arm: {
|
||||
srcs: ["arm/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"arm/include/include",
|
||||
"arm/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -508,20 +481,15 @@ cc_prebuilt_library_static {
|
||||
cc_prebuilt_library_static {
|
||||
name: "mynativelib",
|
||||
prefer: false,
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
arm64: {
|
||||
srcs: ["arm64/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"arm64/include/include",
|
||||
"arm64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm64/include_gen/mynativelib"],
|
||||
},
|
||||
arm: {
|
||||
srcs: ["arm/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"arm/include/include",
|
||||
"arm/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["arm/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -534,13 +502,12 @@ sdk_snapshot {
|
||||
}
|
||||
`),
|
||||
checkAllCopyRules(`
|
||||
include/Test.h -> include/include/Test.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_static/mynativelib.a -> arm64/lib/mynativelib.a
|
||||
include/Test.h -> arm64/include/include/Test.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/android_arm64_armv8-a_core_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/mynativelib.a -> arm/lib/mynativelib.a
|
||||
include/Test.h -> arm/include/include/Test.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
@@ -586,20 +553,15 @@ cc_prebuilt_library_static {
|
||||
sdk_member_name: "mynativelib",
|
||||
device_supported: false,
|
||||
host_supported: true,
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
x86_64: {
|
||||
srcs: ["x86_64/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"x86_64/include/include",
|
||||
"x86_64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86_64/include_gen/mynativelib"],
|
||||
},
|
||||
x86: {
|
||||
srcs: ["x86/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"x86/include/include",
|
||||
"x86/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -611,20 +573,15 @@ cc_prebuilt_library_static {
|
||||
prefer: false,
|
||||
device_supported: false,
|
||||
host_supported: true,
|
||||
export_include_dirs: ["include/include"],
|
||||
arch: {
|
||||
x86_64: {
|
||||
srcs: ["x86_64/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"x86_64/include/include",
|
||||
"x86_64/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86_64/include_gen/mynativelib"],
|
||||
},
|
||||
x86: {
|
||||
srcs: ["x86/lib/mynativelib.a"],
|
||||
export_include_dirs: [
|
||||
"x86/include/include",
|
||||
"x86/include_gen/mynativelib",
|
||||
],
|
||||
export_include_dirs: ["x86/include_gen/mynativelib"],
|
||||
},
|
||||
},
|
||||
stl: "none",
|
||||
@@ -639,13 +596,12 @@ sdk_snapshot {
|
||||
}
|
||||
`),
|
||||
checkAllCopyRules(`
|
||||
include/Test.h -> include/include/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
|
||||
include/Test.h -> x86_64/include/include/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
|
||||
include/Test.h -> x86/include/include/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
|
||||
.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
|
||||
|
Reference in New Issue
Block a user