Generate .d files for generated .c files

so ninja can regenerate these files when included header files
are updated.

Bug: 27954979
Change-Id: I7be71330a84be63a0717df4557c089a7b9dfc27c
diff --git a/Android.mk b/Android.mk
index dd2db53..3351048 100644
--- a/Android.mk
+++ b/Android.mk
@@ -53,6 +53,7 @@
 $(my_gen): PRIVATE_CUSTOM_TOOL = $< $(PRIVATE_CC) $@
 $(my_gen): $(LOCAL_PATH)/gen_syscalls.sh
 	$(transform-generated-source)
+$(call include-depfile,$(my_gen).d,$(my_gen))
 LOCAL_GENERATED_SOURCES_$(TARGET_ARCH) += $(my_gen)
 
 my_gen := $(generated_sources_dir)/$(TARGET_ARCH)/libconstants.c
@@ -60,6 +61,7 @@
 $(my_gen): PRIVATE_CUSTOM_TOOL = $< $(PRIVATE_CC) $@
 $(my_gen): $(LOCAL_PATH)/gen_constants.sh
 	$(transform-generated-source)
+$(call include-depfile,$(my_gen).d,$(my_gen))
 LOCAL_GENERATED_SOURCES_$(TARGET_ARCH) += $(my_gen)
 
 # For processes running in 32-bit compat mode on 64-bit processors.
diff --git a/gen_constants.sh b/gen_constants.sh
index 9f217ee..2ec3971 100755
--- a/gen_constants.sh
+++ b/gen_constants.sh
@@ -33,6 +33,13 @@
 #include <sys/stat.h>
 #include <sys/types.h>'
 
+# Generate a dependency file which helps the build tool to see when it
+# should regenerate ${OUTFILE}.
+echo "${INCLUDES}" | ${CC} - -E -M -MF ${OUTFILE}.d.tmp
+# Correct the output filename.
+(echo "${OUTFILE}: \\" ; sed 's/^-\.o://' ${OUTFILE}.d.tmp) > ${OUTFILE}.d
+rm ${OUTFILE}.d.tmp
+
 # sed expression which extracts constants and converts them from:
 #   #define AT_FDWCD foo
 # to:
diff --git a/gen_syscalls.sh b/gen_syscalls.sh
index 579f8bc..51b5838 100755
--- a/gen_syscalls.sh
+++ b/gen_syscalls.sh
@@ -24,6 +24,13 @@
 fi
 OUTFILE="$1"
 
+# Generate a dependency file which helps the build tool to see when it
+# should regenerate ${OUTFILE}.
+echo '#include <asm/unistd.h>' | ${CC} - -E -M -MF ${OUTFILE}.d.tmp
+# Correct the output filename.
+(echo "${OUTFILE}: \\" ; sed 's/^-\.o://' ${OUTFILE}.d.tmp) > ${OUTFILE}.d
+rm ${OUTFILE}.d.tmp
+
 # sed expression which extracts system calls that are
 # defined via asm/unistd.h.  It converts them from:
 #  #define __NR_read foo