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 | # |
| 25 | # RMM_MAX_GRANULES. Maximum number of granules supported. |
| 26 | # |
| 27 | arm_config_option( |
| 28 | NAME RMM_MAX_GRANULES |
| 29 | HELP "Maximum number of granules supported" |
| 30 | TYPE STRING |
| 31 | DEFAULT 0x0) |
| 32 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 33 | arm_config_option( |
Mate Toth-Pal | 7f5b27d | 2023-08-08 13:49:19 +0200 | [diff] [blame] | 34 | NAME RMM_NUM_PAGES_PER_STACK |
| 35 | HELP "Number of pages to use per CPU stack" |
| 36 | TYPE STRING |
| 37 | DEFAULT 5 |
| 38 | ADVANCED) |
| 39 | |
| 40 | arm_config_option( |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 41 | NAME RMM_DOCS |
| 42 | HELP "RMM Documentation build" |
| 43 | TYPE BOOL |
| 44 | DEFAULT OFF) |
| 45 | |
| 46 | # TODO: Move to lib/arch once MbedTLS compilation is moved to build phase. |
| 47 | arm_config_option( |
| 48 | NAME RMM_FPU_USE_AT_REL2 |
| 49 | HELP "Enable Advanced SIMD support in RMM" |
| 50 | TYPE BOOL |
Soby Mathew | 9b2de24 | 2024-02-27 16:08:42 +0000 | [diff] [blame] | 51 | DEFAULT OFF) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 52 | |
| 53 | # |
AlexeiFedorov | ea68b55 | 2023-10-03 11:11:47 +0100 | [diff] [blame] | 54 | # The number of 4K pages allocated for attestation buffer. |
| 55 | # |
| 56 | arm_config_option( |
| 57 | NAME RMM_CCA_TOKEN_BUFFER |
| 58 | HELP "Number of pages to allocate in Aux granules for Realm CCA token" |
| 59 | TYPE STRING |
| 60 | DEFAULT 1) |
| 61 | |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 62 | arm_config_option( |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame^] | 63 | NAME RMM_V1_1 |
| 64 | HELP "Enable v1.1 features in RMM (experimental)" |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 65 | TYPE BOOL |
| 66 | DEFAULT OFF) |
| 67 | |
Soby Mathew | e307b0a | 2024-10-03 12:12:52 +0100 | [diff] [blame] | 68 | arm_config_option( |
| 69 | NAME ATTEST_EL3_TOKEN_SIGN |
| 70 | HELP "Use EL3 service to sign realm attestation token." |
| 71 | TYPE BOOL |
| 72 | DEFAULT OFF |
| 73 | ADVANCED) |
| 74 | |
AlexeiFedorov | ea68b55 | 2023-10-03 11:11:47 +0100 | [diff] [blame] | 75 | # |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 76 | # Introduce a pseudo-library purely for applying flags to RMM's libraries. |
| 77 | # This is applied to any targets created after this point. |
| 78 | # |
| 79 | |
| 80 | add_library(rmm-common INTERFACE) |
| 81 | |
| 82 | target_compile_definitions(rmm-common |
| 83 | INTERFACE "$<$<CONFIG:Debug>:DEBUG>") |
| 84 | |
| 85 | if(MAX_CPUS EQUAL 0x0) |
| 86 | message(FATAL_ERROR "MAX_CPUS is not initialized") |
| 87 | endif() |
| 88 | |
| 89 | target_compile_definitions(rmm-common |
Javier Almansa Sobrino | c4ad5b0 | 2022-07-05 19:05:14 +0100 | [diff] [blame] | 90 | INTERFACE "MAX_CPUS=${MAX_CPUS}U") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 91 | |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 92 | if(NOT(GRANULE_SHIFT EQUAL 12)) |
| 93 | message(FATAL_ERROR "GRANULE_SHIFT is not initialized correctly") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 94 | endif() |
| 95 | |
| 96 | target_compile_definitions(rmm-common |
Mate Toth-Pal | ac0cfbb | 2023-06-19 16:29:52 +0200 | [diff] [blame] | 97 | INTERFACE "GRANULE_SHIFT=U(${GRANULE_SHIFT})") |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 98 | |
AlexeiFedorov | 7c5001a | 2022-12-14 13:22:33 +0000 | [diff] [blame] | 99 | if (RMM_MAX_GRANULES EQUAL 0x0) |
| 100 | message (FATAL_ERROR "RMM_MAX_GRANULES not configured") |
| 101 | endif() |
| 102 | |
| 103 | target_compile_definitions(rmm-common |
| 104 | INTERFACE "RMM_MAX_GRANULES=U(${RMM_MAX_GRANULES})") |
| 105 | |
Mate Toth-Pal | 7f5b27d | 2023-08-08 13:49:19 +0200 | [diff] [blame] | 106 | target_compile_definitions(rmm-common |
| 107 | INTERFACE "RMM_NUM_PAGES_PER_STACK=UL(${RMM_NUM_PAGES_PER_STACK})") |
| 108 | |
Arunachalam Ganapathy | 188d9e6 | 2024-04-18 13:42:56 +0100 | [diff] [blame] | 109 | if(RMM_FPU_USE_AT_REL2 AND RMM_ARCH STREQUAL aarch64) |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 110 | target_compile_definitions(rmm-common |
| 111 | INTERFACE "RMM_FPU_USE_AT_REL2=1") |
| 112 | endif() |
| 113 | |
AlexeiFedorov | ea68b55 | 2023-10-03 11:11:47 +0100 | [diff] [blame] | 114 | target_compile_definitions(rmm-common |
| 115 | INTERFACE "RMM_CCA_TOKEN_BUFFER=U(${RMM_CCA_TOKEN_BUFFER})") |
| 116 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 117 | # |
| 118 | # Project name and version |
| 119 | # |
| 120 | target_compile_definitions(rmm-common |
| 121 | INTERFACE "NAME=\"${PROJECT_NAME}\"") |
| 122 | |
| 123 | target_compile_definitions(rmm-common |
| 124 | INTERFACE "VERSION=\"${PROJECT_VERSION}\"") |
| 125 | |
| 126 | # |
| 127 | # Get git commit information |
| 128 | # |
| 129 | find_package(Git) |
| 130 | if(GIT_FOUND) |
| 131 | execute_process( |
| 132 | COMMAND ${GIT_EXECUTABLE} describe --always --dirty --tags |
| 133 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
| 134 | OUTPUT_VARIABLE COMMIT_INFO |
| 135 | OUTPUT_STRIP_TRAILING_WHITESPACE |
| 136 | ) |
| 137 | endif() |
| 138 | |
| 139 | target_compile_definitions(rmm-common |
| 140 | INTERFACE "COMMIT_INFO=\"${COMMIT_INFO}\"") |
| 141 | |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame^] | 142 | if(RMM_V1_1) |
| 143 | message(WARNING "RMM v1.1 features are experimental") |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 144 | target_compile_definitions(rmm-common |
Arunachalam Ganapathy | 56aeccc | 2024-10-24 15:03:55 +0100 | [diff] [blame^] | 145 | INTERFACE "RMM_V1_1=1") |
Arunachalam Ganapathy | 33e3bdc | 2024-04-10 20:55:40 +0100 | [diff] [blame] | 146 | endif() |
| 147 | |
Soby Mathew | b4c6df4 | 2022-11-09 11:13:29 +0000 | [diff] [blame] | 148 | link_libraries(rmm-common) |