.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
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)))
#
# 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)
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
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))
## 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)