blob: e00790a45cc17b0860dfa7ca9aae3083afaaa276 [file] [log] [blame]
Gyorgy Szing30fa9872017-12-05 01:08:47 +00001#-------------------------------------------------------------------------------
Raef Coles9ec67e62020-07-10 09:40:35 +01002# Copyright (c) 2020, Arm Limited. All rights reserved.
Gyorgy Szing30fa9872017-12-05 01:08:47 +00003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
Raef Coles9ec67e62020-07-10 09:40:35 +01008cmake_minimum_required(VERSION 3.13)
Gyorgy Szing30fa9872017-12-05 01:08:47 +00009
Raef Coles9ec67e62020-07-10 09:40:35 +010010project("Trusted Firmware M" VERSION 1.1.0 LANGUAGES C ASM)
11set(TFM_VERSION ${PROJECT_VERSION})
Gyorgy Szing30fa9872017-12-05 01:08:47 +000012
Raef Coles9ec67e62020-07-10 09:40:35 +010013# Some compiler flags depend on the CPU / platform config. This include should
14# be run before anything else so the compiler can be configured properly.
15include(platform/ext/target/${TFM_PLATFORM}/preload.cmake)
16
17# The default build type is release. If debug symbols are needed then
18# -DCMAKE_BUILD_TYPE=debug should be used (likewise with other build types)
19if (NOT CMAKE_BUILD_TYPE)
20 set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type: [Debug, Release, RelWithDebInfo, MinSizeRel]" FORCE)
David Vinczec3e313a2020-01-06 17:31:11 +010021endif()
Gyorgy Szing30fa9872017-12-05 01:08:47 +000022
Raef Coles5e8ea842020-09-25 10:36:16 +010023if(
Raef Coles5e8ea842020-09-25 10:36:16 +010024 NOT ${CMAKE_GENERATOR} STREQUAL "Unix Makefiles" AND
25 NOT ${CMAKE_GENERATOR} STREQUAL "Ninja"
26)
27 Message(FATAL_ERROR "unsupported generator ${CMAKE_GENERATOR}. Hint: Try -G\"Unix Makefiles\"")
28endif()
29
Raef Coles9ec67e62020-07-10 09:40:35 +010030############################ CONFIGURATION #####################################
31
32# First load defaults.
33include(config/config_default.cmake)
34
35# Then load the build type config, overriding defaults and command line.
36string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWERCASE)
37if (EXISTS ${CMAKE_SOURCE_DIR}/config/build_type/${CMAKE_BUILD_TYPE_LOWERCASE}.cmake)
38 include(${CMAKE_SOURCE_DIR}/config/build_type/${CMAKE_BUILD_TYPE_LOWERCASE}.cmake)
39endif()
40
41# Then load the profile, overriding build type config, defaults and command
42# line.
43if (TFM_PROFILE)
44 include(config/profile/${TFM_PROFILE}.cmake)
45endif()
46
47# Then load the platform options, overriding profile, build type config,
48# defaults and command line.
49if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/platform/ext/target/${TFM_PLATFORM}/config.cmake)
50 include(platform/ext/target/${TFM_PLATFORM}/config.cmake)
51endif()
52
53# Optionally load extra config, overriding platform options, overriding profile,
54# build type config, defaults and command line.
55if (TFM_EXTRA_CONFIG_PATH)
56 include(${TFM_EXTRA_CONFIG_PATH})
57endif()
58
59list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
60
61################################################################################
62
63add_subdirectory(lib/ext)
64add_subdirectory(tools)
Minos Galanakisdff2eae2020-07-21 15:13:52 +010065add_subdirectory(docs)
Raef Coles9ec67e62020-07-10 09:40:35 +010066if(NS)
67 # Set to ${TFM_TEST_REPO_PATH}/app by default
68 add_subdirectory(${TFM_APP_PATH} ${CMAKE_CURRENT_BINARY_DIR}/app)
69endif()
70add_subdirectory(secure_fw)
71add_subdirectory(interface)
72if(BL2)
73 add_subdirectory(bl2)
74endif()
75add_subdirectory(platform)
76
77if(NS AND (TEST_S OR TEST_NS))
78 # Set to ${TFM_TEST_REPO_PATH}/test by default
79 add_subdirectory(${TFM_TEST_PATH} ${CMAKE_CURRENT_BINARY_DIR}/test)
80endif()
81
82include(cmake/install.cmake)
83
84if(CRYPTO_HW_ACCELERATOR)
85 add_subdirectory(platform/ext/accelerator)
86endif()