diff options
-rw-r--r-- | bp2build/cc_library_static_conversion_test.go | 33 | ||||
-rw-r--r-- | cc/bp2build.go | 16 |
2 files changed, 45 insertions, 4 deletions
diff --git a/bp2build/cc_library_static_conversion_test.go b/bp2build/cc_library_static_conversion_test.go index 0637ba2bc..316fa3e4c 100644 --- a/bp2build/cc_library_static_conversion_test.go +++ b/bp2build/cc_library_static_conversion_test.go @@ -1392,6 +1392,16 @@ func TestCcLibrarystatic_SystemSharedLibUsedAsDep(t *testing.T) { Description: "cc_library_static system_shared_lib empty for linux_bionic variant", Blueprint: soongCcLibraryStaticPreamble + simpleModuleDoNotConvertBp2build("cc_library", "libc") + ` + +cc_library { + name: "libm", + stubs: { + symbol_file: "libm.map.txt", + versions: ["current"], + }, + bazel_module: { bp2build_available: false }, +} + cc_library_static { name: "used_in_bionic_oses", target: { @@ -1414,7 +1424,20 @@ cc_library_static { cc_library_static { name: "keep_for_empty_system_shared_libs", shared_libs: ["libc"], - system_shared_libs: [], + system_shared_libs: [], + include_build_directory: false, +} + +cc_library_static { + name: "used_with_stubs", + shared_libs: ["libm"], + include_build_directory: false, +} + +cc_library_static { + name: "keep_with_stubs", + shared_libs: ["libm"], + system_shared_libs: [], include_build_directory: false, } `, @@ -1424,7 +1447,15 @@ cc_library_static { "implementation_dynamic_deps": `[":libc"]`, "system_dynamic_deps": `[]`, }), + MakeBazelTarget("cc_library_static", "keep_with_stubs", AttrNameToString{ + "implementation_dynamic_deps": `select({ + "//build/bazel/rules/apex:android-in_apex": [":libm_stub_libs_current"], + "//conditions:default": [":libm"], + })`, + "system_dynamic_deps": `[]`, + }), MakeBazelTarget("cc_library_static", "used_in_bionic_oses", AttrNameToString{}), + MakeBazelTarget("cc_library_static", "used_with_stubs", AttrNameToString{}), }, }) } diff --git a/cc/bp2build.go b/cc/bp2build.go index a2e0a31ce..e001d2489 100644 --- a/cc/bp2build.go +++ b/cc/bp2build.go @@ -36,6 +36,8 @@ const ( cppSrcPartition = "cpp" protoSrcPartition = "proto" aidlSrcPartition = "aidl" + + stubsSuffix = "_stub_libs_current" ) // staticOrSharedAttributes are the Bazel-ified versions of StaticOrSharedProperties -- @@ -935,7 +937,7 @@ func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversion stubLibLabels := []bazel.Label{} for _, l := range depsWithStubs { - l.Label = l.Label + "_stub_libs_current" + l.Label = l.Label + stubsSuffix stubLibLabels = append(stubLibLabels, l) } inApexSelectValue := la.implementationDynamicDeps.SelectValue(bazel.OsAndInApexAxis, bazel.AndroidAndInApex) @@ -1096,12 +1098,20 @@ func (la *linkerAttributes) finalize(ctx android.BazelConversionPathContext) { if la.systemDynamicDeps.IsNil() && len(la.usedSystemDynamicDepAsDynamicDep) > 0 { toRemove := bazelLabelForSharedDeps(ctx, android.SortedStringKeys(la.usedSystemDynamicDepAsDynamicDep)) la.dynamicDeps.Exclude(bazel.NoConfigAxis, "", toRemove) - la.implementationDynamicDeps.Exclude(bazel.NoConfigAxis, "", toRemove) - la.implementationDynamicDeps.Exclude(bazel.NoConfigAxis, "", toRemove) la.dynamicDeps.Exclude(bazel.OsConfigurationAxis, "android", toRemove) la.dynamicDeps.Exclude(bazel.OsConfigurationAxis, "linux_bionic", toRemove) + la.implementationDynamicDeps.Exclude(bazel.NoConfigAxis, "", toRemove) la.implementationDynamicDeps.Exclude(bazel.OsConfigurationAxis, "android", toRemove) la.implementationDynamicDeps.Exclude(bazel.OsConfigurationAxis, "linux_bionic", toRemove) + + la.implementationDynamicDeps.Exclude(bazel.OsAndInApexAxis, bazel.ConditionsDefaultConfigKey, toRemove) + la.implementationDynamicDeps.Exclude(bazel.OsAndInApexAxis, bazel.AndroidAndNonApex, toRemove) + stubsToRemove := make([]bazel.Label, 0, len(la.usedSystemDynamicDepAsDynamicDep)) + for _, lib := range toRemove.Includes { + lib.Label += stubsSuffix + stubsToRemove = append(stubsToRemove, lib) + } + la.implementationDynamicDeps.Exclude(bazel.OsAndInApexAxis, bazel.AndroidAndInApex, bazel.MakeLabelList(stubsToRemove)) } la.deps.ResolveExcludes() |