diff options
-rw-r--r-- | Makefile.inc | 18 | ||||
-rwxr-xr-x | src/arch/x86/Makefile.inc | 15 |
2 files changed, 31 insertions, 2 deletions
diff --git a/Makefile.inc b/Makefile.inc index b5e8811370..4d25dd528b 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -27,14 +27,25 @@ ARCHDIR-$(CONFIG_ARCH_X86) := x86 MAINBOARDDIR=$(call strip_quotes,$(CONFIG_MAINBOARD_DIR)) export MAINBOARDDIR +## Final build results, which CBFSTOOL uses to create the final +## rom image file, are placed under $(objcbfs). +## These typically have suffixes .debug .elf .bin and .map +export objcbfs := $(obj)/cbfs/$(CONFIG_CBFS_PREFIX) + +## Based on the active configuration, Makefile conditionally collects +## the required assembly includes and saves them in a file. +## Such files that do not have a clear one-to-one relation to a source +## file under src/ are placed and built under $(objgenerated) +export objgenerated := $(obj)/generated + ####################################################################### # root rule to resolve if in build mode (ie. configuration exists) real-target: $(obj)/config.h coreboot -coreboot: $(obj)/coreboot.rom +coreboot: build-dirs $(obj)/coreboot.rom ####################################################################### # our phony targets -PHONY+= clean-abuild coreboot lint lint-stable +PHONY+= clean-abuild coreboot lint lint-stable build-dirs ####################################################################### # root source directories of coreboot @@ -168,6 +179,9 @@ $(obj)/build.h: .xcompile $(obj)/ldoptions: $(obj)/config.h awk '/^#define ([^"])* ([^"])*$$/ {gsub("\\r","",$$3); print $$2 " = " $$3 ";";}' $< > $@ +build-dirs: + mkdir -p $(objcbfs) $(objgenerated) + ####################################################################### # Build the tools CBFSTOOL:=$(obj)/cbfstool diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index d3b5e07f9f..c374987a2f 100755 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -139,6 +139,21 @@ $(obj)/cmos_layout.bin: $(NVRAMTOOL) $(top)/src/mainboard/$(MAINBOARDDIR)/cmos.l $(NVRAMTOOL) -y $(top)/src/mainboard/$(MAINBOARDDIR)/cmos.layout -L $@ ####################################################################### +# Common recipes for all stages + +$(objcbfs)/%.bin: $(objcbfs)/%.elf + @printf " OBJCOPY $(subst $(obj)/,,$(@))\n" + $(OBJCOPY) -O binary $< $@ + +$(objcbfs)/%.elf: $(objcbfs)/%.debug + @printf " OBJCOPY $(subst $(obj)/,,$(@))\n" + cp $< $@.tmp + $(NM) -n $@.tmp | sort > $(basename $@).map + $(OBJCOPY) --strip-debug $@.tmp + $(OBJCOPY) --add-gnu-debuglink=$< $@.tmp + mv $@.tmp $@ + +####################################################################### # Build the coreboot_ram (stage 2) $(obj)/coreboot_ram: $(obj)/coreboot_ram.o $(src)/arch/x86/coreboot_ram.ld #ldoptions |