From ba6210baeebc24dbd6cd50b2afeee158f2a5843a Mon Sep 17 00:00:00 2001 From: Ledion Daja Date: Tue, 21 Jun 2022 12:06:59 +0200 Subject: 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=, which means that the workaround can be removed. Change-Id: Ie7f493a0dd9771eedf23e87db7a371fae4ec9bb9 --- cmake/toolchain/arm-none-eabi-gcc.cmake | 33 ++++++++++++--------------------- cmake/toolchain/armclang.cmake | 32 +++++++++++++++----------------- 2 files changed, 27 insertions(+), 38 deletions(-) (limited to 'cmake') 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 "$<$:-gdwarf-3>" "$<$:-fno-unwind-tables;-fno-rtti;-fno-exceptions>") -- cgit v1.2.1