arm-trusted-firmware/lib
Chris Kay cc277de816 build: refactor toolchain detection
This change refactors how we identify the toolchain, with the ultimate
aim of eventually cleaning up the various mechanisms that we employ to
configure default tools, identify the tools in use, and configure
toolchain flags.

To do this, we introduce three new concepts in this change:

- Toolchain identifiers,
- Tool class identifiers, and
- Tool identifiers.

Toolchain identifiers identify a configurable chain of tools targeting
one platform/machine/architecture. Today, these are:

- The host machine, which receives the `host` identifier,
- The AArch32 architecture, which receives the `aarch32` identifier, and
- The AArch64 architecture, which receivs the `aarch64` identifier.

The tools in a toolchain may come from different vendors, and are not
necessarily expected to come from one single toolchain distribution. In
most cases it is perfectly valid to mix tools from different toolchain
distributions, with some exceptions (notably, link-time optimization
generally requires the compiler and the linker to be aligned).

Tool class identifiers identify a class (or "role") of a tool. C
compilers, assemblers and linkers are all examples of tool classes.

Tool identifiers identify a specific tool recognized and supported by
the build system. Every tool that can make up a part of a toolchain must
receive a tool identifier.

These new identifiers can be used to retrieve information about the
toolchain in a more standardized fashion.

For example, logic in a Makefile that should only execute when the C
compiler is GNU GCC can now check the tool identifier for the C compiler
in the relevant toolchain:

    ifeq ($($(ARCH)-cc-id),gnu-gcc)
        ...
    endif

Change-Id: Icc23e43aaa32f4fd01d8187c5202f5012a634e7c
Signed-off-by: Chris Kay <chris.kay@arm.com>
2024-02-06 11:14:52 +00:00
..
aarch32 chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
aarch64 chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
bl_aux_params chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
compiler-rt chore(compiler-rt): update compiler-rt source files 2023-11-06 21:14:01 +00:00
coreboot chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
cpus fix(cpus): workaround for Cortex X3 erratum 2641945 2024-01-25 17:14:54 -06:00
debugfs chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
el3_runtime feat(cpufeat): add feature detection for FEAT_CSV2_3 2024-01-29 14:06:56 +00:00
extensions refactor(cm): move MPAM3_EL3 reg to per world context 2023-12-21 12:37:21 +00:00
fconf feat(fconf): support signing-key in root cert node 2024-01-18 13:18:09 -06:00
gpt_rme fix(gpt_rme): fix compilation error for gpt_rme.c 2022-12-09 11:27:14 +00:00
libc fix(libc): memset inclusion to libc makefiles 2024-02-02 09:49:01 +01:00
libfdt chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
locks chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
mpmm fix(errata): workaround for Cortex-A510 erratum 2250311 2022-02-24 23:30:41 +02:00
optee chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
pmf fix(smccc): ensure that mpidr passed through SMC is valid 2023-11-06 20:43:38 +00:00
psa refactor(rss)!: remove PLAT_RSS_NOT_SUPPORTED build option 2023-11-13 16:30:21 +00:00
psci fix(smccc): ensure that mpidr passed through SMC is valid 2023-11-06 20:43:38 +00:00
romlib build: refactor toolchain detection 2024-02-06 11:14:52 +00:00
semihosting chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
stack_protector chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
transfer_list feat(handoff): enhance transfer list library 2023-12-18 15:52:51 +00:00
utils chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
xlat_mpu chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
xlat_tables chore: update to use Arm word across TF-A 2023-08-08 15:12:30 +01:00
xlat_tables_v2 fix(xlat): set MAX_PHYS_ADDR to total mapped physical region 2023-11-03 16:33:51 +05:30
zlib chore(zlib): update zlib to version 1.3 2023-11-06 21:13:38 +00:00