summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2014-12-09 12:49:21 +0100
committerPatrick Georgi <pgeorgi@google.com>2014-12-19 19:02:57 +0100
commit5839635add286ff7307a06486d2d49b46e14ec7b (patch)
tree76f5c275f86b151cde502b9c64a298e3316a32ca
parent5eabe25a6927f16c5e47fafd5ac26d3cb7140d80 (diff)
build system: allow defining alignment for cbfs-files
Just set $(filename)-align to the desired alignment, and the build system will figure it out using cbfstool locate. Change-Id: I44369d947888041c21ff51ae49f9aacf510918a0 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: http://review.coreboot.org/7728 Tested-by: build bot (Jenkins) Reviewed-by: Werner Zeh <werner.zeh@gmx.net> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
-rw-r--r--Makefile.inc26
1 files changed, 18 insertions, 8 deletions
diff --git a/Makefile.inc b/Makefile.inc
index 880c38d042..c9da7f89c9 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -208,16 +208,22 @@ cbfs-files-handler= \
$(info This build configuration requires $($(2)-required)) \
$(eval FAILBUILD:=1) \
)) \
+ $(if $(strip $($(2)-align)), \
+ $(if $(strip $($(2)-position)), \
+ $(info ERROR: It is not allowed to specify both alignment and position for $($(2)-file)) \
+ $(eval FAILBUILD:=1) \
+ )) \
$(if $(tmp-cbfs-method), \
$(eval tmp-old-cbfs-file:=$(tmp-cbfs-file)) \
$(eval tmp-cbfs-file:=$(shell mkdir -p $(obj)/mainboard/$(MAINBOARDDIR); mktemp $(obj)/mainboard/$(MAINBOARDDIR)/cbfs-file.XXXXXX).out) \
$(call cbfs-files-processor-$(tmp-cbfs-method),$(tmp-old-cbfs-file),$(tmp-cbfs-file))) \
- $(eval cbfs-files += $(tmp-cbfs-file)|$(2)|$($(2)-type)|$($(2)-compression)|$($(2)-position)) \
+ $(eval cbfs-files += $(tmp-cbfs-file)|$(2)|$($(2)-type)|$($(2)-compression)|$(split $($(2)-position))|$($(2)-align))\
$(eval $(2)-name:=) \
$(eval $(2)-type:=) \
$(eval $(2)-compression:=) \
$(eval $(2)-position:=) \
- $(eval $(2)-required:=)
+ $(eval $(2)-required:=) \
+ $(eval $(2)-align:=)
#######################################################################
# a variety of flags for our build
@@ -509,16 +515,20 @@ ifeq ($(CONFIG_PAYLOAD_GRUB2),y)
COREBOOT_ROM_DEPENDENCIES+=grub2
endif
-extract_nth=$(word $(1), $(subst |, ,$(2)))
+extract_nth=$(patsubst -%-,%,$(word $(1), $(subst |,- -,-$(2)-)))
-ifneq ($(CONFIG_UPDATE_IMAGE),y)
-prebuild-files = \
- $(foreach file,$(cbfs-files), \
+cbfs-add-cmd = \
$(CBFSTOOL) $@.tmp \
add$(if $(filter stage,$(call extract_nth,3,$(file))),-stage)$(if $(filter payload,$(call extract_nth,3,$(file))),-payload) \
-f $(call extract_nth,1,$(file)) \
- -n $(call extract_nth,2,$(file)) $(if $(filter-out stage,$(call extract_nth,3,$(file))),-t $(call extract_nth,3,$(file))) \
- $(if $(call extract_nth,4,$(file)),-b $(call extract_nth,4,$(file))) &&)
+ -n $(call extract_nth,2,$(file)) $(if $(filter-out stage,$(call extract_nth,3,$(file))),-t $(call extract_nth,3,$(file)))
+
+ifneq ($(CONFIG_UPDATE_IMAGE),y)
+prebuild-files = \
+ $(foreach file,$(cbfs-files), \
+ $(if $(call extract_nth,6,$(file)),$(CBFSTOOL) $@.tmp locate -f $(call extract_nth,1,$(file)) -n $(call extract_nth,2,$(file)) -a $(call extract_nth,6,$(file))|xargs -i \
+ $(cbfs-add-cmd) -b {} &&,\
+ $(cbfs-add-cmd) $(if $(call extract_nth,5,$(file)),-b $(call extract_nth,5,$(file))) &&))
prebuilt-files = $(foreach file,$(cbfs-files), $(call extract_nth,1,$(file)))
$(obj)/coreboot.pre1: $(objcbfs)/bootblock.bin $$(prebuilt-files) $(CBFSTOOL) $$(cpu_ucode_cbfs_file)