diff --git a/core/definitions.mk b/core/definitions.mk index 1a009fb76..78b607b63 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -931,24 +931,6 @@ 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) @@ -963,8 +945,8 @@ $(hide) $(PRIVATE_RS_CC) \ $(PRIVATE_RS_FLAGS) \ $(foreach inc,$(PRIVATE_RS_INCLUDES),$(addprefix -I , $(inc))) \ $(PRIVATE_RS_SOURCE_FILES) - $(call _merge-renderscript-d,$(PRIVATE_DEP_FILES),$@.d) - $(call transform-d-to-p-args,$@.d,$@.P) + $(foreach d,$(PRIVATE_DEP_FILES),\ + $(call transform-d-to-p-args,$(d),$(d:%.d=%.P))$(newline)) $(hide) mkdir -p $(dir $@) $(hide) touch $@ endef @@ -987,6 +969,24 @@ 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) diff --git a/core/java.mk b/core/java.mk index c070583ed..a0ab4c5c9 100644 --- a/core/java.mk +++ b/core/java.mk @@ -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. -$(call include-depfile,$(RenderScript_file_stamp).P,$(RenderScript_file_stamp)) +-include $(bc_dep_files:%.d=%.P) ifneq ($(LOCAL_RENDERSCRIPT_COMPATIBILITY),)