optee-os: make early TAs more convenient to add for .bbappends

If two different .bbappends both try to add an "early TA" by appending
an EARLY_TA_PATHS="..." to EXTRA_OEMAKE, only one of them will
actually take effect.

For example, meta-arm itself has a .bbappend in optee-ftpm which adds
the ftpm TA if optee-ftpm is in MACHINE_FEATURES. If the BSP developer
wants to add another early TA, he has to take that into account and
very carefully ensure to create an EARLY_TA_PATHS="..." argument which
contains both the ftpm value as well as his desired extra TA.

Instead, let the main recipe define a variable which can simply be
appended to in the normal way, and which is used for deriving the
single EARLY_TA_PATHS="" argument in the make command line.

Handle the in-tree TAs similarly.

Signed-off-by: Rasmus Villemoes <ravi@prevas.dk>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Rasmus Villemoes authored and Jon Mason committed 2026-09-10 00:53:12 -04:00
1 parent ade09d3a60
commit 9414135734
1 file changed
+15
@@ -35,6 +35,21 @@ EXTRA_OEMAKE += " CROSS_COMPILE64=${HOST_PREFIX}"
# Enable BTI in optee
EXTRA_OEMAKE += "${@bb.utils.contains('MACHINE_FEATURES', 'arm-branch-protection', ' CFG_TA_BTI=1 CFG_CORE_PAUTH=y CFG_TA_PAUTH=y', '', d)}"
# If several .bbappends wants to add an early TA, and they both do
# EXTRA_OEMAKE += 'EARLY_TA_PATHS="..."', only one of them will take
# effect. Instead, create a bitbake variable holding the entire list,
# which the .bbappends can append to, and add a single EARLY_TA_PATHS=
# to the make cmdline here. Similarly for the in-tree ones.
#
# Note that it is not necessary to explicitly pass CFG_EARLY_TA=y as
# the build systems sets that itself if either list is non-empty (and
# errors out if CFG_EARLY_TA was explicitly set to n).
EARLY_TA_PATHS = ""
CFG_IN_TREE_EARLY_TAS = ""
EXTRA_OEMAKE += "${@'EARLY_TA_PATHS="' + d.getVar('EARLY_TA_PATHS') + '"' if d.getVar('EARLY_TA_PATHS') else ''}"
EXTRA_OEMAKE += "${@'CFG_IN_TREE_EARLY_TAS="' + d.getVar('CFG_IN_TREE_EARLY_TAS') + '"' if d.getVar('CFG_IN_TREE_EARLY_TAS') else ''}"
LDFLAGS[unexport] = "1"
CPPFLAGS[unexport] = "1"
AS[unexport] = "1"