[coreboot-gerrit] New patch to review for coreboot: a0e144b Add GRUB2 payload to build system

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Thu Nov 14 12:19:18 CET 2013


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4058

-gerrit

commit a0e144b9cc31129e2194b66ad6b30bd54706ec10
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Thu Nov 14 12:10:08 2013 +0100

    Add GRUB2 payload to build system
    
    Tested with qemu
    
    Change-Id: Ie75d5a2cb230390cd5a063d5f6a5d5e3fab6b354
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 .gitignore                           |  1 +
 payloads/external/GRUB2/Makefile.inc | 43 ++++++++++++++++++++++++++++++++++++
 src/Kconfig                          | 24 ++++++++++++++++++++
 src/arch/x86/Makefile.inc            | 18 +++++++++++++++
 4 files changed, 86 insertions(+)

diff --git a/.gitignore b/.gitignore
index 1cdabfc..da87fa2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 build/
 coreboot-builds/
 payloads/external/FILO/filo/
+payloads/external/GRUB2/grub2/
 payloads/external/SeaBIOS/seabios/
 util/crossgcc/acpica-unix-*/
 util/crossgcc/binutils-*/
diff --git a/payloads/external/GRUB2/Makefile.inc b/payloads/external/GRUB2/Makefile.inc
new file mode 100644
index 0000000..888151d
--- /dev/null
+++ b/payloads/external/GRUB2/Makefile.inc
@@ -0,0 +1,43 @@
+TAG-$(CONFIG_GRUB2_MASTER)=
+NAME-$(CONFIG_GRUB2_MASTER)=HEAD
+
+unexport KCONFIG_AUTOCONFIG
+
+all: grub2
+
+checkout:
+	echo "    GIT        GRUB2 $(NAME-y)"
+	test -d grub2 || \
+		git clone git://git.sv.gnu.org/grub.git grub2
+	cd grub2 && \
+		git checkout master && \
+		git pull; \
+		test -n "$(TAG-y)" && \
+			git branch -f $(NAME-y) $(TAG-y) && \
+			git checkout $(NAME-y) || true
+
+config: checkout
+	echo "    CONFIG     GRUB2 $(NAME-y)"
+	rm -rf grub2/build
+	mkdir grub2/build
+	cd grub2 && ./autogen.sh
+	cd grub2/build && ../configure BUILD_CC="$(HOSTCC)" CC="$(HOSTCC)" \
+	TARGET_CC="$(CC)" \
+	TARGET_OBJCOPY="$(OBJCOPY)" TARGET_STRIP="$(STRIP)" CFLAGS=-O2 TARGET_CFLAGS=-Os --with-platform=coreboot
+
+grub2: config
+	echo "    MAKE       GRUB2 $(NAME-y)"
+	$(MAKE) -C grub2/build BUILD_CC="$(HOSTCC)" CC="$(HOSTCC)" \
+	TARGET_CC="$(CC)" TARGET_OBJCOPY="$(OBJCOPY)" \
+	TARGET_STRIP="$(STRIP)" CFLAGS=-O2 TARGET_CFLAGS=-Os \
+	&& $(MAKE) -C grub2/build BUILD_CC="$(HOSTCC)" CC="$(HOSTCC)" \
+	TARGET_CC="$(CC)" TARGET_OBJCOPY="$(OBJCOPY)" TARGET_STRIP="$(STRIP)" \
+	CFLAGS=-O2 TARGET_CFLAGS=-Os default_payload.elf
+
+clean:
+	test -d grub2 && $(MAKE) -C grub2 clean || exit 0
+
+distclean:
+	rm -rf grub2
+
+.PHONY: checkout config grub2 clean distclean
diff --git a/src/Kconfig b/src/Kconfig
index 10f8c18..fac0eeb 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -569,6 +569,15 @@ config PAYLOAD_FILO
 
 	  See http://coreboot.org/Payloads for more information.
 
