cmake_minimum_required(VERSION 3.16)

set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/LFramework.CMake/stm32_gcc.cmake)

project(sandbox CXX C ASM)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/LFramework.CMake/stm32)

set(STM32_DEVICE STM32H743VGT6)

add_executable(MicroH7BoardFirmware)
include(H7)

add_subdirectory(Dependencies/SoftGL)
add_subdirectory(Dependencies/LMath)
add_subdirectory(Dependencies/LibPad)
add_subdirectory(Dependencies/LFramework)
add_subdirectory(Platform)

target_link_libraries(MicroH7BoardFirmware
PRIVATE
    STM32::H7
    SoftGL
    LMath
    LibPad
    LFramework
    Platform
    LFramework::IO
    LFramework::IO::Terminal
)

target_include_directories(MicroH7BoardFirmware
PRIVATE
    ./
)

target_sources(MicroH7BoardFirmware
PRIVATE
    fatfs.h
    fatfs.c

    SwapChain.h
    SwapChain.cpp
    main.cpp
    ili9325_registers.h
    ili9325.h
    display_fsmc_interface.h

    sdcard.h
    sdcard.c
    ffconf.h

    user_diskio.c
    user_diskio.h

    UartReader.h
    UartReader.cpp

    EscController.h
    DshotProtocol.h
)

gcc_print_target_size( MicroH7BoardFirmware )