project('cmsis-freertos', 'c', version: '11.2.0', license: 'MIT') # Get dependencies needed for internal FreeRTOS build cmsis_subproject = subproject('cmsis') cmsis_core_dep = cmsis_subproject.get_variable('cmsis_core_dep') cmsis_rtos_dep = cmsis_subproject.get_variable('cmsis_rtos_dep') os_tick_dep = cmsis_subproject.get_variable('os_tick_dep') cmsis_dfp_dep = subproject('cmsis-dfp-stm32f4').get_variable('cmsis_dfp_stm32f4_dep') # Build internal FreeRTOS kernel from Source/ directory subdir('Source') # FreeRTOS-RTOS2 wrapper sources (implements CMSIS-RTOS2 API using FreeRTOS) freertos_wrapper_src = files( 'CMSIS'/'RTOS2'/'FreeRTOS'/'Source'/'cmsis_os2.c', 'CMSIS'/'RTOS2'/'FreeRTOS'/'Source'/'freertos_evr.c') # FreeRTOS-specific RTOS2 implementation headers freertos_wrapper_inc = include_directories( 'CMSIS'/'RTOS2'/'FreeRTOS'/'Include') # Build CMSIS-FreeRTOS library # Combines: FreeRTOS kernel + CMSIS-RTOS2 wrapper + OS Tick implementation # - cmsis_rtos_dep: Standard CMSIS-RTOS2 API headers (cmsis_os2.h, os_tick.h) # - freertos_wrapper_inc: FreeRTOS-specific headers (freertos_os2.h, freertos_evr.h) # - os_tick_dep: OS Tick source compiled with device-specific DFP context cmsis_freertos_lib = library( 'cmsis_freertos', freertos_wrapper_src, include_directories: [freertos_wrapper_inc, include_directories('.')], # '.' for RTE_Components.h dependencies: [freertos_internal_dep, cmsis_core_dep, cmsis_rtos_dep, cmsis_dfp_dep, os_tick_dep]) # Export dependency cmsis_freertos_dep = declare_dependency( include_directories: freertos_wrapper_inc, link_with: cmsis_freertos_lib, dependencies: freertos_internal_dep)