Disable all host OS variants except those explicitly included.
Necessary to avoid problems with implicitly enabled host OS'es, e.g.
linux_glibc getting enabled when we only supply a linux_bionic linker
in runtime-module-host-exports. That will then cause a non-functional
prebuilt to take precedence over source if the prebuilt is preferred.
We don't do this for device since we so far only support a single
device OS (android).
This introduces the notion that SDK member types can be host OS
dependent or not. That way java members with host prebuilts don't get
restricted to a specific host OS.
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh runtime-module-host-exports
Check that the generated Android.bp correctly disables the bionic
linker prebuilt for linux_glibc.
Test: art/build/apex/runtests.sh
on master-art with an updated runtime SDK snapshot
Test: art/tools/buildbot-build.sh {--host,--target}
on master-art with an updated runtime SDK snapshot
Bug: 160349757
Change-Id: Idad7ef138cdbcbd209d390bf6c10ca8365d4619f
diff --git a/sdk/cc_sdk_test.go b/sdk/cc_sdk_test.go
index 17afdb8..9501d88 100644
--- a/sdk/cc_sdk_test.go
+++ b/sdk/cc_sdk_test.go
@@ -39,6 +39,20 @@
// Contains tests for SDK members provided by the cc package.
+func TestSingleDeviceOsAssumption(t *testing.T) {
+ // Mock a module with DeviceSupported() == true.
+ s := &sdk{}
+ android.InitAndroidArchModule(s, android.DeviceSupported, android.MultilibCommon)
+
+ osTypes := s.getPossibleOsTypes()
+ if len(osTypes) != 1 {
+ // The snapshot generation assumes there is a single device OS. If more are
+ // added it might need to disable them by default, like it does for host
+ // OS'es.
+ t.Errorf("expected a single device OS, got %v", osTypes)
+ }
+}
+
func TestSdkIsCompileMultilibBoth(t *testing.T) {
result := testSdkWithCc(t, `
sdk {
@@ -99,9 +113,15 @@
stl: "none",
compile_multilib: "64",
target: {
+ host: {
+ enabled: false,
+ },
android_arm64: {
srcs: ["android/arm64/lib/sdkmember.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
},
@@ -115,9 +135,15 @@
stl: "none",
compile_multilib: "64",
target: {
+ host: {
+ enabled: false,
+ },
android_arm64: {
srcs: ["android/arm64/lib/sdkmember.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
},
@@ -129,6 +155,14 @@
host_supported: true,
native_shared_libs: ["mysdk_sdkmember@current"],
compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`),
checkAllCopyRules(`
@@ -573,7 +607,11 @@
installable: false,
stl: "none",
target: {
+ host: {
+ enabled: false,
+ },
linux_glibc: {
+ enabled: true,
compile_multilib: "both",
},
linux_glibc_x86_64: {
@@ -583,6 +621,7 @@
srcs: ["linux_glibc/x86/bin/mynativebinary"],
},
windows: {
+ enabled: true,
compile_multilib: "64",
},
windows_x86_64: {
@@ -598,7 +637,11 @@
host_supported: true,
stl: "none",
target: {
+ host: {
+ enabled: false,
+ },
linux_glibc: {
+ enabled: true,
compile_multilib: "both",
},
linux_glibc_x86_64: {
@@ -608,6 +651,7 @@
srcs: ["linux_glibc/x86/bin/mynativebinary"],
},
windows: {
+ enabled: true,
compile_multilib: "64",
},
windows_x86_64: {
@@ -622,7 +666,14 @@
host_supported: true,
native_binaries: ["myexports_mynativebinary@current"],
target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
windows: {
+ enabled: true,
compile_multilib: "64",
},
},
@@ -636,6 +687,162 @@
)
}
+func TestSnapshotWithSingleHostOsType(t *testing.T) {
+ ctx, config := testSdkContext(`
+ cc_defaults {
+ name: "mydefaults",
+ device_supported: false,
+ host_supported: true,
+ compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_bionic: {
+ enabled: true,
+ },
+ },
+ }
+
+ module_exports {
+ name: "myexports",
+ defaults: ["mydefaults"],
+ native_shared_libs: ["mynativelib"],
+ native_binaries: ["mynativebinary"],
+ compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
+ }
+
+ cc_library {
+ name: "mynativelib",
+ defaults: ["mydefaults"],
+ srcs: [
+ "Test.cpp",
+ ],
+ stl: "none",
+ }
+
+ cc_binary {
+ name: "mynativebinary",
+ defaults: ["mydefaults"],
+ srcs: [
+ "Test.cpp",
+ ],
+ stl: "none",
+ }
+ `, ccTestFs, []android.OsType{android.LinuxBionic})
+
+ result := runTests(t, ctx, config)
+
+ result.CheckSnapshot("myexports", "",
+ checkAndroidBpContents(`
+// This is auto-generated. DO NOT EDIT.
+
+cc_prebuilt_binary {
+ name: "myexports_mynativebinary@current",
+ sdk_member_name: "mynativebinary",
+ device_supported: false,
+ host_supported: true,
+ installable: false,
+ stl: "none",
+ compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_bionic: {
+ enabled: true,
+ },
+ linux_bionic_x86_64: {
+ srcs: ["x86_64/bin/mynativebinary"],
+ },
+ },
+}
+
+cc_prebuilt_binary {
+ name: "mynativebinary",
+ prefer: false,
+ device_supported: false,
+ host_supported: true,
+ stl: "none",
+ compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_bionic: {
+ enabled: true,
+ },
+ linux_bionic_x86_64: {
+ srcs: ["x86_64/bin/mynativebinary"],
+ },
+ },
+}
+
+cc_prebuilt_library_shared {
+ name: "myexports_mynativelib@current",
+ sdk_member_name: "mynativelib",
+ device_supported: false,
+ host_supported: true,
+ installable: false,
+ stl: "none",
+ compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_bionic: {
+ enabled: true,
+ },
+ linux_bionic_x86_64: {
+ srcs: ["x86_64/lib/mynativelib.so"],
+ },
+ },
+}
+
+cc_prebuilt_library_shared {
+ name: "mynativelib",
+ prefer: false,
+ device_supported: false,
+ host_supported: true,
+ stl: "none",
+ compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_bionic: {
+ enabled: true,
+ },
+ linux_bionic_x86_64: {
+ srcs: ["x86_64/lib/mynativelib.so"],
+ },
+ },
+}
+
+module_exports_snapshot {
+ name: "myexports@current",
+ device_supported: false,
+ host_supported: true,
+ native_binaries: ["myexports_mynativebinary@current"],
+ native_shared_libs: ["myexports_mynativelib@current"],
+ compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_bionic: {
+ enabled: true,
+ },
+ },
+}
+`),
+ checkAllCopyRules(`
+.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
+.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
+`),
+ )
+}
+
// Test that we support the necessary flags for the linker binary, which is
// special in several ways.
func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
@@ -674,11 +881,17 @@
compile_multilib: "both",
static_executable: true,
nocrt: true,
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/bin/linker"],
},
- x86: {
+ linux_glibc_x86: {
srcs: ["x86/bin/linker"],
},
},
@@ -693,11 +906,17 @@
compile_multilib: "both",
static_executable: true,
nocrt: true,
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/bin/linker"],
},
- x86: {
+ linux_glibc_x86: {
srcs: ["x86/bin/linker"],
},
},
@@ -708,6 +927,14 @@
device_supported: false,
host_supported: true,
native_binaries: ["mymodule_exports_linker@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`),
checkAllCopyRules(`
@@ -1034,12 +1261,18 @@
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/lib/mynativelib.so"],
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
- x86: {
+ linux_glibc_x86: {
srcs: ["x86/lib/mynativelib.so"],
export_include_dirs: ["x86/include_gen/mynativelib"],
},
@@ -1055,12 +1288,18 @@
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/lib/mynativelib.so"],
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
- x86: {
+ linux_glibc_x86: {
srcs: ["x86/lib/mynativelib.so"],
export_include_dirs: ["x86/include_gen/mynativelib"],
},
@@ -1072,6 +1311,14 @@
device_supported: false,
host_supported: true,
native_shared_libs: ["mysdk_mynativelib@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`),
checkAllCopyRules(`
@@ -1130,7 +1377,11 @@
installable: false,
stl: "none",
target: {
+ host: {
+ enabled: false,
+ },
linux_glibc: {
+ enabled: true,
compile_multilib: "both",
},
linux_glibc_x86_64: {
@@ -1140,6 +1391,7 @@
srcs: ["linux_glibc/x86/lib/mynativelib.so"],
},
windows: {
+ enabled: true,
compile_multilib: "64",
},
windows_x86_64: {
@@ -1155,7 +1407,11 @@
host_supported: true,
stl: "none",
target: {
+ host: {
+ enabled: false,
+ },
linux_glibc: {
+ enabled: true,
compile_multilib: "both",
},
linux_glibc_x86_64: {
@@ -1165,6 +1421,7 @@
srcs: ["linux_glibc/x86/lib/mynativelib.so"],
},
windows: {
+ enabled: true,
compile_multilib: "64",
},
windows_x86_64: {
@@ -1179,7 +1436,14 @@
host_supported: true,
native_shared_libs: ["mysdk_mynativelib@current"],
target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
windows: {
+ enabled: true,
compile_multilib: "64",
},
},
@@ -1312,12 +1576,18 @@
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/lib/mynativelib.a"],
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
- x86: {
+ linux_glibc_x86: {
srcs: ["x86/lib/mynativelib.a"],
export_include_dirs: ["x86/include_gen/mynativelib"],
},
@@ -1332,12 +1602,18 @@
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/lib/mynativelib.a"],
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
- x86: {
+ linux_glibc_x86: {
srcs: ["x86/lib/mynativelib.a"],
export_include_dirs: ["x86/include_gen/mynativelib"],
},
@@ -1349,6 +1625,14 @@
device_supported: false,
host_supported: true,
native_static_libs: ["myexports_mynativelib@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`),
checkAllCopyRules(`
@@ -1496,8 +1780,14 @@
stl: "none",
compile_multilib: "64",
export_include_dirs: ["include/include"],
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/lib/mynativelib.a"],
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
@@ -1512,8 +1802,14 @@
stl: "none",
compile_multilib: "64",
export_include_dirs: ["include/include"],
- arch: {
- x86_64: {
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ linux_glibc_x86_64: {
srcs: ["x86_64/lib/mynativelib.a"],
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
@@ -1526,6 +1822,14 @@
host_supported: true,
native_static_libs: ["myexports_mynativelib@current"],
compile_multilib: "64",
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}`),
checkAllCopyRules(`
include/Test.h -> include/include/Test.h
@@ -1612,6 +1916,14 @@
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
cc_prebuilt_library_headers {
@@ -1622,6 +1934,14 @@
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
sdk_snapshot {
@@ -1629,6 +1949,14 @@
device_supported: false,
host_supported: true,
native_header_libs: ["mysdk_mynativeheaders@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`),
checkAllCopyRules(`
@@ -1673,10 +2001,14 @@
compile_multilib: "both",
export_system_include_dirs: ["common_os/include/include"],
target: {
+ host: {
+ enabled: false,
+ },
android: {
export_include_dirs: ["android/include/include-android"],
},
linux_glibc: {
+ enabled: true,
export_include_dirs: ["linux_glibc/include/include-host"],
},
},
@@ -1690,10 +2022,14 @@
compile_multilib: "both",
export_system_include_dirs: ["common_os/include/include"],
target: {
+ host: {
+ enabled: false,
+ },
android: {
export_include_dirs: ["android/include/include-android"],
},
linux_glibc: {
+ enabled: true,
export_include_dirs: ["linux_glibc/include/include-host"],
},
},
@@ -1703,6 +2039,14 @@
name: "mysdk@current",
host_supported: true,
native_header_libs: ["mysdk_mynativeheaders@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`),
checkAllCopyRules(`
@@ -1870,6 +2214,9 @@
installable: false,
compile_multilib: "both",
target: {
+ host: {
+ enabled: false,
+ },
android: {
system_shared_libs: [],
},
@@ -1879,6 +2226,9 @@
android_arm: {
srcs: ["android/arm/lib/sslvariants.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
},
@@ -1894,6 +2244,9 @@
host_supported: true,
compile_multilib: "both",
target: {
+ host: {
+ enabled: false,
+ },
android: {
system_shared_libs: [],
},
@@ -1903,6 +2256,9 @@
android_arm: {
srcs: ["android/arm/lib/sslvariants.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
},
@@ -1916,6 +2272,14 @@
name: "mysdk@current",
host_supported: true,
native_shared_libs: ["mysdk_sslvariants@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`))
}
@@ -2025,12 +2389,18 @@
versions: ["3"],
},
target: {
+ host: {
+ enabled: false,
+ },
android_arm64: {
srcs: ["android/arm64/lib/stubslib.so"],
},
android_arm: {
srcs: ["android/arm/lib/stubslib.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
},
@@ -2049,12 +2419,18 @@
versions: ["3"],
},
target: {
+ host: {
+ enabled: false,
+ },
android_arm64: {
srcs: ["android/arm64/lib/stubslib.so"],
},
android_arm: {
srcs: ["android/arm/lib/stubslib.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
},
@@ -2068,6 +2444,14 @@
name: "mysdk@current",
host_supported: true,
native_shared_libs: ["mysdk_stubslib@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`))
}
@@ -2099,12 +2483,18 @@
unique_host_soname: true,
compile_multilib: "both",
target: {
+ host: {
+ enabled: false,
+ },
android_arm64: {
srcs: ["android/arm64/lib/mylib.so"],
},
android_arm: {
srcs: ["android/arm/lib/mylib.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
},
@@ -2121,12 +2511,18 @@
unique_host_soname: true,
compile_multilib: "both",
target: {
+ host: {
+ enabled: false,
+ },
android_arm64: {
srcs: ["android/arm64/lib/mylib.so"],
},
android_arm: {
srcs: ["android/arm/lib/mylib.so"],
},
+ linux_glibc: {
+ enabled: true,
+ },
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
},
@@ -2140,6 +2536,14 @@
name: "mysdk@current",
host_supported: true,
native_shared_libs: ["mysdk_mylib@current"],
+ target: {
+ host: {
+ enabled: false,
+ },
+ linux_glibc: {
+ enabled: true,
+ },
+ },
}
`),
checkAllCopyRules(`