Martin Roth (martinroth@google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15057
-gerrit
commit d9069b0f8123076ab5f53459844bf66d44b6c989 Author: Martin Roth martinroth@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@google.com --- payloads/Makefile.inc | 3 +- payloads/external/Makefile.inc | 12 ++++ payloads/external/tianocore/Kconfig | 40 ++++++++++++- payloads/external/tianocore/Kconfig.name | 2 +- payloads/external/tianocore/Makefile | 99 ++++++++++++++++++++++++++++++++ 5 files changed, 152 insertions(+), 4 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 65b3dd2..d1dd708 100644 --- a/payloads/external/Makefile.inc +++ b/payloads/external/Makefile.inc @@ -90,6 +90,18 @@ 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..c9835a9 100644 --- a/payloads/external/tianocore/Kconfig +++ b/payloads/external/tianocore/Kconfig @@ -1,9 +1,45 @@ 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 SeaBIOS version +config TIANOCORE_MASTER + bool "master" + help + Newest SeaBIOS 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..d983916 100644 --- a/payloads/external/tianocore/Kconfig.name +++ b/payloads/external/tianocore/Kconfig.name @@ -1,5 +1,5 @@ config PAYLOAD_TIANOCORE - bool "Tiano Core" + bool "UEFI 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 diff --git a/payloads/external/tianocore/Makefile b/payloads/external/tianocore/Makefile new file mode 100644 index 0000000..aecd847 --- /dev/null +++ b/payloads/external/tianocore/Makefile @@ -0,0 +1,99 @@ +## +## 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: + echo "#include <uuid/uuid.h>" > libtest.c + echo "int main(int argc, char **argv) { (void) argc; (void) argv; return 0; }" >> libtest.c + + $(HOSTCC) $CFLAGS libtest.c -o libtest >/dev/null 2>&1 || \ + echo "ERROR: please_install uuid-dev (uuid-devel) ; exit 1" + rm -rf libtest.c libtest + +config: checkout checktools + unset CC; $(MAKE) -C $(project_dir)/BaseTools + cd $(project_dir); . ./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=GCC61; \ + elif [ "$$( $(CC) --version | grep "5.3")" != "" ]; then \ + GCC_VERSION=GCC53; \ + elif [ "$$( $(CC) --version | grep "5.2")" != "" ]; then \ + GCC_VERSION=GCC52; \ + 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 + #TODO: Change target arch + #sed -i.bak 's/.*TARGET_ARCH.*/TARGET_ARCH = IA32 X64/' $(project_dir)/Conf/target.txt || exit 1 + +build: config + echo " build $(project_name) $(TAG-y)" + cd $(project_dir); . ./edksetup.sh BaseTools; build -a IA32 -p CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc -b $(BUILD_TYPE) + 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