blob: e7f11f0693c552dbd2c10bb6c2d329c60fb41928 [file] [log] [blame]
Patrick Georgi8480c0b2020-05-08 22:50:46 +02001## SPDX-License-Identifier: GPL-2.0-only
Martin Roth4769cc32016-06-02 16:42:29 -06002
3# force the shell to bash - the edksetup.sh script doesn't work with dash
4export SHELL := env bash
5
Sean Rhodes38c99b52022-07-13 10:11:44 +01006project_name = edk2
Sean Rhodes403d2202022-08-02 08:54:12 +01007export WORKSPACE := $(CURDIR)/workspace
8export EDK2_PATH := $(WORKSPACE)/$(word 3,$(subst /, ,$(CONFIG_EDK2_REPOSITORY)))
Michał Żygowski82d814a2022-10-26 11:32:54 +02009
10ifeq ($(CONFIG_EDK2_USE_EDK2_PLATFORMS),y)
11export EDK2_PLATFORMS_PATH := $(WORKSPACE)/edk2-platforms
12export PACKAGES_PATH := $(EDK2_PATH):\
13 $(EDK2_PLATFORMS_PATH)/Platform/Intel:\
14 $(EDK2_PLATFORMS_PATH)/Silicon/Intel:\
15 $(EDK2_PLATFORMS_PATH)/Features/Intel:\
16 $(EDK2_PLATFORMS_PATH)/Features/Intel/Debugging:\
17 $(EDK2_PLATFORMS_PATH)/Features/Intel/Network:\
18 $(EDK2_PLATFORMS_PATH)/Features/Intel/OutOfBandManagement:\
19 $(EDK2_PLATFORMS_PATH)/Features/Intel/PowerManagement:\
20 $(EDK2_PLATFORMS_PATH)/Features/Intel/SystemInformation:\
21 $(EDK2_PLATFORMS_PATH)/Features/Intel/UserInterface
22else
Sean Rhodes403d2202022-08-02 08:54:12 +010023export PACKAGES_PATH := $(EDK2_PATH)
Michał Żygowski82d814a2022-10-26 11:32:54 +020024endif
Matt DeVillier38b6ccf2019-02-20 23:46:15 -060025
Sean Rhodesa52d26f2022-10-24 09:53:45 +010026OBJCOPY = $(GCC_PREFIX)objcopy
27
Sean Rhodesa46fd862022-10-06 21:32:43 +010028ifeq ($(CONFIG_EDK2_UEFIPAYLOAD),y)
Sean Rhodes234c42f2022-08-02 10:00:56 +010029BUILD_STR = -p UefiPayloadPkg/UefiPayloadPkg.dsc
Sean Rhodesa46fd862022-10-06 21:32:43 +010030endif
Sean Rhodes234c42f2022-08-02 10:00:56 +010031BUILD_STR += -t COREBOOT
32BUILD_STR += -D BOOTLOADER=COREBOOT
Benjamin Doron21af6b42023-05-12 01:23:11 -040033ifneq ($(V),1)
Sean Rhodes3c166162022-10-06 21:29:26 +010034BUILD_STR += -q
35ifeq ($(CONFIG_EDK2_UEFIPAYLOAD),y)
36BUILD_STR += -s
37endif
Sean Rhodes0d6dc482022-09-16 09:18:38 +010038endif
Sean Rhodes0884f2102022-02-04 07:41:16 +000039
40#
Sean Rhodes90318772023-09-20 21:24:24 +010041# EDK II (edk2/master) has the following build options relevant to coreboot:
Sean Rhodes0884f2102022-02-04 07:41:16 +000042#
43#
44# OPTION = DEFAULT_VALUE
45#
Sean Rhodes0884f2102022-02-04 07:41:16 +000046# BOOTSPLASH_IMAGE = FALSE
Sean Rhodes38c99b52022-07-13 10:11:44 +010047ifneq ($(CONFIG_EDK2_BOOTSPLASH_FILE),)
Sean Rhodes0884f2102022-02-04 07:41:16 +000048BUILD_STR += -D BOOTSPLASH_IMAGE=TRUE
49endif
Sean Rhodesc8decce2022-02-09 08:25:39 +000050# BOOT_MANAGER_ESCAPE = FALSE
Sean Rhodes38c99b52022-07-13 10:11:44 +010051ifeq ($(CONFIG_EDK2_BOOT_MANAGER_ESCAPE),y)
Sean Rhodesc8decce2022-02-09 08:25:39 +000052BUILD_STR += -D BOOT_MANAGER_ESCAPE=TRUE
53endif
Sean Rhodes0884f2102022-02-04 07:41:16 +000054# BUILD_TARGETS = DEBUG
Sean Rhodes147c9572022-08-02 08:59:48 +010055ifeq ($(CONFIG_EDK2_DEBUG),y)
56RELEASE_STR = DEBUG
57else
58RELEASE_STR = RELEASE
Sean Rhodes0884f2102022-02-04 07:41:16 +000059endif
Sean Rhodes7bbc9a52022-07-18 11:31:00 +010060# CPU_TIMER_LIB_ENABLE = TRUE
61ifneq ($(CONFIG_EDK2_CPU_TIMER_LIB),y)
62BUILD_STR += -D CPU_TIMER_LIB_ENABLE=FALSE
63else
64BUILD_STR += --pcd gUefiCpuPkgTokenSpaceGuid.PcdCpuCoreCrystalClockFrequency=$(CONFIG_CPU_XTAL_HZ)
65endif
Sean Rhodes8e10a482022-07-04 17:01:09 +010066# DISABLE_SERIAL_TERMINAL = FALSE
Sean Rhodes38c99b52022-07-13 10:11:44 +010067ifneq ($(CONFIG_EDK2_SERIAL_SUPPORT),y)
Sean Rhodes8e10a482022-07-04 17:01:09 +010068BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
69endif
Sean Rhodes61f0a082023-04-03 16:30:24 +010070# MAX_VARIABLE_SIZE = 0x10000
71ifeq ($(CONFIG_SMMSTORE_V2),y)
72BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize=0x8000
73endif
Sean Rhodes5a26d812022-07-04 21:44:32 +010074# PCIE_BASE_ADDRESS = 0
75ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
76BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS)
77endif
78# PCIE_BASE_LENGTH = 0
79ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
80BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize=$(CONFIG_ECAM_MMCONF_LENGTH)
81endif
Sean Rhodes4600c252022-02-09 08:31:24 +000082# PS2_KEYBOARD_ENABLE = FALSE
Sean Rhodes38c99b52022-07-13 10:11:44 +010083ifeq ($(CONFIG_EDK2_PS2_SUPPORT),y)
Sean Rhodes4600c252022-02-09 08:31:24 +000084BUILD_STR += -D PS2_KEYBOARD_ENABLE=TRUE
85endif
Sean Rhodes0884f2102022-02-04 07:41:16 +000086# PLATFORM_BOOT_TIMEOUT = 3
Sean Rhodes38c99b52022-07-13 10:11:44 +010087ifneq ($(CONFIG_EDK2_BOOT_TIMEOUT),)
88BUILD_STR += -D PLATFORM_BOOT_TIMEOUT=$(CONFIG_EDK2_BOOT_TIMEOUT)
Sean Rhodes4600c252022-02-09 08:31:24 +000089endif
90# SIO_BUS_ENABLE = FALSE
Sean Rhodes38c99b52022-07-13 10:11:44 +010091ifeq ($(CONFIG_EDK2_PS2_SUPPORT),y)
Sean Rhodes4600c252022-02-09 08:31:24 +000092BUILD_STR += -D SIO_BUS_ENABLE=TRUE
93endif
Sean Rhodesf33ddb32022-02-09 08:30:07 +000094# SHELL_TYPE = BUILD_SHELL
Sean Rhodes38c99b52022-07-13 10:11:44 +010095ifneq ($(CONFIG_EDK2_HAVE_EFI_SHELL),y)
Sean Rhodesf33ddb32022-02-09 08:30:07 +000096BUILD_STR += -D SHELL_TYPE=NONE
Sean Rhodes0884f2102022-02-04 07:41:16 +000097endif
98# USE_CBMEM_FOR_CONSOLE = FALSE
Sean Rhodes38c99b52022-07-13 10:11:44 +010099ifeq ($(CONFIG_EDK2_CBMEM_LOGGING),y)
Sean Rhodes0884f2102022-02-04 07:41:16 +0000100BUILD_STR += -D USE_CBMEM_FOR_CONSOLE=TRUE
101endif
Sean Rhodes4a9be9f2022-02-13 21:19:19 +0000102# SD_MMC_TIMEOUT = 1000000
Sean Rhodes38c99b52022-07-13 10:11:44 +0100103ifneq ($(CONFIG_EDK2_SD_MMC_TIMEOUT),)
104BUILD_STR += -D SD_MMC_TIMEOUT=$(shell echo $$(( $(CONFIG_EDK2_SD_MMC_TIMEOUT) * 1000)) )
Sean Rhodes4a9be9f2022-02-13 21:19:19 +0000105endif
Matt DeVilliera38e2482023-04-30 15:10:57 -0500106# EDK2_SECURE_BOOT_SUPPORT = FALSE
107ifeq ($(CONFIG_EDK2_SECURE_BOOT_SUPPORT), y)
108BUILD_STR += -D SECURE_BOOT_ENABLE=TRUE
109endif
Lean Sheng Tan829b2282023-05-03 15:27:21 +0200110# PCIEXP_SUPPORT_RESIZABLE_BARS = FALSE
111ifeq ($(CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS), y)
112BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdPcieResizableBarSupport=TRUE
113endif
Sean Rhodes90318772023-09-20 21:24:24 +0100114
115#
116# The MrChromebox repository has the following addition options:
117#
118ifeq ($(CONFIG_EDK2_REPO_MRCHROMEBOX),y)
119
120# FOLLOW_BGRT_SPEC = FALSE
121ifeq ($(CONFIG_EDK2_FOLLOW_BGRT_SPEC),y)
122BUILD_STR += -D FOLLOW_BGRT_SPEC=TRUE
123endif
Matt DeVillier64262a62022-08-18 18:05:54 -0500124# GOP_DRIVER = FALSE
125ifeq ($(CONFIG_EDK2_GOP_DRIVER), y)
126BUILD_STR += -D USE_PLATFORM_GOP=TRUE
127endif
Sean Rhodes90318772023-09-20 21:24:24 +0100128# PRIORITIZE_INTERNAL = FALSE
129ifeq ($(CONFIG_EDK2_PRIORITIZE_INTERNAL),y)
130BUILD_STR += -D PRIORITIZE_INTERNAL=TRUE
131endif
132# TPM_ENABLE = TRUE
Matt DeVillierfd421482023-09-20 11:27:20 -0500133ifeq ($(CONFIG_EDK2_DISABLE_TPM),y)
Sean Rhodes90318772023-09-20 21:24:24 +0100134BUILD_STR += -D TPM_ENABLE=FALSE
135endif
Matt DeVillier71d8f7c2024-03-09 09:20:18 -0600136# UFS_ENABLE = FALSE
137ifeq ($(CONFIG_EDK2_UFS_ENABLE),y)
138BUILD_STR += -D UFS_ENABLE=TRUE
139endif
Matt DeVillier63359d12024-04-12 11:20:54 -0500140# USE_PCO_MMIO_EMMC = FALSE
141ifeq ($(CONFIG_EDK2_PCO_MMIO_EMMC),y)
142BUILD_STR += -D USE_PCO_MMIO_EMMC=TRUE
143endif
Sean Rhodes90318772023-09-20 21:24:24 +0100144
145endif
Sean Rhodes02f2b192022-07-08 16:29:54 +0100146
Sean Rhodes0884f2102022-02-04 07:41:16 +0000147#
Angel Pons71270132022-07-26 11:31:39 +0200148# EDKII has the below PCDs that are relevant to coreboot:
Sean Rhodes67902492022-07-12 08:24:18 +0100149#
150# Allows EDKII to use the full framebuffer
Sean Rhodes38c99b52022-07-13 10:11:44 +0100151ifeq ($(CONFIG_EDK2_FULL_SCREEN_SETUP),y)
Sean Rhodes67902492022-07-12 08:24:18 +0100152BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow=0
153BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn=0
154BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow=0
155BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn=0
Sean Rhodesc14bbbc2022-07-26 16:50:00 +0100156endif
Matt DeVillier67258982021-10-28 16:46:17 -0500157
Sean Rhodes0884f2102022-02-04 07:41:16 +0000158bootloader = $(word 8,$(subst /, ,$(BUILD_STR)))
Martin Roth4769cc32016-06-02 16:42:29 -0600159
Sean Rhodes38c99b52022-07-13 10:11:44 +0100160ifneq ($(CONFIG_EDK2_CUSTOM_BUILD_PARAMS),)
161BUILD_STR += $(CONFIG_EDK2_CUSTOM_BUILD_PARAMS)
Michał Żygowskiba08c492022-02-23 16:55:24 +0100162endif
Michał Żygowskiba08c492022-02-23 16:55:24 +0100163
Sean Rhodes306550d2022-08-02 09:12:13 +0100164all: UefiPayloadPkg
Martin Roth4769cc32016-06-02 16:42:29 -0600165
Sean Rhodes403d2202022-08-02 08:54:12 +0100166$(WORKSPACE):
Sean Rhodesbbec7122022-08-02 09:32:17 +0100167 mkdir $(WORKSPACE)
Martin Roth4769cc32016-06-02 16:42:29 -0600168
Michał Żygowski82d814a2022-10-26 11:32:54 +0200169$(EDK2_PLATFORMS_PATH): $(WORKSPACE)
170 if [ ! -d "$(EDK2_PLATFORMS_PATH)" ]; then \
171 git clone --recurse-submodules $(CONFIG_EDK2_PLATFORMS_REPOSITORY) $(EDK2_PLATFORMS_PATH) -j5; \
172 fi
173 cd $(EDK2_PLATFORMS_PATH); \
174 if ! git rev-parse --verify -q $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV) >/dev/null; then \
175 echo " $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV) is not a valid git reference"; \
176 exit 1; \
177 fi; \
178 if git status --ignore-submodules=dirty | grep -q "nothing to commit, working tree clean"; then \
179 echo " Checking out edk2-platforms revision $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV)"; \
180 git checkout --detach $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV) -f; \
181 else \
182 echo " Working directory not clean; will not overwrite"; \
183 fi; \
184 git submodule update --init --checkout
185
Sean Rhodes461d1c82022-08-02 09:41:32 +0100186$(EDK2_PATH): $(WORKSPACE)
Sean Rhodes403d2202022-08-02 08:54:12 +0100187 if [ ! -d "$(EDK2_PATH)" ]; then \
Sean Rhodesf2a9a3f2022-08-02 09:36:40 +0100188 git clone --recurse-submodules $(CONFIG_EDK2_REPOSITORY) $(EDK2_PATH) -j5; \
Sean Rhodes0884f2102022-02-04 07:41:16 +0000189 fi
Sean Rhodes403d2202022-08-02 08:54:12 +0100190 cd $(EDK2_PATH); \
Sean Rhodesb02cc142022-08-02 07:56:54 +0100191 git checkout MdeModulePkg/Logo/Logo.bmp > /dev/null 2>&1 || true; \
Sean Rhodesba672762022-05-18 23:00:57 +0100192 if [ -e UefiPayloadPkg/ShimLayer/UniversalPayload.o ]; then \
193 rm UefiPayloadPkg/ShimLayer/UniversalPayload.o; \
194 fi; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100195 echo " Fetching new commits from $(CONFIG_EDK2_REPOSITORY)"; \
Sean Rhodes0884f2102022-02-04 07:41:16 +0000196 git fetch origin 2>/dev/null; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100197 if ! git rev-parse --verify -q $(CONFIG_EDK2_TAG_OR_REV) >/dev/null; then \
198 echo " $(CONFIG_EDK2_TAG_OR_REV) is not a valid git reference"; \
Matt DeVillier38b6ccf2019-02-20 23:46:15 -0600199 exit 1; \
Martin Roth4769cc32016-06-02 16:42:29 -0600200 fi; \
Matt DeVillier598a4b42023-09-20 10:55:10 -0500201 if git status --ignore-submodules=dirty | grep -q -e clean -e "nothing added"; then \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100202 echo " Checking out $(project_name) revision $(CONFIG_EDK2_TAG_OR_REV)"; \
203 git checkout --detach $(CONFIG_EDK2_TAG_OR_REV) -f; \
Matt DeVillier598a4b42023-09-20 10:55:10 -0500204 git submodule update --checkout --recursive; \
Matt DeVillier38b6ccf2019-02-20 23:46:15 -0600205 else \
206 echo " Working directory not clean; will not overwrite"; \
Matt DeVillierae48b422020-04-21 23:54:42 -0500207 fi; \
Sean Rhodes0884f2102022-02-04 07:41:16 +0000208 git submodule update --init --checkout
Martin Roth4769cc32016-06-02 16:42:29 -0600209
Sean Rhodes461d1c82022-08-02 09:41:32 +0100210logo: $(EDK2_PATH)
Sean Rhodes38c99b52022-07-13 10:11:44 +0100211 case "$(CONFIG_EDK2_BOOTSPLASH_FILE)" in \
Matt DeVillier845222f2022-07-25 23:18:47 -0500212 "") ;; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100213 /*) convert -background None $(CONFIG_EDK2_BOOTSPLASH_FILE) \
Sean Rhodes403d2202022-08-02 08:54:12 +0100214 BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100215 *) convert -background None $(top)/$(CONFIG_EDK2_BOOTSPLASH_FILE) \
Sean Rhodes403d2202022-08-02 08:54:12 +0100216 BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
Sean Rhodes108e5372022-07-15 13:58:52 +0100217 esac \
218
Matt DeVillier64262a62022-08-18 18:05:54 -0500219gop_driver:
220 if [ -n "$(CONFIG_EDK2_GOP_DRIVER)" ]; then \
221 echo "Using GOP driver $(CONFIG_EDK2_GOP_FILE)"; \
222 cp $(top)/$(CONFIG_EDK2_GOP_FILE) $(EDK2_PATH)/UefiPayloadPkg/IntelGopDriver.efi; \
223 cp $(top)/$(CONFIG_INTEL_GMA_VBT_FILE) $(EDK2_PATH)/UefiPayloadPkg/vbt.bin; \
224 fi; \
225
Martin Roth4769cc32016-06-02 16:42:29 -0600226checktools:
Sean Rhodes108e5372022-07-15 13:58:52 +0100227 echo -n "EDK2: Checking uuid-dev:"
Martin Roth4769cc32016-06-02 16:42:29 -0600228 echo "#include <uuid/uuid.h>" > libtest.c
229 echo "int main(int argc, char **argv) { (void) argc; (void) argv; return 0; }" >> libtest.c
Sean Rhodes108e5372022-07-15 13:58:52 +0100230 $(HOSTCC) $(HOSTCCFLAGS) libtest.c -o libtest >/dev/null 2>&1 && echo " Found!" || \
231 ( echo " Not found!"; \
232 echo "ERROR: please_install uuid-dev (libuuid-devel)"; exit 1 )
Martin Roth4769cc32016-06-02 16:42:29 -0600233 rm -rf libtest.c libtest
Sean Rhodes108e5372022-07-15 13:58:52 +0100234 echo -n "EDK2: Checking nasm:"
235 type nasm > /dev/null 2>&1 && echo " Found!" || \
236 ( echo " Not found!"; echo "ERROR: Please install nasm."; exit 1 )
237 echo -n "EDK2: Checking imagemagick:"
238 -convert -size 1x1 xc: test.png &> /dev/null;
239 if [ -f test.png ]; then \
240 rm test.png && echo " Found!"; \
241 else \
242 echo " Not found!"; \
243 echo "ERROR: Please install imagemagick"; \
244 exit 1; \
245 fi
Martin Roth4769cc32016-06-02 16:42:29 -0600246
Sean Rhodes175445b2022-08-02 07:53:03 +0100247print:
Sean Rhodes7ea79862022-06-16 21:32:33 +0100248 echo " ##### $(project_name) Build Summary #####"
Sean Rhodes38c99b52022-07-13 10:11:44 +0100249 echo " Repository: $(CONFIG_EDK2_REPOSITORY)"
250 echo " Branch: $(CONFIG_EDK2_TAG_OR_REV)"
Michał Żygowski82d814a2022-10-26 11:32:54 +0200251 echo " Packages path: $(PACKAGES_PATH)"
Sean Rhodes7ea79862022-06-16 21:32:33 +0100252 echo " $(BUILD_STR)" | \
Sean Rhodes175445b2022-08-02 07:53:03 +0100253 sed -e 's/--/-/g' -e 's/-/\n /g' | sort | sed \
Sean Rhodes7ea79862022-06-16 21:32:33 +0100254 -e 's/a /Architecture: /g' \
255 -e 's/b /Release: /g' \
256 -e 's/D /Option: /g' \
Sean Rhodes175445b2022-08-02 07:53:03 +0100257 -e 's/pcd /Pcd: /g' \
Sean Rhodes7ea79862022-06-16 21:32:33 +0100258 -e 's/p /Payload: /g' \
259 -e 's/q /Build: Quiet/' \
Sean Rhodes175445b2022-08-02 07:53:03 +0100260 -e 's/s /Build: Silent/' \
Sean Rhodes7ea79862022-06-16 21:32:33 +0100261 -e 's/t /Toolchain: /'
Sean Rhodes175445b2022-08-02 07:53:03 +0100262
Matt DeVillier64262a62022-08-18 18:05:54 -0500263prep: $(EDK2_PATH) $(EDK2_PLATFORMS_PATH) clean checktools logo gop_driver
Sean Rhodes403d2202022-08-02 08:54:12 +0100264 cd $(WORKSPACE); \
Sean Rhodes724c0cd2022-08-02 09:07:15 +0100265 source $(EDK2_PATH)/edksetup.sh; \
266 unset CC; $(MAKE) -C $(EDK2_PATH)/BaseTools 2>&1; \
Sean Rhodes403d2202022-08-02 08:54:12 +0100267 grep -q "COREBOOT" $(EDK2_PATH)/Conf/tools_def.txt; \
Martin Roth4769cc32016-06-02 16:42:29 -0600268 if [ $$? -ne 0 ]; then \
Sean Rhodes403d2202022-08-02 08:54:12 +0100269 cat ../tools_def.txt >> $(EDK2_PATH)/Conf/tools_def.txt; \
Martin Roth4769cc32016-06-02 16:42:29 -0600270 fi; \
Sean Rhodes724c0cd2022-08-02 09:07:15 +0100271
Sean Rhodes306550d2022-08-02 09:12:13 +0100272$(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd: \
273 prep print
Sean Rhodes724c0cd2022-08-02 09:07:15 +0100274 cd $(WORKSPACE); \
275 source $(EDK2_PATH)/edksetup.sh; \
Sean Rhodes306550d2022-08-02 09:12:13 +0100276 echo -n "EDK2: Building... "; \
Sean Rhodes234c42f2022-08-02 10:00:56 +0100277 build -a IA32 -a X64 -b $(RELEASE_STR) $(BUILD_STR) \
Sean Rhodes306550d2022-08-02 09:12:13 +0100278 -y $(WORKSPACE)/Build/UefiPayloadPkgX64/UEFIPAYLOAD.txt; \
279 if [ ! -f $@ ]; then \
280 echo "Failed!"; \
281 exit 1; \
282 fi
283 echo "Success!"; \
284
Sean Rhodes716bd482022-10-06 21:33:46 +0100285$(WORKSPACE)/Build/UefiPayloadPkgX64/UniversalPayload.elf: \
286 prep print
287 cd $(WORKSPACE); \
288 source $(EDK2_PATH)/edksetup.sh; \
289 echo -n "EDK2: Building... "; \
Sean Rhodes97c57fd2023-03-10 21:56:08 +0000290 $(EDK2_PATH)/UefiPayloadPkg/UniversalPayloadBuild.sh -a IA32 -b $(RELEASE_STR) $(BUILD_STR)
Sean Rhodes716bd482022-10-06 21:33:46 +0100291 if [ ! -f $@ ]; then \
292 echo "Failed!"; \
293 exit 1; \
294 fi
295 echo "Success!"; \
296
Sean Rhodesba672762022-05-18 23:00:57 +0100297$(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll: \
298 $(WORKSPACE)/Build/UefiPayloadPkgX64/UniversalPayload.elf prep
299 cd $(WORKSPACE)/Build/UefiPayloadPkgX64 && \
300 $(OBJCOPY) -I binary UniversalPayload.elf -O elf32-i386 -B i386 \
301 $(EDK2_PATH)/UefiPayloadPkg/ShimLayer/UniversalPayload.o; \
302 cd $(WORKSPACE) && \
303 source $(EDK2_PATH)/edksetup.sh; \
304 build -p UefiPayloadPkg/UefiPayloadPkg.dsc -b $(RELEASE_STR) -a IA32 -a X64 \
305 -m UefiPayloadPkg/ShimLayer/ShimLayer.inf \
306 -t COREBOOT -D BOOTLOADER=COREBOOT -D SHIMLAYER=TRUE \
307 -y $(WORKSPACE)/Build/UefiPayloadPkgX64/ShimLayer.txt
308
Sean Rhodes306550d2022-08-02 09:12:13 +0100309UefiPayloadPkg: $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd
310 mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd \
311 ../../../build/UEFIPAYLOAD.fd
Martin Roth4769cc32016-06-02 16:42:29 -0600312
Sean Rhodes27c8bf02022-07-17 19:01:29 +0100313UniversalPayload: $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll
314 mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll \
315 ../../../build/ShimmedUniversalPayload.elf
316
Martin Roth4769cc32016-06-02 16:42:29 -0600317clean:
Sean Rhodes403d2202022-08-02 08:54:12 +0100318 test -d $(WORKSPACE) && (cd $(WORKSPACE); rm -rf Build; rm -f Conf/tools_def.txt) || exit 0
Martin Roth4769cc32016-06-02 16:42:29 -0600319
320distclean:
Sean Rhodes403d2202022-08-02 08:54:12 +0100321 rm -rf $(WORKSPACE)
Martin Roth4769cc32016-06-02 16:42:29 -0600322
Sean Rhodes27c8bf02022-07-17 19:01:29 +0100323.PHONY: $(EDK2_PATH) checktools logo UefiPayloadPkg UniversalPayload clean distclean