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()