Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 1 | # |
| 2 | # SPDX-License-Identifier: BSD-3-Clause |
| 3 | # SPDX-FileCopyrightText: Copyright TF-RMM Contributors. |
| 4 | # |
| 5 | |
| 6 | # |
| 7 | # Common config options |
| 8 | # |
| 9 | arm_config_option( |
| 10 | NAME MAX_CPUS |
| 11 | HELP "Maximum number of CPUs supported by RMM" |
| 12 | TYPE STRING |
| 13 | DEFAULT 16) |
| 14 | |
| 15 | # |
| 16 | # The RMM is mapped with 4K pages, and all RMM APIs use the same granularity. |
| 17 | # |
| 18 | arm_config_option( |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 19 | NAME GRANULE_SHIFT |
| 20 | HELP "The shift value of granule size. i.e: GRANULE_SIZE == 1 << GRANULE_SHIFT" |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 21 | TYPE STRING |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 22 | DEFAULT 12) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 23 | |
AlexeiFedorov | 7c5001a | 2022-12-14 13:22:33 +0000 | [diff] [blame] | 24 | # |
AlexeiFedorov | ffef39a | 2024-10-28 16:35:21 +0000 | [diff] [blame] | 25 | # RMM_MAX_GRANULES. Maximum number of memory granules supported. |
AlexeiFedorov | 7c5001a | 2022-12-14 13:22:33 +0000 | [diff] [blame] | 26 | # |
| 27 | arm_config_option( |
| 28 | NAME RMM_MAX_GRANULES |
AlexeiFedorov | ffef39a | 2024-10-28 16:35:21 +0000 | [diff] [blame] | 29 | HELP "Maximum number of memory granules supported" |
| 30 | TYPE STRING |
| 31 | DEFAULT 0x0) |
| 32 | |
| 33 | # |
| 34 | # RMM_MAX_COH_GRANULES. Maximum number of coherent device granules supported. |
| 35 | # |
| 36 | arm_config_option( |
| 37 | NAME RMM_MAX_COH_GRANULES |
| 38 | HELP "Maximum number of coherent device granules supported" |
| 39 | TYPE STRING |
AlexeiFedorov | 037add6 | 2024-10-30 15:53:05 +0000 | [diff] [blame] | 40 | DEFAULT 1) |
AlexeiFedorov | ffef39a | 2024-10-28 16:35:21 +0000 | [diff] [blame] | 41 | |
| 42 | # |
| 43 | # RMM_MAX_NCOH_GRANULES. Maximum number of non-coherent device granules supported. |
| 44 | # |
| 45 | arm_config_option( |
| 46 | NAME RMM_MAX_NCOH_GRANULES |
| 47 | HELP "Maximum number of non-coherent device granules supported" |
AlexeiFedorov | 7c5001a | 2022-12-14 13:22:33 +0000 | [diff] [blame] | 48 | TYPE STRING |
AlexeiFedorov | 037add6 | 2024-10-30 15:53:05 +0000 | [diff] [blame] | 49 | DEFAULT 1) |
AlexeiFedorov | 7c5001a | 2022-12-14 13:22:33 +0000 | [diff] [blame] | 50 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 51 | arm_config_option( |
Mate Toth-Pal | 7f5b27d | 2023-08-08 13:49:19 +0200 | [diff] [blame] | 52 | NAME RMM_NUM_PAGES_PER_STACK |
| 53 | HELP "Number of pages to use per CPU stack" |
| 54 | TYPE STRING |
| 55 | DEFAULT 5 |
| 56 | ADVANCED) |
| 57 | |
| 58 | arm_config_option( |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 59 | NAME RMM_DOCS |
| 60 | HELP "RMM Documentation build" |
| 61 | TYPE BOOL |
| 62 | DEFAULT OFF) |
| 63 | |
| 64 | # TODO: Move to lib/arch once MbedTLS compilation is moved to build phase. |
| 65 | arm_config_option( |
| 66 | NAME RMM_FPU_USE_AT_REL2 |
| 67 | HELP "Enable Advanced SIMD support in RMM" |
| 68 | TYPE BOOL |
Soby Mathew | 9b2de24 | 2024-02-27 16:08:42 +0000 | [diff] [blame] | 69 | DEFAULT OFF) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 70 | |
| 71 | # |
AlexeiFedorov | ea68b55 | 2023-10-03 11:11:47 +0100 | [diff] [blame] | 72 | # The number of 4K pages allocated for attestation buffer. |
| 73 | # |
| 74 | arm_config_option( |
| 75 | NAME RMM_CCA_TOKEN_BUFFER |
| 76 | HELP "Number of pages to allocate in Aux granules for Realm CCA token" |
| 77 | TYPE STRING |
| 78 | DEFAULT 1) |
| 79 | |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 80 | arm_config_option( |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame] | 81 | NAME RMM_V1_1 |
| 82 | HELP "Enable v1.1 features in RMM (experimental)" |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 83 | TYPE BOOL |
| 84 | DEFAULT OFF) |
| 85 | |
Soby Mathew | e307b0a | 2024-10-03 12:12:52 +0100 | [diff] [blame] | 86 | arm_config_option( |
| 87 | NAME ATTEST_EL3_TOKEN_SIGN |
| 88 | HELP "Use EL3 service to sign realm attestation token." |
| 89 | TYPE BOOL |
| 90 | DEFAULT OFF |
| 91 | ADVANCED) |
| 92 | |
AlexeiFedorov | ea68b55 | 2023-10-03 11:11:47 +0100 | [diff] [blame] | 93 | # |
Jacob Man Chun Yiu | f1b6d04 | 2025-02-17 16:47:06 +0000 | [diff] [blame] | 94 | # Enable the Stack protection compiler flag. |
| 95 | # Having the PAUTH and BTI feature enabled makes the software-based |
| 96 | # stack frame canary redundant. Enabling the software canary could |
| 97 | # have a performance degradation. Hence the default is OFF. |
| 98 | # |
| 99 | arm_config_option( |
| 100 | NAME STACK_PROTECTOR |
| 101 | HELP "Enable Stack Protection Compiler Flags" |
| 102 | string OFF) |
| 103 | |
| 104 | # |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 105 | # Introduce a pseudo-library purely for applying flags to RMM's libraries. |
| 106 | # This is applied to any targets created after this point. |
| 107 | # |
| 108 | |
| 109 | add_library(rmm-common INTERFACE) |
| 110 | |
| 111 | target_compile_definitions(rmm-common |
| 112 | INTERFACE "$<$<CONFIG:Debug>:DEBUG>") |
| 113 | |
| 114 | if(MAX_CPUS EQUAL 0x0) |
| 115 | message(FATAL_ERROR "MAX_CPUS is not initialized") |
| 116 | endif() |
| 117 | |
| 118 | target_compile_definitions(rmm-common |
Javier Almansa Sobrino | c4ad5b0 | 2022-07-05 19:05:14 +0100 | [diff] [blame] | 119 | INTERFACE "MAX_CPUS=${MAX_CPUS}U") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 120 | |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 121 | if(NOT(GRANULE_SHIFT EQUAL 12)) |
| 122 | message(FATAL_ERROR "GRANULE_SHIFT is not initialized correctly") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 123 | endif() |
| 124 | |
| 125 | target_compile_definitions(rmm-common |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 126 | INTERFACE "GRANULE_SHIFT=U(${GRANULE_SHIFT})") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 127 | |
AlexeiFedorov | 7c5001a | 2022-12-14 13:22:33 +0000 | [diff] [blame] | 128 | if (RMM_MAX_GRANULES EQUAL 0x0) |
| 129 | message (FATAL_ERROR "RMM_MAX_GRANULES not configured") |
| 130 | endif() |
| 131 | |
| 132 | target_compile_definitions(rmm-common |
| 133 | INTERFACE "RMM_MAX_GRANULES=U(${RMM_MAX_GRANULES})") |
| 134 | |
AlexeiFedorov | 037add6 | 2024-10-30 15:53:05 +0000 | [diff] [blame] | 135 | if (RMM_MAX_COH_GRANULES EQUAL 0x0) |
| 136 | message (FATAL_ERROR "RMM_MAX_COH_GRANULES cannot be set to 0") |
| 137 | endif() |
| 138 | |
Mate Toth-Pal | 7f5b27d | 2023-08-08 13:49:19 +0200 | [diff] [blame] | 139 | target_compile_definitions(rmm-common |
AlexeiFedorov | ffef39a | 2024-10-28 16:35:21 +0000 | [diff] [blame] | 140 | INTERFACE "RMM_MAX_COH_GRANULES=U(${RMM_MAX_COH_GRANULES})") |
| 141 | |
| 142 | if (RMM_MAX_NCOH_GRANULES EQUAL 0x0) |
AlexeiFedorov | 037add6 | 2024-10-30 15:53:05 +0000 | [diff] [blame] | 143 | message (FATAL_ERROR "RMM_MAX_NCOH_GRANULES cannot be set to 0") |
AlexeiFedorov | ffef39a | 2024-10-28 16:35:21 +0000 | [diff] [blame] | 144 | endif() |
| 145 | |
| 146 | target_compile_definitions(rmm-common |
| 147 | INTERFACE "RMM_MAX_NCOH_GRANULES=U(${RMM_MAX_NCOH_GRANULES})") |
| 148 | |
| 149 | target_compile_definitions(rmm-common |
Mate Toth-Pal | 7f5b27d | 2023-08-08 13:49:19 +0200 | [diff] [blame] | 150 | INTERFACE "RMM_NUM_PAGES_PER_STACK=UL(${RMM_NUM_PAGES_PER_STACK})") |
| 151 | |
Jacob Man Chun Yiu | f1b6d04 | 2025-02-17 16:47:06 +0000 | [diff] [blame] | 152 | # Set stack protector option. |
| 153 | if(STACK_PROTECTOR) |
| 154 | target_compile_definitions(rmm-common |
| 155 | INTERFACE "STACK_PROTECTOR_ENABLED=1") |
| 156 | message(STATUS "Stack Protector is Enabled.") |
| 157 | add_compile_options(-fstack-protector-strong) |
| 158 | endif() |
| 159 | |
Arunachalam Ganapathy | 188d9e6 | 2024-04-18 13:42:56 +0100 | [diff] [blame] | 160 | if(RMM_FPU_USE_AT_REL2 AND RMM_ARCH STREQUAL aarch64) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 161 | target_compile_definitions(rmm-common |
| 162 | INTERFACE "RMM_FPU_USE_AT_REL2=1") |
| 163 | endif() |
| 164 | |
AlexeiFedorov | ea68b55 | 2023-10-03 11:11:47 +0100 | [diff] [blame] | 165 | target_compile_definitions(rmm-common |
| 166 | INTERFACE "RMM_CCA_TOKEN_BUFFER=U(${RMM_CCA_TOKEN_BUFFER})") |
| 167 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 168 | # |
| 169 | # Project name and version |
| 170 | # |
| 171 | target_compile_definitions(rmm-common |
| 172 | INTERFACE "NAME=\"${PROJECT_NAME}\"") |
| 173 | |
| 174 | target_compile_definitions(rmm-common |
| 175 | INTERFACE "VERSION=\"${PROJECT_VERSION}\"") |
| 176 | |
| 177 | # |
| 178 | # Get git commit information |
| 179 | # |
Soby Mathew | b5a2975 | 2024-11-14 14:26:11 +0000 | [diff] [blame] | 180 | Git_Get_Commit_Info(COMMIT_INFO) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 181 | |
| 182 | target_compile_definitions(rmm-common |
| 183 | INTERFACE "COMMIT_INFO=\"${COMMIT_INFO}\"") |
| 184 | |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame] | 185 | if(RMM_V1_1) |
| 186 | message(WARNING "RMM v1.1 features are experimental") |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 187 | target_compile_definitions(rmm-common |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame] | 188 | INTERFACE "RMM_V1_1=1") |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 189 | endif() |
| 190 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 191 | link_libraries(rmm-common) |