payloads/edk2: Separate the build target and repository

Until recently, there were two options to build edk2, UefiPayloadPkg and
CorebootPayloadPkg. Now, there is only one, UefiPayloadPkg but soon,
there will be Universal Payload.

It makes more sense, as the official edk2 repository doesn't work with
coreboot, to have the build target and repository separate. That will
allow for building either UefiPayloadPkg or Universal Payload from the
official repository, MrChromebox' fork or a custom repository.

Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Change-Id: If7f12423058ef69838741f384495ca766ccea083
Reviewed-on: https://review.coreboot.org/c/coreboot/+/66080
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
This commit is contained in:
Sean Rhodes 2022-07-22 10:10:38 +01:00 committed by Martin Roth
parent 325afdaf9f
commit 91564fc370
2 changed files with 26 additions and 20 deletions

View File

@ -161,8 +161,9 @@ $(obj)/UEFIPAYLOAD.fd: $(DOTCONFIG)
CONFIG_EDK2_REPOSITORY=$(CONFIG_EDK2_REPOSITORY) \ CONFIG_EDK2_REPOSITORY=$(CONFIG_EDK2_REPOSITORY) \
CONFIG_EDK2_TAG_OR_REV=$(CONFIG_EDK2_TAG_OR_REV) \ CONFIG_EDK2_TAG_OR_REV=$(CONFIG_EDK2_TAG_OR_REV) \
CONFIG_EDK2_UEFIPAYLOAD=$(CONFIG_EDK2_UEFIPAYLOAD) \ CONFIG_EDK2_UEFIPAYLOAD=$(CONFIG_EDK2_UEFIPAYLOAD) \
CONFIG_EDK2_UPSTREAM=$(CONFIG_EDK2_UPSTREAM) \ CONFIG_EDK2_REPO_OFFICIAL=$(CONFIG_EDK2_REPO_OFFICIAL) \
CONFIG_EDK2_CUSTOM=$(CONFIG_EDK2_CUSTOM) \ CONFIG_EDK2_REPO_MRCHROMEBOX=$(CONFIG_EDK2_REPO_MRCHROMEBOX) \
CONFIG_EDK2_REPO_CUSTOM=$(CONFIG_EDK2_REPO_CUSTOM) \
CONFIG_EDK2_CUSTOM_BUILD_PARAMS=$(CONFIG_EDK2_CUSTOM_BUILD_PARAMS) \ CONFIG_EDK2_CUSTOM_BUILD_PARAMS=$(CONFIG_EDK2_CUSTOM_BUILD_PARAMS) \
CONFIG_EDK2_DEBUG=$(CONFIG_EDK2_DEBUG) \ CONFIG_EDK2_DEBUG=$(CONFIG_EDK2_DEBUG) \
CONFIG_EDK2_RELEASE=$(CONFIG_EDK2_RELEASE) \ CONFIG_EDK2_RELEASE=$(CONFIG_EDK2_RELEASE) \

View File

