blob: 564c203f1f526ad3ed746ddefa055e72b443fc41 [file] [log] [blame]
Brad Bishopbec4ebc2022-08-03 09:55:16 -04001SUMMARY = "Hafnium"
2DESCRIPTION = "A reference Secure Partition Manager (SPM) for systems that implement the Armv8.4-A Secure-EL2 extension"
3DEPENDS = "gn-native ninja-native bison-native bc-native dtc-native openssl-native"
4
5LICENSE = "BSD-3-Clause & GPL-2.0-only"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=782b40c14bad5294672c500501edc103"
7
8PACKAGE_ARCH = "${MACHINE_ARCH}"
9
Patrick Williams8dd68482022-10-04 07:57:18 -050010
11CLANGNATIVE = ""
12CLANGNATIVE:runtime-llvm = "clang-native"
13
14inherit deploy python3native pkgconfig ${CLANGNATIVE}
Brad Bishopbec4ebc2022-08-03 09:55:16 -040015
16SRC_URI = "gitsm://git.trustedfirmware.org/hafnium/hafnium.git;protocol=https;branch=master \
17 file://0001-define-_Noreturn-if-needed.patch \
Patrick Williams7784c422022-11-17 07:29:11 -060018 file://0002-arm-hafnium-fix-kernel-tool-linking.patch \
19 file://0003-Fix-build-with-clang-15.patch \
20 file://0001-Use-pkg-config-native-to-find-the-libssl-headers.patch;patchdir=third_party/linux \
21 file://0001-work-around-visibility-issue.patch;patchdir=third_party/dtc \
Patrick Williams8dd68482022-10-04 07:57:18 -050022 "
23SRCREV = "79e9522d26fc2a88a44af149034acc27312b73a1"
Brad Bishopbec4ebc2022-08-03 09:55:16 -040024S = "${WORKDIR}/git"
25B = "${WORKDIR}/build"
26
27COMPATIBLE_MACHINE ?= "invalid"
28COMPATIBLE_MACHINE:qemuarm64 = "qemuarm64"
29
30# Default build 'reference'
31HAFNIUM_PROJECT ?= "reference"
32
33# Platform must be set for each machine
34HAFNIUM_PLATFORM ?= "invalid"
35HAFNIUM_PLATFORM:qemuarm64 = "qemu_aarch64"
36
37# do_deploy will install everything listed in this variable. It is set by
38# default to hafnium
39HAFNIUM_INSTALL_TARGET ?= "hafnium"
40
41# set project to build
42EXTRA_OEMAKE += "PROJECT=${HAFNIUM_PROJECT}"
43
44EXTRA_OEMAKE += "OUT_DIR=${B}"
45
46# Don't use prebuilt binaries for gn and ninja
47EXTRA_OEMAKE += "GN=${STAGING_BINDIR_NATIVE}/gn NINJA=${STAGING_BINDIR_NATIVE}/ninja"
48
49do_configure[cleandirs] += "${B}"
50
51do_compile() {
52 oe_runmake -C ${S}
53}
54
55do_install() {
56 cd ${B}/${HAFNIUM_PLATFORM}_clang
57 install -d -m 755 ${D}/firmware
58 for bldfile in ${HAFNIUM_INSTALL_TARGET}; do
59 install -m 0755 $bldfile.bin $bldfile.elf ${D}/firmware/
60 done
61}
62
63FILES:${PN} = "/firmware/*.bin"
64FILES:${PN}-dbg = "/firmware/*.elf"
65SYSROOT_DIRS += "/firmware"
66INSANE_SKIP:${PN} = "ldflags"
67INSANE_SKIP:${PN}-dbg = "ldflags"
68# Build paths are currently embedded
69INSANE_SKIP:${PN}-dbg += "buildpaths"
70
71do_deploy() {
72 cp -rf ${D}/firmware/* ${DEPLOYDIR}/
73}
74addtask deploy after do_install
75
76python() {
77 # https://developer.trustedfirmware.org/T898
78 if d.getVar("BUILD_ARCH") != "x86_64":
79 raise bb.parse.SkipRecipe("Cannot be built on non-x86-64 hosts")
80}
Patrick Williams8dd68482022-10-04 07:57:18 -050081
82EXCLUDE_FROM_WORLD = "1"