Always run dex2oat (2 of 3)

Change-Id: I2714508cbd655adfd9c6d46b40eedabc9d83dff6
diff --git a/Android.mk b/Android.mk
index e498db0..4086c2f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -65,8 +65,8 @@
 
 ART_TARGET_DEPENDENCIES := $(ART_TARGET_EXECUTABLES) $(TARGET_OUT_JAVA_LIBRARIES)/core.jar $(TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so
 
-ART_HOST_TEST_DEPENDENCIES   := $(ART_HOST_DEPENDENCIES)   $(ART_HOST_TEST_EXECUTABLES)   $(ART_TEST_DEX_FILES) $(ART_TEST_OAT_FILES)
-ART_TARGET_TEST_DEPENDENCIES := $(ART_TARGET_DEPENDENCIES) $(ART_TARGET_TEST_EXECUTABLES) $(ART_TEST_DEX_FILES) $(ART_TEST_OAT_FILES)
+ART_HOST_TEST_DEPENDENCIES   := $(ART_HOST_DEPENDENCIES)   $(ART_HOST_TEST_EXECUTABLES)   $(ART_TEST_DEX_FILES)
+ART_TARGET_TEST_DEPENDENCIES := $(ART_TARGET_DEPENDENCIES) $(ART_TARGET_TEST_EXECUTABLES) $(ART_TEST_DEX_FILES)
 
 ########################################################################
 # host test targets
@@ -119,32 +119,30 @@
 	@echo test-art-target-run-test-002 PASSED
 
 ########################################################################
-# oat test targets
+# oat-target and oat-target-sync targets
 
-# $(1): jar or apk name
-define art-cache-oat
-  $(call art-cache-out,$(1).oat)
+OAT_TARGET_TARGETS :=
+
+# $(1): input jar or apk target location
+define declare-oat-target-target
+.PHONY: oat-target-$(1)
+oat-target-$(1): $(PRODUCT_OUT)/$(1) $(TARGET_BOOT_IMG_OUT) $(DEX2OAT_DEPENDENCY)
+	$(DEX2OAT) --runtime-arg -Xms64m --runtime-arg -Xmx64m --boot-image=$(TARGET_BOOT_IMG_OUT) --dex-file=$(PRODUCT_OUT)/$(1) --dex-location=$(1) --oat-file=$(call art-cache-out,$(1).oat) --host-prefix=$(PRODUCT_OUT)
+
+OAT_TARGET_TARGETS += oat-target-$(1)
 endef
 
-ART_CACHE_OATS :=
-# $(1): name
-define build-art-cache-oat
-  $(call build-art-oat,$(PRODUCT_OUT)/$(1),/$(1),$(call art-cache-oat,$(1)),$(TARGET_BOOT_IMG_OUT))
-  ART_CACHE_OATS += $(call art-cache-oat,$(1))
-endef
-
-
-########################################################################
-# oat-target-sync
-
 $(foreach file,\
   $(filter-out\
     $(TARGET_BOOT_DEX),\
     $(wildcard $(TARGET_OUT_APPS)/*.apk) $(wildcard $(TARGET_OUT_JAVA_LIBRARIES)/*.jar)),\
-  $(eval $(call build-art-cache-oat,$(subst $(PRODUCT_OUT)/,,$(file)))))
+  $(eval $(call declare-oat-target-target,$(subst $(PRODUCT_OUT)/,,$(file)))))
+
+.PHONY: oat-target
+oat-target: $(ART_TARGET_DEPENDENCIES) $(TARGET_BOOT_OAT_OUT) $(OAT_TARGET_TARGETS)
 
 .PHONY: oat-target-sync
-oat-target-sync: $(ART_TARGET_DEPENDENCIES) $(TARGET_BOOT_OAT_OUT) $(ART_CACHE_OATS)
+oat-target-sync: oat-target
 	adb remount
 	adb sync
 
diff --git a/build/Android.common.mk b/build/Android.common.mk
index aee7bdd..9825a9c 100644
--- a/build/Android.common.mk
+++ b/build/Android.common.mk
@@ -26,20 +26,6 @@
 include $(LLVM_ROOT_PATH)/llvm.mk
 endif
 
-# art-cache
-ART_CACHE_DIR := /data/art-cache
-ART_CACHE_OUT := $(TARGET_OUT_DATA)/art-cache
-
-# $(1): pathname
-define art-cache-dir
-$(ART_CACHE_DIR)/$(subst /,@,$(1))
-endef
-
-# $(1): pathname
-define art-cache-out
-$(ART_CACHE_OUT)/$(subst /,@,$(1))
-endef
-
 # directory used for gtests on device
 ART_NATIVETEST_DIR := /data/nativetest/art
 ART_NATIVETEST_OUT := $(TARGET_OUT_DATA_NATIVE_TESTS)/art
diff --git a/build/Android.oat.mk b/build/Android.oat.mk
index 4f8ff2b..b1acfb3 100644
--- a/build/Android.oat.mk
+++ b/build/Android.oat.mk
@@ -14,7 +14,7 @@
 # limitations under the License.
 #
 
-DEX2OAT := $(HOST_OUT_EXECUTABLES)/dex2oat$(HOST_EXECUTABLE_SUFFIX)
+# DEX2OAT defined in build/core/config.mk
 DEX2OATD := $(HOST_OUT_EXECUTABLES)/dex2oatd$(HOST_EXECUTABLE_SUFFIX)
 # TODO: for now, override with debug version for better error reporting
 DEX2OAT := $(DEX2OATD)
@@ -73,15 +73,10 @@
 TARGET_BOOT_JARS := $(subst :, ,$(DEXPREOPT_BOOT_JARS))
 TARGET_BOOT_DEX_LOCATIONS := $(foreach jar,$(TARGET_BOOT_JARS),/$(DEXPREOPT_BOOT_JAR_DIR)/$(jar).jar)
 TARGET_BOOT_DEX_FILES := $(foreach jar,$(TARGET_BOOT_JARS),$(call intermediates-dir-for,JAVA_LIBRARIES,$(jar),,COMMON)/javalib.jar)
-ifeq ($(TARGET_PRODUCT),$(filter $(TARGET_PRODUCT),trygon))
-  TARGET_BOOT_OAT := $(call art-cache-dir,$(DEXPREOPT_BOOT_JAR_DIR)/boot.oat)
-  TARGET_BOOT_OAT_OUT := $(call art-cache-out,$(DEXPREOPT_BOOT_JAR_DIR)/boot.oat)
-  TARGET_BOOT_IMG_OUT := $(call art-cache-out,$(DEXPREOPT_BOOT_JAR_DIR)/boot.art)
-else
-  TARGET_BOOT_OAT := /$(DEXPREOPT_BOOT_JAR_DIR)/boot.oat
-  TARGET_BOOT_OAT_OUT := $(TARGET_OUT_JAVA_LIBRARIES)/boot.oat
-  TARGET_BOOT_IMG_OUT := $(TARGET_OUT_JAVA_LIBRARIES)/boot.art
-endif
+
+TARGET_BOOT_IMG_OUT := $(DEFAULT_DEX_PREOPT_IMAGE)
+TARGET_BOOT_OAT_OUT := $(patsubst %.art,%.oat,$(TARGET_BOOT_IMG_OUT))
+TARGET_BOOT_OAT := $(subst $(PRODUCT_OUT),,$(TARGET_BOOT_OAT_OUT))
 
 $(TARGET_BOOT_OAT_OUT): $(TARGET_BOOT_DEX_FILES) $(DEX2OAT_DEPENDENCY)
 	@echo "target dex2oat: $@ ($?)"
diff --git a/build/Android.oattest.mk b/build/Android.oattest.mk
index 7e630c7..bba51e9 100644
--- a/build/Android.oattest.mk
+++ b/build/Android.oattest.mk
@@ -29,6 +29,7 @@
   LOCAL_JAVA_LIBRARIES := core
   LOCAL_NO_STANDARD_LIBRARIES := true
   LOCAL_MODULE_PATH := $(3)
+  LOCAL_DEX_PREOPT_IMAGE := $(TARGET_CORE_IMG_OUT)
   include $(BUILD_JAVA_LIBRARY)
   ART_TEST_DEX_FILES += $(3)/$$(LOCAL_MODULE).jar
 endef
@@ -37,36 +38,11 @@
 
 ########################################################################
 
-# $(1): input jar or apk filename
-# $(2): input jar or apk target location
-# $(3): output oat filename
-# $(4): boot image
-define build-art-oat
-$(3): $(1) $(4) $(DEX2OAT_DEPENDENCY)
-	@echo "target dex2oat: $$@ ($$?)"
-	@mkdir -p $$(dir $$@)
-	$(hide) $(DEX2OAT) --runtime-arg -Xms64m --runtime-arg -Xmx64m --boot-image=$(4) --dex-file=$(1) --dex-location=$(2) --oat-file=$$@ --host-prefix=$(PRODUCT_OUT)
-endef
-
-########################################################################
-ART_TEST_OAT_FILES :=
-
-# $(1): directory
-define build-art-test-oat
-  $(call build-art-oat,$(call intermediates-dir-for,JAVA_LIBRARIES,oat-test-dex-$(dir),,COMMON)/javalib.jar,$(ART_TEST_DIR)/oat-test-dex-$(1).jar,$(ART_TEST_OUT)/oat-test-dex-$(1).jar.oat,$(TARGET_CORE_IMG_OUT))
-  ART_TEST_OAT_FILES += $(ART_TEST_OUT)/oat-test-dex-$(1).jar.oat
-endef
-ifneq (user,$(TARGET_BUILD_VARIANT))
-  $(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call build-art-test-oat,$(dir))))
-endif
-
-########################################################################
-
 ART_TEST_OAT_TARGETS :=
 
 # $(1): directory
 # $(2): arguments
-define declare-test-test-target
+define declare-test-art-target
 .PHONY: test-art-target-oat-$(1)
 test-art-target-oat-$(1): $(ART_TEST_OUT)/oat-test-dex-$(1).jar test-art-target-sync
 	adb shell touch $(ART_TEST_DIR)/test-art-target-oat-$(1)
@@ -77,6 +53,6 @@
 
 ART_TEST_OAT_TARGETS += test-art-target-oat-$(1)
 endef
-$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call declare-test-test-target,$(dir))))
+$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call declare-test-art-target,$(dir))))
 
 ########################################################################