[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