+config PAYLOAD_GRUB2
+	bool "GRUB2"
+	help
+	  Select this option if you want to build a coreboot image
+	  with a GRUB2 payload. If you don't know what this is
+	  about, just leave it enabled.
+
+	  See http://coreboot.org/Payloads for more information.
+
 config PAYLOAD_TIANOCORE
 	bool "Tiano Core"
 	help
@@ -606,6 +615,17 @@ config SEABIOS_PS2_TIMEOUT
 	  keyboard controller to become ready before giving up.
 
 choice
+	prompt "GRUB2 version"
+	default GRUB2_MASTER
+	depends on PAYLOAD_GRUB2
+
+config GRUB2_MASTER
+	bool "HEAD"
+	help
+	  Newest GRUB2 version
+endchoice
+
+choice
 	prompt "FILO version"
 	default FILO_STABLE
 	depends on PAYLOAD_FILO
@@ -643,6 +663,10 @@ config PAYLOAD_FILE
 	default "payloads/external/FILO/filo/build/filo.elf"
 
 config PAYLOAD_FILE
+	depends on PAYLOAD_GRUB2
+	default "payloads/external/GRUB2/grub2/build/default_payload.elf"
+
+config PAYLOAD_FILE
 	string "Tianocore firmware volume"
 	depends on PAYLOAD_TIANOCORE
 	default "COREBOOT.fd"
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index dee56c5..be53c1b 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -48,6 +48,9 @@ endif
 ifeq ($(CONFIG_PAYLOAD_FILO),y)
 COREBOOT_ROM_DEPENDENCIES+=filo
 endif
+ifeq ($(CONFIG_PAYLOAD_GRUB2),y)
+COREBOOT_ROM_DEPENDENCIES+=grub2
+endif
 
 extract_nth=$(word $(1), $(subst |, ,$(2)))
 
@@ -113,6 +116,12 @@ ifeq ($(CONFIG_PAYLOAD_FILO),y)
 	@printf "    PAYLOAD    FILO (internal, compression: $(CBFS_PAYLOAD_COMPRESS_FLAG))\n"
 	$(CBFSTOOL) $@.tmp add-payload -f $(CONFIG_PAYLOAD_FILE) -n $(CONFIG_CBFS_PREFIX)/payload -c $(CBFS_PAYLOAD_COMPRESS_FLAG)
 endif
+
+ifeq ($(CONFIG_PAYLOAD_GRUB2),y)
+	@printf "    PAYLOAD    GRUB2 (internal, compression: $(CBFS_PAYLOAD_COMPRESS_FLAG))\n"
+	$(CBFSTOOL) $@.tmp add-payload -f $(CONFIG_PAYLOAD_FILE) -n $(CONFIG_CBFS_PREFIX)/payload -c $(CBFS_PAYLOAD_COMPRESS_FLAG)
+endif
+
 ifeq ($(CONFIG_PAYLOAD_TIANOCORE),y)
 	@printf "    PAYLOAD    Tiano Core (compression: $(CBFS_PAYLOAD_COMPRESS_FLAG))\n"
 	$(CBFSTOOL) $@.tmp add-payload -f $(CONFIG_PAYLOAD_FILE) -n $(CONFIG_CBFS_PREFIX)/payload -c $(CBFS_PAYLOAD_COMPRESS_FLAG)
@@ -440,3 +449,12 @@ filo:
 			CONFIG_FILO_MASTER=$(CONFIG_FILO_MASTER) \
 			CONFIG_FILO_STABLE=$(CONFIG_FILO_STABLE)
 
+
+grub2:
+	$(MAKE) -C payloads/external/GRUB2 -f Makefile.inc \
+			HOSTCC="$(HOSTCC)" \
+			CC="$(CC)" LD="$(LD)" OBJDUMP="$(OBJDUMP)" \
+			OBJCOPY="$(OBJCOPY)" STRIP="$(STRIP)" \
+			CONFIG_GRUB2_MASTER=$(CONFIG_GRUB2_MASTER) \
+			CONFIG_GRUB2_STABLE=$(CONFIG_GRUB2_STABLE)
+



More information about the coreboot-gerrit mailing list