1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-06-05 14:30:10 +00:00

arm/trusted-firmware-rmm: Add bitbake, include and patch file for RMM

Initial checking providing support for RMM on QEMU's "virt" machine.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Mathieu Poirier
2024-04-05 09:48:50 -06:00
committed by Jon Mason
parent 8aa8a1f17f
commit e043bc4884
2 changed files with 106 additions and 0 deletions
@@ -0,0 +1,56 @@
From bc7dbac20a6674eb2834bd6176665f1a2ae42edc Mon Sep 17 00:00:00 2001
From: Mathieu Poirier <mathieu.poirier@linaro.org>
Date: Thu, 14 Mar 2024 14:59:30 -0600
Subject: [PATCH] build(lib): Add extra repositories for system includes
Toolchains such as aarch64-none-elf, aarch64-none-linux-gnu and
aarch64-linux-gnu include assert.h and limits.h in a directory that is
part of their search path. This is not the case when compiling with
Yocto where aarch64-poky-linux places those files in the sysroot
directory of the component being compiled.
Since the sysroot directory of the component is not part of the cmake
search path, compiling the RMM in Yocto fails. This patch fixes the
problem by expanding the search path when needed, allowing the RMM to be
compiled in Yocto.
Upstream-Status: Backport [bc7dbac20a6674eb2834bd6176665f1a2ae42edc]
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
lib/arch/CMakeLists.txt | 3 +++
lib/libc/CMakeLists.txt | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/arch/CMakeLists.txt b/lib/arch/CMakeLists.txt
index d3afc5f2bfc8..a52185f02695 100644
--- a/lib/arch/CMakeLists.txt
+++ b/lib/arch/CMakeLists.txt
@@ -12,6 +12,9 @@ target_link_libraries(rmm-lib-arch
target_include_directories(rmm-lib-arch
PUBLIC "include"
"include/${RMM_ARCH}"
+ # The CMAKE_INCLUDE_PATH is included here for Yocto builds. the
+ # Yocto recipe will define this variable as part of the build.
+ ${CMAKE_INCLUDE_PATH}
PRIVATE "src/${RMM_ARCH}"
"src/include")
diff --git a/lib/libc/CMakeLists.txt b/lib/libc/CMakeLists.txt
index 1631332dbc72..a2adf37f7cb8 100644
--- a/lib/libc/CMakeLists.txt
+++ b/lib/libc/CMakeLists.txt
@@ -12,7 +12,10 @@ if(NOT RMM_ARCH STREQUAL fake_host)
rmm-lib-debug)
target_include_directories(rmm-lib-libc SYSTEM
- PUBLIC "include")
+ PUBLIC "include"
+ # The CMAKE_INCLUDE_PATH is included here for Yocto builds. the
+ # Yocto recipe will define this variable as part of the build.
+ ${CMAKE_INCLUDE_PATH})
target_sources(rmm-lib-libc
PRIVATE "src/abort.c"
--
2.34.1
@@ -0,0 +1,50 @@
SUMMARY = "RMM Firmware"
DESCRIPTION = "RMM Firmware for Arm reference platforms"
LICENSE = "BSD-3-Clause & MIT"
SRC_URI = "gitsm://git.trustedfirmware.org/TF-RMM/tf-rmm.git;protocol=https;branch=main \
file://0001-build-lib-Add-extra-repositories-for-system-includes.patch \
"
SRCREV = "0a02656945d69757b0779192cebb9b41dd9037d1"
LIC_FILES_CHKSUM += "file://docs/about/license.rst;md5=1375c7c641558198ffe401c2a799d79b"
inherit deploy cmake
RMM_CONFIG ?= ""
RMM_CONFIG:qemuarm64 = "qemu_virt_defcfg"
PACKAGE_ARCH = "${MACHINE_ARCH}"
COMPATIBLE_MACHINE = "qemuarm64"
S = "${WORKDIR}/git"
# Build for debug (set RMM_DEBUG to 1 to activate)
RMM_DEBUG ?= "0"
RMM_BUILD_MODE ?= "${@bb.utils.contains('RMM_DEBUG', '1', 'Debug', 'Release', d)}"
# Handle RMM_DEBUG parameter
EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=${RMM_BUILD_MODE}"
EXTRA_OECMAKE += "-DRMM_CONFIG=${RMM_CONFIG}"
# Supplement include path
EXTRA_OECMAKE += "-DCMAKE_INCLUDE_PATH=${STAGING_INCDIR}"
# When compiling for Aarch64 on non-native hosts, the RMM code base gets its
# toolchain from CROSS_COMPILE rather than CMAKE_TOOLCHAIN_FILE
export CROSS_COMPILE="${TARGET_PREFIX}"
do_install() {
install -d -m 755 ${D}/firmware
install -m 0644 ${B}/${RMM_BUILD_MODE}/* ${D}/firmware/
}
FILES:${PN} = "/firmware"
SYSROOT_DIRS += "/firmware"
do_deploy() {
cp -rf ${D}/firmware/* ${DEPLOYDIR}/
}
addtask deploy after do_install