blob: cbc97105c41443adefca9ffde9887f200d325278 [file] [log] [blame] [edit]
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
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(COGENT_PATH ${project_dir}/tools/cogent/cogent CACHE INTERNAL "")
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)
# NB: do platform-specific overrides now that KernelPlatform is set by sel4_configure_platform_settings
include(apps/${CAMKES_APP}/platforms/${KernelPlatform}/easy-settings.cmake OPTIONAL)