Fix oat-target-* to create output directory
Change-Id: I43e76d4306a616926c2a10900c3e92589996e8fd
diff --git a/Android.mk b/Android.mk
index e28f3b0..57339ec 100644
--- a/Android.mk
+++ b/Android.mk
@@ -274,15 +274,18 @@
endif
ifeq ($(ONE_SHOT_MAKEFILE),)
+# ONE_SHOT_MAKEFILE is empty for a top level build and we don't want
+# to define the oat-target-* rules there because they will conflict
+# with the build/core/dex_preopt.mk defined rules.
.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=$$(OUT_OAT_FILE) --host-prefix=$(PRODUCT_OUT) --instruction-set=$(TARGET_ARCH) --android-root=$(PRODUCT_OUT)/system
+oat-target-$(1):
else
.PHONY: oat-target-$(1)
oat-target-$(1): $$(OUT_OAT_FILE)
$$(OUT_OAT_FILE): $(PRODUCT_OUT)/$(1) $(TARGET_BOOT_IMG_OUT) $(DEX2OAT_DEPENDENCY)
+ @mkdir -p $$(dir $$@)
$(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) --instruction-set=$(TARGET_ARCH) --android-root=$(PRODUCT_OUT)/system
endif