[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