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:
committed by
Jon Mason
parent
8aa8a1f17f
commit
e043bc4884
+56
@@ -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
|
||||
Reference in New Issue
Block a user