blob: 699b79de49ab2284aab26e514e35bdc7f6a2c586 [file] [log] [blame]
Jimmy Brissonff08d3e2020-04-02 15:19:27 -05001Build Options Summary
2=====================
Jimmy Brisson0862f012020-04-02 15:19:12 -05003
Jimmy Brissonff08d3e2020-04-02 15:19:27 -05004As far as possible, TF-A Tests dynamically detects the platform hardware
Jimmy Brisson0862f012020-04-02 15:19:12 -05005components and available features. There are a few build options to select
Jimmy Brissonff08d3e2020-04-02 15:19:27 -05006specific features where the dynamic detection falls short.
Jimmy Brisson0862f012020-04-02 15:19:12 -05007
8Unless mentioned otherwise, these options are expected to be specified at the
9build command line and are not to be modified in any component makefiles.
10
Jimmy Brissonff08d3e2020-04-02 15:19:27 -050011.. note::
12 The build system doesn't track dependencies for build options. Therefore, if
13 any of the build options are changed from a previous build, a clean build
14 must be performed.
Jimmy Brisson0862f012020-04-02 15:19:12 -050015
Jimmy Brissonff08d3e2020-04-02 15:19:27 -050016Common (Shared) Build Options
17-----------------------------
Jimmy Brisson0862f012020-04-02 15:19:12 -050018
19Most of the build options listed in this section apply to TFTF, the FWU test
20images and Cactus, unless otherwise specified. These do not influence the EL3
21payload, whose simplistic build system is mostly independent.
22
23- ``ARCH``: Choose the target build architecture for TF-A Tests. It can take
24 either ``aarch64`` or ``aarch32`` as values. By default, it is defined to
25 ``aarch64``. Not all test images support this build option.
26
Alexei Fedorovd92f4ce2020-12-07 18:13:28 +000027- ``ARM_ARCH_FEATURE``: Optional Arm Architecture build option which specifies
28 one or more feature modifiers. This option has the form ``[no]feature+...``
29 and defaults to ``none``. It translates into compiler option
30 ``-march=armvX[.Y]-a+[no]feature+...``. See compiler's documentation for the
31 list of supported feature modifiers.
32
Jimmy Brisson0862f012020-04-02 15:19:12 -050033- ``ARM_ARCH_MAJOR``: The major version of Arm Architecture to target when
34 compiling TF-A Tests. Its value must be numeric, and defaults to 8.
35
36- ``ARM_ARCH_MINOR``: The minor version of Arm Architecture to target when
37 compiling TF-A Tests. Its value must be a numeric, and defaults to 0.
38
Alexei Fedorov7fac1622020-06-19 14:25:43 +010039- ``BRANCH_PROTECTION``: Numeric value to enable ARMv8.3 Pointer Authentication
40 (``ARMv8.3-PAuth``) and ARMv8.5 Branch Target Identification (``ARMv8.5-BTI``)
41 support in the Trusted Firmware-A Test Framework itself.
42 If enabled, it is needed to use a compiler that supports the option
43 ``-mbranch-protection`` (GCC 9 and later).
44 Selects the branch protection features to use:
45- 0: Default value turns off all types of branch protection
46- 1: Enables all types of branch protection features
47- 2: Return address signing to its standard level
48- 3: Extend the signing to include leaf functions
49- 4: Turn on branch target identification mechanism
50
51 The table below summarizes ``BRANCH_PROTECTION`` values, GCC compilation
52 options and resulting PAuth/BTI features.
53
54 +-------+--------------+-------+-----+
55 | Value | GCC option | PAuth | BTI |
56 +=======+==============+=======+=====+
57 | 0 | none | N | N |
58 +-------+--------------+-------+-----+
59 | 1 | standard | Y | Y |
60 +-------+--------------+-------+-----+
61 | 2 | pac-ret | Y | N |
62 +-------+--------------+-------+-----+
63 | 3 | pac-ret+leaf | Y | N |
64 +-------+--------------+-------+-----+
65 | 4 | bti | N | Y |
66 +-------+--------------+-------+-----+
67
68 This option defaults to 0 and this is an experimental feature.
69
Jimmy Brisson0862f012020-04-02 15:19:12 -050070- ``DEBUG``: Chooses between a debug and a release build. A debug build
71 typically embeds assertions checking the validity of some assumptions and its
72 output is more verbose. The option can take either 0 (release) or 1 (debug)
73 as values. 0 is the default.
74
75- ``ENABLE_ASSERTIONS``: This option controls whether calls to ``assert()`` are
76 compiled out.
77
78 - For debug builds, this option defaults to 1, and calls to ``assert()`` are
79 compiled in.
80 - For release builds, this option defaults to 0 and calls to ``assert()``
81 are compiled out.
82
83 This option can be set independently of ``DEBUG``. It can also be used to
84 hide any auxiliary code that is only required for the assertion and does not
85 fit in the assertion itself.
86
87- ``LOG_LEVEL``: Chooses the log level, which controls the amount of console log
88 output compiled into the build. This should be one of the following:
89
90 ::
91
92 0 (LOG_LEVEL_NONE)
93 10 (LOG_LEVEL_ERROR)
94 20 (LOG_LEVEL_NOTICE)
95 30 (LOG_LEVEL_WARNING)
96 40 (LOG_LEVEL_INFO)
97 50 (LOG_LEVEL_VERBOSE)
98
99 All log output up to and including the selected log level is compiled into
100 the build. The default value is 40 in debug builds and 20 in release builds.
101
102- ``PLAT``: Choose a platform to build TF-A Tests for. The chosen platform name
103 must be a subdirectory of any depth under ``plat/``, and must contain a
104 platform makefile named ``platform.mk``. For example, to build TF-A Tests for
105 the Arm Juno board, select ``PLAT=juno``.
106
107- ``V``: Verbose build. If assigned anything other than 0, the build commands
108 are printed. Default is 0.
109
Shruti Guptac973b2a2023-07-12 12:10:54 +0100110- ``ENABLE_REALM_PAYLOAD_TESTS``: This option builds and packs Realm payload tests for
111 RME enabled stack. Default is 0.
112
Alexei Fedorov7cc25872020-06-02 16:35:36 +0100113Arm FVP Platform Specific Build Options
114---------------------------------------
115
116- ``FVP_CLUSTER_COUNT`` : Configures the cluster count to be used to build the
117 topology tree within TFTF. By default TFTF is configured for dual cluster for
118 CPUs with single thread (ST) and single cluster for SMT CPUs.
119 For ST CPUs this option can be used to override the default number of clusters
120 with a value in the range 1-4.
121
122- ``FVP_MAX_CPUS_PER_CLUSTER``: Sets the maximum number of CPUs implemented in
123 a single cluster. This option defaults to the maximum value of 4 for ST CPUs
124 and maximum value of 8 for SMT CPUs.
125
126- ``FVP_MAX_PE_PER_CPU``: Sets the maximum number of PEs implemented on any CPU
127 in the system. This option defaults to 1 to select ST CPUs. For platforms with
128 SMT CPUs this value must be set to 2.
129
Jimmy Brissonff08d3e2020-04-02 15:19:27 -0500130TFTF-specific Build Options
131---------------------------
Jimmy Brisson0862f012020-04-02 15:19:12 -0500132
Jimmy Brisson0862f012020-04-02 15:19:12 -0500133- ``NEW_TEST_SESSION``: Choose whether a new test session should be started
134 every time or whether the framework should determine whether a previous
135 session was interrupted and resume it. It can take either 1 (always
136 start new session) or 0 (resume session as appropriate). 1 is the default.
137
138- ``TESTS``: Set of tests to run. Use the following command to list all
139 possible sets of tests:
140
141 ::
142
143 make help_tests
144
145 If no set of tests is specified, the standard tests will be selected (see
146 ``tftf/tests/tests-standard.xml``).
147
148- ``USE_NVM``: Used to select the location of test results. It can take either 0
149 (RAM) or 1 (non-volatile memory like flash) as test results storage. Default
150 value is 0, as writing to the flash significantly slows tests down.
151
Soby Mathew2a5b1502022-11-02 04:29:07 +0000152Realm payload specific Build Options
153------------------------------------
154
Soby Mathew6e5c9962023-10-06 16:38:13 +0100155- ``ENABLE_REALM_PAYLOAD_TESTS=1`` This option builds and packs Realm payload tests
156 realm.bin to tftf.bin.
Soby Mathew2a5b1502022-11-02 04:29:07 +0000157
Jimmy Brissonff08d3e2020-04-02 15:19:27 -0500158FWU-specific Build Options
159--------------------------
Jimmy Brisson0862f012020-04-02 15:19:12 -0500160
161- ``FIRMWARE_UPDATE``: Whether the Firmware Update test images (i.e.
162 ``NS_BL1U`` and ``NS_BL2U``) should be built. The default value is 0. The
163 platform makefile is free to override this value if Firmware Update is
164 supported on this platform.
Jimmy Brissonff08d3e2020-04-02 15:19:27 -0500165
166--------------
167
Alexei Fedorov7cc25872020-06-02 16:35:36 +0100168*Copyright (c) 2019-2020, Arm Limited. All rights reserved.*