Merge "Allowlist libservices"
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index 704eda4..9700f8b 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -85,6 +85,7 @@
"development/apps/DevelopmentSettings": Bp2BuildDefaultTrue,
"development/apps/Fallback": Bp2BuildDefaultTrue,
"development/apps/WidgetPreview": Bp2BuildDefaultTrue,
+ "development/python-packages/adb": Bp2BuildDefaultTrueRecursively,
"development/samples/BasicGLSurfaceView": Bp2BuildDefaultTrue,
"development/samples/BluetoothChat": Bp2BuildDefaultTrue,
"development/samples/BrokenKeyDerivation": Bp2BuildDefaultTrue,
@@ -755,6 +756,10 @@
"CaptivePortalLogin",
"libstagefright_headers",
+
+ // aidl
+ "aidl",
+ "libaidl-common",
}
Bp2buildModuleTypeAlwaysConvertList = []string{
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 6ca5afb..c1d80a3 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -1368,6 +1368,8 @@
cc_library {
name: "mylib",
srcs: ["mylib.cpp"],
+ static_libs: ["libstatic"],
+ shared_libs: ["libshared"],
runtime_libs: ["libfoo", "libbar"],
system_shared_libs: [],
stl: "none",
@@ -1392,6 +1394,39 @@
apex_available: [ "myapex" ],
}
+ cc_library {
+ name: "libstatic",
+ srcs: ["mylib.cpp"],
+ system_shared_libs: [],
+ stl: "none",
+ apex_available: [ "myapex" ],
+ runtime_libs: ["libstatic_to_runtime"],
+ }
+
+ cc_library {
+ name: "libshared",
+ srcs: ["mylib.cpp"],
+ system_shared_libs: [],
+ stl: "none",
+ apex_available: [ "myapex" ],
+ runtime_libs: ["libshared_to_runtime"],
+ }
+
+ cc_library {
+ name: "libstatic_to_runtime",
+ srcs: ["mylib.cpp"],
+ system_shared_libs: [],
+ stl: "none",
+ apex_available: [ "myapex" ],
+ }
+
+ cc_library {
+ name: "libshared_to_runtime",
+ srcs: ["mylib.cpp"],
+ system_shared_libs: [],
+ stl: "none",
+ apex_available: [ "myapex" ],
+ }
`)
apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule")
@@ -1405,11 +1440,14 @@
// Ensure that runtime_libs dep in included
ensureContains(t, copyCmds, "image.apex/lib64/libbar.so")
+ ensureContains(t, copyCmds, "image.apex/lib64/libshared.so")
+ ensureContains(t, copyCmds, "image.apex/lib64/libshared_to_runtime.so")
+
+ ensureNotContains(t, copyCmds, "image.apex/lib64/libstatic_to_runtime.so")
apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule")
ensureListEmpty(t, names(apexManifestRule.Args["provideNativeLibs"]))
ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libfoo.so")
-
}
var prepareForTestOfRuntimeApexWithHwasan = android.GroupFixturePreparers(
@@ -6541,6 +6579,72 @@
}`)
}
+func TestApexAvailable_IndirectStaticDep(t *testing.T) {
+ testApex(t, `
+ apex {
+ name: "myapex",
+ key: "myapex.key",
+ native_shared_libs: ["libfoo"],
+ updatable: false,
+ }
+
+ apex_key {
+ name: "myapex.key",
+ public_key: "testkey.avbpubkey",
+ private_key: "testkey.pem",
+ }
+
+ cc_library {
+ name: "libfoo",
+ stl: "none",
+ static_libs: ["libbar"],
+ system_shared_libs: [],
+ apex_available: ["myapex"],
+ }
+
+ cc_library {
+ name: "libbar",
+ stl: "none",
+ shared_libs: ["libbaz"],
+ system_shared_libs: [],
+ apex_available: ["myapex"],
+ }
+
+ cc_library {
+ name: "libbaz",
+ stl: "none",
+ system_shared_libs: [],
+ }`)
+
+ testApexError(t, `requires "libbar" that doesn't list the APEX under 'apex_available'.`, `
+ apex {
+ name: "myapex",
+ key: "myapex.key",
+ native_shared_libs: ["libfoo"],
+ updatable: false,
+ }
+
+ apex_key {
+ name: "myapex.key",
+ public_key: "testkey.avbpubkey",
+ private_key: "testkey.pem",
+ }
+
+ cc_library {
+ name: "libfoo",
+ stl: "none",
+ static_libs: ["libbar"],
+ system_shared_libs: [],
+ apex_available: ["myapex"],
+ }
+
+ cc_library {
+ name: "libbar",
+ stl: "none",
+ system_shared_libs: [],
+ }`)
+}
+
func TestApexAvailable_InvalidApexName(t *testing.T) {
testApexError(t, "\"otherapex\" is not a valid module name", `
apex {
diff --git a/bazel/configurability.go b/bazel/configurability.go
index d042fe8..8f63ec4 100644
--- a/bazel/configurability.go
+++ b/bazel/configurability.go
@@ -31,11 +31,11 @@
// OsType names in arch.go
OsAndroid = "android"
- osDarwin = "darwin"
- osLinux = "linux_glibc"
+ OsDarwin = "darwin"
+ OsLinux = "linux_glibc"
osLinuxMusl = "linux_musl"
osLinuxBionic = "linux_bionic"
- osWindows = "windows"
+ OsWindows = "windows"
// Targets in arch.go
osArchAndroidArm = "android_arm"
@@ -156,11 +156,11 @@
// constraint_value for the @platforms//os:os constraint_setting
platformOsMap = map[string]string{
OsAndroid: "//build/bazel/platforms/os:android",
- osDarwin: "//build/bazel/platforms/os:darwin",
- osLinux: "//build/bazel/platforms/os:linux_glibc",
+ OsDarwin: "//build/bazel/platforms/os:darwin",
+ OsLinux: "//build/bazel/platforms/os:linux_glibc",
osLinuxMusl: "//build/bazel/platforms/os:linux_musl",
osLinuxBionic: "//build/bazel/platforms/os:linux_bionic",
- osWindows: "//build/bazel/platforms/os:windows",
+ OsWindows: "//build/bazel/platforms/os:windows",
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey, // The default condition of an os select map.
}
@@ -192,22 +192,22 @@
// in a cyclic dependency.
osToArchMap = map[string][]string{
OsAndroid: {archArm, archArm64, archRiscv64, archX86, archX86_64},
- osLinux: {archX86, archX86_64},
+ OsLinux: {archX86, archX86_64},
osLinuxMusl: {archX86, archX86_64},
- osDarwin: {archArm64, archX86_64},
+ OsDarwin: {archArm64, archX86_64},
osLinuxBionic: {archArm64, archX86_64},
// TODO(cparsons): According to arch.go, this should contain archArm, archArm64, as well.
- osWindows: {archX86, archX86_64},
+ OsWindows: {archX86, archX86_64},
}
osAndInApexMap = map[string]string{
AndroidAndInApex: "//build/bazel/rules/apex:android-in_apex",
AndroidPlatform: "//build/bazel/rules/apex:system",
- osDarwin: "//build/bazel/platforms/os:darwin",
- osLinux: "//build/bazel/platforms/os:linux_glibc",
+ OsDarwin: "//build/bazel/platforms/os:darwin",
+ OsLinux: "//build/bazel/platforms/os:linux_glibc",
osLinuxMusl: "//build/bazel/platforms/os:linux_musl",
osLinuxBionic: "//build/bazel/platforms/os:linux_bionic",
- osWindows: "//build/bazel/platforms/os:windows",
+ OsWindows: "//build/bazel/platforms/os:windows",
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
}
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index 5f3ff62..0e8705b 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -4663,3 +4663,49 @@
},
})
}
+
+func TestCcLibraryHostLdLibs(t *testing.T) {
+ runCcLibraryTestCase(t, Bp2buildTestCase{
+ Description: "cc_binary linker flags for host_ldlibs",
+ ModuleTypeUnderTest: "cc_binary",
+ ModuleTypeUnderTestFactory: cc.BinaryFactory,
+ Blueprint: soongCcLibraryPreamble + `cc_binary {
+ name: "a",
+ host_supported: true,
+ ldflags: ["-lcommon"],
+ target: {
+ linux: {
+ host_ldlibs: [
+ "-llinux",
+ ],
+ },
+ darwin: {
+ ldflags: ["-ldarwinadditional"],
+ host_ldlibs: [
+ "-ldarwin",
+ ],
+ },
+ windows: {
+ host_ldlibs: [
+ "-lwindows",
+ ],
+ },
+ },
+}
+`,
+ ExpectedBazelTargets: []string{
+ MakeBazelTargetNoRestrictions("cc_binary", "a", AttrNameToString{
+ "linkopts": `["-lcommon"] + select({
+ "//build/bazel/platforms/os:darwin": [
+ "-ldarwinadditional",
+ "-ldarwin",
+ ],
+ "//build/bazel/platforms/os:linux_glibc": ["-llinux"],
+ "//build/bazel/platforms/os:windows": ["-lwindows"],
+ "//conditions:default": [],
+ })`,
+ "local_includes": `["."]`,
+ }),
+ },
+ })
+}
diff --git a/cc/bp2build.go b/cc/bp2build.go
index 202eebc..fa98df4 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -1266,6 +1266,9 @@
}
la.additionalLinkerInputs.SetSelectValue(axis, config, additionalLinkerInputs)
+ if axis == bazel.OsConfigurationAxis && (config == bazel.OsDarwin || config == bazel.OsLinux || config == bazel.OsWindows) {
+ linkerFlags = append(linkerFlags, props.Host_ldlibs...)
+ }
la.linkopts.SetSelectValue(axis, config, linkerFlags)
if axisFeatures != nil {
diff --git a/cc/config/global.go b/cc/config/global.go
index e5ce48e..d4106eb 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -354,14 +354,14 @@
// Automatically initialize any uninitialized stack variables.
// Prefer zero-init if multiple options are set.
if ctx.Config().IsEnvTrue("AUTO_ZERO_INITIALIZE") {
- flags = append(flags, "-ftrivial-auto-var-init=zero -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang -Wno-unused-command-line-argument")
+ flags = append(flags, "-ftrivial-auto-var-init=zero")
} else if ctx.Config().IsEnvTrue("AUTO_PATTERN_INITIALIZE") {
flags = append(flags, "-ftrivial-auto-var-init=pattern")
} else if ctx.Config().IsEnvTrue("AUTO_UNINITIALIZE") {
flags = append(flags, "-ftrivial-auto-var-init=uninitialized")
} else {
// Default to zero initialization.
- flags = append(flags, "-ftrivial-auto-var-init=zero -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang -Wno-unused-command-line-argument")
+ flags = append(flags, "-ftrivial-auto-var-init=zero")
}
// Workaround for ccache with clang.