blob: 6a2d2ad30cf6f503c8a5b1a36acd31637bedd705 [file] [log] [blame]
#-------------------------------------------------------------------------------
# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Fetch or use externally provided source tree
#
#-------------------------------------------------------------------------------
if (DEFINED ENV{TS_TFA_PATH})
# Use externally provided source tree
set(TFA_SOURCE_DIR $ENV{TS_TFA_PATH} CACHE PATH "tf-a location" FORCE)
else()
# Otherwise clone the tf-a repo
set(TFA_URL "https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git" CACHE STRING "tf-a repository URL")
set(TFA_REFSPEC "v2.7.0" CACHE STRING "tf-a git refspec")
set(TFA_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/tf-a-src" CACHE PATH "Location of tf-a source")
# Checking git
find_program(GIT_COMMAND "git")
if (NOT GIT_COMMAND)
message(FATAL_ERROR "Please install git")
endif()
set(GIT_OPTIONS
GIT_REPOSITORY ${TFA_URL}
GIT_TAG ${TFA_REFSPEC}
GIT_SHALLOW FALSE
)
include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
LazyFetch_MakeAvailable(
DEP_NAME tf-a
FETCH_OPTIONS "${GIT_OPTIONS}"
SOURCE_DIR ${TFA_SOURCE_DIR}
)
endif()
#-------------------------------------------------------------------------------
# Add tf-a as an external dependency
#
#-------------------------------------------------------------------------------
function(add_tfa_dependency)
set(options )
set(oneValueArgs TARGET)
cmake_parse_arguments(MY_PARAMS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
if(NOT DEFINED MY_PARAMS_TARGET)
message(FATAL_ERROR "add_tf-a: mandatory parameter TARGET not defined!")
endif()
# Provide override include files to enable tf-a components to be compiled outside of
# the tf-a build environment.
target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TS_ROOT}/external/tf_a/include")
# Export tf-a public include files
target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TFA_SOURCE_DIR}/include")
target_include_directories(${MY_PARAMS_TARGET} PRIVATE "${TFA_SOURCE_DIR}/include/arch/aarch64")
# Disable assertions in TF-A for release builds
if ("${UC_CMAKE_BUILD_TYPE}" STREQUAL "MINSIZEREL" OR
"${UC_CMAKE_BUILD_TYPE}" STREQUAL "RELEASE" OR
"${UC_CMAKE_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO")
target_compile_definitions(${MY_PARAMS_TARGET} PRIVATE "ENABLE_ASSERTIONS=0")
endif()
endfunction()