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
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_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 @@
     --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_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})
-
-if ("nodsp" IN_LIST __CPU_FEATURES)
-    string(APPEND __LINK_TARGET ".no_dsp")
-endif()
-
-if ("nofp" IN_LIST __CPU_FEATURES)
-    string(APPEND __LINK_TARGET ".no_fp")
-endif()
-
-if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55")
-    set(__LINK_TARGET 8.1-M.Main.dsp)
-endif()
-
-# Define C/C++ standards
+# Select C/C++ version
 set(CMAKE_C_STANDARD 11)
 set(CMAKE_CXX_STANDARD 14)
 
+# 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 (CMAKE_SYSTEM_PROCESSOR MATCHES "nofp")
+    string(APPEND __LINK_TARGET ".no_fp")
+endif()
+
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55")
+    set(__LINK_TARGET 8.1-M.Main.dsp)
+endif()
+
 # 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>")