@ -2,32 +2,39 @@ if PAYLOAD_EDK2
config PAYLOAD_FILE config PAYLOAD_FILE
string "edk2 binary" string "edk2 binary"
default "$(obj)/UEFIPAYLOAD.fd" default "$(obj)/UEFIPAYLOAD.fd" if EDK2_UEFIPAYLOAD
help help
The result of a UefiPayloadPkg build The result of a UefiPayloadPkg build
config EDK2_UEFIPAYLOAD
bool "Build UefiPayloadPkg"
default y
help
Build the standard UefiPayloadPkg
choice choice
prompt "Tianocore's EDK II payload" prompt "Tianocore's EDK II payload"
default EDK2_UEFIPAYLOAD default EDK2_REPO_MRCHROMEBOX
help help
Select which type of payload edk2 will build (default is UefiPayload) Select which type of payload edk2 will build (default is UefiPayload)
UefiPayload: MrChromebox's customized fork of edk2 which works on most UefiPayload: MrChromebox's customized fork of edk2 which works on most
x86_64 devices x86_64 devices
Upstream: Use upstream edk2 payload from https://github.com/tianocore/edk2 Upstream: Use upstream edk2 payload from https://github.com/tianocore/edk2
config EDK2_UEFIPAYLOAD config EDK2_REPO_MRCHROMEBOX
bool "UEFIPayload" bool "MrChromebox' edk2 fork"
help help
Select this option to build using MrChromebox's custom edk2 fork, Select this option to build using MrChromebox's custom edk2 fork,
which incorporates fixes/improvements from System 76's and 9elements' trees. which incorporates fixes/improvements from System 76's and 9elements' trees.
config EDK2_UPSTREAM config EDK2_REPO_OFFICIAL
bool "Upstream" bool "Official edk2 repository"
help help
Select this option if you want to use upstream edk2 to build edk2. Select this option if you want to use the official edk2 repository to build
edk2.
config EDK2_CUSTOM config EDK2_REPO_CUSTOM
bool "Custom" bool "Specify your own repository"
help help
Specify your own edk2 repository and branch to use. Specify your own edk2 repository and branch to use.
@ -35,16 +42,18 @@ endchoice
config EDK2_REPOSITORY config EDK2_REPOSITORY
string "URL to git repository for edk2" string "URL to git repository for edk2"
default "https://github.com/tianocore/edk2" if EDK2_UPSTREAM default "https://github.com/mrchromebox/edk2" if EDK2_REPO_MRCHROMEBOX
default "https://github.com/mrchromebox/edk2" if EDK2_UEFIPAYLOAD default "https://github.com/tianocore/edk2" if EDK2_REPO_OFFICIAL
default "" if EDK2_REPO_CUSTOM
help help
coreboot supports an array of build options which can be found below. These options coreboot supports an array of build options which can be found below. These options
will only have an effect if the relevant options exist in the target repository. will only have an effect if the relevant options exist in the target repository.
config EDK2_TAG_OR_REV config EDK2_TAG_OR_REV
string "Insert a commit's SHA-1 or a branch name" string "Insert a commit's SHA-1 or a branch name"
default "origin/uefipayload_202207" if EDK2_UEFIPAYLOAD default "origin/uefipayload_202207" if EDK2_REPO_MRCHROMEBOX
default "origin/master" if EDK2_UPSTREAM default "origin/master" if EDK2_REPO_OFFICIAL
default "" if EDK2_REPO_CUSTOM
help help
The commit's SHA-1 or branch name of the revision to use. This must exist in The commit's SHA-1 or branch name of the revision to use. This must exist in
EDK2_REPOSITORY, and in the case of a branch name, prefixed with origin i.e. EDK2_REPOSITORY, and in the case of a branch name, prefixed with origin i.e.
@ -69,8 +78,6 @@ config EDK2_RELEASE
endchoice endchoice
if EDK2_UEFIPAYLOAD || EDK2_CUSTOM || EDK2_UPSTREAM
config EDK2_ABOVE_4G_MEMORY config EDK2_ABOVE_4G_MEMORY
bool "Enable above 4G memory" bool "Enable above 4G memory"
default n default n
@ -188,11 +195,9 @@ config EDK2_SERIAL_SUPPORT
Enable serial port output in edk2. Serial output limits the performance of edk2's Enable serial port output in edk2. Serial output limits the performance of edk2's
FrontPage. FrontPage.
endif
config EDK2_CUSTOM_BUILD_PARAMS config EDK2_CUSTOM_BUILD_PARAMS
string "edk2 additional custom build parameters" string "edk2 additional custom build parameters"
default "-D VARIABLE_SUPPORT=SMMSTORE" if EDK2_UEFIPAYLOAD && SMMSTORE_V2 default "-D VARIABLE_SUPPORT=SMMSTORE" if EDK2_REPO_MRCHROMEBOX && SMMSTORE_V2
help help
edk2 has build options that are not modified by coreboot, and these can be edk2 has build options that are not modified by coreboot, and these can be
found in `UefiPayloadPkg/UefiPayloadPkg.dsc`. Forks may also support found in `UefiPayloadPkg/UefiPayloadPkg.dsc`. Forks may also support