Add default_shared_libs property
Building against a locally-built libc besides bionic requires setting
system_shared_libs to avoid circular dependencies, but modules all
over the tree assume that system_shared_libs only affects modules
building against bionic. Add a new default_shared_libs property
that applies to all modules, which will generally be set in
arch-specific clauses to only affect the desired set of modules.
Bug: 190084016
Test: m checkbuild
Change-Id: Ia2349d84c70e503916f90a5d2702e135248f73df
diff --git a/cc/library.go b/cc/library.go
index 95f9b0a..c0d1345 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -147,11 +147,12 @@
Cflags []string `android:"arch_variant"`
- Enabled *bool `android:"arch_variant"`
- Whole_static_libs []string `android:"arch_variant"`
- Static_libs []string `android:"arch_variant"`
- Shared_libs []string `android:"arch_variant"`
- System_shared_libs []string `android:"arch_variant"`
+ Enabled *bool `android:"arch_variant"`
+ Whole_static_libs []string `android:"arch_variant"`
+ Static_libs []string `android:"arch_variant"`
+ Shared_libs []string `android:"arch_variant"`
+ System_shared_libs []string `android:"arch_variant"`
+ Default_shared_libs []string `android:"arch_variant"`
Export_shared_lib_headers []string `android:"arch_variant"`
Export_static_lib_headers []string `android:"arch_variant"`
@@ -1156,11 +1157,17 @@
if library.StaticProperties.Static.System_shared_libs != nil {
library.baseLinker.Properties.System_shared_libs = library.StaticProperties.Static.System_shared_libs
}
+ if library.StaticProperties.Static.Default_shared_libs != nil {
+ library.baseLinker.Properties.Default_shared_libs = library.StaticProperties.Static.Default_shared_libs
+ }
} else if library.shared() {
// Compare with nil because an empty list needs to be propagated.
if library.SharedProperties.Shared.System_shared_libs != nil {
library.baseLinker.Properties.System_shared_libs = library.SharedProperties.Shared.System_shared_libs
}
+ if library.SharedProperties.Shared.Default_shared_libs != nil {
+ library.baseLinker.Properties.Default_shared_libs = library.SharedProperties.Shared.Default_shared_libs
+ }
}
deps = library.baseLinker.linkerDeps(ctx, deps)
@@ -1242,6 +1249,11 @@
} else {
specifiedDeps.systemSharedLibs = append(specifiedDeps.systemSharedLibs, properties.System_shared_libs...)
}
+ if specifiedDeps.defaultSharedLibs == nil {
+ specifiedDeps.defaultSharedLibs = properties.Default_shared_libs
+ } else {
+ specifiedDeps.defaultSharedLibs = append(specifiedDeps.defaultSharedLibs, properties.Default_shared_libs...)
+ }
specifiedDeps.sharedLibs = android.FirstUniqueStrings(specifiedDeps.sharedLibs)
if len(specifiedDeps.systemSharedLibs) > 0 {
@@ -1249,6 +1261,11 @@
// retained.
specifiedDeps.systemSharedLibs = android.FirstUniqueStrings(specifiedDeps.systemSharedLibs)
}
+ if len(specifiedDeps.defaultSharedLibs) > 0 {
+ // Skip this if defaultSharedLibs is either nil or [], to ensure they are
+ // retained.
+ specifiedDeps.defaultSharedLibs = android.FirstUniqueStrings(specifiedDeps.defaultSharedLibs)
+ }
return specifiedDeps
}