blob: 96dc65097962b28ac3ec42645add31a6b4050279 [file] [log] [blame]
Soby Mathewb4c6df42022-11-09 11:13:29 +00001#
2# SPDX-License-Identifier: BSD-3-Clause
3# SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
4#
5
6#
7# Common config options
8#
9arm_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#
18arm_config_option(
19 NAME GRANULE_SIZE
20 HELP "Granule Size used by RMM"
21 TYPE STRING
22 DEFAULT 4096)
23
24arm_config_option(
25 NAME RMM_DOCS
26 HELP "RMM Documentation build"
27 TYPE BOOL
28 DEFAULT OFF)
29
30# TODO: Move to lib/arch once MbedTLS compilation is moved to build phase.
31arm_config_option(
32 NAME RMM_FPU_USE_AT_REL2
33 HELP "Enable Advanced SIMD support in RMM"
34 TYPE BOOL
35 DEFAULT ON
36 DEPENDS (RMM_ARCH STREQUAL aarch64)
37 ELSE OFF)
38
39#
40# Introduce a pseudo-library purely for applying flags to RMM's libraries.
41# This is applied to any targets created after this point.
42#
43
44add_library(rmm-common INTERFACE)
45
46target_compile_definitions(rmm-common
47 INTERFACE "$<$<CONFIG:Debug>:DEBUG>")
48
49if(MAX_CPUS EQUAL 0x0)
50 message(FATAL_ERROR "MAX_CPUS is not initialized")
51endif()
52
53target_compile_definitions(rmm-common
54 INTERFACE "MAX_CPUS=U(${MAX_CPUS})")
55
56if(NOT(GRANULE_SIZE EQUAL 4096))
57 message(FATAL_ERROR "GRANULE_SIZE is not initialized correctly")
58endif()
59
60target_compile_definitions(rmm-common
61 INTERFACE "GRANULE_SIZE=U(${GRANULE_SIZE})")
62
63if(RMM_FPU_USE_AT_REL2)
64 target_compile_definitions(rmm-common
65 INTERFACE "RMM_FPU_USE_AT_REL2=1")
66endif()
67
68#
69# Project name and version
70#
71target_compile_definitions(rmm-common
72 INTERFACE "NAME=\"${PROJECT_NAME}\"")
73
74target_compile_definitions(rmm-common
75 INTERFACE "VERSION=\"${PROJECT_VERSION}\"")
76
77#
78# Get git commit information
79#
80find_package(Git)
81if(GIT_FOUND)
82 execute_process(
83 COMMAND ${GIT_EXECUTABLE} describe --always --dirty --tags
84 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
85 OUTPUT_VARIABLE COMMIT_INFO
86 OUTPUT_STRIP_TRAILING_WHITESPACE
87 )
88endif()
89
90target_compile_definitions(rmm-common
91 INTERFACE "COMMIT_INFO=\"${COMMIT_INFO}\"")
92
93link_libraries(rmm-common)