C
Qt Quick Ultralite multitask Example
cmake_minimum_required (VERSION 3.21.1)
project(freertos)
# Add platform specific driver include directories
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/${QUL_PLATFORM}/freertos.cmake)
if(NOT DEFINED FREERTOS_DIR)
message(WARNING "FREERTOS_DIR cache entry is not set. Skipping multitask.")
else()
file(TO_CMAKE_PATH "${FREERTOS_DIR}" FREERTOS_DIR)
add_library(freertos_kernel STATIC)
target_link_libraries(freertos_kernel PRIVATE "$<BUILD_INTERFACE:Qul::PlatformArchitecture>")
# Enforce symbols to be put in the binary, otherwise LTO will strip them
if(NOT IAR)
target_link_libraries(freertos_kernel PRIVATE -Wl,-u,vTaskSwitchContext)
endif()
target_include_directories(freertos_kernel PUBLIC ${QUL_PLATFORM_TARGET_DIR})
include(${QUL_PLATFORM}/freertos.cmake)
target_compile_definitions(freertos_kernel PUBLIC USE_FreeRTOS_HEAP_4)
# Add common sources
target_sources(freertos_kernel PRIVATE
${FREERTOS_DIR}/portable/MemMang/heap_4.c
)
endif()
endif()