
#set(STM32_CUBE_F4_PATH ${CMAKE_SOURCE_DIR}/toolchain/st/STM32CubeF4-${VERSION}/)

find_package(CMSIS COMPONENTS STM32F413ZG REQUIRED)
find_package(HAL COMPONENTS STM32F4 PWR DMA RCC GPIO CORTEX TIM FLASH UART USART PCD LL_USB SPI REQUIRED)

add_library(csp_f413xx_core INTERFACE)

target_include_directories(csp_f413xx_core INTERFACE
    ${CMAKE_CURRENT_SOURCE_DIR}/config
    ${CMAKE_SOURCE_DIR}/src/csp/share
    ${CMAKE_CURRENT_SOURCE_DIR}
)

target_sources(csp_f413xx_core INTERFACE
    ${CMAKE_CURRENT_SOURCE_DIR}/../share/rcc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/../share/tick.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/../share/gpio.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/gpio.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/rcc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/csp.cpp
)

target_link_libraries(csp_f413xx_core INTERFACE
    HAL::STM32::F4::RCC
    HAL::STM32::F4::RCCEx
    HAL::STM32::F4::CORTEX
    HAL::STM32::F4::GPIO
    HAL::STM32::F4::FLASH
    HAL::STM32::F4::FLASHEx
    HAL::STM32::F4::TIM
    HAL::STM32::F4::PWR
    HAL::STM32::F4::PWREx
    HAL::STM32::F4::DMA
    CMSIS::STM32::F413xx
    STM32::Nano
    STM32::NoSys
)

add_library(CSP::F413xx::CORE ALIAS csp_f413xx_core)

add_subdirectory(timer)
add_subdirectory(tick_source)
add_subdirectory(usb)
add_subdirectory(uart)
add_subdirectory(spi)
