diff --git a/android/module.go b/android/module.go index 21ca9be8b..812c0832f 100644 --- a/android/module.go +++ b/android/module.go @@ -1069,7 +1069,8 @@ func addRequiredDeps(ctx BottomUpMutatorContext) { // TODO(jiyong): the Make-side does this only when the required module is a shared // library or a native test. bothInAndroid := ctx.Device() && target.Os.Class == Device - nativeArch := InList(ctx.Arch().ArchType.Multilib, []string{"lib32", "lib64"}) + nativeArch := InList(ctx.Arch().ArchType.Multilib, []string{"lib32", "lib64"}) && + InList(target.Arch.ArchType.Multilib, []string{"lib32", "lib64"}) sameBitness := ctx.Arch().ArchType.Multilib == target.Arch.ArchType.Multilib if bothInAndroid && nativeArch && !sameBitness { return diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go index acd481352..861918f16 100644 --- a/filesystem/filesystem_test.go +++ b/filesystem/filesystem_test.go @@ -465,3 +465,35 @@ func TestPreventDuplicatedEntries(t *testing.T) { } `) } + +func TestTrackPhonyAsRequiredDep(t *testing.T) { + result := fixture.RunTestWithBp(t, ` + android_filesystem { + name: "fs", + deps: ["foo"], + } + + cc_binary { + name: "foo", + required: ["phony"], + } + + phony { + name: "phony", + required: ["libbar"], + } + + cc_library { + name: "libbar", + } + `) + + fs := result.ModuleForTests("fs", "android_common").Module().(*filesystem) + expected := []string{ + "bin/foo", + "lib64/libbar.so", + } + for _, e := range expected { + android.AssertStringListContains(t, "missing entry", fs.entries, e) + } +}