aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@chromium.org>2015-03-27 17:03:28 +0100
committerPatrick Georgi <pgeorgi@google.com>2015-04-02 22:06:29 +0200
commitdb273065f67ef432937399a324364822539ca559 (patch)
tree427e4319da652712292d4d3c17f9eaa832f854f6
parent5c9f5342699a85b5c06f74924d730733591a64bd (diff)
build system: extend src-to-obj for non-.c/.S files
It also creates file names in the build directory and with the stage sliced in, but keeps the extension for anything not .c or .S. Also some handling for non-.c/.S files was adapted to match. This is inspired by the commit listed below, but rewritten to match upstream, and split in smaller pieces to keep intent clear. Change-Id: If8f89a7daffcf51f430b64c3293d2a817ae5120f Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Based-On-Change-Id: I50af7dacf616e0f8ff4c43f4acc679089ad7022b Based-On-Signed-off-by: Julius Werner <jwerner@chromium.org> Based-On-Reviewed-on: https://chromium-review.googlesource.com/219170 Reviewed-on: http://review.coreboot.org/9175 Reviewed-by: Aaron Durbin <adurbin@google.com> Tested-by: build bot (Jenkins)
-rw-r--r--Makefile9
-rw-r--r--Makefile.inc6
-rw-r--r--src/arch/arm64/armv8/secmon/Makefile.inc2
-rw-r--r--src/arch/x86/Makefile.inc6
-rw-r--r--src/cpu/x86/Makefile.inc2
-rw-r--r--src/cpu/x86/smm/Makefile.inc6
6 files changed, 18 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index c5cbda1f6d..03811c64c4 100644
--- a/Makefile
+++ b/Makefile
@@ -203,7 +203,12 @@ endif
# Eliminate duplicate mentions of source files in a class
$(foreach class,$(classes),$(eval $(class)-srcs:=$(sort $($(class)-srcs))))
-src-to-obj=$(addsuffix .$(1).o, $(basename $(patsubst src/%, $(obj)/%, $(2))))
+# Converts one or more source file paths to their corresponding build/ paths.
+# Only .c and .S get converted to .o, other files (like .ld) keep their name.
+# $1 stage name
+# $2 file path (list)
+src-to-obj=$(foreach file,$(2),$(basename $(patsubst src/%,$(obj)/%,$(file))).$(1)$(patsubst %.c,%.o,$(patsubst %.S,%.o,$(suffix $(file)))))
+
$(foreach class,$(classes),$(eval $(class)-objs:=$(call src-to-obj,$(class),$($(class)-srcs))))
# Save all objs before processing them (for dependency inclusion)
@@ -241,7 +246,7 @@ $(foreach class,$(classes), \
foreach-src=$(foreach file,$($(1)-srcs),$(eval $(call $(1)-objs_$(subst .,,$(suffix $(file)))_template,$(subst src/,,$(basename $(file))))))
$(eval $(foreach class,$(classes),$(call foreach-src,$(class))))
-DEPENDENCIES = $(originalobjs:.o=.d)
+DEPENDENCIES = $(addsuffix .d,$(basename $(allobjs)))
-include $(DEPENDENCIES)
printall:
diff --git a/Makefile.inc b/Makefile.inc
index 81b4c2b0d0..c9285cf3b8 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -142,10 +142,10 @@ bootblock-c-deps:=$$(OPTION_TABLE_H)
#######################################################################
# Add handler to compile ACPI's ASL
define ramstage-objs_asl_template
-$(obj)/$(1).ramstage.o: src/$(1).asl $(obj)/config.h
+$(obj)/$(1).ramstage.asl: src/$(1).asl $(obj)/config.h
@printf " IASL $$(subst $(top)/,,$$(@))\n"
- $(CC_ramstage) -x assembler-with-cpp -E -MMD -MT $$(@) -D__ACPI__ -P -include $(src)/include/kconfig.h -I$(obj) -I$(src) -I$(src)/include -I$(src)/arch/$(ARCHDIR-$(ARCH-ramstage-y))/include -I$(src)/mainboard/$(MAINBOARDDIR) $$< -o $$(basename $$@).asl
- cd $$(dir $$@); $(IASL) -p $$(notdir $$@) -tc $$(notdir $$(basename $$@)).asl
+ $(CC_ramstage) -x assembler-with-cpp -E -MMD -MT $$(@) -D__ACPI__ -P -include $(src)/include/kconfig.h -I$(obj) -I$(src) -I$(src)/include -I$(src)/arch/$(ARCHDIR-$(ARCH-ramstage-y))/include -I$(src)/mainboard/$(MAINBOARDDIR) $$< -o $$@
+ cd $$(dir $$@); $(IASL) -p $$(notdir $$@) -tc $$(notdir $$@)
mv $$(basename $$@).hex $$(basename $$@).c
$(CC_ramstage) $$(CFLAGS_ramstage) $$(CPPFLAGS_ramstage) $$(if $$(subst dsdt,,$$(basename $$(notdir $(1)))), -DAmlCode=AmlCode_$$(basename $$(notdir $(1)))) -c -o $$@ $$(basename $$@).c
# keep %.o: %.c rule from catching the temporary .c file after a make clean
diff --git a/src/arch/arm64/armv8/secmon/Makefile.inc b/src/arch/arm64/armv8/secmon/Makefile.inc
index 6609692e3c..85c3c0a161 100644
--- a/src/arch/arm64/armv8/secmon/Makefile.inc
+++ b/src/arch/arm64/armv8/secmon/Makefile.inc
@@ -38,7 +38,7 @@ secmon-y += ../exception.c
secmon-y += ../../cpu.c
secmon-y += ../../transition_asm.S ../../transition.c
-ramstage-srcs += $(SECMON_BIN)
+ramstage-srcs += $(SECMON_BIN).o
$(SECMON_OBJ): $$(secmon-objs)
$(CC_secmon) $(LDFLAGS) -nostdlib -r -o $@ $^
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index e6b4bad64c..8e6ad6d932 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -196,7 +196,7 @@ $(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(obj)/mainboard/$(MAINBOARDDIR)/
mv $@.tmp $@
endif
-romstage-srcs += $(objgenerated)/crt0.s
+romstage-srcs += $(objgenerated)/crt0.S
romstage-libs ?=
@@ -237,11 +237,11 @@ $(objgenerated)/crt0.romstage.S: $$(crt0s)
@printf " GEN $(subst $(obj)/,,$(@))\n"
printf '$(foreach crt0,$(crt0s),#include "$(crt0:$(obj)/%=%)"\n)' > $@
-$(objgenerated)/crt0.romstage.o: $(objgenerated)/crt0.s
+$(objgenerated)/crt0.romstage.o: $(objgenerated)/crt0.S
@printf " CC $(subst $(obj)/,,$(@))\n"
$(CC_romstage) $(CFLAGS_x86_32) $(DISASSEMBLY) -c -o $@ $< > $(basename $@).disasm
-$(objgenerated)/crt0.s: $(objgenerated)/crt0.romstage.S $(obj)/config.h $(obj)/build.h
+$(objgenerated)/crt0.S: $(objgenerated)/crt0.romstage.S $(obj)/config.h $(obj)/build.h
@printf " CC $(subst $(obj)/,,$(@))\n"
$(CC_romstage) $(CPPFLAGS_romstage) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/x86/include -I$(obj) -include $(obj)/config.h -include $(obj)/build.h -I. -I$(src) $< -o $@
diff --git a/src/cpu/x86/Makefile.inc b/src/cpu/x86/Makefile.inc
index 2347f88500..8790eaf137 100644
--- a/src/cpu/x86/Makefile.inc
+++ b/src/cpu/x86/Makefile.inc
@@ -12,7 +12,7 @@ SIPI_BIN=$(SIPI_ELF:.elf=)
SIPI_DOTO=$(SIPI_ELF:.elf=.o)
ifeq ($(CONFIG_PARALLEL_MP),y)
-ramstage-srcs += $(SIPI_BIN)
+ramstage-srcs += $(SIPI_BIN).o
endif
rmodules_$(ARCH-ramstage-y)-$(CONFIG_PARALLEL_MP) += sipi_vector.S
diff --git a/src/cpu/x86/smm/Makefile.inc b/src/cpu/x86/smm/Makefile.inc
index b62288a246..f409c2443e 100644
--- a/src/cpu/x86/smm/Makefile.inc
+++ b/src/cpu/x86/smm/Makefile.inc
@@ -58,8 +58,8 @@ smm-y += smm_module_handler.c
ramstage-y += smm_module_loader.c
-ramstage-srcs += $(obj)/cpu/x86/smm/smm
-ramstage-srcs += $(obj)/cpu/x86/smm/smmstub
+ramstage-srcs += $(obj)/cpu/x86/smm/smm.o
+ramstage-srcs += $(obj)/cpu/x86/smm/smmstub.o
# SMM Stub Module. The stub is used as a trampoline for relocation and normal
# SMM handling.
@@ -99,7 +99,7 @@ else # CONFIG_SMM_MODULES
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smmrelocate.S
ifeq ($(CONFIG_HAVE_SMI_HANDLER),y)
-ramstage-srcs += $(obj)/cpu/x86/smm/smm_wrap
+ramstage-srcs += $(obj)/cpu/x86/smm/smm_wrap.o
endif
# Use TSEG specific entry point and linker script