blob: f64b1e72d52ed64dcc9e0161070aff4577038791 [file] [log] [blame] [edit]
#
# 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 INTERNAL "")
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)
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 (SIMULATION AND (KernelArchRiscV OR KernelArchARM))
)
# Frequency settings of the ZynqMP make the ltimer tests problematic
# Polarfire does not have a complete ltimer implementation
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 16 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()