diff --git a/build/make/Makefile b/build/make/Makefile index da5721adb..e048e9cc8 100644 --- a/build/make/Makefile +++ b/build/make/Makefile @@ -146,6 +146,7 @@ $(BUILD_PFX)%.c.d: %.c $(BUILD_PFX)%.c.o: %.c $(if $(quiet),@echo " [CC] $@") + $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -c -o $@ $< $(BUILD_PFX)%.cc.d: %.cc @@ -155,6 +156,7 @@ $(BUILD_PFX)%.cc.d: %.cc $(BUILD_PFX)%.cc.o: %.cc $(if $(quiet),@echo " [CXX] $@") + $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $< $(BUILD_PFX)%.cpp.d: %.cpp @@ -164,6 +166,7 @@ $(BUILD_PFX)%.cpp.d: %.cpp $(BUILD_PFX)%.cpp.o: %.cpp $(if $(quiet),@echo " [CXX] $@") + $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $< $(BUILD_PFX)%.asm.d: %.asm @@ -174,6 +177,7 @@ $(BUILD_PFX)%.asm.d: %.asm $(BUILD_PFX)%.asm.o: %.asm $(if $(quiet),@echo " [AS] $@") + $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) $(qexec)$(AS) $(ASFLAGS) -o $@ $< $(BUILD_PFX)%.s.d: %.s @@ -184,12 +188,14 @@ $(BUILD_PFX)%.s.d: %.s $(BUILD_PFX)%.s.o: %.s $(if $(quiet),@echo " [AS] $@") + $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) $(qexec)$(AS) $(ASFLAGS) -o $@ $< .PRECIOUS: %.c.S %.c.S: CFLAGS += -DINLINE_ASM $(BUILD_PFX)%.c.S: %.c $(if $(quiet),@echo " [GEN] $@") + $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) $(qexec)$(CC) -S $(CFLAGS) -o $@ $< .PRECIOUS: %.asm.s @@ -332,9 +338,11 @@ endif skip_deps := $(filter %clean,$(MAKECMDGOALS)) skip_deps += $(findstring testdata,$(MAKECMDGOALS)) ifeq ($(strip $(skip_deps)),) - # Older versions of make don't like -include directives with no arguments - ifneq ($(filter %.d,$(OBJS-yes:.o=.d)),) - -include $(filter %.d,$(OBJS-yes:.o=.d)) + ifeq ($(CONFIG_DEPENDENCY_TRACKING),yes) + # Older versions of make don't like -include directives with no arguments + ifneq ($(filter %.d,$(OBJS-yes:.o=.d)),) + -include $(filter %.d,$(OBJS-yes:.o=.d)) + endif endif endif diff --git a/build/make/configure.sh b/build/make/configure.sh index 723509103..25c9f8014 100644 --- a/build/make/configure.sh +++ b/build/make/configure.sh @@ -83,6 +83,8 @@ Build options: ${toggle_gprof} enable/disable gprof profiling instrumentation ${toggle_gcov} enable/disable gcov coverage instrumentation ${toggle_thumb} enable/disable building arm assembly in thumb mode + ${toggle_dependency_tracking} + disable to speed up one-time build Install options: ${toggle_install_docs} control whether docs are installed diff --git a/configure b/configure index 88df374b8..f3708f9d0 100755 --- a/configure +++ b/configure @@ -209,6 +209,7 @@ enable_feature install_libs enable_feature static enable_feature optimizations +enable_feature dependency_tracking enable_feature fast_unaligned #allow unaligned accesses, if supported by hw enable_feature spatial_resampling enable_feature multithread @@ -286,6 +287,7 @@ EXPERIMENT_LIST=" emulate_hardware " CONFIG_LIST=" + dependency_tracking external_build install_docs install_bins @@ -344,6 +346,7 @@ CONFIG_LIST=" ${EXPERIMENT_LIST} " CMDLINE_SELECT=" + dependency_tracking external_build extra_warnings werror diff --git a/examples.mk b/examples.mk index fd67a44df..4ff1de4ee 100644 --- a/examples.mk +++ b/examples.mk @@ -338,6 +338,7 @@ $(foreach proj,$(call enabled,PROJECTS),\ # %.dox: %.c @echo " [DOXY] $@" + @mkdir -p $(dir $@) @echo "/*!\page example_$(@F:.dox=) $(@F:.dox=)" > $@ @echo " \includelineno $(<F)" >> $@ @echo "*/" >> $@ diff --git a/libs.mk b/libs.mk index 38b4b1112..4aee94e53 100644 --- a/libs.mk +++ b/libs.mk @@ -489,7 +489,11 @@ libs.doxy: $(CODEC_DOC_SRCS) @echo "ENABLED_SECTIONS += $(sort $(CODEC_DOC_SECTIONS))" >> $@ ## Generate rtcd.h for all objects +ifeq ($(CONFIG_DEPENDENCY_TRACKING),yes) $(OBJS-yes:.o=.d): $(RTCD) +else +$(OBJS-yes): $(RTCD) +endif ## Update the global src list SRCS += $(CODEC_SRCS) $(LIBVPX_TEST_SRCS) $(GTEST_SRCS)