blob: 58d98c88a91b05f887b0bae0907b8ef73bb11369 [file] [log] [blame]
julhal012c18fbf2021-02-01 08:29:28 +00001#-------------------------------------------------------------------------------
2# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
8# Driver source location and version
9set(ARM_TZTRNG_URL "https://github.com/ARM-software/TZ-TRNG.git" CACHE STRING "Arm TZ-TRNG driver repository URL")
10set(ARM_TZTRNG_REFSPEC "1.0.0" CACHE STRING "Arm TZ-TRNG driver git refspec")
11
12# Fetch driver source code from remote repository
13include(FetchContent)
14
15FetchContent_Declare(
16 arm-tztrng
17 GIT_REPOSITORY ${ARM_TZTRNG_URL}
18 GIT_TAG ${ARM_TZTRNG_REFSPEC}
19 GIT_SHALLOW TRUE
20)
21
22# FetchContent_GetProperties exports arm-tztrng_SOURCE_DIR and arm-tztrng_BINARY_DIR variables
23FetchContent_GetProperties(arm-tztrng)
24if(NOT arm-tztrng_POPULATED)
25 message(STATUS "Fetching arm-tztrng")
26 FetchContent_Populate(arm-tztrng)
27endif()
28
29# The driver has no cmake build support so it is necessary to bridge cmake variables to
30# driver build parameters.
31
32# Determine ARCH parameter
33if (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm")
34 set(_arm-tztrng_ARCH "arm64")
35 set(_arm-tztrng_builddir "build-aarch64-linux-gnu")
36else()
37 message(FATAL_ERROR "Only arm builds of TZ-TRNG supported.")
38endif()
39
40# Determine the full path for the generated library and public header
41set(_arm-tztrng_genlib "${arm-tztrng_SOURCE_DIR}/host/src/tztrng_lib/${_arm-tztrng_builddir}/libcc_tztrng.a")
42set(_arm-tztrng_host_incpath "${arm-tztrng_SOURCE_DIR}/host/src/tztrng_lib/include")
43set(_arm-tztrng_shared_incpath "${arm-tztrng_SOURCE_DIR}/shared/hw/include")
44
45# Set HOST_PROJ_ROOT parameter to use TS provided build defines
46set(_arm-tztrng_HOST_PROJ_ROOT ${CMAKE_CURRENT_LIST_DIR})
47
48# Add custom command to build the driver library using the TZ-TRNG provided makefile
49add_custom_command(
50 OUTPUT ${_arm-tztrng_genlib}
51 COMMAND make ARGS "ARCH=${_arm-tztrng_ARCH}"
52 WORKING_DIRECTORY "${arm-tztrng_SOURCE_DIR}/host/src/tztrng_lib/"
53)
54
55# Define target for the library
56add_custom_target(
57 libcc_tztrng
58 DEPENDS ${_arm-tztrng_genlib}
59)
60
61# Add generated library to build target
62target_include_directories(${TGT} PRIVATE "${_arm-tztrng_host_incpath}")
63target_include_directories(${TGT} PRIVATE "${_arm-tztrng_shared_incpath}")
64target_link_libraries(${TGT} PRIVATE ${_arm-tztrng_genlib})
65add_dependencies(${TGT} libcc_tztrng)
66
67# Add adapter to map platform trng interface to tz-trng driver
68target_sources(${TGT} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/tztrng_trng.c")