C

Qt Quick Ultralite Motorcycle Cluster Demo

cmake_minimum_required (VERSION 3.21.1)

project(motor_cluster VERSION 0.0.1 LANGUAGES C CXX ASM)
if (NOT TARGET Qul::Core)
    find_package(Qul)
    get_target_property(includes Qul::Core INTERFACE_INCLUDE_DIRECTORIES)
endif()

if(QUL_PLATFORM STREQUAL "mimxrt1170-evkb-freertos")
    set(QMLPROJECT_FILE "qmlproject/motor_cluster_rotated.qmlproject")
    set(DEFAULT_SIZE_VARIANT "big")
else()
    set(QMLPROJECT_FILE "qmlproject/motor_cluster.qmlproject")
    set(DEFAULT_SIZE_VARIANT "small")
endif()

# This variable can be defined on the command line
if (NOT DEFINED SIZE_VARIANT)
    set(SIZE_VARIANT ${DEFAULT_SIZE_VARIANT} CACHE STRING "Variant for motor cluster demo")
endif()

include(src/3rdparty/etl/CMakeLists.txt)

set(MOTOR_CLUSTER_SELECTORS ${SIZE_VARIANT})

if(QUL_PLATFORM MATCHES "^rh850")
    list(APPEND MOTOR_CLUSTER_SELECTORS "rh850")
elseif(QUL_PLATFORM MATCHES "^tviic2d")
    if(QUL_PLATFORM MATCHES "^tviic2d6mddr")
        list(APPEND MOTOR_CLUSTER_SELECTORS "traveo-t2g-cyt4en")
    else()
        list(APPEND MOTOR_CLUSTER_SELECTORS "traveo-t2g")
    endif()
elseif(QUL_PLATFORM MATCHES "^ek-ra6m3g")
    list(APPEND MOTOR_CLUSTER_SELECTORS "ek-ra6m3g")
elseif(QUL_PLATFORM MATCHES "^stm32f769")
    list(APPEND MOTOR_CLUSTER_SELECTORS "stm32f769" "intro" "15fps")
elseif(QUL_PLATFORM MATCHES "^qt")
    list(APPEND MOTOR_CLUSTER_SELECTORS "qt" "intro")
endif()

if(QUL_PLATFORM MATCHES "^tviic2d")
    qul_add_target(motor_cluster
                    QML_PROJECT ${QMLPROJECT_FILE}
                    SELECTORS ${MOTOR_CLUSTER_SELECTORS}
    )

    target_link_libraries(motor_cluster PRIVATE Qul::PlatformTraveoIIExtras)
    target_sources(motor_cluster PRIVATE src/traveo-t2g/main.cpp)
else()
    qul_add_target(motor_cluster
                    QML_PROJECT ${QMLPROJECT_FILE}
                    SELECTORS ${MOTOR_CLUSTER_SELECTORS}
                    GENERATE_ENTRYPOINT
    )
endif()

target_sources(motor_cluster PRIVATE
src/simulation/simulationcontroller.cpp
src/simulation/states.cpp
src/simulation/drivetrain.cpp
src/simulation/normaldrivestate.cpp)

target_include_directories(motor_cluster PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(motor_cluster PRIVATE motor_cluster_etl)

if(SIZE_VARIANT STREQUAL "big")
    target_include_directories(motor_cluster PRIVATE qmls/+big/gauges qmls/welcome)
endif()

app_target_setup_os(motor_cluster)