Remove transform-d-to-p

Ninja doesn't need the phony make targets, in fact, the parser doesn't
handle them correctly and ends up duplicating the dependencies. This
shrinks a `m native` deps file from 54M -> 35M on AOSP.

Test: Compare out/build-aosp_angler.ninja before/after
Test: wrote a tool to dump the .ninja_deps, added dedup feature, files
      identical after dedup.
Change-Id: Iec7a9a0739e8678c1f4db79c68e423a39b9aad4b
This commit is contained in:
Dan Willemsen 2016-11-10 18:19:36 -08:00
parent 0f185d7c3b
commit 461d844a40
2 changed files with 14 additions and 56 deletions

View file

@ -776,8 +776,8 @@ $(RenderScript_file_stamp): PRIVATE_DEP_FILES := $(bc_dep_files)
$(RenderScript_file_stamp): $(renderscript_sources_fullpath) $(LOCAL_RENDERSCRIPT_CC) $(RenderScript_file_stamp): $(renderscript_sources_fullpath) $(LOCAL_RENDERSCRIPT_CC)
$(transform-renderscripts-to-cpp-and-bc) $(transform-renderscripts-to-cpp-and-bc)
# include the dependency files (.d/.P) generated by llvm-rs-cc. # include the dependency files (.d) generated by llvm-rs-cc.
$(call include-depfile,$(RenderScript_file_stamp).P,$(RenderScript_file_stamp)) $(call include-depfile,$(RenderScript_file_stamp).d,$(RenderScript_file_stamp))
LOCAL_INTERMEDIATE_TARGETS += $(RenderScript_file_stamp) LOCAL_INTERMEDIATE_TARGETS += $(RenderScript_file_stamp)
@ -1151,7 +1151,7 @@ $(call track-gen-file-obj,$(gen_s_sources),$(gen_s_objects))
ifneq ($(strip $(gen_s_objects)),) ifneq ($(strip $(gen_s_objects)),)
$(gen_s_objects): $(intermediates)/%.o: $(intermediates)/%.s \ $(gen_s_objects): $(intermediates)/%.o: $(intermediates)/%.s \
$(my_additional_dependencies) $(my_additional_dependencies)
$(transform-$(PRIVATE_HOST)s-to-o-no-deps) $(transform-$(PRIVATE_HOST)s-to-o)
endif endif
gen_asm_objects := $(gen_S_objects) $(gen_s_objects) gen_asm_objects := $(gen_S_objects) $(gen_s_objects)
@ -1301,7 +1301,7 @@ $(call track-src-file-obj,$(dotdot_sources),$(dotdot_objects_s))
ifneq ($(strip $(asm_objects_s)),) ifneq ($(strip $(asm_objects_s)),)
$(asm_objects_s): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.s \ $(asm_objects_s): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.s \
$(my_additional_dependencies) $(my_additional_dependencies)
$(transform-$(PRIVATE_HOST)s-to-o-no-deps) $(transform-$(PRIVATE_HOST)s-to-o)
endif endif
asm_objects := $(dotdot_objects_S) $(dotdot_objects_s) $(asm_objects_S) $(asm_objects_s) asm_objects := $(dotdot_objects_S) $(dotdot_objects_s) $(asm_objects_S) $(asm_objects_s)

View file

