blob: fd93545f3b0363dd7be3433da8fc9824d2792f50 [file] [log] [blame]
Kristofer Jonsson18239302020-04-17 08:45:38 +02001#
Kristofer Jonsson1efcc3f2021-02-16 17:40:25 +01002# Copyright (c) 2019-2021 Arm Limited. All rights reserved.
Kristofer Jonsson18239302020-04-17 08:45:38 +02003#
4# SPDX-License-Identifier: Apache-2.0
5#
6# Licensed under the Apache License, Version 2.0 (the License); you may
7# not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10# www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an AS IS BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18
19# Extract the CPU number from the system processor
20string(REGEX MATCH "^cortex-m([0-9]+)$" CPU_NUMBER ${CMAKE_SYSTEM_PROCESSOR})
21if(NOT CPU_NUMBER)
22 message(FATAL_ERROR "System processor '${CMAKE_SYSTEM_PROCESSOR}' not supported. Should be cortex-m<nr>.")
23endif()
24string(REGEX REPLACE "^cortex-m([0-9]+)$" "\\1" CPU_NUMBER ${CMAKE_SYSTEM_PROCESSOR})
25
26set(ARM_CPU "ARMCM${CPU_NUMBER}")
27
Bhavik Patel50aa51d2020-07-27 17:23:31 +020028# Set CPU specific features
29if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m33")
30 set(ARM_FEATURES "_DSP_FP")
31elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m4")
32 set(ARM_FEATURES "_FP")
33elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m7")
34 set(ARM_FEATURES "_DP")
35else()
36 set(ARM_FEATURES "")
37endif()
38
39# CMSIS core
Kristofer Jonsson18239302020-04-17 08:45:38 +020040add_library(cmsis_core INTERFACE)
41target_include_directories(cmsis_core INTERFACE ${CMSIS_PATH}/CMSIS/Core/Include)
42
Bhavik Patel50aa51d2020-07-27 17:23:31 +020043# CMSIS device
44add_library(cmsis_device INTERFACE)
45target_include_directories(cmsis_device INTERFACE ${CMSIS_PATH}/Device/ARM/${ARM_CPU}/Include)
Per Åstrand83e49962021-01-28 11:13:12 +010046
Kristofer Jonsson1efcc3f2021-02-16 17:40:25 +010047target_compile_options(cmsis_device INTERFACE
48 "$<$<COMPILE_LANGUAGE:C>:-include${ARM_CPU}${ARM_FEATURES}.h>"
49 "$<$<COMPILE_LANGUAGE:CXX>:-include${ARM_CPU}${ARM_FEATURES}.h>")
Kristofer Jonsson7cfa5702020-12-16 09:17:51 +010050target_link_libraries(cmsis_device INTERFACE cmsis_core)
Bhavik Patel50aa51d2020-07-27 17:23:31 +020051
52# CMSIS startup
Per Åstrand83e49962021-01-28 11:13:12 +010053add_library(cmsis_startup INTERFACE)
54target_sources(cmsis_startup INTERFACE
55 ${CMSIS_PATH}/Device/ARM/${ARM_CPU}/Source/startup_${ARM_CPU}.c)
Per Åstrand19a22ae2020-11-27 19:47:58 +010056
Per Åstrand83e49962021-01-28 11:13:12 +010057set_source_files_properties(${CMSIS_PATH}/Device/ARM/${ARM_CPU}/Source/startup_${ARM_CPU}.c
58 PROPERTIES COMPILE_FLAGS -Wno-redundant-decls)
Per Åstrand19a22ae2020-11-27 19:47:58 +010059
Per Åstrand83e49962021-01-28 11:13:12 +010060target_compile_definitions(cmsis_startup INTERFACE ${ARM_CPU}${ARM_FEATURES})
61target_link_libraries(cmsis_startup INTERFACE cmsis_device)
Bhavik Patel50aa51d2020-07-27 17:23:31 +020062
Per Åstrand83e49962021-01-28 11:13:12 +010063# CMSIS system
64add_library(cmsis_system INTERFACE)
65target_sources(cmsis_system INTERFACE
66 ${CMSIS_PATH}/Device/ARM/${ARM_CPU}/Source/system_${ARM_CPU}.c)
67target_compile_definitions(cmsis_system INTERFACE ${ARM_CPU}${ARM_FEATURES})
68target_link_libraries(cmsis_system INTERFACE cmsis_startup)