1#
2# Arm SCP/MCP Software
3# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
4#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8# cmake-lint: disable=C0301
9
10cmake_minimum_required(VERSION 3.18.3)
11
12project(
13    CMSIS
14    VERSION 5.2.0
15    DESCRIPTION "Cortex Microcontroller Software Interface Standard (CMSIS)"
16    HOMEPAGE_URL "https://developer.arm.com/tools-and-software/embedded/cmsis"
17    LANGUAGES C ASM)
18
19#
20# Define CMSIS-Core (M).
21#
22
23add_library(core-m INTERFACE)
24
25target_include_directories(
26    core-m INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/Core/Include")
27
28add_library(cmsis::core-m ALIAS core-m)
29
30#
31# Define CMSIS-RTOS2.
32#
33
34add_library(rtos2 INTERFACE)
35
36target_include_directories(
37    rtos2 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/Include")
38
39add_library(cmsis::rtos2 ALIAS rtos2)
40
41#
42# Define and build CMSIS-RTOS2 RTX.
43#
44
45add_library(rtos2-rtx INTERFACE)
46
47target_include_directories(
48    rtos2-rtx
49    INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include"
50              "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Include"
51              "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source")
52
53# cmake-lint: disable=E1122
54target_sources(
55    rtos2-rtx
56    INTERFACE
57        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_delay.c"
58        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_evflags.c"
59        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_evr.c"
60        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_kernel.c"
61        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_memory.c"
62        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_mempool.c"
63        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_msgqueue.c"
64        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_mutex.c"
65        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_semaphore.c"
66        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_system.c"
67        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_thread.c"
68        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/rtx_timer.c"
69        "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/Source/os_systick.c")
70
71target_compile_definitions(rtos2-rtx INTERFACE RTX_NO_MULTITHREAD_CLIB)
72target_compile_options(rtos2-rtx INTERFACE -Wno-array-bounds)
73
74if(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m[37]")
75    target_sources(
76        rtos2-rtx
77        INTERFACE
78            "${CMAKE_CURRENT_SOURCE_DIR}/git/CMSIS/RTOS2/RTX/Source/GCC/irq_cm3.S"
79    )
80endif()
81
82target_link_libraries(rtos2-rtx INTERFACE core-m rtos2)
83
84add_library(cmsis::rtos2-rtx ALIAS rtos2-rtx)
85