1 project('cmsis-freertos', 'c',
5 # Get dependencies needed for internal FreeRTOS build
6 cmsis_subproject = subproject('cmsis')
7 cmsis_core_dep = cmsis_subproject.get_variable('cmsis_core_dep')
8 cmsis_rtos_dep = cmsis_subproject.get_variable('cmsis_rtos_dep')
9 os_tick_dep = cmsis_subproject.get_variable('os_tick_dep')
10 cmsis_dfp_dep = subproject('cmsis-dfp-stm32f4').get_variable('cmsis_dfp_stm32f4_dep')
12 # Build internal FreeRTOS kernel from Source/ directory
15 # FreeRTOS-RTOS2 wrapper sources (implements CMSIS-RTOS2 API using FreeRTOS)
16 freertos_wrapper_src = files(
17 'CMSIS'/'RTOS2'/'FreeRTOS'/'Source'/'cmsis_os2.c',
18 'CMSIS'/'RTOS2'/'FreeRTOS'/'Source'/'freertos_evr.c')
20 # FreeRTOS-specific RTOS2 implementation headers
21 freertos_wrapper_inc = include_directories(
22 'CMSIS'/'RTOS2'/'FreeRTOS'/'Include')
24 # Build CMSIS-FreeRTOS library
25 # Combines: FreeRTOS kernel + CMSIS-RTOS2 wrapper + OS Tick implementation
26 # - cmsis_rtos_dep: Standard CMSIS-RTOS2 API headers (cmsis_os2.h, os_tick.h)
27 # - freertos_wrapper_inc: FreeRTOS-specific headers (freertos_os2.h, freertos_evr.h)
28 # - os_tick_dep: OS Tick source compiled with device-specific DFP context
29 cmsis_freertos_lib = library(
32 include_directories: [freertos_wrapper_inc, include_directories('.')], # '.' for RTE_Components.h
33 dependencies: [freertos_internal_dep, cmsis_core_dep, cmsis_rtos_dep, cmsis_dfp_dep, os_tick_dep])
36 cmsis_freertos_dep = declare_dependency(
37 include_directories: freertos_wrapper_inc,
38 link_with: cmsis_freertos_lib,
39 dependencies: freertos_internal_dep)