@ -897,22 +897,6 @@ define pretty
endef endef
endif endif
###########################################################
## Commands for munging the dependency files the compiler generates
###########################################################
# $(1): the input .d file
# $(2): the output .P file
define transform-d-to-p-args
$(hide) cp $(1) $(2); \
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $(1) >> $(2); \
rm -f $(1)
endef
define transform-d-to-p
$(call transform-d-to-p-args,$(@:%.o=%.d),$(@:%.o=%.P))
endef
########################################################### ###########################################################
## Commands for including the dependency files the compiler generates ## Commands for including the dependency files the compiler generates
########################################################### ###########################################################
@ -924,7 +908,7 @@ endef
# $(1): object files # $(1): object files
define include-depfiles-for-objs define include-depfiles-for-objs
$(foreach obj, $(1), $(call include-depfile, $(obj:%.o=%.P), $(obj))) $(foreach obj, $(1), $(call include-depfile, $(obj:%.o=%.d), $(obj)))
endef endef
########################################################### ###########################################################
@ -1023,7 +1007,6 @@ $(hide) $(PRIVATE_RS_CC) \
$(foreach inc,$(PRIVATE_RS_INCLUDES),$(addprefix -I , $(inc))) \ $(foreach inc,$(PRIVATE_RS_INCLUDES),$(addprefix -I , $(inc))) \
$(PRIVATE_RS_SOURCE_FILES) $(PRIVATE_RS_SOURCE_FILES)
$(call _merge-renderscript-d,$(PRIVATE_DEP_FILES),$@.d) $(call _merge-renderscript-d,$(PRIVATE_DEP_FILES),$@.d)
$(call transform-d-to-p-args,$@.d,$@.P)
$(hide) mkdir -p $(dir $@) $(hide) mkdir -p $(dir $@)
$(hide) touch $@ $(hide) touch $@
endef endef
@ -1060,7 +1043,6 @@ $(hide) $(PRIVATE_RS_CC) \
$(addprefix -I , $(PRIVATE_RS_INCLUDES)) \ $(addprefix -I , $(PRIVATE_RS_INCLUDES)) \
$(PRIVATE_RS_SOURCE_FILES) $(PRIVATE_RS_SOURCE_FILES)
$(call _merge-renderscript-d,$(PRIVATE_DEP_FILES),$@.d) $(call _merge-renderscript-d,$(PRIVATE_DEP_FILES),$@.d)
$(call transform-d-to-p-args,$@.d,$@.P)
$(hide) mkdir -p $(dir $@) $(hide) mkdir -p $(dir $@)
$(hide) touch $@ $(hide) touch $@
endef endef
@ -1261,7 +1243,6 @@ $(if $(PRIVATE_TIDY_CHECKS),$(clang-tidy-cpp))
$(hide) $(RELATIVE_PWD) $(PRIVATE_CXX) \ $(hide) $(RELATIVE_PWD) $(PRIVATE_CXX) \
$(transform-cpp-to-o-compiler-args) \ $(transform-cpp-to-o-compiler-args) \
-MD -MF $(patsubst %.o,%.d,$@) -o $@ $< -MD -MF $(patsubst %.o,%.d,$@) -o $@ $<
$(hide) $(transform-d-to-p)
endef endef
endif endif
@ -1310,11 +1291,10 @@ $(if $(PRIVATE_TIDY_CHECKS),$(clang-tidy-c))
$(hide) $(RELATIVE_PWD) $(PRIVATE_CC) \ $(hide) $(RELATIVE_PWD) $(PRIVATE_CC) \
$(transform-c-to-o-compiler-args) \ $(transform-c-to-o-compiler-args) \
-MD -MF $(patsubst %.o,%.d,$@) -o $@ $< -MD -MF $(patsubst %.o,%.d,$@) -o $@ $<
$(hide) $(transform-d-to-p)
endef endef
endif endif
define transform-s-to-o-no-deps define transform-s-to-o
@echo "$($(PRIVATE_PREFIX)DISPLAY) asm: $(PRIVATE_MODULE) <= $<" @echo "$($(PRIVATE_PREFIX)DISPLAY) asm: $(PRIVATE_MODULE) <= $<"
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
$(RELATIVE_PWD) $(PRIVATE_CC) \ $(RELATIVE_PWD) $(PRIVATE_CC) \
@ -1322,11 +1302,6 @@ $(RELATIVE_PWD) $(PRIVATE_CC) \
-MD -MF $(patsubst %.o,%.d,$@) -o $@ $< -MD -MF $(patsubst %.o,%.d,$@) -o $@ $<
endef endef
define transform-s-to-o
$(transform-s-to-o-no-deps)
$(transform-d-to-p)
endef
# YASM compilation # YASM compilation
define transform-asm-to-o define transform-asm-to-o
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
@ -1343,14 +1318,9 @@ endef
## will error at build time. ## will error at build time.
########################################################### ###########################################################
define transform-m-to-o-no-deps
@echo "$($(PRIVATE_PREFIX)DISPLAY) ObjC: $(PRIVATE_MODULE) <= $<"
$(call transform-c-or-s-to-o-no-deps, $(PRIVATE_CFLAGS) $(PRIVATE_DEBUG_CFLAGS))
endef
define transform-m-to-o define transform-m-to-o
$(transform-m-to-o-no-deps) @echo "$($(PRIVATE_PREFIX)DISPLAY) ObjC: $(PRIVATE_MODULE) <= $<"
$(transform-d-to-p) $(call transform-c-or-s-to-o, $(PRIVATE_CFLAGS) $(PRIVATE_DEBUG_CFLAGS))
endef endef
########################################################### ###########################################################
@ -1391,7 +1361,6 @@ $(if $(PRIVATE_TIDY_CHECKS),$(clang-tidy-host-cpp))
$(hide) $(RELATIVE_PWD) $(PRIVATE_CXX) \ $(hide) $(RELATIVE_PWD) $(PRIVATE_CXX) \
$(transform-host-cpp-to-o-compiler-args) \ $(transform-host-cpp-to-o-compiler-args) \
-MD -MF $(patsubst %.o,%.d,$@) -o $@ $< -MD -MF $(patsubst %.o,%.d,$@) -o $@ $<
$(hide) $(transform-d-to-p)
endef endef
endif endif
@ -1410,7 +1379,7 @@ define transform-host-c-or-s-to-o-common-args
endef endef
# $(1): extra flags # $(1): extra flags
define transform-host-c-or-s-to-o-no-deps define transform-host-c-or-s-to-o
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
$(hide) $(RELATIVE_PWD) $(PRIVATE_CC) \ $(hide) $(RELATIVE_PWD) $(PRIVATE_CC) \
$(transform-host-c-or-s-to-o-common-args) \ $(transform-host-c-or-s-to-o-common-args) \
@ -1444,32 +1413,21 @@ $(if $(PRIVATE_TIDY_CHECKS), $(clang-tidy-host-c))
$(hide) $(RELATIVE_PWD) $(PRIVATE_CC) \ $(hide) $(RELATIVE_PWD) $(PRIVATE_CC) \
$(transform-host-c-to-o-compiler-args) \ $(transform-host-c-to-o-compiler-args) \
-MD -MF $(patsubst %.o,%.d,$@) -o $@ $< -MD -MF $(patsubst %.o,%.d,$@) -o $@ $<
$(hide) $(transform-d-to-p)
endef endef
endif endif
define transform-host-s-to-o-no-deps
@echo "$($(PRIVATE_PREFIX)DISPLAY) asm: $(PRIVATE_MODULE) <= $<"
$(call transform-host-c-or-s-to-o-no-deps, $(PRIVATE_ASFLAGS))
endef
define transform-host-s-to-o define transform-host-s-to-o
$(transform-host-s-to-o-no-deps) @echo "$($(PRIVATE_PREFIX)DISPLAY) asm: $(PRIVATE_MODULE) <= $<"
$(transform-d-to-p) $(call transform-host-c-or-s-to-o, $(PRIVATE_ASFLAGS))
endef endef
########################################################### ###########################################################
## Commands for running gcc to compile a host Objective-C file ## Commands for running gcc to compile a host Objective-C file
########################################################### ###########################################################
define transform-host-m-to-o-no-deps
@echo "$($(PRIVATE_PREFIX)DISPLAY) ObjC: $(PRIVATE_MODULE) <= $<"
$(call transform-host-c-or-s-to-o-no-deps, $(PRIVATE_CFLAGS) $(PRIVATE_DEBUG_CFLAGS) $(PRIVATE_CFLAGS_NO_OVERRIDE))
endef
define transform-host-m-to-o define transform-host-m-to-o
$(transform-host-m-to-o-no-deps) @echo "$($(PRIVATE_PREFIX)DISPLAY) ObjC: $(PRIVATE_MODULE) <= $<"
$(transform-d-to-p) $(call transform-host-c-or-s-to-o, $(PRIVATE_CFLAGS) $(PRIVATE_DEBUG_CFLAGS) $(PRIVATE_CFLAGS_NO_OVERRIDE))
endef endef
########################################################### ###########################################################
@ -1534,7 +1492,7 @@ endef
define compile-dotdot-s-file-no-deps define compile-dotdot-s-file-no-deps
o := $(intermediates)/$(patsubst %.s,%.o,$(subst ../,$(DOTDOT_REPLACEMENT),$(1))) o := $(intermediates)/$(patsubst %.s,%.o,$(subst ../,$(DOTDOT_REPLACEMENT),$(1)))
$$(o) : $(TOPDIR)$(LOCAL_PATH)/$(1) $(2) $$(o) : $(TOPDIR)$(LOCAL_PATH)/$(1) $(2)
$$(transform-$$(PRIVATE_HOST)s-to-o-no-deps) $$(transform-$$(PRIVATE_HOST)s-to-o)
$(3) += $$(o) $(3) += $$(o)
endef endef