OSDN Git Service

Use dependency files generated by llvm-rs-cc for Java
authorShinichiro Hamaji <hamaji@google.com>
Thu, 28 Jan 2016 08:00:33 +0000 (17:00 +0900)
committerShinichiro Hamaji <hamaji@google.com>
Thu, 28 Jan 2016 08:03:02 +0000 (17:03 +0900)
This is similar to 2e45fd036ad308cfa6094b181a67f97002ebf10f
but this CL is for generated java code.

For C++ code llvm-rs-cc defines two targets but it defines
three targets for Java. The sed script was updated to handle
both cases appropriately.

Bug: 26839129
Change-Id: I5c7705c67f3c65c4c14f74558e603f8ec9f35879

core/definitions.mk
core/java.mk

index 78b607b..1a009fb 100644 (file)
@@ -931,6 +931,24 @@ endef
 ## Commands to compile RenderScript to Java
 ###########################################################
 
+## Merge multiple .d files generated by llvm-rs-cc. This is necessary
+## because ninja can handle only a single depfile per build target.
+## .d files generated by llvm-rs-cc define .stamp, .bc, and optionally
+## .java as build targets. However, there's no way to let ninja know
+## dependencies to .bc files and .java files, so we give up build
+## targets for .bc files. As we write the .stamp file as the target by
+## ourselves, the sed script removes the first two lines and append a
+## backslash to the last line to concatenate contents of multiple
+## files.
+# $(1): .d files to be merged
+# $(2): merged .d file
+define _merge-renderscript-d
+$(hide) echo '$@: $(backslash)' > $2
+$(foreach d,$1, \
+  $(hide) sed -z 's/.*: \\\n//; s/\n$$/ \\\n/' $d >> $2$(newline))
+$(hide) echo >> $2
+endef
+
 define transform-renderscripts-to-java-and-bc
 @echo "RenderScript: $(PRIVATE_MODULE) <= $(PRIVATE_RS_SOURCE_FILES)"
 $(hide) rm -rf $(PRIVATE_RS_OUTPUT_DIR)
@@ -945,8 +963,8 @@ $(hide) $(PRIVATE_RS_CC) \
   $(PRIVATE_RS_FLAGS) \
   $(foreach inc,$(PRIVATE_RS_INCLUDES),$(addprefix -I , $(inc))) \
   $(PRIVATE_RS_SOURCE_FILES)
-  $(foreach d,$(PRIVATE_DEP_FILES),\
-    $(call transform-d-to-p-args,$(d),$(d:%.d=%.P))$(newline))
+  $(call _merge-renderscript-d,$(PRIVATE_DEP_FILES),$@.d)
+  $(call transform-d-to-p-args,$@.d,$@.P)
 $(hide) mkdir -p $(dir $@)
 $(hide) touch $@
 endef
@@ -969,24 +987,6 @@ endef
 ## Commands to compile RenderScript to C++
 ###########################################################
 
-## Merge multiple .d files generated by llvm-rs-cc. This is necessary
-## because ninja can handle only a single depfile per build target.
-## We assume .d files start with two targets and their prerequisites
-## follow. The first line is for the stamp file and the second line is
-## for .bc file. There's no way to let ninja know dependencies to .bc
-## files, so we give up build targets for .bc files. As we write the
-## .stamp file as the target by ourselves, the sed script removes the
-## first two lines and append a backslash to the last line to
-## concatenate contents of multiple files.
-# $(1): .d files to be merged
-# $(2): merged .d file
-define _merge-renderscript-d
-$(hide) echo '$@: $(backslash)' > $2
-$(foreach d,$1, \
-  $(hide) sed '1d; 2d; s/\( \\\)\?$$/ \\/' $d >> $2$(newline))
-$(hide) echo >> $2
-endef
-
 define transform-renderscripts-to-cpp-and-bc
 @echo "RenderScript: $(PRIVATE_MODULE) <= $(PRIVATE_RS_SOURCE_FILES)"
 $(hide) rm -rf $(PRIVATE_RS_OUTPUT_DIR)
index a0ab4c5..c070583 100644 (file)
@@ -215,7 +215,7 @@ $(RenderScript_file_stamp): $(renderscript_sources_fullpath) $(LOCAL_RENDERSCRIP
        $(transform-renderscripts-to-java-and-bc)
 
 # include the dependency files (.d/.P) generated by llvm-rs-cc.
--include $(bc_dep_files:%.d=%.P)
+$(call include-depfile,$(RenderScript_file_stamp).P,$(RenderScript_file_stamp))
 
 ifneq ($(LOCAL_RENDERSCRIPT_COMPATIBILITY),)