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 | # |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 94 | # Introduce a pseudo-library purely for applying flags to RMM's libraries. |
| 95 | # This is applied to any targets created after this point. |
| 96 | # |
| 97 | |
| 98 | add_library(rmm-common INTERFACE) |
| 99 | |
| 100 | target_compile_definitions(rmm-common |
| 101 | INTERFACE "$<$<CONFIG:Debug>:DEBUG>") |
| 102 | |
| 103 | if(MAX_CPUS EQUAL 0x0) |
| 104 | message(FATAL_ERROR "MAX_CPUS is not initialized") |
| 105 | endif() |
| 106 | |
| 107 | target_compile_definitions(rmm-common |
Javier Almansa Sobrino | c4ad5b0 | 2022-07-05 19:05:14 +0100 | [diff] [blame] | 108 | INTERFACE "MAX_CPUS=${MAX_CPUS}U") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 109 | |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 110 | if(NOT(GRANULE_SHIFT EQUAL 12)) |
| 111 | message(FATAL_ERROR "GRANULE_SHIFT is not initialized correctly") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 112 | endif() |
| 113 | |
| 114 | target_compile_definitions(rmm-common |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 115 | INTERFACE "GRANULE_SHIFT=U(${GRANULE_SHIFT})") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 116 | |
AlexeiFedorov | 7c5001a | 2022-12-14 13:22:33 +0000 | [diff] [blame] | 117 | if (RMM_MAX_GRANULES EQUAL 0x0) |
| 118 | message (FATAL_ERROR "RMM_MAX_GRANULES not configured") |
| 119 | endif() |
| 120 | |
| 121 | target_compile_definitions(rmm-common |
| 122 | INTERFACE "RMM_MAX_GRANULES=U(${RMM_MAX_GRANULES})") |
| 123 | |
AlexeiFedorov | 037add6 | 2024-10-30 15:53:05 +0000 | [diff] [blame^] | 124 | if (RMM_MAX_COH_GRANULES EQUAL 0x0) |
| 125 | message (FATAL_ERROR "RMM_MAX_COH_GRANULES cannot be set to 0") |
| 126 | endif() |
| 127 | |
Mate Toth-Pal | 7f5b27d | 2023-08-08 13:49:19 +0200 | [diff] [blame] | 128 | target_compile_definitions(rmm-common |
AlexeiFedorov | ffef39a | 2024-10-28 16:35:21 +0000 | [diff] [blame] | 129 | INTERFACE "RMM_MAX_COH_GRANULES=U(${RMM_MAX_COH_GRANULES})") |
| 130 | |
| 131 | if (RMM_MAX_NCOH_GRANULES EQUAL 0x0) |
AlexeiFedorov | 037add6 | 2024-10-30 15:53:05 +0000 | [diff] [blame^] | 132 | message (FATAL_ERROR "RMM_MAX_NCOH_GRANULES cannot be set to 0") |
AlexeiFedorov | ffef39a | 2024-10-28 16:35:21 +0000 | [diff] [blame] | 133 | endif() |
| 134 | |
| 135 | target_compile_definitions(rmm-common |
| 136 | INTERFACE "RMM_MAX_NCOH_GRANULES=U(${RMM_MAX_NCOH_GRANULES})") |
| 137 | |
| 138 | target_compile_definitions(rmm-common |
Mate Toth-Pal | 7f5b27d | 2023-08-08 13:49:19 +0200 | [diff] [blame] | 139 | INTERFACE "RMM_NUM_PAGES_PER_STACK=UL(${RMM_NUM_PAGES_PER_STACK})") |
| 140 | |
Arunachalam Ganapathy | 188d9e6 | 2024-04-18 13:42:56 +0100 | [diff] [blame] | 141 | if(RMM_FPU_USE_AT_REL2 AND RMM_ARCH STREQUAL aarch64) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 142 | target_compile_definitions(rmm-common |
| 143 | INTERFACE "RMM_FPU_USE_AT_REL2=1") |
| 144 | endif() |
| 145 | |
AlexeiFedorov | ea68b55 | 2023-10-03 11:11:47 +0100 | [diff] [blame] | 146 | target_compile_definitions(rmm-common |
| 147 | INTERFACE "RMM_CCA_TOKEN_BUFFER=U(${RMM_CCA_TOKEN_BUFFER})") |
| 148 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 149 | # |
| 150 | # Project name and version |
| 151 | # |
| 152 | target_compile_definitions(rmm-common |
| 153 | INTERFACE "NAME=\"${PROJECT_NAME}\"") |
| 154 | |
| 155 | target_compile_definitions(rmm-common |
| 156 | INTERFACE "VERSION=\"${PROJECT_VERSION}\"") |
| 157 | |
| 158 | # |
| 159 | # Get git commit information |
| 160 | # |
Soby Mathew | b5a2975 | 2024-11-14 14:26:11 +0000 | [diff] [blame] | 161 | Git_Get_Commit_Info(COMMIT_INFO) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 162 | |
| 163 | target_compile_definitions(rmm-common |
| 164 | INTERFACE "COMMIT_INFO=\"${COMMIT_INFO}\"") |
| 165 | |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame] | 166 | if(RMM_V1_1) |
| 167 | message(WARNING "RMM v1.1 features are experimental") |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 168 | target_compile_definitions(rmm-common |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame] | 169 | INTERFACE "RMM_V1_1=1") |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 170 | endif() |
| 171 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 172 | link_libraries(rmm-common) |