[coreboot-gerrit] Patch set updated for coreboot: payloads/external/tianocore: Update to build uefi corebootpayload

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Wed Jun 22 22:14:57 CEST 2016


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15057

-gerrit

commit 8a9408b194ca56dba7dbe342b8340365f712e570
Author: Martin Roth <martinroth at google.com>
Date:   Thu Jun 2 16:42:29 2016 -0600

    payloads/external/tianocore: Update to build uefi corebootpayload
    
    Update the existing tianocore payload (which didn't do any more than
    adding an elf payload with a specific name) to fetch and build the
    UEFI corebootPayloadPackage
    
    Change-Id: I9719ca5c39fccb856dfe096d449760a937d51fd1
    Signed-off-by: Martin Roth <martinroth at google.com>
---
 payloads/Makefile.inc                    |   3 +-
 payloads/external/Makefile.inc           |  11 ++++
 payloads/external/tianocore/Kconfig      |  42 ++++++++++++-
 payloads/external/tianocore/Kconfig.name |   4 +-
 payloads/external/tianocore/Makefile     | 103 +++++++++++++++++++++++++++++++
 5 files changed, 158 insertions(+), 5 deletions(-)

diff --git a/payloads/Makefile.inc b/payloads/Makefile.inc
index e68c2e7..de2de68 100644
--- a/payloads/Makefile.inc
+++ b/payloads/Makefile.inc
@@ -29,7 +29,8 @@ payloads/external/depthcharge \
 payloads/external/SeaBIOS \
 payloads/external/U-Boot \
 payloads/external/Memtest86Plus \
-payloads/external/iPXE
+payloads/external/iPXE \
+payloads/external/tianocore
 
 payloads/coreinfo/build/coreinfo.elf coreinfo:
 	$(MAKE) -C payloads/coreinfo defaultbuild
diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc
index d61fed6..eede0bf 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -97,6 +97,17 @@ payloads/external/depthcharge/depthcharge/build/depthcharge.elf depthcharge: $(t
 		BOARD=$(call ws_to_under,$(call strip_quotes,$(call tolower,$(CONFIG_MAINBOARD_PART_NUMBER)))) \
 		MFLAGS= MAKEFLAGS=
 
+payloads/external/tianocore/tianocore/Build/UEFIPAYLOAD.fd tianocore: $(top)/$(DOTCONFIG)
+	$(MAKE) -C payloads/external/tianocore all \
+	HOSTCC="$(HOSTCC)" \
+	CC=$(CC_$(ARCH-ramstage-y)) \
+	CONFIG_TIANOCORE_MASTER=$(CONFIG_TIANOCORE_MASTER) \
+	CONFIG_TIANOCORE_STABLE=$(CONFIG_TIANOCORE_STABLE) \
+	CONFIG_TIANOCORE_REVISION=$(CONFIG_TIANOCORE_REVISION) \
+	CONFIG_TIANOCORE_REVISION_ID=$(CONFIG_TIANOCORE_REVISION_ID) \
+	CONFIG_TIANOCORE_DEBUG=$(CONFIG_TIANOCORE_DEBUG) \
+	MFLAGS= MAKEFLAGS=
+
 filo:
 	$(MAKE) -C payloads/external/FILO \
 			HOSTCC="$(HOSTCC)" \
diff --git a/payloads/external/tianocore/Kconfig b/payloads/external/tianocore/Kconfig
index 8a98bd3..ab33358 100644
--- a/payloads/external/tianocore/Kconfig
+++ b/payloads/external/tianocore/Kconfig
@@ -1,9 +1,47 @@
 if PAYLOAD_TIANOCORE
 
 config PAYLOAD_FILE
-	string "Tianocore firmware volume"
-	default "COREBOOT.fd"
+	string "Tianocore binary"
+	default "payloads/external/tianocore/tianocore/Build/UEFIPAYLOAD.fd"
 	help
 	  The result of a corebootPkg build
 
+choice
+	prompt "Tianocore version"
+	default TIANOCORE_STABLE
+
+config TIANOCORE_STABLE
+	bool "stable"
+	help
+	  Stable TianoCore version
+
+config TIANOCORE_MASTER
+	bool "master"
+	help
+	  Newest Tianocore version
+
+config TIANOCORE_REVISION
+	bool "git revision"
+	help
+	  Select this option if you have a specific commit or branch
+	  that you want to use as the revision from which to
+	  build Tianocore.
+
+	  You will be able to specify the name of a branch or a commit id
+	  later.
+
+endchoice
+
+config TIANOCORE_REVISION_ID
+	string "Insert a commit's SHA-1 or a branch name"
+	depends on TIANOCORE_REVISION
+	default "origin/master"
+	help
+	   The commit's SHA-1 or branch name of the revision to use.
+
+config TIANOCORE_DEBUG
+	bool "Generate a debug build"
+	help
+	  Generate a debug build instead of a release build.
+
 endif
diff --git a/payloads/external/tianocore/Kconfig.name b/payloads/external/tianocore/Kconfig.name
index d57f7e1..d394a9e 100644
--- a/payloads/external/tianocore/Kconfig.name
+++ b/payloads/external/tianocore/Kconfig.name
@@ -1,8 +1,8 @@
 config PAYLOAD_TIANOCORE
-	bool "Tiano Core"
+	bool "Tianocore coreboot payload package"
 	help
 	  Select this option if you want to build a coreboot image
-	  with a Tiano Core payload. If you don't know what this is
+	  with a Tianocore payload. If you don't know what this is
 	  about, just leave it enabled.
 
 	  See http://coreboot.org/Payloads for more information.
diff --git a/payloads/external/tianocore/Makefile b/payloads/external/tianocore/Makefile
new file mode 100644
index 0000000..d76f9e1
--- /dev/null
+++ b/payloads/external/tianocore/Makefile
@@ -0,0 +1,103 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2016 Google Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; version 2 of the License.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+
+STABLE_COMMIT_ID=8a3a97814e5402840164cb53ad6bb12ed851c54e
+
+TAG-$(CONFIG_TIANOCORE_MASTER)=origin/master
+TAG-$(CONFIG_TIANOCORE_STABLE)=$(STABLE_COMMIT_ID)
+
+project_name=Tianocore
+project_dir=$(CURDIR)/tianocore
+project_git_repo=https://github.com/tianocore/edk2
+
+export EDK_TOOLS_PATH=$(project_dir)/BaseTools
+
+ifeq ($(CONFIG_TIANOCORE_DEBUG),y)
+BUILD_TYPE=DEBUG
+else
+BUILD_TYPE=RELEASE
+endif
+
+all: build
+
+$(project_dir):
+	echo "    Cloning $(project_name) from Git"
+	git clone $(project_git_repo) $(project_dir)
+
+fetch: $(project_dir)
+	cd $(project_dir); \
+		git show $(TAG-y) >/dev/null 2>&1 ; \
+		if [ $$? -ne 0 ] || [ "$(TAG-y)" = "origin/master" ]; then \
+			echo "    Fetching new commits from the $(project_name) repo"; \
+			git fetch; \
+		fi
+
+checkout: fetch
+	echo "    Checking out $(project_name) revision $(TAG-y)"
+	cd  $(project_dir); \
+		git checkout master; \
+		git branch -D coreboot 2>/dev/null; \
+		git checkout -b coreboot $(TAG-y)
+
+checktools:
+	printf "Checking uuid-dev..."
+	echo "#include <uuid/uuid.h>" > libtest.c
+	echo "int main(int argc, char **argv) { (void) argc; (void) argv; return 0; }" >> libtest.c
+	$(HOSTCC) $(HOSTCCFLAGS) libtest.c -o libtest >/dev/null 2>&1 && printf " found uuid-dev.\n" || \
+		( printf "Not found.\n"; echo "ERROR: please_install uuid-dev (uuid-devel)"; exit 1 )
+	rm -rf libtest.c libtest
+	printf "Checking nasm..."
+	type nasm > /dev/null 2>&1 && printf " found nasm.\n" || \
+		( printf "Not found.\n"; echo "Error: Please install nasm."; exit 1 )
+
+#TODO: Update GCC versions when the payload supports them
+#TODO: Change target arch
+#sed -i.bak 's/.*TARGET_ARCH.*/TARGET_ARCH = IA32 X64/' $(project_dir)/Conf/target.txt || exit 1
+config: checkout checktools
+	unset CC; $(MAKE) -C $(project_dir)/BaseTools
+	cd $(project_dir); env bash ./edksetup.sh BaseTools
+	sed 's|ACTIVE_PLATFORM.*|ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg\.dsc|' <$(project_dir)/Conf/target.txt > $(project_dir)/Conf/target.txt.new
+	mv $(project_dir)/Conf/target.txt.new $(project_dir)/Conf/target.txt
+	if [ "$$( $(CC) --version | grep "6\.1")" != "" ]; then \
+		GCC_VERSION=GCC49; \
+	elif [ "$$( $(CC) --version | grep "5\.3")" != "" ]; then \
+		GCC_VERSION=GCC49; \
+	elif [ "$$( $(CC) --version | grep "5\.2")" != "" ]; then \
+		GCC_VERSION=GCC49; \
+	elif [ "$$( $(CC) --version | grep "4\.9")" != "" ]; then \
+		GCC_VERSION=GCC49; \
+	elif [ "$$( $(CC) --version | grep "4\.8")" != "" ]; then \
+		GCC_VERSION=GCC48; \
+	elif [ "$$( $(CC) --version | grep "4\.7")" != "" ]; then \
+		GCC_VERSION=GCC47; \
+	else \
+		echo "Could not determine GCC version.  Please update the tianocore makefile."; \
+		exit 1; \
+	fi; \
+	sed "s|TOOL_CHAIN_TAG.*|TOOL_CHAIN_TAG = $${GCC_VERSION}|" <$(project_dir)/Conf/target.txt > $(project_dir)/Conf/target.txt.new
+	mv $(project_dir)/Conf/target.txt.new $(project_dir)/Conf/target.txt
+
+build: config
+	echo "    build       $(project_name) $(TAG-y)"
+	cd $(project_dir); . ./edksetup.sh BaseTools; build -a IA32 -p CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc -b $(BUILD_TYPE) -t GCC49
+	mv $(project_dir)/Build/CorebootPayloadPkg*/*/FV/UEFIPAYLOAD.fd $(project_dir)/Build/UEFIPAYLOAD.fd
+
+clean:
+	test -d $(project_dir) && (cd $(project_dir); rm -rf Build) || exit 0
+
+distclean:
+	rm -rf $(project_dir)
+
+.PHONY: all fetch checkout checktools config build clean distclean



More information about the coreboot-gerrit mailing list