toolchain: Remove toolchain reset magic
Removed compiler/linker reset magic for IAR and Armclang.
It is not necessary in the split build.
Signed-off-by: Dávid Házi <david.hazi@arm.com>
Change-Id: I2c047fbd167819ab7c1798ac25ded66b92824ec7
diff --git a/toolchain_IARARM.cmake b/toolchain_IARARM.cmake
index bcff3ef..83156fe 100644
--- a/toolchain_IARARM.cmake
+++ b/toolchain_IARARM.cmake
@@ -37,165 +37,137 @@
# CMAKE_C_COMPILER_VERSION is not guaranteed to be defined.
EXECUTE_PROCESS( COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE IAR_VERSION )
-string(REGEX MATCH "[v,V]([0-9]+\.[0-9]+\.[0-9]+)*" IAR_VERSION "${IAR_VERSION}")
+string(REGEX MATCH "[v,V]([0-9]+\.[0-9]+\.[0-9]+)" IAR_VERSION "${IAR_VERSION}")
set(IAR_VERSION ${CMAKE_MATCH_1})
-macro(tfm_toolchain_reset_compiler_flags)
- set_property(DIRECTORY PROPERTY COMPILE_OPTIONS "")
+if(${TFM_SYSTEM_PROCESSOR} STREQUAL "cortex-m0plus")
+ set(CMAKE_SYSTEM_PROCESSOR Cortex-M0+)
+else()
+ set(CMAKE_SYSTEM_PROCESSOR ${TFM_SYSTEM_PROCESSOR})
+endif()
- add_compile_options(
- $<$<COMPILE_LANGUAGE:C,CXX>:-e>
- $<$<COMPILE_LANGUAGE:C,CXX>:--dlib_config=full>
- $<$<COMPILE_LANGUAGE:C,CXX>:--silent>
- $<$<COMPILE_LANGUAGE:C,CXX>:-DNO_TYPEOF>
- $<$<COMPILE_LANGUAGE:C,CXX>:-D_NO_DEFINITIONS_IN_HEADER_FILES>
- $<$<COMPILE_LANGUAGE:C,CXX>:--diag_suppress=Pe546,Pe940,Pa082,Pa084>
- $<$<COMPILE_LANGUAGE:C,CXX>:--no_path_in_file_macros>
- $<$<AND:$<COMPILE_LANGUAGE:C,CXX,ASM>,$<BOOL:${TFM_DEBUG_SYMBOLS}>,$<CONFIG:Release,MinSizeRel>>:-r>
+if (DEFINED TFM_SYSTEM_DSP)
+ if(NOT TFM_SYSTEM_DSP)
+ string(APPEND CMAKE_SYSTEM_PROCESSOR ".no_dsp")
+ endif()
+endif()
+
+add_compile_options(
+ $<$<COMPILE_LANGUAGE:C,CXX>:-e>
+ $<$<COMPILE_LANGUAGE:C,CXX>:--dlib_config=full>
+ $<$<COMPILE_LANGUAGE:C,CXX>:--silent>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-DNO_TYPEOF>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-D_NO_DEFINITIONS_IN_HEADER_FILES>
+ $<$<COMPILE_LANGUAGE:C,CXX>:--diag_suppress=Pe546,Pe940,Pa082,Pa084>
+ $<$<COMPILE_LANGUAGE:C,CXX>:--no_path_in_file_macros>
+ $<$<AND:$<COMPILE_LANGUAGE:C,CXX,ASM>,$<BOOL:${TFM_DEBUG_SYMBOLS}>,$<CONFIG:Release,MinSizeRel>>:-r>
+)
+
+add_link_options(
+ --silent
+ --semihosting
+ --redirect __write=__write_buffered
+ --diag_suppress=lp005,Lp023
+)
+
+set(CMAKE_C_FLAGS_INIT "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
+set(CMAKE_ASM_FLAGS_INIT "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
+set(CMAKE_C_LINK_FLAGS "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
+set(CMAKE_ASM_LINK_FLAGS "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
+
+set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_INIT})
+set(CMAKE_ASM_FLAGS ${CMAKE_ASM_FLAGS_INIT})
+
+# Can't use the highest optimization with IAR on v8.1m arch because of the
+# compilation bug in mbedcrypto
+if ((IAR_VERSION VERSION_GREATER_EQUAL "9.20") AND
+ (IAR_VERSION VERSION_LESS_EQUAL "9.32.1") AND
+ ((TFM_SYSTEM_PROCESSOR STREQUAL "cortex-m85") OR
+ (TFM_SYSTEM_PROCESSOR STREQUAL "cortex-m55")) AND
+ (NOT (CMAKE_BUILD_TYPE STREQUAL "Debug")))
+ message(FATAL_ERROR "Only debug build available for M55 and M85"
+ " cores with IAR version between 9.20 and 9.32.1")
+endif()
+
+set(BL2_COMPILER_CP_FLAG
+ $<$<COMPILE_LANGUAGE:C>:--fpu=none>
+ $<$<COMPILE_LANGUAGE:ASM>:--fpu=none>
+)
+# As BL2 does not use hardware FPU, specify '--fpu=none' explicitly to use software
+# library functions for BL2 to override any implicit FPU option, such as '--cpu' option.
+# Because the implicit hardware FPU option enforces BL2 to initialize FPU but hardware FPU
+# is not actually enabled in BL2, it will cause BL2 runtime fault.
+set(BL2_LINKER_CP_OPTION --fpu=none)
+
+set(BL1_COMPILER_CP_FLAG
+ $<$<COMPILE_LANGUAGE:C>:--fpu=none>
+ $<$<COMPILE_LANGUAGE:ASM>:--fpu=none>
+)
+set(BL1_LINKER_CP_OPTION --fpu=none)
+
+if (CONFIG_TFM_FLOAT_ABI STREQUAL "hard")
+ set(COMPILER_CP_FLAG
+ $<$<COMPILE_LANGUAGE:C>:-mfloat-abi=hard>
)
-endmacro()
-macro(tfm_toolchain_reset_linker_flags)
- set_property(DIRECTORY PROPERTY LINK_OPTIONS "")
-
- add_link_options(
- --silent
- --semihosting
- --redirect __write=__write_buffered
- --diag_suppress=lp005,Lp023
- )
-endmacro()
-
-macro(tfm_toolchain_set_processor_arch)
- if(${TFM_SYSTEM_PROCESSOR} STREQUAL "cortex-m0plus")
- set(CMAKE_SYSTEM_PROCESSOR Cortex-M0+)
- else()
- set(CMAKE_SYSTEM_PROCESSOR ${TFM_SYSTEM_PROCESSOR})
+ if (CONFIG_TFM_ENABLE_FP)
+ set(COMPILER_CP_FLAG
+ $<$<COMPILE_LANGUAGE:C>:--fpu=${CONFIG_TFM_FP_ARCH_ASM}>
+ $<$<COMPILE_LANGUAGE:ASM>:--fpu=${CONFIG_TFM_FP_ARCH_ASM}>
+ )
+ # armasm and armlink have the same option "--fpu" and are both used to
+ # specify the target FPU architecture. So the supported FPU architecture
+ # names can be shared by armasm and armlink.
+ set(LINKER_CP_OPTION --fpu=${CONFIG_TFM_FP_ARCH_ASM})
endif()
-
- if (DEFINED TFM_SYSTEM_DSP)
- if(NOT TFM_SYSTEM_DSP)
- string(APPEND CMAKE_SYSTEM_PROCESSOR ".no_dsp")
- endif()
- endif()
-endmacro()
-
-macro(tfm_toolchain_reload_compiler)
- tfm_toolchain_set_processor_arch()
- tfm_toolchain_reset_compiler_flags()
- tfm_toolchain_reset_linker_flags()
-
- unset(CMAKE_C_FLAGS_INIT)
- unset(CMAKE_C_LINK_FLAGS)
- unset(CMAKE_ASM_FLAGS_INIT)
- unset(CMAKE_ASM_LINK_FLAGS)
-
- set(CMAKE_C_FLAGS_INIT "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
- set(CMAKE_ASM_FLAGS_INIT "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
- set(CMAKE_C_LINK_FLAGS "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
- set(CMAKE_ASM_LINK_FLAGS "--cpu ${CMAKE_SYSTEM_PROCESSOR}")
-
- set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_INIT})
- set(CMAKE_ASM_FLAGS ${CMAKE_ASM_FLAGS_INIT})
-
- # Can't use the highest optimization with IAR on v8.1m arch because of the
- # compilation bug in mbedcrypto
- if ((IAR_VERSION VERSION_GREATER_EQUAL "9.20") AND
- (IAR_VERSION VERSION_LESS_EQUAL "9.32.1") AND
- ((TFM_SYSTEM_PROCESSOR STREQUAL "cortex-m85") OR
- (TFM_SYSTEM_PROCESSOR STREQUAL "cortex-m55")) AND
- (NOT (CMAKE_BUILD_TYPE STREQUAL "Debug")))
- message(FATAL_ERROR "Only debug build available for M55 and M85"
- " cores with IAR version between 9.20 and 9.32.1")
- endif()
-
- set(BL2_COMPILER_CP_FLAG
+else()
+ set(COMPILER_CP_FLAG
$<$<COMPILE_LANGUAGE:C>:--fpu=none>
$<$<COMPILE_LANGUAGE:ASM>:--fpu=none>
)
- # As BL2 does not use hardware FPU, specify '--fpu=none' explicitly to use software
- # library functions for BL2 to override any implicit FPU option, such as '--cpu' option.
- # Because the implicit hardware FPU option enforces BL2 to initialize FPU but hardware FPU
- # is not actually enabled in BL2, it will cause BL2 runtime fault.
- set(BL2_LINKER_CP_OPTION --fpu=none)
+ set(LINKER_CP_OPTION --fpu=none)
+endif()
- set(BL1_COMPILER_CP_FLAG
- $<$<COMPILE_LANGUAGE:C>:--fpu=none>
- $<$<COMPILE_LANGUAGE:ASM>:--fpu=none>
- )
- set(BL1_LINKER_CP_OPTION --fpu=none)
+add_compile_definitions(
+ $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv6-m>:__ARM_ARCH_6M__=1>
+ $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv7-m>:__ARM_ARCH_7M__=1>
+ $<$<AND:$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv7-m>,$<BOOL:__ARM_FEATURE_DSP>>:__ARM_ARCH_7EM__=1>
+ $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv8-m.base>:__ARM_ARCH_8M_BASE__=1>
+ $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv8-m.main>:__ARM_ARCH_8M_MAIN__=1>
+ $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv8.1-m.main>:__ARM_ARCH_8_1M_MAIN__=1>
+)
- if (CONFIG_TFM_FLOAT_ABI STREQUAL "hard")
- set(COMPILER_CP_FLAG
- $<$<COMPILE_LANGUAGE:C>:-mfloat-abi=hard>
- )
+#
+# Pointer Authentication Code and Branch Target Identification (PACBTI) Options
+#
+if(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_STANDARD)
+ set(BRANCH_PROTECTION_OPTIONS "bti+pac-ret")
+elseif(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_PACRET)
+ set(BRANCH_PROTECTION_OPTIONS "pac-ret")
+elseif(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_PACRET_LEAF)
+ message(FATAL_ERROR "${CONFIG_TFM_BRANCH_PROTECTION_FEAT} option is not supported on IAR Compiler.")
+elseif(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_BTI)
+ set(BRANCH_PROTECTION_OPTIONS "bti")
+endif()
- if (CONFIG_TFM_ENABLE_FP)
- set(COMPILER_CP_FLAG
- $<$<COMPILE_LANGUAGE:C>:--fpu=${CONFIG_TFM_FP_ARCH_ASM}>
- $<$<COMPILE_LANGUAGE:ASM>:--fpu=${CONFIG_TFM_FP_ARCH_ASM}>
- )
- # armasm and armlink have the same option "--fpu" and are both used to
- # specify the target FPU architecture. So the supported FPU architecture
- # names can be shared by armasm and armlink.
- set(LINKER_CP_OPTION --fpu=${CONFIG_TFM_FP_ARCH_ASM})
+if(NOT ${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_DISABLED AND
+ NOT ${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_NONE)
+ if (IAR_VERSION VERSION_LESS "9.40.1")
+ message(FATAL_ERROR "Only IAR version 9.40.1 and above supports PAC+BTI.")
endif()
- else()
- set(COMPILER_CP_FLAG
- $<$<COMPILE_LANGUAGE:C>:--fpu=none>
- $<$<COMPILE_LANGUAGE:ASM>:--fpu=none>
- )
- set(LINKER_CP_OPTION --fpu=none)
- endif()
- add_compile_definitions(
- $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv6-m>:__ARM_ARCH_6M__=1>
- $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv7-m>:__ARM_ARCH_7M__=1>
- $<$<AND:$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv7-m>,$<BOOL:__ARM_FEATURE_DSP>>:__ARM_ARCH_7EM__=1>
- $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv8-m.base>:__ARM_ARCH_8M_BASE__=1>
- $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv8-m.main>:__ARM_ARCH_8M_MAIN__=1>
- $<$<STREQUAL:${TFM_SYSTEM_ARCHITECTURE},armv8.1-m.main>:__ARM_ARCH_8_1M_MAIN__=1>
- )
+ if((TFM_SYSTEM_PROCESSOR MATCHES "cortex-m85") AND
+ (TFM_SYSTEM_ARCHITECTURE STREQUAL "armv8.1-m.main"))
+ message(NOTICE "BRANCH_PROTECTION enabled with: ${BRANCH_PROTECTION_OPTIONS}")
- #
- # Pointer Authentication Code and Branch Target Identification (PACBTI) Options
- #
- if(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_STANDARD)
- set(BRANCH_PROTECTION_OPTIONS "bti+pac-ret")
- elseif(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_PACRET)
- set(BRANCH_PROTECTION_OPTIONS "pac-ret")
- elseif(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_PACRET_LEAF)
- message(FATAL_ERROR "${CONFIG_TFM_BRANCH_PROTECTION_FEAT} option is not supported on IAR Compiler.")
- elseif(${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_BTI)
- set(BRANCH_PROTECTION_OPTIONS "bti")
- endif()
+ string(APPEND CMAKE_C_FLAGS " --branch_protection=${BRANCH_PROTECTION_OPTIONS}")
+ string(APPEND CMAKE_CXX_FLAGS " --branch_protection=${BRANCH_PROTECTION_OPTIONS}")
- if(NOT ${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_DISABLED AND
- NOT ${CONFIG_TFM_BRANCH_PROTECTION_FEAT} STREQUAL BRANCH_PROTECTION_NONE)
- if (IAR_VERSION VERSION_LESS "9.40.1")
- message(FATAL_ERROR "Only IAR version 9.40.1 and above supports PAC+BTI.")
- endif()
-
- if((TFM_SYSTEM_PROCESSOR MATCHES "cortex-m85") AND
- (TFM_SYSTEM_ARCHITECTURE STREQUAL "armv8.1-m.main"))
- message(NOTICE "BRANCH_PROTECTION enabled with: ${BRANCH_PROTECTION_OPTIONS}")
-
- string(APPEND CMAKE_C_FLAGS " --branch_protection=${BRANCH_PROTECTION_OPTIONS}")
- string(APPEND CMAKE_CXX_FLAGS " --branch_protection=${BRANCH_PROTECTION_OPTIONS}")
-
- add_link_options(--library_security=pacbti-m)
- else()
- message(FATAL_ERROR "Your architecture does not support BRANCH_PROTECTION")
- endif()
- endif()
-endmacro()
-
-# Configure environment for the compiler setup run by cmake at the first
-# `project` call in <tfm_root>/CMakeLists.txt. After this mandatory setup is
-# done, all further compiler setup is done via tfm_toolchain_reload_compiler()
-tfm_toolchain_set_processor_arch()
-tfm_toolchain_reset_compiler_flags()
-tfm_toolchain_reset_linker_flags()
+ add_link_options(--library_security=pacbti-m)
+ else()
+ message(FATAL_ERROR "Your architecture does not support BRANCH_PROTECTION")
+ endif()
+endif()
# Behaviour for handling scatter files is so wildly divergent between compilers
# that this macro is required.