forked from seL4/sel4test
-
Notifications
You must be signed in to change notification settings - Fork 0
/
settings.cmake
134 lines (112 loc) · 4.33 KB
/
settings.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#
# Copyright 2019, Data61, CSIRO (ABN 41 687 119 230)
#
# SPDX-License-Identifier: BSD-2-Clause
#
cmake_minimum_required(VERSION 3.7.2)
set(project_dir "${CMAKE_CURRENT_LIST_DIR}/../..")
file(GLOB project_modules ${project_dir}/projects/*)
list(
APPEND
CMAKE_MODULE_PATH
${project_dir}/kernel
${project_dir}/tools/seL4/cmake-tool/helpers/
${project_dir}/tools/seL4/elfloader-tool/
${project_modules}
)
set(NANOPB_SRC_ROOT_FOLDER "${project_dir}/tools/nanopb" CACHE STRING "NanoPB Folder location")
set(OPENSBI_PATH "${project_dir}/tools/opensbi" CACHE STRING "OpenSBI Folder location")
set(SEL4_CONFIG_DEFAULT_ADVANCED ON)
include(application_settings)
include(${CMAKE_CURRENT_LIST_DIR}/easy-settings.cmake)
correct_platform_strings()
find_package(seL4 REQUIRED)
sel4_configure_platform_settings()
set(valid_platforms ${KernelPlatform_all_strings} ${correct_platform_strings_platform_aliases})
set_property(CACHE PLATFORM PROPERTY STRINGS ${valid_platforms})
if(NOT "${PLATFORM}" IN_LIST valid_platforms)
message(FATAL_ERROR "Invalid PLATFORM selected: \"${PLATFORM}\"
Valid platforms are: \"${valid_platforms}\"")
endif()
# Declare a cache variable that enables/disablings the forcing of cache variables to
# the specific test values. By default it is disabled
set(Sel4testAllowSettingsOverride OFF CACHE BOOL "Allow user to override configuration settings")
if(NOT Sel4testAllowSettingsOverride)
# We use 'FORCE' when settings these values instead of 'INTERNAL' so that they still appear
# in the cmake-gui to prevent excessively confusing users
if(ARM_HYP)
set(KernelArmHypervisorSupport ON CACHE BOOL "" FORCE)
endif()
if(KernelPlatformQEMUArmVirt OR KernelPlatformQEMURiscVVirt OR KernelPlatformSpike)
set(SIMULATION ON CACHE BOOL "" FORCE)
endif()
if(SIMULATION)
ApplyCommonSimulationSettings(${KernelSel4Arch})
else()
if(KernelArchX86)
set(KernelIOMMU ON CACHE BOOL "" FORCE)
endif()
endif()
# sel4test specific config settings.
if(SIMULATION)
set(Sel4testSimulation ON CACHE BOOL "" FORCE)
set(Sel4testHaveCache OFF CACHE BOOL "" FORCE)
else()
set(Sel4testSimulation OFF CACHE BOOL "" FORCE)
set(Sel4testHaveCache ON CACHE BOOL "" FORCE)
endif()
if(KernelPlatformQEMUArmVirt)
if(KernelArmExportPCNTUser AND KernelArmExportPTMRUser)
set(Sel4testHaveTimer ON CACHE BOOL "" FORCE)
else()
set(Sel4testHaveTimer OFF CACHE BOOL "" FORCE)
endif()
elseif(
KernelPlatformZynqmp
OR KernelPlatformPolarfire
OR KernelPlatformQuartz64
OR KernelPlatformRocketchip
OR KernelPlatformRocketchipZCU102
OR (SIMULATION AND (KernelArchRiscV OR KernelArchARM))
)
# Frequency settings of the ZynqMP make the ltimer tests problematic
# Polarfire does not have a complete ltimer implementation
# Quartz64 does not have a complete ltimer implementation
# Rocket Chip on the ZCU102 FPGA does not have a timer peripheral
set(Sel4testHaveTimer OFF CACHE BOOL "" FORCE)
else()
set(Sel4testHaveTimer ON CACHE BOOL "" FORCE)
endif()
# Check the hardware debug API non simulated (except for ia32, which can be simulated),
# or platforms that don't support it.
if(((NOT SIMULATION) OR KernelSel4ArchIA32) AND NOT KernelHardwareDebugAPIUnsupported)
set(HardwareDebugAPI ON CACHE BOOL "" FORCE)
else()
set(HardwareDebugAPI OFF CACHE BOOL "" FORCE)
endif()
ApplyCommonReleaseVerificationSettings(${RELEASE} ${VERIFICATION})
if(BAMBOO)
set(LibSel4TestPrintXML ON CACHE BOOL "" FORCE)
else()
set(LibSel4TestPrintXML OFF CACHE BOOL "" FORCE)
endif()
if(DOMAINS)
set(KernelNumDomains 4 CACHE STRING "" FORCE)
else()
set(KernelNumDomains 1 CACHE STRING "" FORCE)
endif()
if(SMP)
if(NUM_NODES MATCHES "^[0-9]+$")
set(KernelMaxNumNodes ${NUM_NODES} CACHE STRING "" FORCE)
else()
set(KernelMaxNumNodes 4 CACHE STRING "" FORCE)
endif()
else()
set(KernelMaxNumNodes 1 CACHE STRING "" FORCE)
endif()
if(MCS)
set(KernelIsMCS ON CACHE BOOL "" FORCE)
else()
set(KernelIsMCS OFF CACHE BOOL "" FORCE)
endif()
endif()