Fix various test dependencies.

Change-Id: I2e4761f4cc061f74319a7b64ebe67c553d5297df
diff --git a/build/Android.common.mk b/build/Android.common.mk
index 4023336..150b404 100644
--- a/build/Android.common.mk
+++ b/build/Android.common.mk
@@ -48,6 +48,8 @@
   ART_TARGET_ARCH_64 :=
 endif
 
+ART_HOST_SHLIB_EXTENSION := $(HOST_SHLIB_SUFFIX)
+ART_HOST_SHLIB_EXTENSION ?= .so
 ifeq ($(HOST_PREFER_32_BIT),true)
   ART_PHONY_TEST_HOST_SUFFIX := 32
   2ND_ART_PHONY_TEST_HOST_SUFFIX :=
@@ -56,6 +58,8 @@
   ART_HOST_ARCH := x86
   2ND_ART_HOST_ARCH :=
   2ND_HOST_ARCH :=
+  ART_HOST_LIBRARY_PATH := $(HOST_LIBRARY_PATH)
+  2ND_ART_HOST_LIBRARY_PATH :=
   ART_HOST_OUT_SHARED_LIBRARIES := $(2ND_HOST_OUT_SHARED_LIBRARIES)
   2ND_ART_HOST_OUT_SHARED_LIBRARIES :=
 else
@@ -66,6 +70,8 @@
   ART_HOST_ARCH := x86_64
   2ND_ART_HOST_ARCH := x86
   2ND_HOST_ARCH := x86
+  ART_HOST_LIBRARY_PATH := $(HOST_LIBRARY_PATH)
+  2ND_ART_HOST_LIBRARY_PATH := $(HOST_LIBRARY_PATH)32
   ART_HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT_SHARED_LIBRARIES)
   2ND_ART_HOST_OUT_SHARED_LIBRARIES := $(2ND_HOST_OUT_SHARED_LIBRARIES)
 endif
diff --git a/build/Android.common_build.mk b/build/Android.common_build.mk
index 90609ec..21ba962 100644
--- a/build/Android.common_build.mk
+++ b/build/Android.common_build.mk
@@ -139,9 +139,6 @@
 
 ART_CPP_EXTENSION := .cc
 
-ART_HOST_SHLIB_EXTENSION := $(HOST_SHLIB_SUFFIX)
-ART_HOST_SHLIB_EXTENSION ?= .so
-
 ART_C_INCLUDES := \
   external/gtest/include \
   external/valgrind/main/include \
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk
index 9723b89a..a6f6298 100644
--- a/build/Android.gtest.mk
+++ b/build/Android.gtest.mk
@@ -47,7 +47,7 @@
 # Dex file dependencies for each gtest.
 ART_GTEST_class_linker_test_DEPS := $(ART_GTEST_Interfaces_DEX) $(ART_GTEST_MyClass_DEX) \
   $(ART_GTEST_Nested_DEX) $(ART_GTEST_Statics_DEX) $(ART_GTEST_StaticsFromCode_DEX)
-ART_GTEST_compiler_test_DEPS := $(ART_GTEST_AbstractMethod_DEX)
+ART_GTEST_compiler_driver_test_DEPS := $(ART_GTEST_AbstractMethod_DEX)
 ART_GTEST_dex_file_test_DEPS := $(ART_GTEST_GetMethodSignature_DEX)
 ART_GTEST_exception_test_DEPS := $(ART_GTEST_ExceptionHandle_DEX)
 ART_GTEST_jni_compiler_test_DEPS := $(ART_GTEST_MyClassNatives_DEX)
@@ -199,7 +199,8 @@
   TEST_ART_TARGET_SYNC_DEPS += \
     $$(ART_GTEST_$(1)_DEPS) \
     $$(ART_TARGET_NATIVETEST_OUT)/$$(TARGET_$(2)ARCH)/$(1) \
