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

Philipp Deppenwiese (zaolin.daisuki@gmail.com) gerrit at coreboot.org
Wed Jan 18 10:41:14 CET 2017


Philipp Deppenwiese (zaolin.daisuki at gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15057

-gerrit

commit 97d071e771d3796adcd85acf28a86d3be6ff581a
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
    
    Only compiles with GCC 4.8, therefore the host compiler is used.
    Currently working if patches are merged into the upstream
    edk2 repository.
    
    Missing: Intel GOP and GOP FB support
    
    Change-Id: I9719ca5c39fccb856dfe096d449760a937d51fd1
    Signed-off-by: Martin Roth <martinroth at google.com>
    Signed-off-by: Philipp Deppenwiese <zaolin at das-labor.org>
---
 .gitignore                               |   1 +
 payloads/Makefile.inc                    |   3 +-
 payloads/external/Makefile.inc           |  12 +++-
 payloads/external/tianocore/Kconfig      |  49 ++++++++++++++-
 payloads/external/tianocore/Kconfig.name |   4 +-
 payloads/external/tianocore/Makefile     | 103 +++++++++++++++++++++++++++++++
 6 files changed, 166 insertions(+), 6 deletions(-)

diff --git a/.gitignore b/.gitignore
index df7bff4..c771d4c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ payloads/external/depthcharge/depthcharge/
 payloads/external/FILO/filo/
 payloads/external/GRUB2/grub2/
 payloads/external/SeaBIOS/seabios/
+payloads/external/tianocore/tianocore/
 payloads/external/U-Boot/u-boot/
 payloads/external/Memtest86Plus/memtest86plus/
 payloads/external/iPXE/ipxe/
diff --git a/payloads/Makefile.inc b/payloads/Makefile.inc
index 2d7edb6..63a2a45 100644
--- a/payloads/Makefile.inc
+++ b/payloads/Makefile.inc
@@ -30,7 +30,8 @@ payloads/external/SeaBIOS \
 payloads/external/U-Boot \
 payloads/external/Memtest86Plus \
 payloads/external/iPXE \
-payloads/external/tint
+payloads/external/tint \
+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 29163d0..d59f5ba 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -107,7 +107,17 @@ payloads/external/depthcharge/depthcharge/build/depthcharge.elf depthcharge: $(D
 		BOARD=$(call ws_to_under,$(call strip_quotes,$(call tolower,$(CONFIG_MAINBOARD_PART_NUMBER)))) \
 		MFLAGS= MAKEFLAGS=
 
-# FILO
+payloads/external/tianocore/tianocore/Build/UEFIPAYLOAD.fd tianocore: $(DOTCONFIG)
+	$(MAKE) -C payloads/external/tianocore all \
+		HOSTCC="$(HOSTCC)" \
+		CC="$(HOSTCC)" \
+		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) \
+		CONFIG_TIANOCORE_TARGET_IA32=$(CONFIG_TIANOCORE_TARGET_IA32) \
+		MFLAGS= MAKEFLAGS=
 
 filo:
 	$(MAKE) -C payloads/external/FILO \
diff --git a/payloads/external/tianocore/Kconfig b/payloads/external/tianocore/Kconfig
index 8a98bd3..ab53efd 100644
--- a/payloads/external/tianocore/Kconfig
+++ b/payloads/external/tianocore/Kconfig
@@ -1,9 +1,54 @@
 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_TARGET_IA32
+	bool "Restrict Tianocore target architecture to IA32"
+	help
+	  By default, the Tianocore coreboot Payload Package binary will be
+	  built for both X64 and IA32 architectures.  By selecting this option,
+	  the target architecture can be restricted to only IA32.
+
+config TIANOCORE_DEBUG
+	bool "Generate Tianocore 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..38a3828
--- /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.
+##
+
+# force the shell to bash - the edksetup.sh script doesn't work with dash
+export SHELL := env bash
+
+STABLE_COMMIT_ID=315d9d08fd77db1024ccc5307823da8aaed85e2f
+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 )
+
+config: checkout checktools
+	unset CC; $(MAKE) -C $(project_dir)/BaseTools
+	cd $(project_dir); \
+		export EDK_TOOLS_PATH=$(project_dir)/BaseTools; \
+		export WORKSPACE=$(project_dir); \
+		. ./edksetup.sh BaseTools
+	if [ "$$( $(CC) --version | grep "4\.8")" != "" ]; then \
+		echo "Compatible version of GCC found!"; \
+	else \
+		echo "Could not determine compatible GCC version. You need to install GCC 4.8!"; \
+		exit 1; \
+	fi
+
+build: config
+	echo "    build       $(project_name) $(TAG-y)"
+ifeq ($(CONFIG_TIANOCORE_TARGET_IA32), y)
+	cd $(project_dir); \
+		export EDK_TOOLS_PATH=$(project_dir)/BaseTools; \
+		export WORKSPACE=$(project_dir); \
+		. ./edksetup.sh BaseTools; \
+		build -a IA32 -t GCC48 -p CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc -b $(BUILD_TYPE)
+else
+	cd $(project_dir); \
+		export EDK_TOOLS_PATH=$(project_dir)/BaseTools; \
+		export WORKSPACE=$(project_dir); \
+		. ./edksetup.sh BaseTools; \
+		build -a IA32 -a X64 -t GCC48 -p CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc -b $(BUILD_TYPE)
+endif
+	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