summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile11
-rw-r--r--src/arch/x86/Makefile.bigbootblock.inc4
-rw-r--r--src/arch/x86/Makefile.bootblock.inc9
-rw-r--r--src/arch/x86/Makefile.inc17
4 files changed, 30 insertions, 11 deletions
diff --git a/Makefile b/Makefile
index 4361b20fc7..a61acdf9db 100644
--- a/Makefile
+++ b/Makefile
@@ -184,6 +184,7 @@ ramstage-srcs:=$(obj)/mainboard/$(MAINBOARDDIR)/static.c
romstage-srcs:=
driver-srcs:=
smm-srcs:=
+cbfs-files:=
ramstage-objs:=
romstage-objs:=
@@ -197,11 +198,20 @@ types:=ramstage romstage driver smm
includemakefiles= \
$(foreach type,$(2), $(eval $(type)-y:=)) \
$(eval subdirs-y:=) \
+ $(eval cbfs-files-y:=) \
$(eval -include $(1)) \
$(foreach type,$(2), \
$(eval $(type)-srcs+= \
$$(subst $(top)/,, \
$$(abspath $$(addprefix $(dir $(1)),$$($(type)-y)))))) \
+ $(foreach file,$(cbfs-files-y), \
+ $(if $(wildcard $(dir $(1))$(file)), \
+ $(eval tmp-cbfs-file:= $(wildcard $(dir $(1))$(file))), \
+ $(eval tmp-cbfs-file:= $(file))) \
+ $(eval cbfs-files += $(tmp-cbfs-file)|$$($(file)-name)|$$($(file)-type)|$$($(file)-position)) \
+ $(eval $(file)-name:=) \
+ $(eval $(file)-type:=) \
+ $(eval $(file)-position:=)) \
$(eval subdirs+=$$(subst $(CURDIR)/,,$$(abspath $$(addprefix $(dir $(1)),$$(subdirs-y)))))
# For each path in $(subdirs) call includemakefiles
@@ -275,6 +285,7 @@ printall:
@echo allsrcs=$(allsrcs)
@echo DEPENDENCIES=$(DEPENDENCIES)
@echo LIBGCC_FILE_NAME=$(LIBGCC_FILE_NAME)
+ @echo cbfs-files:='$(cbfs-files)'
printcrt0s:
@echo crt0s=$(crt0s)
diff --git a/src/arch/x86/Makefile.bigbootblock.inc b/src/arch/x86/Makefile.bigbootblock.inc
index a60681670b..a6b8e11bca 100644
--- a/src/arch/x86/Makefile.bigbootblock.inc
+++ b/src/arch/x86/Makefile.bigbootblock.inc
@@ -1,9 +1,9 @@
#######################################################################
# Build the final rom image
-$(obj)/coreboot.pre: $(obj)/coreboot.bootblock $(CBFSTOOL)
+$(obj)/coreboot.pre: $(obj)/coreboot.pre1 $(CBFSTOOL)
rm -f $@
- $(CBFSTOOL) $@ create $(CONFIG_COREBOOT_ROMSIZE_KB)K $(obj)/coreboot.bootblock
+ cp $(obj)/coreboot.pre1 $@
#######################################################################
# Build the bootblock
diff --git a/src/arch/x86/Makefile.bootblock.inc b/src/arch/x86/Makefile.bootblock.inc
index f522fc2150..425ee0792c 100644
--- a/src/arch/x86/Makefile.bootblock.inc
+++ b/src/arch/x86/Makefile.bootblock.inc
@@ -1,15 +1,6 @@
#######################################################################
# Build the final rom image
-ifneq ($(CONFIG_UPDATE_IMAGE),y)
-$(obj)/coreboot.pre1: $(obj)/coreboot.bootblock $(CBFSTOOL)
- rm -f $@
- $(CBFSTOOL) $@ create $(CONFIG_COREBOOT_ROMSIZE_KB)K $(obj)/coreboot.bootblock
-else
-$(obj)/coreboot.pre1: $(CBFSTOOL)
- mv $(obj)/coreboot.rom $@
-endif
-
$(obj)/coreboot.pre: $(obj)/coreboot.romstage $(obj)/coreboot.pre1 $(CBFSTOOL)
rm -f $@
cp $(obj)/coreboot.pre1 $@
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index ea6e3ecb14..c4ac5cd75f 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -53,6 +53,23 @@ ifeq ($(CONFIG_GEODE_VSA_FILE),y)
COREBOOT_ROM_DEPENDENCIES+=$(CONFIG_VSA_FILENAME)
endif
+extract_nth=$(word $(1), $(subst |, ,$(2)))
+
+ifneq ($(CONFIG_UPDATE_IMAGE),y)
+prebuild-files = \
+ $(foreach file,$(cbfs-files), \
+ $(CBFSTOOL) $@ add $(call extract_nth,1,$(file)) $(call extract_nth,2,$(file)) $(call extract_nth,3,$(file)) $(call extract_nth,4,$(file)); )
+prebuilt-files = $(foreach file,$(cbfs-files), $(call extract_nth,1,$(file)))
+
+$(obj)/coreboot.pre1: $(obj)/coreboot.bootblock $(prebuilt-files) $(CBFSTOOL)
+ rm -f $@
+ $(CBFSTOOL) $@ create $(CONFIG_COREBOOT_ROMSIZE_KB)K $(obj)/coreboot.bootblock
+ $(prebuild-files)
+else
+$(obj)/coreboot.pre1: $(CBFSTOOL)
+ mv $(obj)/coreboot.rom $@
+endif
+
$(obj)/coreboot.rom: $(obj)/coreboot.pre $(obj)/coreboot_ram $(CBFSTOOL) $(call strip_quotes,$(COREBOOT_ROM_DEPENDENCIES))
@printf " CBFS $(subst $(obj)/,,$(@))\n"
cp $(obj)/coreboot.pre $@.tmp