add_library(Platform INTERFACE)

gcc_add_linker_script( Platform INTERFACE "${CMAKE_CURRENT_LIST_DIR}/Cube/STM32H743VGTx_FLASH.ld" )

target_include_directories(Platform
INTERFACE

    ./
    Cube/Core/Inc
    Cube/Drivers/STM32H7xx_HAL_Driver
    Cube/Drivers/CMSIS/Device
    Cube/Drivers/CMSIS/Include
    Cube/Drivers/CMSIS/Device/ST/STM32H7xx/Include
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc

    Cube/Middlewares/Third_Party/FatFs/src

    Cube/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include
    Cube/Middlewares/Third_Party/FreeRTOS/Source/portable
    Cube/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC
    Cube/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F
)



target_compile_definitions(Platform
INTERFACE 
    STM32H7
    STM32H743xx
    ${STM32_DEVICE}
    USE_FULL_LL_DRIVER
    HSE_VALUE=12000000
    LF_TARGET_OS=LF_OS_FREERTOS
    LF_SYSCALLS_STUBS
    LF_NEWLIB_TO_RTOS_MALLOC
    LF_TERMINAL_STREAM_USART_STM32
    LF_TERMINAL_STREAM_USART=USART1

    CMSIS_DEVICE_FILE="STM32H743xx.h"
)

target_sources(Platform
INTERFACE
    Cube/Core/Inc/FreeRTOSConfig.h
    Cube/Core/Inc/main.h
    Cube/Core/Inc/stm32h7xx_hal_conf.h
    Cube/Core/Inc/stm32h7xx_it.h
    Cube/Core/Src/freertos.c
    Cube/Core/Src/main.c
    Cube/Core/Src/stm32h7xx_hal_msp.c
    Cube/Core/Src/stm32h7xx_it.c
    #Cube/Core/Src/syscalls.c
    Cube/Core/Src/system_stm32h7xx.c

    Cube/Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h743xx.h
    Cube/Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h7xx.h
    Cube/Drivers/CMSIS/Device/ST/STM32H7xx/Include/system_stm32h7xx.h
    Cube/Drivers/CMSIS/Include/cmsis_armcc.h
    Cube/Drivers/CMSIS/Include/cmsis_armclang.h
    Cube/Drivers/CMSIS/Include/cmsis_armclang_ltm.h
    Cube/Drivers/CMSIS/Include/cmsis_compiler.h
    Cube/Drivers/CMSIS/Include/cmsis_gcc.h
    Cube/Drivers/CMSIS/Include/cmsis_iccarm.h
    Cube/Drivers/CMSIS/Include/cmsis_version.h
    Cube/Drivers/CMSIS/Include/core_armv81mml.h
    Cube/Drivers/CMSIS/Include/core_armv8mbl.h
    Cube/Drivers/CMSIS/Include/core_armv8mml.h
    Cube/Drivers/CMSIS/Include/core_cm0.h
    Cube/Drivers/CMSIS/Include/core_cm0plus.h
    Cube/Drivers/CMSIS/Include/core_cm1.h
    Cube/Drivers/CMSIS/Include/core_cm23.h
    Cube/Drivers/CMSIS/Include/core_cm3.h
    Cube/Drivers/CMSIS/Include/core_cm33.h
    Cube/Drivers/CMSIS/Include/core_cm35p.h
    Cube/Drivers/CMSIS/Include/core_cm4.h
    Cube/Drivers/CMSIS/Include/core_cm7.h
    Cube/Drivers/CMSIS/Include/core_sc000.h
    Cube/Drivers/CMSIS/Include/core_sc300.h
    Cube/Drivers/CMSIS/Include/mpu_armv7.h
    Cube/Drivers/CMSIS/Include/mpu_armv8.h
    Cube/Drivers/CMSIS/Include/tz_context.h
    
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_cortex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_def.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dma.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dma_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_gpio.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_gpio_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_hsem.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_i2c.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_i2c_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_mdma.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pcd.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pcd_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pwr.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pwr_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rcc.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rcc_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart_ex.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_ll_usb.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_fmc.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c
    Cube/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c


    Cube/Middlewares/Third_Party/FreeRTOS/Source/croutine.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/list.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/queue.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/tasks.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/timers.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/list.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/task.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c
    Cube/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h
    Cube/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c
    Cube/startup_stm32h743xx.s


    Cube/Middlewares/Third_Party/FatFs/src/diskio.c
    Cube/Middlewares/Third_Party/FatFs/src/diskio.h
    Cube/Middlewares/Third_Party/FatFs/src/ff.c
    Cube/Middlewares/Third_Party/FatFs/src/ff.h
    Cube/Middlewares/Third_Party/FatFs/src/ff_gen_drv.c
    Cube/Middlewares/Third_Party/FatFs/src/ff_gen_drv.h
    Cube/Middlewares/Third_Party/FatFs/src/integer.h
    Cube/Middlewares/Third_Party/FatFs/src/option/syscall.c

    Cube/Middlewares/Third_Party/FatFs/src/option/ccsbcs.c

)