Use .KATI_IMPLICIT_OUTPUTS

This makes it so the build graph properly describes which action creates
an output file.

I'm discovering these with new kati checks:
https://github.com/google/kati/pull/189

Test: treehugger
Change-Id: I369918360d9c0412f44ce8b2fb0c50d2e6c47801
diff --git a/build/Android.oat.mk b/build/Android.oat.mk
index 638436a..cc12a5a 100644
--- a/build/Android.oat.mk
+++ b/build/Android.oat.mk
@@ -79,6 +79,7 @@
 $$(core_image_name): PRIVATE_CORE_IMAGE_LOCATION := $$(core_image_location)
 $$(core_image_name): PRIVATE_CORE_IMG_NAME := $$(core_image_name)
 $$(core_image_name): PRIVATE_CORE_OAT_NAME := $$(core_oat_name)
+$$(core_image_name): .KATI_IMPLICIT_OUTPUTS := $$(core_oat_name)
 $$(core_image_name): $$(HOST_CORE_IMG_DEX_LOCATIONS) $$(core_dex2oat_dependency)
 	@echo "host dex2oat: $$@"
 	@mkdir -p $$(dir $$@)
@@ -99,8 +100,6 @@
 	  --no-inline-from=core-oj-hostdex.jar \
 	  $$(PRIVATE_CORE_COMPILE_OPTIONS)
 
-$$(core_oat_name): $$(core_image_name)
-
   # Clean up locally used variables.
   core_dex2oat_dependency :=
   core_compile_options :=
@@ -171,6 +170,7 @@
 $$(core_image_name): PRIVATE_CORE_IMAGE_LOCATION := $$(core_image_location)
 $$(core_image_name): PRIVATE_CORE_IMG_NAME := $$(core_image_name)
 $$(core_image_name): PRIVATE_CORE_OAT_NAME := $$(core_oat_name)
+$$(core_image_name): .KATI_IMPLICIT_OUTPUTS := $$(core_oat_name)
 $$(core_image_name): $$(TARGET_CORE_IMG_DEX_FILES) $$(core_dex2oat_dependency)
 	@echo "target dex2oat: $$@"
 	@mkdir -p $$(dir $$@)
@@ -191,8 +191,6 @@
 	  --runtime-arg -XX:SlowDebug=true \
 	  $$(PRIVATE_CORE_COMPILE_OPTIONS)
 
-$$(core_oat_name): $$(core_image_name)
-
   # Clean up locally used variables.
   core_dex2oat_dependency :=
   core_compile_options :=