mirror of https://github.com/seL4/camkes.git
88 lines
2.4 KiB
CMake
88 lines
2.4 KiB
CMake
#
|
|
# 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(PICOTCP_PATH "${project_dir}/projects/picotcp" CACHE INTERNAL "")
|
|
set(OPENSBI_PATH "${project_dir}/tools/opensbi" CACHE STRING "OpenSBI Folder location")
|
|
set(RUMPRUN_PATH ${project_dir}/tools/rumprun CACHE INTERNAL "")
|
|
|
|
set(SEL4_CONFIG_DEFAULT_ADVANCED ON)
|
|
|
|
include(application_settings)
|
|
include(${CMAKE_CURRENT_LIST_DIR}/easy-settings.cmake)
|
|
|
|
# figure out the valid apps
|
|
set(app_names "")
|
|
file(GLOB apps ${CMAKE_CURRENT_LIST_DIR}/apps/*)
|
|
foreach(ARG ${apps})
|
|
get_filename_component(filename ${ARG} NAME)
|
|
list(APPEND app_names "${filename}")
|
|
endforeach()
|
|
string(
|
|
REPLACE
|
|
";"
|
|
"\n "
|
|
app_names_error
|
|
"${app_names}"
|
|
)
|
|
|
|
if("${CAMKES_APP}" STREQUAL "")
|
|
message(
|
|
FATAL_ERROR "Missing option -DCAMKES_APP=<app> to build. Valid apps:\n ${app_names_error}"
|
|
)
|
|
endif()
|
|
|
|
list(FIND app_names "${CAMKES_APP}" app_exists)
|
|
if(${app_exists} EQUAL -1)
|
|
message(
|
|
FATAL_ERROR
|
|
"Invalid value for option -DCAMKES_APP=${CAMKES_APP}. Valid options:\n ${app_names_error}"
|
|
)
|
|
endif()
|
|
|
|
if(ARM_HYP)
|
|
set(KernelArmHypervisorSupport ON CACHE BOOL "" FORCE)
|
|
endif()
|
|
|
|
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()
|
|
|
|
if(SIMULATION)
|
|
ApplyCommonSimulationSettings(${KernelSel4Arch})
|
|
endif()
|
|
|
|
ApplyCommonReleaseVerificationSettings(${RELEASE} FALSE)
|
|
|
|
if (KernelSel4ArchAarch32)
|
|
# Set correct aarch32 TLS register config
|
|
set(KernelArmTLSReg tpidruro CACHE STRING "" FORCE)
|
|
endif()
|
|
|
|
# If an application specific settings file exists then import it here.
|
|
# This can be used for applications to configure the kernel in specific ways
|
|
include(${CMAKE_CURRENT_LIST_DIR}/apps/${CAMKES_APP}/settings.cmake OPTIONAL)
|