aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-07-12 22:58:52 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-07-12 22:58:52 +0000
commit9ea9fc3dee3639235602761dae36eaa0d386e582 (patch)
tree2887b8a5ccfdd7a69eee2e98cfdcecb9c217d7ff
parent22739c36213ef61a840a434075e417b9befca615 (diff)
parent37b252096a84c4c139436bf81b23ca3aa0857385 (diff)
downloadbuild_soong-9ea9fc3dee3639235602761dae36eaa0d386e582.tar.gz
build_soong-9ea9fc3dee3639235602761dae36eaa0d386e582.tar.bz2
build_soong-9ea9fc3dee3639235602761dae36eaa0d386e582.zip
Merge "Don't create non-primary arch variant for recovery-only module"
-rw-r--r--android/arch.go4
-rw-r--r--android/testing.go10
-rw-r--r--cc/cc_test.go36
3 files changed, 50 insertions, 0 deletions
diff --git a/android/arch.go b/android/arch.go
index ebe9897c..d84c829d 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -330,6 +330,10 @@ func archMutator(mctx BottomUpMutatorContext) {
// Windows builds always prefer 32-bit
prefer32 = true
}
+ // only the primary arch in the recovery partition
+ if module.InstallInRecovery() {
+ targets = []Target{mctx.Config().Targets[Device][0]}
+ }
targets, err := decodeMultilib(multilib, targets, prefer32)
if err != nil {
mctx.ModuleErrorf("%s", err.Error())
diff --git a/android/testing.go b/android/testing.go
index f5d33e11..ca7e7ce6 100644
--- a/android/testing.go
+++ b/android/testing.go
@@ -92,6 +92,16 @@ func (ctx *TestContext) ModuleForTests(name, variant string) TestingModule {
return TestingModule{module}
}
+func (ctx *TestContext) ModuleVariantsForTests(name string) []string {
+ var variants []string
+ ctx.VisitAllModules(func(m blueprint.Module) {
+ if ctx.ModuleName(m) == name {
+ variants = append(variants, ctx.ModuleSubDir(m))
+ }
+ })
+ return variants
+}
+
// MockFileSystem causes the Context to replace all reads with accesses to the provided map of
// filenames to contents stored as a byte slice.
func (ctx *TestContext) MockFileSystem(files map[string][]byte) {
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 1b12ad47..3d162e7e 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -75,16 +75,19 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
toolchain_library {
name: "libatomic",
vendor_available: true,
+ recovery_available: true,
}
toolchain_library {
name: "libcompiler_rt-extras",
vendor_available: true,
+ recovery_available: true,
}
toolchain_library {
name: "libgcc",
vendor_available: true,
+ recovery_available: true,
}
cc_library {
@@ -92,6 +95,7 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
no_libgcc: true,
nocrt: true,
system_shared_libs: [],
+ recovery_available: true,
}
llndk_library {
name: "libc",
@@ -102,6 +106,7 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
no_libgcc: true,
nocrt: true,
system_shared_libs: [],
+ recovery_available: true,
}
llndk_library {
name: "libm",
@@ -112,6 +117,7 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
no_libgcc: true,
nocrt: true,
system_shared_libs: [],
+ recovery_available: true,
}
llndk_library {
name: "libdl",
@@ -124,6 +130,7 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
system_shared_libs: [],
stl: "none",
vendor_available: true,
+ recovery_available: true,
}
cc_library {
name: "libc++",
@@ -132,6 +139,7 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
system_shared_libs: [],
stl: "none",
vendor_available: true,
+ recovery_available: true,
vndk: {
enabled: true,
support_system_process: true,
@@ -144,14 +152,17 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
system_shared_libs: [],
stl: "none",
vendor_available: true,
+ recovery_available: true,
}
cc_object {
name: "crtbegin_so",
+ recovery_available: true,
}
cc_object {
name: "crtend_so",
+ recovery_available: true,
}
cc_library {
@@ -1651,3 +1662,28 @@ func TestVendorPublicLibraries(t *testing.T) {
}
}
+
+func TestRecovery(t *testing.T) {
+ ctx := testCc(t, `
+ cc_library_shared {
+ name: "librecovery",
+ recovery: true,
+ }
+ cc_library_shared {
+ name: "librecovery32",
+ recovery: true,
+ compile_multilib:"32",
+ }
+ `)
+
+ variants := ctx.ModuleVariantsForTests("librecovery")
+ const arm64 = "android_arm64_armv8-a_recovery_shared"
+ if len(variants) != 1 || !android.InList(arm64, variants) {
+ t.Errorf("variants of librecovery must be \"%s\" only, but was %#v", arm64, variants)
+ }
+
+ variants = ctx.ModuleVariantsForTests("librecovery32")
+ if android.InList(arm64, variants) {
+ t.Errorf("multilib was set to 32 for librecovery32, but its variants has %s.", arm64)
+ }
+}