-    $$(TARGET_CORE_DEX_LOCATIONS)
+    $$(TARGET_CORE_DEX_LOCATIONS) \
+    $$($(2)TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so
 
 .PHONY: $$(gtest_rule)
 $$(gtest_rule): test-art-target-sync
@@ -227,9 +228,13 @@
 define define-art-gtest-rule-host
   gtest_rule := test-art-host-gtest-$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
   gtest_exe := $$(HOST_OUT_EXECUTABLES)/$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
+  # Dependencies for all host gtests.
+  gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \
+    $$($(2)ART_HOST_LIBRARY_PATH)/libjavacore$$(ART_HOST_SHLIB_EXTENSION)
+
 
 .PHONY: $$(gtest_rule)
-$$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_DEPS) $$(HOST_CORE_DEX_LOCATIONS)
+$$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_DEPS) $$(gtest_deps)
 	$(hide) ($$(call ART_TEST_SKIP,$$@) && $$< && $$(call ART_TEST_PASSED,$$@)) \
 	  || $$(call ART_TEST_FAILED,$$@)
 
@@ -238,7 +243,7 @@
   ART_TEST_HOST_GTEST_$(1)_RULES += $$(gtest_rule)
 
 .PHONY: valgrind-$$(gtest_rule)
-valgrind-$$(gtest_rule): $$(gtest_exe) test-art-host-dependencies $$(ART_GTEST_$(1)_DEPS)
+valgrind-$$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_DEPS) $$(gtest_deps)
 	$(hide) $$(call ART_TEST_SKIP,$$@) && \
 	  valgrind --leak-check=full --error-exitcode=1 $$< && $$(call ART_TEST_PASSED,$$@) \
 	    || $$(call ART_TEST_FAILED,$$@)
@@ -251,6 +256,7 @@
   valgrind_gtest_rule :=
   gtest_rule :=
   gtest_exe :=
+  gtest_deps :=
 endef  # define-art-gtest-rule-host
 
 # Define the rules to build and run host and target gtests.
@@ -443,7 +449,7 @@
 ART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
 ART_TEST_TARGET_GTEST_RULES :=
 ART_GTEST_class_linker_test_DEPS :=
-ART_GTEST_compiler_test_DEPS :=
+ART_GTEST_compiler_driver_test_DEPS :=
 ART_GTEST_dex_file_test_DEPS :=
 ART_GTEST_exception_test_DEPS :=
 ART_GTEST_jni_compiler_test_DEPS :=
diff --git a/test/Android.oat.mk b/test/Android.oat.mk
index 6e43ab6..4e4f62c 100644
--- a/test/Android.oat.mk
+++ b/test/Android.oat.mk
@@ -163,9 +163,14 @@
 # All tests require the host executables, libarttest and the core images.
 ART_TEST_HOST_OAT_DEPENDENCIES := \
   $(ART_HOST_EXECUTABLES) \
-  $(HOST_LIBRARY_PATH)/libarttest$(ART_HOST_SHLIB_EXTENSION) \
-  $(HOST_CORE_IMG_OUT) \
+  $(ART_HOST_LIBRARY_PATH)/libarttest$(ART_HOST_SHLIB_EXTENSION) \
+  $(HOST_CORE_IMG_OUT)
+
+ifneq ($(HOST_PREFER_32_BIT),true)
+ART_TEST_HOST_OAT_DEPENDENCIES += \
+  $(2ND_ART_HOST_LIBRARY_PATH)/libarttest$(ART_HOST_SHLIB_EXTENSION) \
   $(2ND_HOST_CORE_IMG_OUT)
+endif
 
 # Define rule to run an individual oat test on the host. Output from the test is written to the
 # host in /tmp/android-data in a directory named after test's rule name (its target) and the parent
diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk
index add97be..d359fb0 100644
--- a/test/Android.run-test.mk
+++ b/test/Android.run-test.mk
@@ -109,7 +109,13 @@
 ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
   $(ART_HOST_EXECUTABLES) \
   $(HOST_CORE_IMG_OUT) \
+  $(ART_HOST_LIBRARY_PATH)/libjavacore$(ART_HOST_SHLIB_EXTENSION)
+
+ifneq ($(HOST_PREFER_32_BIT),true)
+ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
+  $(2ND_ART_HOST_LIBRARY_PATH)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
   $(2ND_HOST_CORE_IMG_OUT)
+endif
 
 # For a given test create all the combinations of host/target, compiler and suffix such as:
 # test-art-host-run-test-optimizing-003-omnibus-opcodes32