blob: 34fe13283d2ba5c3c4b4ad5f45c08849070605e6 [file] [log] [blame]
Bhavik Patel68c1f1b2020-07-29 12:28:18 +02001#
2# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
3#
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
19if(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m3")
20 add_compile_definitions(CPU_CORTEX_M3)
21elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m33")
22 add_compile_definitions(CPU_CORTEX_M33)
23elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4")
24 add_compile_definitions(CPU_CORTEX_M4)
25elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m55")
26 add_compile_definitions(CPU_CORTEX_M55)
27elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7")
28 add_compile_definitions(CPU_CORTEX_M7)
29else()
30 message(FATAL_ERROR "Unsupported compiler ${CMAKE_SYSTEM_PROCESSOR}.")
31endif()
32
33if((${TARGET} STREQUAL "mps2") OR (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55"))
34 set("SYSTEM_CORE_CLOCK" "25000000")
35else()
36 set("SYSTEM_CORE_CLOCK" "32000000")
37endif()
38
39
40configure_file(FreeRTOSConfig.h.in FreeRTOSConfig.h)
41set(FREERTOS_CONFIG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR})
42
43# FreeRTOS kernel library
44add_library(freertos_kernel STATIC)
45
Bhavik Patel97906eb2020-12-17 15:32:16 +010046target_compile_options(freertos_kernel PRIVATE
47 $<$<COMPILE_LANGUAGE:CXX>:${TOOLCHAIN_CXX_OPTIONS}> "-Wno-redundant-decls")
48
Bhavik Patel68c1f1b2020-07-29 12:28:18 +020049# Set include directories
50target_include_directories(freertos_kernel PUBLIC
51 ${FREERTOS_KERNEL_PATH}/include
52 ${FREERTOS_CONFIG_INCLUDE_DIR}
53)
54
55# Add kernel source files
56target_sources(freertos_kernel PRIVATE
57 ${FREERTOS_KERNEL_PATH}/tasks.c
58 ${FREERTOS_KERNEL_PATH}/list.c
59 ${FREERTOS_KERNEL_PATH}/queue.c
60)
61
62# Add the heap implementation
63# heap_3 uses the compiler supplied malloc & free for the heap.
64target_sources(freertos_kernel PRIVATE
65 ${FREERTOS_KERNEL_PATH}/portable/MemMang/heap_3.c)
66
67if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m3")
68target_sources(freertos_kernel PRIVATE
69 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3/port.c
70)
71target_include_directories(freertos_kernel PUBLIC
72 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3
73)
74elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m4")
75 target_sources(freertos_kernel PRIVATE
76 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F/port.c
77 )
78 target_include_directories(freertos_kernel PUBLIC
79 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F
80 )
81elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m7")
82 target_sources(freertos_kernel PRIVATE
83 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1/port.c
84 )
85 target_include_directories(freertos_kernel PUBLIC
86 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1
87 )
88elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m33")
89 target_sources(freertos_kernel PRIVATE
90 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
91 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
92 )
93 target_include_directories(freertos_kernel PUBLIC
94 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
95 )
96elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55")
97# TODO: using the same port files as Cortex-M33. Update for Cortex-M55.
98 target_sources(freertos_kernel PRIVATE
99 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
100 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
101 )
102 target_include_directories(freertos_kernel PUBLIC
103 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
104 )
105else()
106 message(FATAL_ERROR "Invalid processor ${CMAKE_SYSTEM_PROCESSOR} when building FreeRTOS kernel")
107endif()