From 123a86c423f7f9c0c7a003ab52ec76aef6c1defe Mon Sep 17 00:00:00 2001 From: Igor Kotrasinski Date: Fri, 26 Oct 2018 12:08:40 +0200 Subject: [PATCH] Use conf path instead of manifest xml path The old way required us to always provide *some* manifest file. Now we can just provide a base directory for any backend-defined configuration directories and extract the manifest xml by convention. Change-Id: I27a39a3df95a5a73d9830b325413dd5f68bab657 Signed-off-by: Igor Kotrasinski --- README.md | 13 ++++++++++--- cmake/UnifiedTADevkit.cmake.optee.in | 4 ++-- cmake/UnifiedTADevkit.cmake.simulator.in | 6 +++--- cmake/UnifiedTADevkit.cmake.template.in | 4 ++-- doc/CMakeLists.txt | 2 +- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 99ba812..bacfca0 100644 --- a/README.md +++ b/README.md @@ -42,22 +42,23 @@ E.g.: OpTEE implementation of **UnifiedTADevkit.cmake.template.in** is named **UnifiedTADevkit.cmake.optee.in**. #### Implementation of UnifiedTADevkit.cmake.template.in -Implementation of **UnifiedTADevkit.cmake.template.in** should contains all defines/includes/targets needed by TEEOS devkit. Includes UnifiedTADevkitCommon.cmake. Implementing this file is mandatory. You should also implement: +Implementation of **UnifiedTADevkit.cmake.template.in** should contain all defines/includes/targets needed by TEEOS devkit. Includes UnifiedTADevkitCommon.cmake. Implementing this file is mandatory. You should also implement: ```cmake # MACRO GENERATE_TA_IMAGE unifies compiling dependencies and signing/encrypting # Parameters: # TargetName [in] - name of target that represent TA # TAElfTargetName [in] - TA binary target name before signing -# TAManifestFile [in] - manifest file name with a path +# TAConfDir [in] - backend-specific configuration directory # TAImageName [in] - final TA binary name -MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAManifestFile TAImageName) +MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAConfDir TAImageName) # Fill this function with Your implementation ENDMACRO() ``` TAElfTargetName - should be a target from ADD_EXECUTABLE or ADD_LIBRARY +TAConfDir - This is a base directory for backend-specific configurations. Your backend can require specific files to be put in a subdirectory matching you backend's name, in order to use them for building the TA. #### UnifiedTADevkitCommon.cmake Defines common variables for all backends. @@ -133,3 +134,9 @@ TARGET_LINK_LIBRARIES(${TARGET_YOUR_TA} ${YOUR_TA_DEPS_STATIC_LIBRARIES} ) ``` + +Different TEE backends use different methods of configuration - for example, OpTEE requires a configuration header, while the simulator requires an xml manifest. For that purpose, you should prepare a directory with backend-specific configurations. The backends use following files: +- OpTEE - (base directory)/optee/include/user_ta_header_defines.h +- Simulator - (base directory)/simulator/manifest.xml + +Once configuration is provided, you can use the GENERATE_TA_IMAGE macro to creae the TA image. diff --git a/cmake/UnifiedTADevkit.cmake.optee.in b/cmake/UnifiedTADevkit.cmake.optee.in index abe59b8..4ddc3f9 100644 --- a/cmake/UnifiedTADevkit.cmake.optee.in +++ b/cmake/UnifiedTADevkit.cmake.optee.in @@ -82,10 +82,10 @@ ADD_LIBRARY(${DEVKIT_TA_TARGET} STATIC # Parameters: # TargetName [in] - name of target that represent TA # TAElfTargetName [in] - TA binary target name before signing -# TAManifestFile [in] - manifest file name with a path (tef-simulator) +# TAConfDir [in] - backend-specific configuration directory # TAImageName [in] - final TA binary name -MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAManifestFile TAImageName) +MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAConfDir TAImageName) # Dependency to compiled linker script ADD_DEPENDENCIES(${TAElfTargetName} ta-core-ld ${DEVKIT_TA_TARGET}) diff --git a/cmake/UnifiedTADevkit.cmake.simulator.in b/cmake/UnifiedTADevkit.cmake.simulator.in index 317de49..856fb8d 100644 --- a/cmake/UnifiedTADevkit.cmake.simulator.in +++ b/cmake/UnifiedTADevkit.cmake.simulator.in @@ -32,14 +32,14 @@ INCLUDE(TEFSimulatorDevkit) # Parameters: # TargetName [in] - name of target that represent TA # TAElfTargetName [in] - TA binary target name before signing -# TAManifestFile [in] - manifest file name with a path (tef-simulator) +# TAConfDir [in] - backend-specific configuration directory # TAImageName [in] - final TA binary name -MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAManifestFile TAImageName) +MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAConfDir TAImageName) # TEEStub is built in C++, so we must force linking using C++ linker SET_TARGET_PROPERTIES(${TAElfTargetName} PROPERTIES LINKER_LANGUAGE "CXX" ) - TEF_GENERATE_TA_IMAGE(${TargetName} ${TAElfTargetName} ${TAManifestFile} ${TAImageName}) + TEF_GENERATE_TA_IMAGE(${TargetName} ${TAElfTargetName} ${TAConfDir}/simulator/manifest.xml ${TAImageName}) ENDMACRO() diff --git a/cmake/UnifiedTADevkit.cmake.template.in b/cmake/UnifiedTADevkit.cmake.template.in index 9c55813..a05401d 100644 --- a/cmake/UnifiedTADevkit.cmake.template.in +++ b/cmake/UnifiedTADevkit.cmake.template.in @@ -23,9 +23,9 @@ ADD_DEFINITIONS("-DTEF_BUILD_@TEF_TEE_UPPERCASE@") # Parameters: # TargetName [in] - name of target that represent TA # TAElfTargetName [in] - TA binary target name before signing -# TAManifestFile [in] - manifest file name with a path +# TAConfDir [in] - backend-specific configuration directory # TAImageName [in] - final TA binary name -MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAManifestFile TAImageName) +MACRO(GENERATE_TA_IMAGE TargetName TAElfTargetName TAConfDir TAImageName) # Fill this function with Your implementation ENDMACRO() diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index f6939f4..7bf3869 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -46,6 +46,6 @@ TARGET_LINK_LIBRARIES(${TARGET_TA} ${TA_DEPS_STATIC_LIBRARIES} ) -GENERATE_TA_IMAGE(SIGNED_TA ${TARGET_TA} ${TA_PATH}/example.xml ${TA_NAME}) +GENERATE_TA_IMAGE(SIGNED_TA ${TARGET_TA} ${TA_PATH} ${TA_NAME}) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TA_NAME} DESTINATION ${TASTORE_DIR}) INSTALL(FILES ${TA_HEADERS} DESTINATION ${INCLUDE_DIR}) -- 2.34.1