oat-target-sync: Only build those apks that haven't been dex2oat'ed.

This also helps cope with slower compilation speed due to LLVM.

Change-Id: Ib0f2a8959ebcf6c64e5cbe47457432f143b3302c
diff --git a/Android.mk b/Android.mk
index 954c8b0..24e28ac 100644
--- a/Android.mk
+++ b/Android.mk
@@ -179,9 +179,21 @@
 
 # $(1): input jar or apk target location
 define declare-oat-target-target
+OUT_OAT_FILE := $(call art-cache-out,$(1).oat)
+
+ifeq ($(ONE_SHOT_MAKEFILE),)
 .PHONY: oat-target-$(1)
 oat-target-$(1): $(PRODUCT_OUT)/$(1) $(TARGET_BOOT_IMG_OUT) $(DEX2OAT_DEPENDENCY)
-	$(DEX2OAT) $(PARALLEL_ART_COMPILE_JOBS) --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)
+	$(DEX2OAT) $(PARALLEL_ART_COMPILE_JOBS) --runtime-arg -Xms64m --runtime-arg -Xmx64m --boot-image=$(TARGET_BOOT_IMG_OUT) --dex-file=$(PRODUCT_OUT)/$(1) --dex-location=/$(1) --oat-file=$(OUT_OAT_FILE) --host-prefix=$(PRODUCT_OUT)
+
+else
+.PHONY: oat-target-$(1)
+oat-target-$(1): $(OUT_OAT_FILE)
+
+$(OUT_OAT_FILE): $(PRODUCT_OUT)/$(1) $(TARGET_BOOT_IMG_OUT) $(DEX2OAT_DEPENDENCY)
+	$(DEX2OAT) $(PARALLEL_ART_COMPILE_JOBS) --runtime-arg -Xms64m --runtime-arg -Xmx64m --boot-image=$(TARGET_BOOT_IMG_OUT) --dex-file=$(PRODUCT_OUT)/$(1) --dex-location=/$(1) --oat-file=$$@ --host-prefix=$(PRODUCT_OUT)
+
+endif
 
 OAT_TARGET_TARGETS += oat-target-$(1)
 endef