cmake_minimum_required(VERSION 3.16)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/stm32_gcc.cmake)

project(PentaTrack C CXX ASM)
set(MAIN_SOURCE_FILE main.cpp)

set(CMAKE_INCLUDE_CURRENT_DIR TRUE)

set(HAL_COMP_LIST RCC GPIO CORTEX UART SPI DMA)
set(CMSIS_COMP_LIST "")

list(APPEND CMSIS_COMP_LIST STM32F1)
list(APPEND HAL_COMP_LIST STM32F1)

find_package(CMSIS COMPONENTS STM32F1 REQUIRED)
find_package(HAL COMPONENTS "${HAL_COMP_LIST}" REQUIRED)

# Find all device specific drivers:
#find_package(HAL COMPONENTS STM32L0 STM32F1 STM32F4 REQUIRED)
# Find drivers for all families:
#find_package(HAL COMPONENTS RCC GPIO CORTEX REQUIRED)
# Find LL driver:
#find_package(HAL COMPONENTS LL_GPIO REQUIRED)
# Find everything:
#find_package(HAL REQUIRED)

# STM32VL-Discovery
add_executable(PentaTrack
  ${MAIN_SOURCE_FILE}
  logging.cpp
  uart_handler.cpp
  spi.cpp
  rfm95.cpp
  commons.cpp
  stm32f1xx_it.c
  stm32f1xx_hal_conf.h
)

set_property(TARGET PentaTrack PROPERTY CXX_STANDARD 20)

target_link_libraries(PentaTrack
    HAL::STM32::F1::UART
    HAL::STM32::F1::RCC
    HAL::STM32::F1::GPIO
    HAL::STM32::F1::CORTEX
    HAL::STM32::F1::SPI
    HAL::STM32::F1::DMA
    CMSIS::STM32::F100RB
    STM32::NoSys
)

stm32_print_size_of_target(PentaTrack)
#stm32_get_memory_info(FAMILY F1 DEVICE F100RB)
