Fix host gtests for HOST_PREFER_32_BIT
The 32-bit and 64-bit ARCH variables are switched.
HOST_ARCH=x86_64 HOST_2ND_ARCH=x86
ART_HOST_ARCH=x86 ART_HOST_2ND_ARCH=x86_64
Make sure the gtests (ART_HOST_ARCH=x86) depend on
the right boot image (HOST_2ND_ARCH=x86).
Test: m test-art-host-gtest
Bug: 147817558
Bug: 147819342
Change-Id: Idd546228326a3a116edcda9b98ed05f0cd87f68b
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk
index cdea5c4..998a8df 100644
--- a/build/Android.gtest.mk
+++ b/build/Android.gtest.mk
@@ -494,7 +494,6 @@
gtest_exe := $(2)
# Dependencies for all host gtests.
gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \
- $$($(3)HOST_BOOT_IMAGE) \
$$(HOST_BOOT_IMAGE_JARS) \
$$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$$(ART_HOST_SHLIB_EXTENSION) \
$$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \
@@ -504,6 +503,28 @@
$(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) \
$(HOST_OUT_EXECUTABLES)/signal_dumper
+ # Note: The "host arch" Make variables defined in build/make/core/envsetup.mk
+ # and art/build/Android.common.mk have different meanings:
+ #
+ # * In build/make/core/envsetup.mk:
+ # * HOST_ARCH := x86_64
+ # * HOST_2ND_ARCH := x86
+ #
+ # * In art/build/Android.common.mk:
+ # * When `HOST_PREFER_32_BIT` is `true`:
+ # * ART_HOST_ARCH := x86
+ # * 2ND_ART_HOST_ARCH :=
+ # * 2ND_HOST_ARCH :=
+ # * Otherwise:
+ # * ART_HOST_ARCH := x86_64
+ # * 2ND_ART_HOST_ARCH := x86
+ # * 2ND_HOST_ARCH := x86
+ ifeq ($(HOST_PREFER_32_BIT),true)
+ gtest_deps += $$(2ND_HOST_BOOT_IMAGE) # Depend on the 32-bit boot image.
+ else
+ gtest_deps += $$($(3)HOST_BOOT_IMAGE)
+ endif
+
ART_TEST_HOST_GTEST_DEPENDENCIES += $$(gtest_deps)
.PHONY: $$(gtest_rule)