Build: Generalize build steps for various toolchains
Various toolchains have different behaviours and requirements in CMake
implementation.
Generalize several steps in build sequence in NS build, to conceal
differences between various toolchains.
- Accept TFM_TOOLCHAIN_FILE from command line as the existing build
system does. TFM_TOOLCHAIN_FILE conceals different setup steps in
toolchains.
- Call tfm_toolchain_reload_compiler() after project() to support
Armclang to setup compiler flags after project().
- Code of some build steps is moved from TF-M NS build example to
tests build. NS target names are hard-coded in those steps.
Remove those code from TF-M to avoid coupling NS and S again.
Signed-off-by: David Hu <david.hu@arm.com>
Change-Id: I1a2964ffed83e45f3d0aafce7ac4f4e9b553f3a6
diff --git a/tests_psa_arch/CMakeLists.txt b/tests_psa_arch/CMakeLists.txt
index ee80fb4..28f429b 100644
--- a/tests_psa_arch/CMakeLists.txt
+++ b/tests_psa_arch/CMakeLists.txt
@@ -31,14 +31,15 @@
#--- NSPE side project ---------------------------------------------------------
-if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
- set(CROSS_COMPILE arm-none-eabi)
- set(CMAKE_TOOLCHAIN_FILE ${CONFIG_SPE_PATH}/cmake/toolchain_ns_GNUARM.cmake)
+if (NOT DEFINED TFM_TOOLCHAIN_FILE)
+ set(TFM_TOOLCHAIN_FILE ${CONFIG_SPE_PATH}/cmake/toolchain_ns_GNUARM.cmake)
endif()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../cmake)
+include(${TFM_TOOLCHAIN_FILE})
project("TF-M PSA Arch tests" LANGUAGES C)
+tfm_toolchain_reload_compiler()
add_executable(tfm_ns)
@@ -83,3 +84,5 @@
PRIVATE
$<$<C_COMPILER_ID:GNU>:-Wl,-Map=${CMAKE_BINARY_DIR}/bin/tfm_ns.map>
)
+
+add_convert_to_bin_target(tfm_ns)