blob: 3b73ce89ea2451b8cd8fe137c3b981f7338958bb [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
Sean Rhodes90318772023-09-20 21:24:24 +0100140
141endif
Sean Rhodes02f2b192022-07-08 16:29:54 +0100142
Sean Rhodes0884f2102022-02-04 07:41:16 +0000143#
Angel Pons71270132022-07-26 11:31:39 +0200144# EDKII has the below PCDs that are relevant to coreboot:
Sean Rhodes67902492022-07-12 08:24:18 +0100145#
146# Allows EDKII to use the full framebuffer
Sean Rhodes38c99b52022-07-13 10:11:44 +0100147ifeq ($(CONFIG_EDK2_FULL_SCREEN_SETUP),y)
Sean Rhodes67902492022-07-12 08:24:18 +0100148BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow=0
149BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn=0
150BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow=0
151BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn=0
Sean Rhodesc14bbbc2022-07-26 16:50:00 +0100152endif
Matt DeVillier67258982021-10-28 16:46:17 -0500153
Sean Rhodes0884f2102022-02-04 07:41:16 +0000154bootloader = $(word 8,$(subst /, ,$(BUILD_STR)))
Martin Roth4769cc32016-06-02 16:42:29 -0600155
Sean Rhodes38c99b52022-07-13 10:11:44 +0100156ifneq ($(CONFIG_EDK2_CUSTOM_BUILD_PARAMS),)
157BUILD_STR += $(CONFIG_EDK2_CUSTOM_BUILD_PARAMS)
Michał Żygowskiba08c492022-02-23 16:55:24 +0100158endif
Michał Żygowskiba08c492022-02-23 16:55:24 +0100159
Sean Rhodes306550d2022-08-02 09:12:13 +0100160all: UefiPayloadPkg
Martin Roth4769cc32016-06-02 16:42:29 -0600161
Sean Rhodes403d2202022-08-02 08:54:12 +0100162$(WORKSPACE):
Sean Rhodesbbec7122022-08-02 09:32:17 +0100163 mkdir $(WORKSPACE)
Martin Roth4769cc32016-06-02 16:42:29 -0600164
Michał Żygowski82d814a2022-10-26 11:32:54 +0200165$(EDK2_PLATFORMS_PATH): $(WORKSPACE)
166 if [ ! -d "$(EDK2_PLATFORMS_PATH)" ]; then \
167 git clone --recurse-submodules $(CONFIG_EDK2_PLATFORMS_REPOSITORY) $(EDK2_PLATFORMS_PATH) -j5; \
168 fi
169 cd $(EDK2_PLATFORMS_PATH); \
170 if ! git rev-parse --verify -q $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV) >/dev/null; then \
171 echo " $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV) is not a valid git reference"; \
172 exit 1; \
173 fi; \
174 if git status --ignore-submodules=dirty | grep -q "nothing to commit, working tree clean"; then \
175 echo " Checking out edk2-platforms revision $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV)"; \
176 git checkout --detach $(CONFIG_EDK2_PLATFORMS_TAG_OR_REV) -f; \
177 else \
178 echo " Working directory not clean; will not overwrite"; \
179 fi; \
180 git submodule update --init --checkout
181
Sean Rhodes461d1c82022-08-02 09:41:32 +0100182$(EDK2_PATH): $(WORKSPACE)
Sean Rhodes403d2202022-08-02 08:54:12 +0100183 if [ ! -d "$(EDK2_PATH)" ]; then \
Sean Rhodesf2a9a3f2022-08-02 09:36:40 +0100184 git clone --recurse-submodules $(CONFIG_EDK2_REPOSITORY) $(EDK2_PATH) -j5; \
Sean Rhodes0884f2102022-02-04 07:41:16 +0000185 fi
Sean Rhodes403d2202022-08-02 08:54:12 +0100186 cd $(EDK2_PATH); \
Sean Rhodesb02cc142022-08-02 07:56:54 +0100187 git checkout MdeModulePkg/Logo/Logo.bmp > /dev/null 2>&1 || true; \
Sean Rhodesba672762022-05-18 23:00:57 +0100188 if [ -e UefiPayloadPkg/ShimLayer/UniversalPayload.o ]; then \
189 rm UefiPayloadPkg/ShimLayer/UniversalPayload.o; \
190 fi; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100191 echo " Fetching new commits from $(CONFIG_EDK2_REPOSITORY)"; \
Sean Rhodes0884f2102022-02-04 07:41:16 +0000192 git fetch origin 2>/dev/null; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100193 if ! git rev-parse --verify -q $(CONFIG_EDK2_TAG_OR_REV) >/dev/null; then \
194 echo " $(CONFIG_EDK2_TAG_OR_REV) is not a valid git reference"; \
Matt DeVillier38b6ccf2019-02-20 23:46:15 -0600195 exit 1; \
Martin Roth4769cc32016-06-02 16:42:29 -0600196 fi; \
Matt DeVillier598a4b42023-09-20 10:55:10 -0500197 if git status --ignore-submodules=dirty | grep -q -e clean -e "nothing added"; then \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100198 echo " Checking out $(project_name) revision $(CONFIG_EDK2_TAG_OR_REV)"; \
199 git checkout --detach $(CONFIG_EDK2_TAG_OR_REV) -f; \
Matt DeVillier598a4b42023-09-20 10:55:10 -0500200 git submodule update --checkout --recursive; \
Matt DeVillier38b6ccf2019-02-20 23:46:15 -0600201 else \
202 echo " Working directory not clean; will not overwrite"; \
Matt DeVillierae48b422020-04-21 23:54:42 -0500203 fi; \
Sean Rhodes0884f2102022-02-04 07:41:16 +0000204 git submodule update --init --checkout
Martin Roth4769cc32016-06-02 16:42:29 -0600205
Sean Rhodes461d1c82022-08-02 09:41:32 +0100206logo: $(EDK2_PATH)
Sean Rhodes38c99b52022-07-13 10:11:44 +0100207 case "$(CONFIG_EDK2_BOOTSPLASH_FILE)" in \
Matt DeVillier845222f2022-07-25 23:18:47 -0500208 "") ;; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100209 /*) convert -background None $(CONFIG_EDK2_BOOTSPLASH_FILE) \
Sean Rhodes403d2202022-08-02 08:54:12 +0100210 BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
Sean Rhodes38c99b52022-07-13 10:11:44 +0100211 *) convert -background None $(top)/$(CONFIG_EDK2_BOOTSPLASH_FILE) \
Sean Rhodes403d2202022-08-02 08:54:12 +0100212 BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
Sean Rhodes108e5372022-07-15 13:58:52 +0100213 esac \
214
Matt DeVillier64262a62022-08-18 18:05:54 -0500215gop_driver:
216 if [ -n "$(CONFIG_EDK2_GOP_DRIVER)" ]; then \
217 echo "Using GOP driver $(CONFIG_EDK2_GOP_FILE)"; \
218 cp $(top)/$(CONFIG_EDK2_GOP_FILE) $(EDK2_PATH)/UefiPayloadPkg/IntelGopDriver.efi; \
219 cp $(top)/$(CONFIG_INTEL_GMA_VBT_FILE) $(EDK2_PATH)/UefiPayloadPkg/vbt.bin; \
220 fi; \
221
Martin Roth4769cc32016-06-02 16:42:29 -0600222checktools:
Sean Rhodes108e5372022-07-15 13:58:52 +0100223 echo -n "EDK2: Checking uuid-dev:"
Martin Roth4769cc32016-06-02 16:42:29 -0600224 echo "#include <uuid/uuid.h>" > libtest.c
225 echo "int main(int argc, char **argv) { (void) argc; (void) argv; return 0; }" >> libtest.c
Sean Rhodes108e5372022-07-15 13:58:52 +0100226 $(HOSTCC) $(HOSTCCFLAGS) libtest.c -o libtest >/dev/null 2>&1 && echo " Found!" || \
227 ( echo " Not found!"; \
228 echo "ERROR: please_install uuid-dev (libuuid-devel)"; exit 1 )
Martin Roth4769cc32016-06-02 16:42:29 -0600229 rm -rf libtest.c libtest
Sean Rhodes108e5372022-07-15 13:58:52 +0100230 echo -n "EDK2: Checking nasm:"
231 type nasm > /dev/null 2>&1 && echo " Found!" || \
232 ( echo " Not found!"; echo "ERROR: Please install nasm."; exit 1 )
233 echo -n "EDK2: Checking imagemagick:"
234 -convert -size 1x1 xc: test.png &> /dev/null;
235 if [ -f test.png ]; then \
236 rm test.png && echo " Found!"; \
237 else \
238 echo " Not found!"; \
239 echo "ERROR: Please install imagemagick"; \
240 exit 1; \
241 fi
Martin Roth4769cc32016-06-02 16:42:29 -0600242
Sean Rhodes175445b2022-08-02 07:53:03 +0100243print:
Sean Rhodes7ea79862022-06-16 21:32:33 +0100244 echo " ##### $(project_name) Build Summary #####"
Sean Rhodes38c99b52022-07-13 10:11:44 +0100245 echo " Repository: $(CONFIG_EDK2_REPOSITORY)"
246 echo " Branch: $(CONFIG_EDK2_TAG_OR_REV)"
Michał Żygowski82d814a2022-10-26 11:32:54 +0200247 echo " Packages path: $(PACKAGES_PATH)"
Sean Rhodes7ea79862022-06-16 21:32:33 +0100248 echo " $(BUILD_STR)" | \
Sean Rhodes175445b2022-08-02 07:53:03 +0100249 sed -e 's/--/-/g' -e 's/-/\n /g' | sort | sed \
Sean Rhodes7ea79862022-06-16 21:32:33 +0100250 -e 's/a /Architecture: /g' \
251 -e 's/b /Release: /g' \
252 -e 's/D /Option: /g' \
Sean Rhodes175445b2022-08-02 07:53:03 +0100253 -e 's/pcd /Pcd: /g' \
Sean Rhodes7ea79862022-06-16 21:32:33 +0100254 -e 's/p /Payload: /g' \
255 -e 's/q /Build: Quiet/' \
Sean Rhodes175445b2022-08-02 07:53:03 +0100256 -e 's/s /Build: Silent/' \
Sean Rhodes7ea79862022-06-16 21:32:33 +0100257 -e 's/t /Toolchain: /'
Sean Rhodes175445b2022-08-02 07:53:03 +0100258
Matt DeVillier64262a62022-08-18 18:05:54 -0500259prep: $(EDK2_PATH) $(EDK2_PLATFORMS_PATH) clean checktools logo gop_driver
Sean Rhodes403d2202022-08-02 08:54:12 +0100260 cd $(WORKSPACE); \
Sean Rhodes724c0cd2022-08-02 09:07:15 +0100261 source $(EDK2_PATH)/edksetup.sh; \
262 unset CC; $(MAKE) -C $(EDK2_PATH)/BaseTools 2>&1; \
Sean Rhodes403d2202022-08-02 08:54:12 +0100263 grep -q "COREBOOT" $(EDK2_PATH)/Conf/tools_def.txt; \
Martin Roth4769cc32016-06-02 16:42:29 -0600264 if [ $$? -ne 0 ]; then \
Sean Rhodes403d2202022-08-02 08:54:12 +0100265 cat ../tools_def.txt >> $(EDK2_PATH)/Conf/tools_def.txt; \
Martin Roth4769cc32016-06-02 16:42:29 -0600266 fi; \
Sean Rhodes724c0cd2022-08-02 09:07:15 +0100267
Sean Rhodes306550d2022-08-02 09:12:13 +0100268$(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd: \
269 prep print
Sean Rhodes724c0cd2022-08-02 09:07:15 +0100270 cd $(WORKSPACE); \
271 source $(EDK2_PATH)/edksetup.sh; \
Sean Rhodes306550d2022-08-02 09:12:13 +0100272 echo -n "EDK2: Building... "; \
Sean Rhodes234c42f2022-08-02 10:00:56 +0100273 build -a IA32 -a X64 -b $(RELEASE_STR) $(BUILD_STR) \
Sean Rhodes306550d2022-08-02 09:12:13 +0100274 -y $(WORKSPACE)/Build/UefiPayloadPkgX64/UEFIPAYLOAD.txt; \
275 if [ ! -f $@ ]; then \
276 echo "Failed!"; \
277 exit 1; \
278 fi
279 echo "Success!"; \
280
Sean Rhodes716bd482022-10-06 21:33:46 +0100281$(WORKSPACE)/Build/UefiPayloadPkgX64/UniversalPayload.elf: \
282 prep print
283 cd $(WORKSPACE); \
284 source $(EDK2_PATH)/edksetup.sh; \
285 echo -n "EDK2: Building... "; \
Sean Rhodes97c57fd2023-03-10 21:56:08 +0000286 $(EDK2_PATH)/UefiPayloadPkg/UniversalPayloadBuild.sh -a IA32 -b $(RELEASE_STR) $(BUILD_STR)
Sean Rhodes716bd482022-10-06 21:33:46 +0100287 if [ ! -f $@ ]; then \
288 echo "Failed!"; \
289 exit 1; \
290 fi
291 echo "Success!"; \
292
Sean Rhodesba672762022-05-18 23:00:57 +0100293$(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll: \
294 $(WORKSPACE)/Build/UefiPayloadPkgX64/UniversalPayload.elf prep
295 cd $(WORKSPACE)/Build/UefiPayloadPkgX64 && \
296 $(OBJCOPY) -I binary UniversalPayload.elf -O elf32-i386 -B i386 \
297 $(EDK2_PATH)/UefiPayloadPkg/ShimLayer/UniversalPayload.o; \
298 cd $(WORKSPACE) && \
299 source $(EDK2_PATH)/edksetup.sh; \
300 build -p UefiPayloadPkg/UefiPayloadPkg.dsc -b $(RELEASE_STR) -a IA32 -a X64 \
301 -m UefiPayloadPkg/ShimLayer/ShimLayer.inf \
302 -t COREBOOT -D BOOTLOADER=COREBOOT -D SHIMLAYER=TRUE \
303 -y $(WORKSPACE)/Build/UefiPayloadPkgX64/ShimLayer.txt
304
Sean Rhodes306550d2022-08-02 09:12:13 +0100305UefiPayloadPkg: $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd
306 mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd \
307 ../../../build/UEFIPAYLOAD.fd
Martin Roth4769cc32016-06-02 16:42:29 -0600308
Sean Rhodes27c8bf02022-07-17 19:01:29 +0100309UniversalPayload: $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll
310 mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll \
311 ../../../build/ShimmedUniversalPayload.elf
312
Martin Roth4769cc32016-06-02 16:42:29 -0600313clean:
Sean Rhodes403d2202022-08-02 08:54:12 +0100314 test -d $(WORKSPACE) && (cd $(WORKSPACE); rm -rf Build; rm -f Conf/tools_def.txt) || exit 0
Martin Roth4769cc32016-06-02 16:42:29 -0600315
316distclean:
Sean Rhodes403d2202022-08-02 08:54:12 +0100317 rm -rf $(WORKSPACE)
Martin Roth4769cc32016-06-02 16:42:29 -0600318
Sean Rhodes27c8bf02022-07-17 19:01:29 +0100319.PHONY: $(EDK2_PATH) checktools logo UefiPayloadPkg UniversalPayload clean distclean