From: John Koleszar Date: Wed, 31 Oct 2012 20:13:19 +0000 (-0700) Subject: make: flatten object file directories X-Git-Tag: v1.3.0~1217^2~97 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b72373de79800e801ce730d24cb115daf78ae660;p=libvpx make: flatten object file directories Rather than building an object file directory heirarchy matching the source tree's layout, rename the object files so that the object file name contains the path in the source file tree. The intent here is to allow two files in different parts of the source tree to have the same name and still not collide when put into an ar archive. Change-Id: Id627737dc95ffc65b738501215f34a995148c5a2 --- diff --git a/build/make/Makefile b/build/make/Makefile index 92113ccb8..830360eaa 100644 --- a/build/make/Makefile +++ b/build/make/Makefile @@ -103,55 +103,60 @@ test:: .PHONY: testdata testdata:: -$(BUILD_PFX)%.c.d: %.c - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -M $< | $(fmt_deps) > $@ - -$(BUILD_PFX)%.c.o: %.c - $(if $(quiet),@echo " [CC] $@") - $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -c -o $@ $< - -$(BUILD_PFX)%.cc.d: %.cc - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -M $< | $(fmt_deps) > $@ - -$(BUILD_PFX)%.cc.o: %.cc - $(if $(quiet),@echo " [CXX] $@") - $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $< - -$(BUILD_PFX)%.asm.d: %.asm - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) +xform_obj_prefix:=.objs/$(TOOLCHAIN)/ +xform_obj_path=$(if $(1),$(addprefix $(xform_obj_prefix),$(subst /,_,$(1))),$(xform_obj_prefix)) +xform_obj_path_o_d=$(call xform_obj_path,$(1).o) $(call xform_obj_path,$(1).d) +define obj_rules_template +$(BUILD_PFX)$(call xform_obj_path,$(1))%.c.d: $(1)%.c + $(if $(quiet),@echo " [DEP] $$@") + $(qexec)mkdir -p $$(dir $$@) + $(qexec)$(CC) $$(INTERNAL_CFLAGS) $$(CFLAGS) -M $$< | $(fmt_deps) > $$@ + +$(BUILD_PFX)$(call xform_obj_path,$(1))%.c.o: $(1)%.c + $(if $(quiet),@echo " [CC] $$@") + $(qexec)$(CC) $$(INTERNAL_CFLAGS) $$(CFLAGS) -c -o $$@ $$< + +$(BUILD_PFX)$(call xform_obj_path,$(1))%.cc.d: $(1)%.cc + $(if $(quiet),@echo " [DEP] $$@") + $(qexec)mkdir -p $$(dir $$@) + $(qexec)$(CXX) $$(INTERNAL_CFLAGS) $$(CXXFLAGS) -M $$< | $(fmt_deps) > $$@ + +$(BUILD_PFX)$(call xform_obj_path,$(1))%.cc.o: $(1)%.cc + $(if $(quiet),@echo " [CXX] $$@") + $(qexec)$(CXX) $$(INTERNAL_CFLAGS) $$(CXXFLAGS) -c -o $$@ $$< + +$(BUILD_PFX)$(call xform_obj_path,$(1))%.asm.d: $(1)%.asm + $(if $(quiet),@echo " [DEP] $$@") + $(qexec)mkdir -p $$(dir $$@) $(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \ - --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@ + --build-pfx=$(BUILD_PFX) --depfile=$$@ $$(ASFLAGS) $$< > $$@ -$(BUILD_PFX)%.asm.o: %.asm - $(if $(quiet),@echo " [AS] $@") - $(qexec)$(AS) $(ASFLAGS) -o $@ $< +$(BUILD_PFX)$(call xform_obj_path,$(1))%.asm.o: $(1)%.asm + $(if $(quiet),@echo " [AS] $$@") + $(qexec)$(AS) $$(ASFLAGS) -o $$@ $$< -$(BUILD_PFX)%.s.d: %.s - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) +$(BUILD_PFX)$(call xform_obj_path,$(1))%.s.d: $(1)%.s + $(if $(quiet),@echo " [DEP] $$@") + $(qexec)mkdir -p $$(dir $$@) $(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \ - --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@ + --build-pfx=$(BUILD_PFX) --depfile=$$@ $$(ASFLAGS) $$< > $$@ -$(BUILD_PFX)%.s.o: %.s - $(if $(quiet),@echo " [AS] $@") - $(qexec)$(AS) $(ASFLAGS) -o $@ $< +$(BUILD_PFX)$(call xform_obj_path,$(1))%.s.o: $(1)%.s + $(if $(quiet),@echo " [AS] $$@") + $(qexec)$(AS) $$(ASFLAGS) -o $$@ $$< .PRECIOUS: %.c.S %.c.S: CFLAGS += -DINLINE_ASM -$(BUILD_PFX)%.c.S: %.c - $(if $(quiet),@echo " [GEN] $@") - $(qexec)$(CC) -S $(CFLAGS) -o $@ $< +$(BUILD_PFX)$(call xform_obj_path,$(1))%.c.S: $(1)%.c + $(if $(quiet),@echo " [GEN] $$@") + $(qexec)$(CC) -S $$(CFLAGS) -o $$@ $$< .PRECIOUS: %.asm.s -$(BUILD_PFX)%.asm.s: %.asm - $(if $(quiet),@echo " [ASM CONVERSION] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(ASM_CONVERSION) <$< >$@ +$(BUILD_PFX)$(call xform_obj_path,$(1))%.asm.s: $(1)%.asm + $(if $(quiet),@echo " [ASM CONVERSION] $$@") + $(qexec)mkdir -p $$(dir $$@) + $(qexec)$(ASM_CONVERSION) <$$< >$$@ +endef # If we're in debug mode, pretend we don't have GNU strip, to fall back to # the copy implementation @@ -193,7 +198,7 @@ cond_enabled=$(if $(filter yes,$($(1))), $(call enabled,$(2))) find_file1=$(word 1,$(wildcard $(subst //,/,$(addsuffix /$(1),$(2))))) find_file=$(foreach f,$(1),$(call find_file1,$(strip $(f)),$(strip $(2))) ) obj_pats=.c=.c.o $(AS_SFX)=$(AS_SFX).o .cc=.cc.o -objs=$(addprefix $(BUILD_PFX),$(foreach p,$(obj_pats),$(filter %.o,$(1:$(p))) )) +objs=$(addprefix $(BUILD_PFX),$(call xform_obj_path,$(foreach p,$(obj_pats),$(filter %.o,$(1:$(p))) ))) install_map_templates=$(eval $(call install_map_template,$(1),$(2))) @@ -301,6 +306,10 @@ endif # # Configuration dependent rules # +SRC_DIRS:=$(patsubst %/,%,$(sort $(dir $(SRCS)))) +$(foreach d,$(SRC_DIRS), $(eval $(call obj_rules_template,$(d)/))) +$(eval $(call obj_rules_template)) # for ./ + $(call pairmap,install_map_templates,$(INSTALL_MAPS)) DOCS=$(call cond_enabled,CONFIG_INSTALL_DOCS,DOCS) diff --git a/examples.mk b/examples.mk index 0d4b4d5a9..aea29ebca 100644 --- a/examples.mk +++ b/examples.mk @@ -288,3 +288,6 @@ CLEAN-OBJS += examples.doxy samples.dox $(ALL_EXAMPLES:.c=.dox) DOCS-yes += examples.doxy samples.dox $(ALL_EXAMPLES:.c=.dox) examples.doxy: samples.dox $(ALL_EXAMPLES:.c=.dox) @echo "INPUT += $^" > $@ + +## Update the global src list +SRCS += $(ALL_SRCS) diff --git a/libs.mk b/libs.mk index 9af6a35c7..792e305e5 100644 --- a/libs.mk +++ b/libs.mk @@ -24,20 +24,20 @@ endif ifeq ($(filter icc gcc,$(TGT_CC)), $(TGT_CC)) OFFSET_PATTERN:='^[a-zA-Z0-9_]* EQU' define asm_offsets_template -$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(2).S +$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(call xform_obj_path,$(2)).S @echo " [CREATE] $$@" $$(qexec)LC_ALL=C grep $$(OFFSET_PATTERN) $$< | tr -d '$$$$\#' $$(ADS2GAS) > $$@ -$$(BUILD_PFX)$(2).S: $(2) -CLEAN-OBJS += $$(BUILD_PFX)$(1) $(2).S +$$(BUILD_PFX)$(call xform_obj_path,$(2)).S: $(2) +CLEAN-OBJS += $$(BUILD_PFX)$(1) $(call xform_obj_path,$(2)).S endef else ifeq ($(filter rvct,$(TGT_CC)), $(TGT_CC)) define asm_offsets_template $$(BUILD_PFX)$(1): obj_int_extract -$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(2).o +$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(call xform_obj_path,$(2)).o @echo " [CREATE] $$@" $$(qexec)./obj_int_extract rvds $$< $$(ADS2GAS) > $$@ -OBJS-yes += $$(BUILD_PFX)$(2).o +OBJS-yes += $$(BUILD_PFX)$(call xform_obj_path,$(2)).o CLEAN-OBJS += $$(BUILD_PFX)$(1) $$(filter %$$(ASM).o,$$(OBJS-yes)): $$(BUILD_PFX)$(1) endef @@ -387,6 +387,9 @@ LIBVPX_TEST_DATA_PATH ?= . include $(SRC_PATH_BARE)/test/test.mk LIBVPX_TEST_SRCS=$(addprefix test/,$(call enabled,LIBVPX_TEST_SRCS)) +ifeq ($(CONFIG_VP8_DECODER),yes) +LIBVPX_TEST_SRCS += md5_utils.h md5_utils.c +endif LIBVPX_TEST_BINS=./test_libvpx LIBVPX_TEST_DATA=$(addprefix $(LIBVPX_TEST_DATA_PATH)/,\ $(call enabled,LIBVPX_TEST_DATA)) @@ -500,3 +503,6 @@ libs.doxy: $(CODEC_DOC_SRCS) ## Generate vpx_rtcd.h for all objects $(OBJS-yes:.o=.d): $(BUILD_PFX)vpx_rtcd.h + +## Update the global src list +SRCS += $(CODEC_SRCS) $(LIBVPX_TEST_SRCS) $(GTEST_SRCS) diff --git a/test/test.mk b/test/test.mk index 4fb464e64..bc1eea71a 100644 --- a/test/test.mk +++ b/test/test.mk @@ -21,7 +21,6 @@ LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += i420_video_source.h LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += keyframe_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += resize_test.cc -LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += ../md5_utils.h ../md5_utils.c LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += decode_test_driver.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += decode_test_driver.h LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += ivf_video_source.h diff --git a/vp8/vp8cx.mk b/vp8/vp8cx.mk index 4ff3ef2c0..6d0992144 100644 --- a/vp8/vp8cx.mk +++ b/vp8/vp8cx.mk @@ -101,7 +101,7 @@ VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/quantize_sse2.asm ifeq ($(CONFIG_TEMPORAL_DENOISING),yes) VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/denoising_sse2.c ifeq ($(HAVE_SSE2),yes) -vp8/encoder/x86/denoising_sse2.c.o: CFLAGS += -msse2 +$(call xform_obj_path_o_d,vp8/encoder/x86/denoising_sse2.c): CFLAGS += -msse2 endif endif diff --git a/vp9/vp9_common.mk b/vp9/vp9_common.mk index 1afecbfd0..f24313e4c 100644 --- a/vp9/vp9_common.mk +++ b/vp9/vp9_common.mk @@ -115,15 +115,15 @@ endif VP9_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/filter_sse4.c ifeq ($(HAVE_SSE4_1),yes) -vp9/common/x86/filter_sse4.c.o: CFLAGS += -msse4 +$(call xform_obj_path_o_d,vp9/common/x86/filter_sse4.c): CFLAGS += -msse4 endif VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/filter_sse2.c VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/sadmxn_x86.c ifeq ($(HAVE_SSE2),yes) -vp9/common/x86/filter_sse2.c.o: CFLAGS += -msse2 -vp9/common/x86/loopfilter_x86.c.o: CFLAGS += -msse2 -vp9/common/x86/sadmxn_x86.c.o: CFLAGS += -msse2 +$(call xform_obj_path_o_d,vp9/common/x86/filter_sse2.c): CFLAGS += -msse2 +$(call xform_obj_path_o_d,vp9/common/x86/loopfilter_x86.c): CFLAGS += -msse2 +$(call xform_obj_path_o_d,vp9/common/x86/sadmxn_x86.c): CFLAGS += -msse2 endif VP9_COMMON_SRCS-$(ARCH_ARM) += common/arm/arm_systemdependent.c