blob: d629418cea7e0499944e33d8835c6288d994f429 [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 Coles9ec67e62020-07-10 09:40:35 +010023message(FATAL_ERROR "This commit is inside the patch chain for convertion of the
24old cmake buildsystem to the modern one. TFM will not build unless all of these
25patches have been applied, these commits are split only for ease of
26understanding. If you wish to build TFM, please checkout the commit
27\"Build: Convert docs directory to modern cmake\"")
28
29############################ CONFIGURATION #####################################
30
31# First load defaults.
32include(config/config_default.cmake)
33
34# Then load the build type config, overriding defaults and command line.
35string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWERCASE)
36if (EXISTS ${CMAKE_SOURCE_DIR}/config/build_type/${CMAKE_BUILD_TYPE_LOWERCASE}.cmake)
37 include(${CMAKE_SOURCE_DIR}/config/build_type/${CMAKE_BUILD_TYPE_LOWERCASE}.cmake)
38endif()
39
40# Then load the profile, overriding build type config, defaults and command
41# line.
42if (TFM_PROFILE)
43 include(config/profile/${TFM_PROFILE}.cmake)
44endif()
45
46# Then load the platform options, overriding profile, build type config,
47# defaults and command line.
48if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/platform/ext/target/${TFM_PLATFORM}/config.cmake)
49 include(platform/ext/target/${TFM_PLATFORM}/config.cmake)
50endif()
51
52# Optionally load extra config, overriding platform options, overriding profile,
53# build type config, defaults and command line.
54if (TFM_EXTRA_CONFIG_PATH)
55 include(${TFM_EXTRA_CONFIG_PATH})
56endif()
57
58list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
59
60################################################################################
61
62add_subdirectory(lib/ext)
63add_subdirectory(tools)
64if(NS)
65 # Set to ${TFM_TEST_REPO_PATH}/app by default
66 add_subdirectory(${TFM_APP_PATH} ${CMAKE_CURRENT_BINARY_DIR}/app)
67endif()
68add_subdirectory(secure_fw)
69add_subdirectory(interface)
70if(BL2)
71 add_subdirectory(bl2)
72endif()
73add_subdirectory(platform)
74
75if(NS AND (TEST_S OR TEST_NS))
76 # Set to ${TFM_TEST_REPO_PATH}/test by default
77 add_subdirectory(${TFM_TEST_PATH} ${CMAKE_CURRENT_BINARY_DIR}/test)
78endif()
79
80include(cmake/install.cmake)
81
82if(CRYPTO_HW_ACCELERATOR)
83 add_subdirectory(platform/ext/accelerator)
84endif()