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
This commit is contained in:
parent
6becad426c
commit
b72373de79
@ -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) > $@
|
||||
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 @@ 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)
|
||||
|
@ -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)
|
||||
|
16
libs.mk
16
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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user