1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-05-07 04:58:57 +00:00

meta-arm: Add UEFI EDK2 support for Arm platforms

EDK2 Project is a modern, feature-rich, cross-platform
firmware development environment for the UEFI specifications
from www.uefi.org.

This patch adds a new recipe to fetch, configure and build
UEFI EDK2 firmware for Arm platforms.

Change-Id: Icfb157e5b68d87accfd4290f522fc529fe4e849e
Issue-Id: PLATFORMS-3134
Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Khasim Mohammed
2020-06-10 17:07:58 +01:00
committed by Jon Mason
parent 65d336c807
commit 4f8f8eae7f
2 changed files with 100 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
SUMMARY = "UEFI EDK2 Firmware"
PROVIDES += "virtual/uefi-firmware"
EDK2_BUILD_RELEASE ?= "0"
EDK2_PLATFORM ?= "invalid"
EDK2_PLATFORM_DSC ?= ""
EDK2_BIN_NAME ?= ""
EDK2_ARCH ?= ""
EDK2_BUILD_MODE = "${@bb.utils.contains('EDK2_BUILD_RELEASE', '1', 'RELEASE', 'DEBUG', d)}"
DEPENDS += "util-linux-native iasl-native"
inherit python3native
inherit deploy
B = "${WORKDIR}/build"
S = "${WORKDIR}/git"
COMPATIBLE_MACHINE ?= "invalid"
LDFLAGS[unexport] = "1"
# No configure
do_configure[noexec] = "1"
# Set variables as per envsetup
export GCC5_AARCH64_PREFIX = "${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}"
export PACKAGES_PATH = "${S}/edk2:${S}/edk2/edk2-platforms"
export WORKSPACE = "${S}/edk2"
export EDK_TOOLS_PATH = "${WORKSPACE}/BaseTools"
export PYTHON_COMMAND = "${PYTHON}"
export CONF_PATH = "${WORKSPACE}/Conf"
export BTOOLS_PATH = "${EDK_TOOLS_PATH}/BinWrappers/PosixLike"
python __anonymous() {
# If GCC Version is greater than 4 then pass GCC5
# set GCC5 by default
d.setVar('GCC_VER', 'GCC5')
# Otherwise pass the corresponding version
G = d.getVar('GCCVERSION',True).split(".")
gcc_vlist = ['1', '2', '3', '4']
if G[0] in gcc_vlist:
d.setVar('GCC_VER', 'GCC'+G[0])
}
do_compile() {
# Copy the templates as we don't run envsetup
cp ${EDK_TOOLS_PATH}/Conf/build_rule.template ${WORKSPACE}/Conf/build_rule.txt
cp ${EDK_TOOLS_PATH}/Conf/tools_def.template ${WORKSPACE}/Conf/tools_def.txt
cp ${EDK_TOOLS_PATH}/Conf/target.template ${WORKSPACE}/Conf/target.txt
# Build basetools
oe_runmake -C ${S}/edk2/BaseTools
PATH="${WORKSPACE}:${BTOOLS_PATH}:$PATH" \
"${S}/edk2/BaseTools/BinWrappers/PosixLike/build" \
-a "${EDK2_ARCH}" \
-b ${EDK2_BUILD_MODE} \
-t ${GCC_VER} \
-p "${S}/edk2/edk2-platforms/Platform/ARM/${EDK2_PLATFORM_DSC}"
}
do_install() {
install -d ${D}/firmware
install "${S}/edk2/Build/${EDK2_PLATFORM}/${EDK2_BUILD_MODE}_${GCC_VER}/FV/${EDK2_BIN_NAME}" "${D}/firmware/uefi.bin"
}
FILES_${PN} = "/firmware"
SYSROOT_DIRS += "/firmware"
# Skip QA check for relocations in .text of elf binaries
INSANE_SKIP_${PN} = "textrel"
do_deploy() {
# Copy the images to deploy directory
cp -rf ${D}/firmware/* ${DEPLOYDIR}/
}
addtask deploy after do_install

View File

@@ -0,0 +1,19 @@
DESCRIPTION = "UEFI EDK2 Firmware for Arm reference platforms"
HOMEPAGE = "https://github.com/tianocore/edk2"
LICENSE = "BSD-2-Clause-Patent"
# EDK2
LIC_FILES_CHKSUM = "file://edk2/License.txt;md5=2b415520383f7964e96700ae12b4570a"
# EDK2 Platforms
LIC_FILES_CHKSUM += "file://edk2/edk2-platforms/License.txt;md5=2b415520383f7964e96700ae12b4570a"
SRC_URI ?= "\
git://github.com/tianocore/edk2.git;name=edk2;destsuffix=${S}/edk2;nobranch=1 \
git://github.com/tianocore/edk2-platforms.git;name=edk2-platforms;destsuffix=${S}/edk2/edk2-platforms;nobranch=1 \
"
SRCREV_edk2 ?= "6ff7c838d09224dd4e4c9b5b93152d8db1b19740"
SRCREV_edk2-platforms ?= "ed4cc8059ec551032f0d8b8c172e9ec19214a638"
SRCREV_FORMAT = "edk2_edk2-platforms"
require edk2-firmware.inc