Julian Hall | ebf3a56 | 2022-09-09 17:07:52 +0100 | [diff] [blame] | 1 | #------------------------------------------------------------------------------- |
| 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 | #------------------------------------------------------------------------------- |
| 12 | if (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) |
| 15 | else() |
| 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 | ) |
| 39 | endif() |
| 40 | |
| 41 | #------------------------------------------------------------------------------- |
| 42 | # Add tf-a as an external dependency |
| 43 | # |
| 44 | #------------------------------------------------------------------------------- |
| 45 | function(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 Hall | d635ad7 | 2022-09-20 15:50:35 +0100 | [diff] [blame] | 54 | # 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 Hall | ebf3a56 | 2022-09-09 17:07:52 +0100 | [diff] [blame] | 59 | target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TFA_SOURCE_DIR}/include") |
Julian Hall | 82ce62a | 2022-09-13 09:00:45 +0100 | [diff] [blame] | 60 | target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TFA_SOURCE_DIR}/include/arch/aarch64") |
Julian Hall | ebf3a56 | 2022-09-09 17:07:52 +0100 | [diff] [blame] | 61 | |
Gabor Toth | 7728fad | 2024-08-06 13:53:57 +0200 | [diff] [blame] | 62 | # 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 Hall | ebf3a56 | 2022-09-09 17:07:52 +0100 | [diff] [blame] | 68 | endfunction() |