blob: 6a2d2ad30cf6f503c8a5b1a36acd31637bedd705 [file] [log] [blame]
Julian Hallebf3a562022-09-09 17:07:52 +01001#-------------------------------------------------------------------------------
2# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
8#-------------------------------------------------------------------------------
9# Fetch or use externally provided source tree
10#
11#-------------------------------------------------------------------------------
12if (DEFINED ENV{TS_TFA_PATH})
13 # Use externally provided source tree
14 set(TFA_SOURCE_DIR $ENV{TS_TFA_PATH} CACHE PATH "tf-a location" FORCE)
15else()
16 # Otherwise clone the tf-a repo
17 set(TFA_URL "https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git" CACHE STRING "tf-a repository URL")
18 set(TFA_REFSPEC "v2.7.0" CACHE STRING "tf-a git refspec")
19 set(TFA_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/tf-a-src" CACHE PATH "Location of tf-a source")
20
21 # Checking git
22 find_program(GIT_COMMAND "git")
23 if (NOT GIT_COMMAND)
24 message(FATAL_ERROR "Please install git")
25 endif()
26
27 set(GIT_OPTIONS
28 GIT_REPOSITORY ${TFA_URL}
29 GIT_TAG ${TFA_REFSPEC}
30 GIT_SHALLOW FALSE
31 )
32
33 include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
34 LazyFetch_MakeAvailable(
35 DEP_NAME tf-a
36 FETCH_OPTIONS "${GIT_OPTIONS}"
37 SOURCE_DIR ${TFA_SOURCE_DIR}
38 )
39endif()
40
41#-------------------------------------------------------------------------------
42# Add tf-a as an external dependency
43#
44#-------------------------------------------------------------------------------
45function(add_tfa_dependency)
46 set(options )
47 set(oneValueArgs TARGET)
48 cmake_parse_arguments(MY_PARAMS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
49
50 if(NOT DEFINED MY_PARAMS_TARGET)
51 message(FATAL_ERROR "add_tf-a: mandatory parameter TARGET not defined!")
52 endif()
53
Julian Halld635ad72022-09-20 15:50:35 +010054 # Provide override include files to enable tf-a components to be compiled outside of
55 # the tf-a build environment.
56 target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TS_ROOT}/external/tf_a/include")
57
58 # Export tf-a public include files
Julian Hallebf3a562022-09-09 17:07:52 +010059 target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TFA_SOURCE_DIR}/include")
Julian Hall82ce62a2022-09-13 09:00:45 +010060 target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TFA_SOURCE_DIR}/include/arch/aarch64")
Julian Hallebf3a562022-09-09 17:07:52 +010061
Gabor Toth7728fad2024-08-06 13:53:57 +020062 # Disable assertions in TF-A for release builds
63 if ("${UC_CMAKE_BUILD_TYPE}" STREQUAL "MINSIZEREL" OR
64 "${UC_CMAKE_BUILD_TYPE}" STREQUAL "RELEASE" OR
65 "${UC_CMAKE_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO")
66 target_compile_definitions(${MY_PARAMS_TARGET} PRIVATE "ENABLE_ASSERTIONS=0")
67 endif()
Julian Hallebf3a562022-09-09 17:07:52 +010068endfunction()