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