Merge "bp2build: Handle target.linux"
diff --git a/android/arch.go b/android/arch.go
index 273c02b..54242e5 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -2005,16 +2005,37 @@
osToProp := ArchVariantProperties{}
archOsToProp := ArchVariantProperties{}
+
+ var linuxStructs, bionicStructs []reflect.Value
+ var ok bool
+
+ linuxStructs, ok = getTargetStructs(ctx, archProperties, "Linux")
+ if !ok {
+ linuxStructs = make([]reflect.Value, 0)
+ }
+ bionicStructs, ok = getTargetStructs(ctx, archProperties, "Bionic")
+ if !ok {
+ bionicStructs = make([]reflect.Value, 0)
+ }
+
// For android, linux, ...
for _, os := range osTypeList {
if os == CommonOS {
// It looks like this OS value is not used in Blueprint files
continue
}
- osStructs, ok := getTargetStructs(ctx, archProperties, os.Field)
+ osStructs := make([]reflect.Value, 0)
+ osSpecificStructs, ok := getTargetStructs(ctx, archProperties, os.Field)
if ok {
- osToProp[os.Name] = mergeStructs(ctx, osStructs, propertySet)
+ osStructs = append(osStructs, osSpecificStructs...)
}
+ if os.Linux() {
+ osStructs = append(osStructs, linuxStructs...)
+ }
+ if os.Bionic() {
+ osStructs = append(osStructs, bionicStructs...)
+ }
+ osToProp[os.Name] = mergeStructs(ctx, osStructs, propertySet)
// For arm, x86, ...
for _, arch := range osArchTypeMap[os] {
@@ -2048,15 +2069,9 @@
archOsToProp[targetName] = mergeStructs(ctx, osArchStructs, propertySet)
}
}
+
axisToProps[bazel.OsConfigurationAxis] = osToProp
axisToProps[bazel.OsArchConfigurationAxis] = archOsToProp
-
- bionicStructs, ok := getTargetStructs(ctx, archProperties, "Bionic")
- if ok {
- axisToProps[bazel.BionicConfigurationAxis] = map[string]interface{}{
- "bionic": mergeStructs(ctx, bionicStructs, propertySet)}
- }
-
return axisToProps
}
diff --git a/android/bazel.go b/android/bazel.go
index 53e6060..1c943fa 100644
--- a/android/bazel.go
+++ b/android/bazel.go
@@ -223,9 +223,6 @@
"libc_malloc_debug", // http://b/186824339, cc_library_static, depends on //system/libbase:libbase (http://b/186823646)
"libc_malloc_debug_backtrace", // http://b/186824112, cc_library_static, depends on //external/libcxxabi:libc++demangle (http://b/186823773)
- //"libcutils", // http://b/186827426, cc_library, depends on //system/core/libprocessgroup:libprocessgroup_headers (http://b/186826841)
- //"libcutils_sockets", // http://b/186826853, cc_library, depends on //system/libbase:libbase (http://b/186826479)
-
"liblinker_debuggerd_stub", // http://b/186824327, cc_library_static, depends on //external/zlib:libz (http://b/186823782)
// also depends on //system/libziparchive:libziparchive (http://b/186823656)
// also depends on //system/logging/liblog:liblog (http://b/186822772)
@@ -285,24 +282,6 @@
"libadb_protos_static", // b/200601772: Requires cc_library proto support
"libadb_protos", // b/200601772: Requires cc_library proto support
"libapp_processes_protos_lite", // b/200601772: Requires cc_library proto support
-
- "libbase", // TODO(cparsons): Breaks libandroidfw. Investigate.
-
- // The below items depend on libbase.
- "libadb_pairing_auth",
- "libadb_pairing_auth_static",
- "libadb_sysdeps",
- "libadb_tls_connection",
- "libadb_tls_connection_static",
- "libadbconnection_client",
- "libadbconnection_server",
- "libadbd_auth",
- "libadbd_fs",
- "libcutils",
- "libcutils_sockets",
- "libdiagnose_usb",
- // ---
-
}
// Per-module denylist of cc_library modules to only generate the static
diff --git a/bazel/configurability.go b/bazel/configurability.go
index 7aaff9a..e9641e7 100644
--- a/bazel/configurability.go
+++ b/bazel/configurability.go
@@ -91,11 +91,6 @@
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey, // The default condition of an os select map.
}
- platformBionicMap = map[string]string{
- "bionic": "//build/bazel/platforms/os:bionic",
- ConditionsDefaultConfigKey: ConditionsDefaultSelectKey, // The default condition of an os select map.
- }
-
platformOsArchMap = map[string]string{
osArchAndroidArm: "//build/bazel/platforms/os_arch:android_arm",
osArchAndroidArm64: "//build/bazel/platforms/os_arch:android_arm64",
@@ -122,7 +117,6 @@
arch
os
osArch
- bionic
productVariables
)
@@ -132,7 +126,6 @@
arch: "arch",
os: "os",
osArch: "arch_os",
- bionic: "bionic",
productVariables: "product_variables",
}[ct]
}
@@ -155,10 +148,6 @@
if _, ok := platformOsArchMap[config]; !ok {
panic(fmt.Errorf("Unknown os+arch: %s", config))
}
- case bionic:
- if _, ok := platformBionicMap[config]; !ok {
- panic(fmt.Errorf("Unknown for %s: %s", ct.String(), config))
- }
case productVariables:
// do nothing
default:
@@ -178,8 +167,6 @@
return platformOsMap[config]
case osArch:
return platformOsArchMap[config]
- case bionic:
- return platformBionicMap[config]
case productVariables:
if config == ConditionsDefaultConfigKey {
return ConditionsDefaultSelectKey
@@ -199,8 +186,6 @@
OsConfigurationAxis = ConfigurationAxis{configurationType: os}
// An axis for arch+os-specific configurations
OsArchConfigurationAxis = ConfigurationAxis{configurationType: osArch}
- // An axis for bionic os-specific configurations
- BionicConfigurationAxis = ConfigurationAxis{configurationType: bionic}
)
// ProductVariableConfigurationAxis returns an axis for the given product variable
diff --git a/bazel/properties.go b/bazel/properties.go
index bd8ef0d..ee32e73 100644
--- a/bazel/properties.go
+++ b/bazel/properties.go
@@ -264,7 +264,7 @@
switch axis.configurationType {
case noConfig:
la.Value = &value
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
if la.ConfigurableValues == nil {
la.ConfigurableValues = make(configurableLabels)
}
@@ -280,7 +280,7 @@
switch axis.configurationType {
case noConfig:
return *la.Value
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
return *la.ConfigurableValues[axis][config]
default:
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
@@ -337,7 +337,7 @@
switch axis.configurationType {
case noConfig:
ba.Value = value
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
if ba.ConfigurableValues == nil {
ba.ConfigurableValues = make(configurableBools)
}
@@ -353,7 +353,7 @@
switch axis.configurationType {
case noConfig:
return ba.Value
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
if v, ok := ba.ConfigurableValues[axis][config]; ok {
return &v
} else {
@@ -459,7 +459,7 @@
switch axis.configurationType {
case noConfig:
lla.Value = list
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
if lla.ConfigurableValues == nil {
lla.ConfigurableValues = make(configurableLabelLists)
}
@@ -475,7 +475,7 @@
switch axis.configurationType {
case noConfig:
return lla.Value
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
return lla.ConfigurableValues[axis][config]
default:
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
@@ -773,7 +773,7 @@
switch axis.configurationType {
case noConfig:
sla.Value = list
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
if sla.ConfigurableValues == nil {
sla.ConfigurableValues = make(configurableStringLists)
}
@@ -789,7 +789,7 @@
switch axis.configurationType {
case noConfig:
return sla.Value
- case arch, os, osArch, bionic, productVariables:
+ case arch, os, osArch, productVariables:
return sla.ConfigurableValues[axis][config]
default:
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index 5952b15..0d65822 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -131,12 +131,13 @@
"//build/bazel/platforms/arch:x86_64": ["x86_64.cpp"],
"//conditions:default": [],
}) + select({
- "//build/bazel/platforms/os:android": ["android.cpp"],
+ "//build/bazel/platforms/os:android": [
+ "android.cpp",
+ "bionic.cpp",
+ ],
"//build/bazel/platforms/os:darwin": ["darwin.cpp"],
"//build/bazel/platforms/os:linux": ["linux.cpp"],
- "//conditions:default": [],
- }) + select({
- "//build/bazel/platforms/os:bionic": ["bionic.cpp"],
+ "//build/bazel/platforms/os:linux_bionic": ["bionic.cpp"],
"//conditions:default": [],
}),
)`}})
@@ -1571,3 +1572,68 @@
)`},
})
}
+
+func TestCcLibraryOsSelects(t *testing.T) {
+ runCcLibraryTestCase(t, bp2buildTestCase{
+ description: "cc_library - selects for all os targets",
+ moduleTypeUnderTest: "cc_library",
+ moduleTypeUnderTestFactory: cc.LibraryFactory,
+ moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build,
+ filesystem: map[string]string{},
+ blueprint: soongCcLibraryPreamble + `
+cc_library_headers { name: "some-headers" }
+cc_library {
+ name: "foo-lib",
+ srcs: ["base.cpp"],
+ target: {
+ android: {
+ srcs: ["android.cpp"],
+ },
+ linux: {
+ srcs: ["linux.cpp"],
+ },
+ linux_glibc: {
+ srcs: ["linux_glibc.cpp"],
+ },
+ darwin: {
+ srcs: ["darwin.cpp"],
+ },
+ bionic: {
+ srcs: ["bionic.cpp"],
+ },
+ linux_musl: {
+ srcs: ["linux_musl.cpp"],
+ },
+ windows: {
+ srcs: ["windows.cpp"],
+ },
+ },
+ include_build_directory: false,
+}
+`,
+ expectedBazelTargets: []string{`cc_library(
+ name = "foo-lib",
+ srcs = ["base.cpp"] + select({
+ "//build/bazel/platforms/os:android": [
+ "android.cpp",
+ "bionic.cpp",
+ "linux.cpp",
+ ],
+ "//build/bazel/platforms/os:darwin": ["darwin.cpp"],
+ "//build/bazel/platforms/os:linux": [
+ "linux.cpp",
+ "linux_glibc.cpp",
+ ],
+ "//build/bazel/platforms/os:linux_bionic": [
+ "bionic.cpp",
+ "linux.cpp",
+ ],
+ "//build/bazel/platforms/os:linux_musl": [
+ "linux.cpp",
+ "linux_musl.cpp",
+ ],
+ "//build/bazel/platforms/os:windows": ["windows.cpp"],
+ "//conditions:default": [],
+ }),
+)`}})
+}
diff --git a/bp2build/cc_library_static_conversion_test.go b/bp2build/cc_library_static_conversion_test.go
index 91b7478..f02ce4d 100644
--- a/bp2build/cc_library_static_conversion_test.go
+++ b/bp2build/cc_library_static_conversion_test.go
@@ -1382,7 +1382,8 @@
expectedBazelTargets: []string{`cc_library_static(
name = "target_bionic",
system_dynamic_deps = select({
- "//build/bazel/platforms/os:bionic": [":libc"],
+ "//build/bazel/platforms/os:android": [":libc"],
+ "//build/bazel/platforms/os:linux_bionic": [":libc"],
"//conditions:default": [],
}),
)`},