C
Qt Quick Ultralite Thermostat Demo
cmake_minimum_required (VERSION 3.21.1) project(thermo VERSION 0.0.1 LANGUAGES C CXX ASM) if (NOT TARGET Qul::Core) find_package(Qul) endif() if(QUL_PLATFORM MATCHES "^ek-ra6m3g") string(TOUPPER ${CMAKE_BUILD_TYPE} build_type) if(build_type STREQUAL "RELEASE" OR build_type STREQUAL "DEBUG") message(WARNING "For Release or Debug builds, thermo demo binary may not fit in internal flash of EK-RA6M3G board. Sections QulResourceDataExtFlash and QulFontResourceDataExtFlash can be used to move image or font data into the external flash memory.") endif() qul_add_target(thermo_small src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_ek-ra6m3g.qmlproject SELECTORS small normal ) qul_add_target(thermo_small_benchmark src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_ek-ra6m3g.qmlproject SELECTORS small benchmark ) elseif(QUL_PLATFORM MATCHES "^stm32") if (NOT QUL_PLATFORM MATCHES "^stm32f7" AND NOT QUL_PLATFORM MATCHES "^stm32f4") qul_add_target(thermo_small src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_stm32.qmlproject SELECTORS small normal ) qul_add_target(thermo_small_benchmark src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_stm32.qmlproject SELECTORS small benchmark ) endif() elseif (QUL_PLATFORM STREQUAL "mimxrt1064-evk-baremetal" OR QUL_PLATFORM STREQUAL "mimxrt1064-evk-freertos") qul_add_target(thermo_small src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_mimxrt1064.qmlproject SELECTORS small normal ) qul_add_target(thermo_small_benchmark src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_mimxrt1064.qmlproject SELECTORS small benchmark ) else() qul_add_target(thermo_small src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo.qmlproject SELECTORS small normal ) qul_add_target(thermo_small_benchmark src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo.qmlproject SELECTORS small benchmark ) endif() if(QUL_PLATFORM STREQUAL "ek-ra6m3g-freertos") # default FreeRTOS heap size 250k qul_override_freertos_heap_size(thermo_small "250 * 1024") qul_override_freertos_heap_size(thermo_small_benchmark "250 * 1024") endif() if (QUL_PLATFORM STREQUAL "mimxrt1050-evk-freertos" OR QUL_PLATFORM STREQUAL "mimxrt1064-evk-freertos") # default FreeRTOS heap size 2304k qul_override_freertos_heap_size(thermo_small "2304 * 1024") qul_override_freertos_heap_size(thermo_small_benchmark "2304 * 1024") endif() if(QUL_PLATFORM MATCHES "^stm32h7") math(EXPR text_cache_size "32 * 1024") target_compile_definitions(thermo_small PRIVATE APP_TEXT_CACHE_SIZE=${text_cache_size}) target_compile_definitions(thermo_small_benchmark PRIVATE APP_TEXT_CACHE_SIZE=${text_cache_size}) endif() if(TARGET thermo_small) app_target_setup_os(thermo_small) endif() if(TARGET thermo_small_benchmark) qul_get_module_target(benchmark_module_target thermo_small_benchmark mode/+benchmark/benchmark_module.qmlproject) target_sources(${benchmark_module_target} PRIVATE mode/+benchmark/simulation/flickControl.cpp) app_target_setup_os(thermo_small_benchmark) endif() # FIXME: the if below should be changed to # if (NOT "thermo_big" IN_LIST QUL_PLATFORM_EXCLUDED_DEMOS) # Assets currently too big for devices (except stm32s) if(QUL_PLATFORM STREQUAL "qt" OR QUL_PLATFORM MATCHES "^stm32f7" OR QUL_PLATFORM MATCHES "^stm32f4") if(QUL_PLATFORM STREQUAL "qt") qul_add_target(thermo_big src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo.qmlproject SELECTORS big normal) qul_add_target(thermo_big_benchmark src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo.qmlproject SELECTORS big benchmark) elseif(QUL_PLATFORM MATCHES "^stm32f7" OR QUL_PLATFORM MATCHES "^stm32f4") qul_add_target(thermo_big src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_stm32.qmlproject SELECTORS big normal) qul_add_target(thermo_big_benchmark src/os/${QUL_OS_LOWERCASE}/main.cpp QML_PROJECT qmlproject/thermo_stm32.qmlproject SELECTORS big benchmark) endif() qul_get_module_target(benchmark_module_target thermo_big_benchmark mode/+benchmark/benchmark_module.qmlproject) target_sources(${benchmark_module_target} PRIVATE mode/+benchmark/simulation/flickControl.cpp) if(QUL_PLATFORM MATCHES "^stm32f4") math(EXPR text_cache_size "100 * 1024") target_compile_definitions(thermo_big PRIVATE APP_TEXT_CACHE_SIZE=${text_cache_size}) target_compile_definitions(thermo_big_benchmark PRIVATE APP_TEXT_CACHE_SIZE=${text_cache_size}) endif() if(QUL_PLATFORM MATCHES "^stm32f7") math(EXPR text_cache_size "120 * 1024") target_compile_definitions(thermo_big PRIVATE APP_TEXT_CACHE_SIZE=${text_cache_size}) target_compile_definitions(thermo_big_benchmark PRIVATE APP_TEXT_CACHE_SIZE=${text_cache_size}) if (QUL_OS STREQUAL "FreeRTOS") # 200 kB is the default heap size for STM32F769i, but we need to add # space for the text cache as well and the dynamic QML loader qul_override_freertos_heap_size(thermo_big "230 * 1024 + ${text_cache_size}") qul_override_freertos_heap_size(thermo_big_benchmark "230 * 1024 + ${text_cache_size}") endif() endif() app_target_setup_os(thermo_big) app_target_setup_os(thermo_big_benchmark) endif()