cmake_minimum_required(VERSION 3.16)


set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR ARM)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/stm32-cmake/cmake/stm32_gcc.cmake)

project(controller CXX C ASM)

if (BOARD STREQUAL "")
    message(FATAL_ERROR "Cannot configure project. Not set BOARD variable.")
endif()

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include(boards/${BOARD})

stm32_fetch_cmsis(${FAMILY})
stm32_fetch_hal(${FAMILY})
stm32_fetch_freertos()
stm32_fetch_usb_library()

add_subdirectory(src)
