aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLedion Daja <ledion.daja@arm.com>2022-06-21 12:06:59 +0200
committerKristofer Jonsson <kristofer.jonsson@arm.com>2022-09-13 09:41:31 +0200
commitba6210baeebc24dbd6cd50b2afeee158f2a5843a (patch)
tree9389a6dab1031c74af5ca19de76ad9107093d531
parentffb8ccdc3a851b7c86a58e449f0651a4413d8fd8 (diff)
downloadethos-u-core-platform-ba6210baeebc24dbd6cd50b2afeee158f2a5843a.tar.gz
Remove CMake workaround for Arm Clang
Previous version of CMake did not allow CMAKE_SYSTEM_PROCESSOR to contain CPU features for Arm Clang toolchain. A workaround was added to manually strip the CPU features. Recent versions of CMake have removed this limitation and instead requires the toolchain to manually add -mcpu=<CPU+features>, which means that the workaround can be removed. Change-Id: Ie7f493a0dd9771eedf23e87db7a371fae4ec9bb9
-rw-r--r--cmake/toolchain/arm-none-eabi-gcc.cmake33
-rw-r--r--cmake/toolchain/armclang.cmake32
2 files changed, 27 insertions, 38 deletions
diff --git a/cmake/toolchain/arm-none-eabi-gcc.cmake b/cmake/toolchain/arm-none-eabi-gcc.cmake
index 492abc5..182643f 100644
--- a/cmake/toolchain/arm-none-eabi-gcc.cmake
+++ b/cmake/toolchain/arm-none-eabi-gcc.cmake
@@ -17,18 +17,13 @@
#
set(TARGET_CPU "cortex-m4" CACHE STRING "Target CPU")
+string(TOLOWER ${TARGET_CPU} CMAKE_SYSTEM_PROCESSOR)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER "arm-none-eabi-gcc")
-set(CMAKE_ASM_COMPILER "arm-none-eabi-gcc")
set(CMAKE_CXX_COMPILER "arm-none-eabi-g++")
-
-# Convert TARGET_CPU=Cortex-M33+nofp+nodsp into
-# - CMAKE_SYSTEM_PROCESSOR=cortex-m33
-# - TARGET_CPU_FEATURES=no-fp;no-dsp
-string(REPLACE "+" ";" TARGET_CPU_FEATURES ${TARGET_CPU})
-list(POP_FRONT TARGET_CPU_FEATURES CMAKE_SYSTEM_PROCESSOR)
-string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR)
+set(CMAKE_ASM_COMPILER "arm-none-eabi-gcc")
+set(CMAKE_LINKER "arm-none-eabi-ld")
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
@@ -40,12 +35,8 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)
-set(GCC_CPU "${TARGET_CPU}")
-if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m85")
- set(GCC_CPU "cortex-m55")
- list(APPEND GCC_CPU ${TARGET_CPU_FEATURES})
- list(JOIN GCC_CPU "+" GCC_CPU)
-endif()
+set(GCC_CPU ${CMAKE_SYSTEM_PROCESSOR})
+string(REPLACE "cortex-m85" "cortex-m55" GCC_CPU ${GCC_CPU})
# Compile options
add_compile_options(
@@ -67,16 +58,16 @@ add_link_options(
--specs=nosys.specs)
# Set floating point unit
-if("${TARGET_CPU}" MATCHES "\\+fp")
+if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "\\+fp")
set(FLOAT hard)
-elseif("${TARGET_CPU}" MATCHES "\\+nofp")
+elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "\\+nofp")
set(FLOAT soft)
-elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m33" OR
- "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55" OR
- "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m85")
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m33" OR
+ CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55" OR
+ CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m85")
set(FLOAT hard)
-elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m4" OR
- "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m7")
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m4" OR
+ CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m7")
set(FLOAT hard)
set(FPU_CONFIG "fpv4-sp-d16")
add_compile_options(-mfpu=${FPU_CONFIG})
diff --git a/cmake/toolchain/armclang.cmake b/cmake/toolchain/armclang.cmake
index aa19ff4..61a8e59 100644
--- a/cmake/toolchain/armclang.cmake
+++ b/cmake/toolchain/armclang.cmake
@@ -17,6 +17,7 @@
#
set(TARGET_CPU "cortex-m4" CACHE STRING "Target CPU")
+string(TOLOWER ${TARGET_CPU} CMAKE_SYSTEM_PROCESSOR)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER "armclang")
@@ -24,35 +25,32 @@ set(CMAKE_CXX_COMPILER "armclang")
set(CMAKE_ASM_COMPILER "armclang")
set(CMAKE_LINKER "armlink")
-# Convert TARGET_CPU=Cortex-M33+nofp+nodsp into
-# - CMAKE_SYSTEM_PROCESSOR=cortex-m33
-# - __CPU_FEATURES=no-fp;no-dsp
-string(REPLACE "+" ";" __CPU_FEATURES ${TARGET_CPU})
-list(POP_FRONT __CPU_FEATURES CMAKE_SYSTEM_PROCESSOR)
-string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR)
+set(CMAKE_EXECUTABLE_SUFFIX ".elf")
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-# Link target
-set(__LINK_TARGET ${CMAKE_SYSTEM_PROCESSOR})
+# Select C/C++ version
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_CXX_STANDARD 14)
-if ("nodsp" IN_LIST __CPU_FEATURES)
+# Link target
+string(REGEX MATCH "^cortex-m([0-9]+)([a-z]*)" __LINK_TARGET ${CMAKE_SYSTEM_PROCESSOR})
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "nodsp")
string(APPEND __LINK_TARGET ".no_dsp")
endif()
-
-if ("nofp" IN_LIST __CPU_FEATURES)
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "nofp")
string(APPEND __LINK_TARGET ".no_fp")
endif()
-if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55")
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55")
set(__LINK_TARGET 8.1-M.Main.dsp)
endif()
-# Define C/C++ standards
-set(CMAKE_C_STANDARD 11)
-set(CMAKE_CXX_STANDARD 14)
-
# Compile options
add_compile_options(
- -mcpu=${TARGET_CPU}
+ -mcpu=${CMAKE_SYSTEM_PROCESSOR}
-mthumb
"$<$<CONFIG:DEBUG>:-gdwarf-3>"
"$<$<COMPILE_LANGUAGE:CXX>:-fno-unwind-tables;-fno-rtti;-fno-exceptions>")