Merge "Add exclude_* properties to apex arch-specific properties"
This commit is contained in:
87
apex/apex.go
87
apex/apex.go
@@ -225,7 +225,7 @@ type ApexNativeDependencies struct {
|
|||||||
// List of JNI libraries that are embedded inside this APEX.
|
// List of JNI libraries that are embedded inside this APEX.
|
||||||
Jni_libs []string
|
Jni_libs []string
|
||||||
|
|
||||||
// List of rust dyn libraries
|
// List of rust dyn libraries that are embedded inside this APEX.
|
||||||
Rust_dyn_libs []string
|
Rust_dyn_libs []string
|
||||||
|
|
||||||
// List of native executables that are embedded inside this APEX.
|
// List of native executables that are embedded inside this APEX.
|
||||||
@@ -236,6 +236,41 @@ type ApexNativeDependencies struct {
|
|||||||
|
|
||||||
// List of filesystem images that are embedded inside this APEX bundle.
|
// List of filesystem images that are embedded inside this APEX bundle.
|
||||||
Filesystems []string
|
Filesystems []string
|
||||||
|
|
||||||
|
// List of native libraries to exclude from this APEX.
|
||||||
|
Exclude_native_shared_libs []string
|
||||||
|
|
||||||
|
// List of JNI libraries to exclude from this APEX.
|
||||||
|
Exclude_jni_libs []string
|
||||||
|
|
||||||
|
// List of rust dyn libraries to exclude from this APEX.
|
||||||
|
Exclude_rust_dyn_libs []string
|
||||||
|
|
||||||
|
// List of native executables to exclude from this APEX.
|
||||||
|
Exclude_binaries []string
|
||||||
|
|
||||||
|
// List of native tests to exclude from this APEX.
|
||||||
|
Exclude_tests []string
|
||||||
|
|
||||||
|
// List of filesystem images to exclude from this APEX bundle.
|
||||||
|
Exclude_filesystems []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Merge combines another ApexNativeDependencies into this one
|
||||||
|
func (a *ApexNativeDependencies) Merge(b ApexNativeDependencies) {
|
||||||
|
a.Native_shared_libs = append(a.Native_shared_libs, b.Native_shared_libs...)
|
||||||
|
a.Jni_libs = append(a.Jni_libs, b.Jni_libs...)
|
||||||
|
a.Rust_dyn_libs = append(a.Rust_dyn_libs, b.Rust_dyn_libs...)
|
||||||
|
a.Binaries = append(a.Binaries, b.Binaries...)
|
||||||
|
a.Tests = append(a.Tests, b.Tests...)
|
||||||
|
a.Filesystems = append(a.Filesystems, b.Filesystems...)
|
||||||
|
|
||||||
|
a.Exclude_native_shared_libs = append(a.Exclude_native_shared_libs, b.Exclude_native_shared_libs...)
|
||||||
|
a.Exclude_jni_libs = append(a.Exclude_jni_libs, b.Exclude_jni_libs...)
|
||||||
|
a.Exclude_rust_dyn_libs = append(a.Exclude_rust_dyn_libs, b.Exclude_rust_dyn_libs...)
|
||||||
|
a.Exclude_binaries = append(a.Exclude_binaries, b.Exclude_binaries...)
|
||||||
|
a.Exclude_tests = append(a.Exclude_tests, b.Exclude_tests...)
|
||||||
|
a.Exclude_filesystems = append(a.Exclude_filesystems, b.Exclude_filesystems...)
|
||||||
}
|
}
|
||||||
|
|
||||||
type apexMultilibProperties struct {
|
type apexMultilibProperties struct {
|
||||||
@@ -675,12 +710,18 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext, nativeM
|
|||||||
// Use *FarVariation* to be able to depend on modules having conflicting variations with
|
// Use *FarVariation* to be able to depend on modules having conflicting variations with
|
||||||
// this module. This is required since arch variant of an APEX bundle is 'common' but it is
|
// this module. This is required since arch variant of an APEX bundle is 'common' but it is
|
||||||
// 'arm' or 'arm64' for native shared libs.
|
// 'arm' or 'arm64' for native shared libs.
|
||||||
ctx.AddFarVariationDependencies(binVariations, executableTag, nativeModules.Binaries...)
|
ctx.AddFarVariationDependencies(binVariations, executableTag,
|
||||||
ctx.AddFarVariationDependencies(binVariations, testTag, nativeModules.Tests...)
|
android.RemoveListFromList(nativeModules.Binaries, nativeModules.Exclude_binaries)...)
|
||||||
ctx.AddFarVariationDependencies(libVariations, jniLibTag, nativeModules.Jni_libs...)
|
ctx.AddFarVariationDependencies(binVariations, testTag,
|
||||||
ctx.AddFarVariationDependencies(libVariations, sharedLibTag, nativeModules.Native_shared_libs...)
|
android.RemoveListFromList(nativeModules.Tests, nativeModules.Exclude_tests)...)
|
||||||
ctx.AddFarVariationDependencies(rustLibVariations, sharedLibTag, nativeModules.Rust_dyn_libs...)
|
ctx.AddFarVariationDependencies(libVariations, jniLibTag,
|
||||||
ctx.AddFarVariationDependencies(target.Variations(), fsTag, nativeModules.Filesystems...)
|
android.RemoveListFromList(nativeModules.Jni_libs, nativeModules.Exclude_jni_libs)...)
|
||||||
|
ctx.AddFarVariationDependencies(libVariations, sharedLibTag,
|
||||||
|
android.RemoveListFromList(nativeModules.Native_shared_libs, nativeModules.Exclude_native_shared_libs)...)
|
||||||
|
ctx.AddFarVariationDependencies(rustLibVariations, sharedLibTag,
|
||||||
|
android.RemoveListFromList(nativeModules.Rust_dyn_libs, nativeModules.Exclude_rust_dyn_libs)...)
|
||||||
|
ctx.AddFarVariationDependencies(target.Variations(), fsTag,
|
||||||
|
android.RemoveListFromList(nativeModules.Filesystems, nativeModules.Exclude_filesystems)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) {
|
func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) {
|
||||||
@@ -748,12 +789,12 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
var depsList []ApexNativeDependencies
|
var deps ApexNativeDependencies
|
||||||
|
|
||||||
// Add native modules targeting both ABIs. When multilib.* is omitted for
|
// Add native modules targeting both ABIs. When multilib.* is omitted for
|
||||||
// native_shared_libs/jni_libs/tests, it implies multilib.both
|
// native_shared_libs/jni_libs/tests, it implies multilib.both
|
||||||
depsList = append(depsList, a.properties.Multilib.Both)
|
deps.Merge(a.properties.Multilib.Both)
|
||||||
depsList = append(depsList, ApexNativeDependencies{
|
deps.Merge(ApexNativeDependencies{
|
||||||
Native_shared_libs: a.properties.Native_shared_libs,
|
Native_shared_libs: a.properties.Native_shared_libs,
|
||||||
Tests: a.properties.Tests,
|
Tests: a.properties.Tests,
|
||||||
Jni_libs: a.properties.Jni_libs,
|
Jni_libs: a.properties.Jni_libs,
|
||||||
@@ -764,8 +805,8 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||||||
// binaries, it implies multilib.first
|
// binaries, it implies multilib.first
|
||||||
isPrimaryAbi := i == 0
|
isPrimaryAbi := i == 0
|
||||||
if isPrimaryAbi {
|
if isPrimaryAbi {
|
||||||
depsList = append(depsList, a.properties.Multilib.First)
|
deps.Merge(a.properties.Multilib.First)
|
||||||
depsList = append(depsList, ApexNativeDependencies{
|
deps.Merge(ApexNativeDependencies{
|
||||||
Native_shared_libs: nil,
|
Native_shared_libs: nil,
|
||||||
Tests: nil,
|
Tests: nil,
|
||||||
Jni_libs: nil,
|
Jni_libs: nil,
|
||||||
@@ -776,34 +817,32 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||||||
// Add native modules targeting either 32-bit or 64-bit ABI
|
// Add native modules targeting either 32-bit or 64-bit ABI
|
||||||
switch target.Arch.ArchType.Multilib {
|
switch target.Arch.ArchType.Multilib {
|
||||||
case "lib32":
|
case "lib32":
|
||||||
depsList = append(depsList, a.properties.Multilib.Lib32)
|
deps.Merge(a.properties.Multilib.Lib32)
|
||||||
depsList = append(depsList, a.properties.Multilib.Prefer32)
|
deps.Merge(a.properties.Multilib.Prefer32)
|
||||||
case "lib64":
|
case "lib64":
|
||||||
depsList = append(depsList, a.properties.Multilib.Lib64)
|
deps.Merge(a.properties.Multilib.Lib64)
|
||||||
if !has32BitTarget {
|
if !has32BitTarget {
|
||||||
depsList = append(depsList, a.properties.Multilib.Prefer32)
|
deps.Merge(a.properties.Multilib.Prefer32)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add native modules targeting a specific arch variant
|
// Add native modules targeting a specific arch variant
|
||||||
switch target.Arch.ArchType {
|
switch target.Arch.ArchType {
|
||||||
case android.Arm:
|
case android.Arm:
|
||||||
depsList = append(depsList, a.archProperties.Arch.Arm.ApexNativeDependencies)
|
deps.Merge(a.archProperties.Arch.Arm.ApexNativeDependencies)
|
||||||
case android.Arm64:
|
case android.Arm64:
|
||||||
depsList = append(depsList, a.archProperties.Arch.Arm64.ApexNativeDependencies)
|
deps.Merge(a.archProperties.Arch.Arm64.ApexNativeDependencies)
|
||||||
case android.Riscv64:
|
case android.Riscv64:
|
||||||
depsList = append(depsList, a.archProperties.Arch.Riscv64.ApexNativeDependencies)
|
deps.Merge(a.archProperties.Arch.Riscv64.ApexNativeDependencies)
|
||||||
case android.X86:
|
case android.X86:
|
||||||
depsList = append(depsList, a.archProperties.Arch.X86.ApexNativeDependencies)
|
deps.Merge(a.archProperties.Arch.X86.ApexNativeDependencies)
|
||||||
case android.X86_64:
|
case android.X86_64:
|
||||||
depsList = append(depsList, a.archProperties.Arch.X86_64.ApexNativeDependencies)
|
deps.Merge(a.archProperties.Arch.X86_64.ApexNativeDependencies)
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("unsupported arch %v\n", ctx.Arch().ArchType))
|
panic(fmt.Errorf("unsupported arch %v\n", ctx.Arch().ArchType))
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, d := range depsList {
|
addDependenciesForNativeModules(ctx, deps, target, imageVariation)
|
||||||
addDependenciesForNativeModules(ctx, d, target, imageVariation)
|
|
||||||
}
|
|
||||||
ctx.AddFarVariationDependencies([]blueprint.Variation{
|
ctx.AddFarVariationDependencies([]blueprint.Variation{
|
||||||
{Mutator: "os", Variation: target.OsVariation()},
|
{Mutator: "os", Variation: target.OsVariation()},
|
||||||
{Mutator: "arch", Variation: target.ArchVariation()},
|
{Mutator: "arch", Variation: target.ArchVariation()},
|
||||||
|
@@ -4399,12 +4399,15 @@ func TestApexWithArch(t *testing.T) {
|
|||||||
name: "myapex",
|
name: "myapex",
|
||||||
key: "myapex.key",
|
key: "myapex.key",
|
||||||
updatable: false,
|
updatable: false,
|
||||||
|
native_shared_libs: ["mylib.generic"],
|
||||||
arch: {
|
arch: {
|
||||||
arm64: {
|
arm64: {
|
||||||
native_shared_libs: ["mylib.arm64"],
|
native_shared_libs: ["mylib.arm64"],
|
||||||
|
exclude_native_shared_libs: ["mylib.generic"],
|
||||||
},
|
},
|
||||||
x86_64: {
|
x86_64: {
|
||||||
native_shared_libs: ["mylib.x64"],
|
native_shared_libs: ["mylib.x64"],
|
||||||
|
exclude_native_shared_libs: ["mylib.generic"],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4415,6 +4418,18 @@ func TestApexWithArch(t *testing.T) {
|
|||||||
private_key: "testkey.pem",
|
private_key: "testkey.pem",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cc_library {
|
||||||
|
name: "mylib.generic",
|
||||||
|
srcs: ["mylib.cpp"],
|
||||||
|
system_shared_libs: [],
|
||||||
|
stl: "none",
|
||||||
|
// TODO: remove //apex_available:platform
|
||||||
|
apex_available: [
|
||||||
|
"//apex_available:platform",
|
||||||
|
"myapex",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
cc_library {
|
cc_library {
|
||||||
name: "mylib.arm64",
|
name: "mylib.arm64",
|
||||||
srcs: ["mylib.cpp"],
|
srcs: ["mylib.cpp"],
|
||||||
@@ -4445,6 +4460,7 @@ func TestApexWithArch(t *testing.T) {
|
|||||||
|
|
||||||
// Ensure that apex variant is created for the direct dep
|
// Ensure that apex variant is created for the direct dep
|
||||||
ensureListContains(t, ctx.ModuleVariantsForTests("mylib.arm64"), "android_arm64_armv8-a_shared_apex10000")
|
ensureListContains(t, ctx.ModuleVariantsForTests("mylib.arm64"), "android_arm64_armv8-a_shared_apex10000")
|
||||||
|
ensureListNotContains(t, ctx.ModuleVariantsForTests("mylib.generic"), "android_arm64_armv8-a_shared_apex10000")
|
||||||
ensureListNotContains(t, ctx.ModuleVariantsForTests("mylib.x64"), "android_arm64_armv8-a_shared_apex10000")
|
ensureListNotContains(t, ctx.ModuleVariantsForTests("mylib.x64"), "android_arm64_armv8-a_shared_apex10000")
|
||||||
|
|
||||||
// Ensure that both direct and indirect deps are copied into apex
|
// Ensure that both direct and indirect deps are copied into apex
|
||||||
|
Reference in New Issue
Block a user