shithub: libvpx

Download patch

ref: b72373de79800e801ce730d24cb115daf78ae660
parent: 6becad426cddf8d98c35172eeac8bcc3282e27ec
author: John Koleszar <jkoleszar@google.com>
date: Wed Oct 31 09:13:19 EDT 2012

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

--- a/build/make/Makefile
+++ b/build/make/Makefile
@@ -103,55 +103,60 @@
 .PHONY: testdata
 testdata::
 
-$(BUILD_PFX)%.c.d: %.c
-	$(if $(quiet),@echo "    [DEP] $@")
-	$(qexec)mkdir -p $(dir $@)
-	$(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -M $< | $(fmt_deps) > $@
+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)%.c.o: %.c
-	$(if $(quiet),@echo "    [CC] $@")
-	$(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -c -o $@ $<
+$(BUILD_PFX)$(call xform_obj_path,$(1))%.c.o: $(1)%.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)$(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)%.cc.o: %.cc
-	$(if $(quiet),@echo "    [CXX] $@")
-	$(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $<
+$(BUILD_PFX)$(call xform_obj_path,$(1))%.cc.o: $(1)%.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 $@)
+$(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 @@
 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 @@
 #
 # 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)
--- a/examples.mk
+++ b/examples.mk
@@ -288,3 +288,6 @@
 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)
--- a/libs.mk
+++ b/libs.mk
@@ -24,20 +24,20 @@
 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 @@
 
 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 @@
 
 ## 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)
--- a/test/test.mk
+++ b/test/test.mk
@@ -21,7 +21,6 @@
 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
--- a/vp8/vp8cx.mk
+++ b/vp8/vp8cx.mk
@@ -101,7 +101,7 @@
 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
 
--- a/vp9/vp9_common.mk
+++ b/vp9/vp9_common.mk
@@ -115,15 +115,15 @@
 
 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