summaryrefslogtreecommitdiff
path: root/payloads/external/edk2/Makefile
diff options
context:
space:
mode:
authorSean Rhodes <sean@starlabs.systems>2022-07-13 10:11:44 +0100
committerMartin L Roth <gaumless@gmail.com>2022-08-13 16:35:18 +0000
commit38c99b56599d2b11d68c844e9f2adda9050b8efa (patch)
treede43b09f7bac0e010ac6c77f0bf7edfdc09ae981 /payloads/external/edk2/Makefile
parent8f7f4bf87a238dd046a376804b9e53162092f601 (diff)
payloads/tianocore: Rename TianoCore to edk2
coreboot uses TianoCore interchangeably with EDK II, and whilst the meaning is generally clear, it's not the payload it uses. EDK II is commonly written as edk2. coreboot builds edk2 directly from the edk2 repository. Whilst it can build some components from edk2-platforms, the target is still edk2. [1] tianocore.org - "Welcome to TianoCore, the community supporting" [2] tianocore.org - "EDK II is a modern, feature-rich, cross-platform firmware development environment for the UEFI and UEFI Platform Initialization (PI) specifications." Signed-off-by: Sean Rhodes <sean@starlabs.systems> Change-Id: I4de125d92ae38ff8dfd0c4c06806c2d2921945ab Reviewed-on: https://review.coreboot.org/c/coreboot/+/65820 Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'payloads/external/edk2/Makefile')
-rw-r--r--payloads/external/edk2/Makefile185
1 files changed, 185 insertions, 0 deletions
diff --git a/payloads/external/edk2/Makefile b/payloads/external/edk2/Makefile
new file mode 100644
index 0000000000..3dbb1b5412
--- /dev/null
+++ b/payloads/external/edk2/Makefile
@@ -0,0 +1,185 @@
+## SPDX-License-Identifier: GPL-2.0-only
+
+# force the shell to bash - the edksetup.sh script doesn't work with dash
+export SHELL := env bash
+
+project_name = edk2
+project_dir = $(CURDIR)/$(word 3,$(subst /, ,$(CONFIG_EDK2_REPOSITORY)))
+
+BUILD_STR = -a IA32 -a X64 -t COREBOOT
+BUILD_STR += -p UefiPayloadPkg/UefiPayloadPkg.dsc
+BUILD_STR += -D BOOTLOADER=COREBOOT -q
+
+#
+# EDK II has the following build options relevant to coreboot:
+#
+#
+# OPTION = DEFAULT_VALUE
+#
+# ABOVE_4G_MEMORY = TRUE
+ifneq ($(CONFIG_EDK2_ABOVE_4G_MEMORY),y)
+BUILD_STR += -D ABOVE_4G_MEMORY=FALSE
+endif
+# BOOTSPLASH_IMAGE = FALSE
+ifneq ($(CONFIG_EDK2_BOOTSPLASH_FILE),)
+BUILD_STR += -D BOOTSPLASH_IMAGE=TRUE
+endif
+# BOOT_MANAGER_ESCAPE = FALSE
+ifeq ($(CONFIG_EDK2_BOOT_MANAGER_ESCAPE),y)
+BUILD_STR += -D BOOT_MANAGER_ESCAPE=TRUE
+endif
+# BUILD_TARGETS = DEBUG
+ifeq ($(CONFIG_EDK2_RELEASE),y)
+BUILD_STR += -b RELEASE
+endif
+# DISABLE_SERIAL_TERMINAL = FALSE
+ifneq ($(CONFIG_EDK2_SERIAL_SUPPORT),y)
+BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
+endif
+# FOLLOW_BGRT_SPEC = FALSE
+ifeq ($(CONFIG_EDK2_FOLLOW_BGRT_SPEC),y)
+BUILD_STR += -D FOLLOW_BGRT_SPEC=TRUE
+endif
+# PCIE_BASE_ADDRESS = 0
+ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
+BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS)
+endif
+# PCIE_BASE_LENGTH = 0
+ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
+BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize=$(CONFIG_ECAM_MMCONF_LENGTH)
+endif
+# PRIORITIZE_INTERNAL = FALSE
+ifeq ($(CONFIG_EDK2_PRIORITIZE_INTERNAL),y)
+BUILD_STR += -D PRIORITIZE_INTERNAL=TRUE
+endif
+# PS2_KEYBOARD_ENABLE = FALSE
+ifeq ($(CONFIG_EDK2_PS2_SUPPORT),y)
+BUILD_STR += -D PS2_KEYBOARD_ENABLE=TRUE
+endif
+# PLATFORM_BOOT_TIMEOUT = 3
+ifneq ($(CONFIG_EDK2_BOOT_TIMEOUT),)
+BUILD_STR += -D PLATFORM_BOOT_TIMEOUT=$(CONFIG_EDK2_BOOT_TIMEOUT)
+endif
+# SIO_BUS_ENABLE = FALSE
+ifeq ($(CONFIG_EDK2_PS2_SUPPORT),y)
+BUILD_STR += -D SIO_BUS_ENABLE=TRUE
+endif
+# SHELL_TYPE = BUILD_SHELL
+ifneq ($(CONFIG_EDK2_HAVE_EFI_SHELL),y)
+BUILD_STR += -D SHELL_TYPE=NONE
+endif
+# USE_CBMEM_FOR_CONSOLE = FALSE
+ifeq ($(CONFIG_EDK2_CBMEM_LOGGING),y)
+BUILD_STR += -D USE_CBMEM_FOR_CONSOLE=TRUE
+endif
+# SD_MMC_TIMEOUT = 1000000
+ifneq ($(CONFIG_EDK2_SD_MMC_TIMEOUT),)
+BUILD_STR += -D SD_MMC_TIMEOUT=$(shell echo $$(( $(CONFIG_EDK2_SD_MMC_TIMEOUT) * 1000)) )
+endif
+
+#
+# EDKII has the below PCDs that are relevant to coreboot:
+#
+# Allows EDKII to use the full framebuffer
+ifeq ($(CONFIG_EDK2_FULL_SCREEN_SETUP),y)
+BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow=0
+BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn=0
+BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow=0
+BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn=0
+endif
+
+bootloader = $(word 8,$(subst /, ,$(BUILD_STR)))
+
+ifneq ($(CONFIG_EDK2_CUSTOM_BUILD_PARAMS),)
+BUILD_STR += $(CONFIG_EDK2_CUSTOM_BUILD_PARAMS)
+endif
+
+all: clean build
+
+$(project_dir):
+ echo " Cloning $(project_name) from $(CONFIG_EDK2_REPOSITORY)"
+ git clone $(CONFIG_EDK2_REPOSITORY) $(project_dir); \
+ cd $(project_dir);
+
+update: $(project_dir)
+ if [ ! -d "$(project_dir)" ]; then \
+ git clone $(CONFIG_EDK2_REPOSITORY) $(project_dir); \
+ fi
+ cd $(project_dir); \
+ echo " Fetching new commits from $(CONFIG_EDK2_REPOSITORY)"; \
+ git fetch origin 2>/dev/null; \
+ if ! git rev-parse --verify -q $(CONFIG_EDK2_TAG_OR_REV) >/dev/null; then \
+ echo " $(CONFIG_EDK2_TAG_OR_REV) is not a valid git reference"; \
+ exit 1; \
+ fi; \
+ if git status --ignore-submodules=dirty | grep -q clean; then \
+ echo " Checking out $(project_name) revision $(CONFIG_EDK2_TAG_OR_REV)"; \
+ git checkout --detach $(CONFIG_EDK2_TAG_OR_REV) -f; \
+ else \
+ echo " Working directory not clean; will not overwrite"; \
+ fi; \
+ git submodule update --init --checkout
+
+logo: $(project_dir)
+ case "$(CONFIG_EDK2_BOOTSPLASH_FILE)" in \
+ "") ;; \
+ /*) convert -background None $(CONFIG_EDK2_BOOTSPLASH_FILE) \
+ BMP3:$(project_dir)/MdeModulePkg/Logo/Logo.bmp;; \
+ *) convert -background None $(top)/$(CONFIG_EDK2_BOOTSPLASH_FILE) \
+ BMP3:$(project_dir)/MdeModulePkg/Logo/Logo.bmp;; \
+ esac \
+
+checktools:
+ echo -n "EDK2: 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 && echo " Found!" || \
+ ( echo " Not found!"; \
+ echo "ERROR: please_install uuid-dev (libuuid-devel)"; exit 1 )
+ rm -rf libtest.c libtest
+ echo -n "EDK2: Checking nasm:"
+ type nasm > /dev/null 2>&1 && echo " Found!" || \
+ ( echo " Not found!"; echo "ERROR: Please install nasm."; exit 1 )
+ echo -n "EDK2: Checking imagemagick:"
+ -convert -size 1x1 xc: test.png &> /dev/null;
+ if [ -f test.png ]; then \
+ rm test.png && echo " Found!"; \
+ else \
+ echo " Not found!"; \
+ echo "ERROR: Please install imagemagick"; \
+ exit 1; \
+ fi
+
+build: update logo checktools
+ echo " ##### $(project_name) Build Summary #####"
+ echo " Repository: $(CONFIG_EDK2_REPOSITORY)"
+ echo " Branch: $(CONFIG_EDK2_TAG_OR_REV)"
+ echo " $(BUILD_STR)" | \
+ sed 's/-/\n /g' | sort | sed \
+ -e 's/a /Architecture: /g' \
+ -e 's/b /Release: /g' \
+ -e 's/D /Option: /g' \
+ -e 's/p /Payload: /g' \
+ -e 's/q /Build: Quiet/' \
+ -e 's/t /Toolchain: /'
+ unset CC; $(MAKE) -C $(project_dir)/BaseTools 2>&1
+ cd $(project_dir); \
+ export EDK_TOOLS_PATH=$(project_dir)/BaseTools; \
+ export WORKSPACE=$(project_dir); \
+ . ./edksetup.sh BaseTools; \
+ grep -q "COREBOOT" $(project_dir)/Conf/tools_def.txt; \
+ if [ $$? -ne 0 ]; then \
+ cat ../tools_def.txt >> $(project_dir)/Conf/tools_def.txt; \
+ fi; \
+ build $(BUILD_STR); \
+ mkdir -p $(project_dir)/../output; \
+ mv $(project_dir)/Build/$(bootloader)*/*/FV/UEFIPAYLOAD.fd $(project_dir)/../output/UEFIPAYLOAD.fd; \
+ git checkout MdeModulePkg/Logo/Logo.bmp > /dev/null 2>&1 || true
+
+clean:
+ test -d $(project_dir) && (cd $(project_dir); rm -rf Build; rm -f Conf/tools_def.txt) || exit 0
+
+distclean:
+ rm -rf */
+
+.PHONY: all update checktools config build clean distclean logo