diff options
author | Ledion Daja <ledion.daja@arm.com> | 2022-06-21 12:22:13 +0200 |
---|---|---|
committer | Kristofer Jonsson <kristofer.jonsson@arm.com> | 2022-09-13 09:42:31 +0200 |
commit | 449c8d81f5b0c4d75c632b7849ddd9966cfd71cf (patch) | |
tree | 88011ec0e51e834b8f1492a8fd628bdd139f35f9 | |
parent | 311d6533177769b1eb81ac21442c7563faac21a8 (diff) | |
download | ethos-u-core-software-449c8d81f5b0c4d75c632b7849ddd9966cfd71cf.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: I3e8647c47df27a96cdd103614ecf2540f150ab36
-rw-r--r-- | cmsis.cmake | 13 | ||||
-rw-r--r-- | rtos/CMakeLists.txt | 6 | ||||
-rw-r--r-- | rtos/freertos_config/CMakeLists.txt | 26 |
3 files changed, 23 insertions, 22 deletions
diff --git a/cmsis.cmake b/cmsis.cmake index fd93545..daa8132 100644 --- a/cmsis.cmake +++ b/cmsis.cmake @@ -1,5 +1,5 @@ # -# Copyright (c) 2019-2021 Arm Limited. All rights reserved. +# Copyright (c) 2019-2022 Arm Limited. # # SPDX-License-Identifier: Apache-2.0 # @@ -17,20 +17,19 @@ # # Extract the CPU number from the system processor -string(REGEX MATCH "^cortex-m([0-9]+)$" CPU_NUMBER ${CMAKE_SYSTEM_PROCESSOR}) +string(REGEX REPLACE "^cortex-m([0-9]+[a-z]*)" "\\1" CPU_NUMBER ${CMAKE_SYSTEM_PROCESSOR}) if(NOT CPU_NUMBER) message(FATAL_ERROR "System processor '${CMAKE_SYSTEM_PROCESSOR}' not supported. Should be cortex-m<nr>.") endif() -string(REGEX REPLACE "^cortex-m([0-9]+)$" "\\1" CPU_NUMBER ${CMAKE_SYSTEM_PROCESSOR}) -set(ARM_CPU "ARMCM${CPU_NUMBER}") +string(TOUPPER "ARMCM${CPU_NUMBER}" ARM_CPU) # Set CPU specific features -if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m33") +if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m33") set(ARM_FEATURES "_DSP_FP") -elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m4") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m4") set(ARM_FEATURES "_FP") -elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m7") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m7") set(ARM_FEATURES "_DP") else() set(ARM_FEATURES "") diff --git a/rtos/CMakeLists.txt b/rtos/CMakeLists.txt index 753b307..6c91a83 100644 --- a/rtos/CMakeLists.txt +++ b/rtos/CMakeLists.txt @@ -24,12 +24,14 @@ endif() # Include ThreadX # Only enable cortex-m55 until cortex-m33 is sorted out upstream -if((CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m55") AND +if((CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55") AND (CORE_SOFTWARE_RTOS_LOWER STREQUAL "threadx" OR CORE_SOFTWARE_RTOS_LOWER STREQUAL "all")) #threadx build requires 2 defines: THREADX_ARCH (format: cortex_m4) and THREADX_TOOLCHAIN (ac5/ac6/gnu). #set them according to existing defines CMAKE_SYSTEM_PROCESSOR and CMAKE_CXX_COMPILER_ID: - string(REPLACE "-" "_" THREADX_ARCH ${CMAKE_SYSTEM_PROCESSOR}) + string(REGEX MATCH "^cortex-m([0-9]+[a-z]*)" THREADX_ARCH ${CMAKE_SYSTEM_PROCESSOR}) + string(REPLACE "-" "_" THREADX_ARCH ${THREADX_ARCH}) string(TOLOWER ${CMAKE_CXX_COMPILER_ID} THREADX_TOOLCHAIN) + #if armclang, change the format to "ac6". if(THREADX_TOOLCHAIN STREQUAL "armclang") set(THREADX_TOOLCHAIN "ac6") diff --git a/rtos/freertos_config/CMakeLists.txt b/rtos/freertos_config/CMakeLists.txt index 318390d..554a492 100644 --- a/rtos/freertos_config/CMakeLists.txt +++ b/rtos/freertos_config/CMakeLists.txt @@ -16,23 +16,23 @@ # limitations under the License. # -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m3") +if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m3") add_compile_definitions(CPU_CORTEX_M3) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m33") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m33") add_compile_definitions(CPU_CORTEX_M33) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m4") add_compile_definitions(CPU_CORTEX_M4) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m55") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55") add_compile_definitions(CPU_CORTEX_M55) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m7") add_compile_definitions(CPU_CORTEX_M7) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m85") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m85") add_compile_definitions(CPU_CORTEX_M85) else() message(FATAL_ERROR "Unsupported compiler ${CMAKE_SYSTEM_PROCESSOR}.") endif() -if((${TARGET} STREQUAL "mps2") OR (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55")) +if((${TARGET} STREQUAL "mps2") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "cortex-m55")) set("SYSTEM_CORE_CLOCK" "25000000") else() set("SYSTEM_CORE_CLOCK" "32000000") @@ -66,28 +66,28 @@ target_sources(freertos_kernel PRIVATE target_sources(freertos_kernel PRIVATE ${FREERTOS_KERNEL_PATH}/portable/MemMang/heap_3.c) -if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m3") +if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "cortex-m3") target_sources(freertos_kernel PRIVATE ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3/port.c ) target_include_directories(freertos_kernel PUBLIC ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3 ) -elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m4") +elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "cortex-m4") target_sources(freertos_kernel PRIVATE ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F/port.c ) target_include_directories(freertos_kernel PUBLIC ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F ) -elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m7") +elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "cortex-m7") target_sources(freertos_kernel PRIVATE ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1/port.c ) target_include_directories(freertos_kernel PUBLIC ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1 ) -elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m33") +elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "cortex-m33") target_sources(freertos_kernel PRIVATE ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c @@ -95,7 +95,7 @@ elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m33") target_include_directories(freertos_kernel PUBLIC ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure ) -elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55") +elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "cortex-m55") # TODO: using the same port files as Cortex-M33. Update for Cortex-M55. target_sources(freertos_kernel PRIVATE ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c @@ -104,7 +104,7 @@ elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55") target_include_directories(freertos_kernel PUBLIC ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure ) -elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m85") +elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "cortex-m85") # TODO: using the same port files as Cortex-M33. Update for Cortex-M85. target_sources(freertos_kernel PRIVATE ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c |