C
Qt Quick Ultralite imagedecoder Example
cmake_minimum_required (VERSION 3.21.1) if (QUL_PLATFORM MATCHES "autosar") return() endif() project(imagedecoder VERSION 0.0.1 LANGUAGES C CXX ASM) if (NOT TARGET Qul::Core) find_package(Qul) endif() if(CMAKE_CROSSCOMPILING) if(QUL_PLATFORM MATCHES "^stm32") # Custom JPG encoder supported if(QUL_PLATFORM MATCHES "^stm32f7") set(STM32XX "stm32f7") qul_add_target(imagedecoder QML_PROJECT mcu_imagedecoder.qmlproject os/${QUL_OS_LOWERCASE}/main.cpp SELECTORS filesystemSupport ) target_sources(imagedecoder PRIVATE ../fileloading/3rdparty/FatFs/src/diskio.c ../fileloading/3rdparty/FatFs/src/ff.c ../fileloading/3rdparty/FatFs/src/ff_gen_drv.c ../fileloading/3rdparty/FatFs/src/option/unicode.c ../fileloading/3rdparty/FatFs/src/sd_diskio.c ${QUL_BOARD_SDK_DIR}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c ${QUL_BOARD_SDK_DIR}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c ${QUL_BOARD_SDK_DIR}/Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_sd.c ${QUL_BOARD_SDK_DIR}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_jpeg.c ${CMAKE_CURRENT_SOURCE_DIR}/stm/${STM32XX}/stm32f7xx_hal_msp.c ) target_include_directories(imagedecoder PRIVATE ../fileloading/ ../fileloading/3rdparty/FatFs/src/ ) target_compile_definitions(imagedecoder PRIVATE SUPPORT_FILESYSTEM FF_FS_READONLY ) elseif(QUL_PLATFORM MATCHES "^stm32h7") set(STM32XX "stm32h7") qul_add_target(imagedecoder QML_PROJECT mcu_imagedecoder_stm32h750b.qmlproject os/${QUL_OS_LOWERCASE}/main.cpp SELECTORS noFilesystemSupport ) target_sources(imagedecoder PRIVATE ${QUL_BOARD_SDK_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_jpeg.c ${CMAKE_CURRENT_SOURCE_DIR}/stm/${STM32XX}/stm32h7xx_hal_msp.c ) endif() target_sources(imagedecoder PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/stm/${STM32XX}/board_config.cpp ${CMAKE_CURRENT_SOURCE_DIR}/stm/${STM32XX}/buffer_config.cpp ${CMAKE_CURRENT_SOURCE_DIR}/stm/stmimagedecoder.cpp common/jpeg.cpp 3rdparty/stm/Utilities/JPEG/jpeg_utils.c ) target_include_directories(imagedecoder PRIVATE ${QUL_BOARD_SDK_DIR}/Utilities/JPEG ${CMAKE_CURRENT_SOURCE_DIR}/stm/${STM32XX} ${CMAKE_CURRENT_SOURCE_DIR}/stm ) target_compile_definitions(imagedecoder PRIVATE USE_JPEG_DECODER=1 PLATFORM_OS=${QUL_OS_LOWERCASE} USE_DMA_BASED_JPEG_DECODING ) target_link_libraries(imagedecoder PRIVATE Qul::PlatformBSPConfig) if(NOT IAR) # Required for SDK code to build target_compile_options(imagedecoder PRIVATE -Wno-unused-parameter ) endif() else() return() endif() endif() app_target_setup_os(imagedecoder) if (QUL_PLATFORM STREQUAL "qt") find_package(Qt6 6.2 COMPONENTS Gui REQUIRED) qul_add_target(imagedecoder QML_PROJECT mcu_imagedecoder.qmlproject os/${QUL_OS_LOWERCASE}/main.cpp SELECTORS filesystemSupport ) target_link_libraries(imagedecoder PRIVATE Qt6::Gui) target_sources(imagedecoder PRIVATE desktop/desktopimagedecoder.cpp desktop/board_config.cpp ../fileloading/desktop/posixfilesystem.cpp ) target_compile_features(imagedecoder PRIVATE cxx_std_17) target_include_directories(imagedecoder PRIVATE ../fileloading/desktop/) if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_compile_options(imagedecoder PRIVATE -Wno-maybe-uninitialized) # desktopimagedecoder.cpp:129ff read into a byte array. endif() add_custom_command(TARGET imagedecoder POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_LIST_DIR}/basse-terre-guadeloupe.jpg" "${CMAKE_CURRENT_LIST_DIR}/yosemite-national-park.jpg" "$<TARGET_FILE_DIR:imagedecoder>") endif()