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)