add_library(bsp STATIC)
target_include_directories(bsp PUBLIC . STM32Drivers)
target_sources(bsp PRIVATE
	_bsp_private.hpp
	_bsp_debug.hpp
	bsp.cpp
	bsp.hpp
	bsp_debug.cpp
	bsp_interrupts.cpp
	bsp_leds.cpp
	bsp_time.cpp
	bsp_processor_init.cpp
	bsp_motorized_valve.cpp
	PowerManager.cpp
	STM32Drivers/nvic.cpp
	STM32Drivers/nvic.hpp
	STM32Drivers/stm32h7b3i_discovery.c
	STM32Drivers/stm32h7b3i_discovery.h
	STM32Drivers/stm32h7b3i_discovery_bus.c
	STM32Drivers/stm32h7b3i_discovery_bus.h
	STM32Drivers/stm32h7b3i_discovery_conf.h
	STM32Drivers/stm32h7b3i_discovery_errno.h
	STM32Drivers/stm32h7b3i_discovery_sd.c
	STM32Drivers/stm32h7b3i_discovery_sd.h
	STM32Drivers/STM32DMA.cpp
	STM32Drivers/STM32DMA.hpp
	STM32Drivers/STM32UART.cpp
	STM32Drivers/STM32UART.hpp
	STM32Drivers/STM32ClockControl.cpp
	STM32Drivers/STM32ClockControl.hpp
	STM32Drivers/STM32I2C_Blocking.cpp
	STM32Drivers/STM32I2C_Blocking.hpp
	STM32Drivers/STM32I2C_DMA.cpp
	STM32Drivers/STM32I2C_DMA.hpp
	STM32Drivers/STM32_I2C_Common.cpp
	STM32Drivers/STM32Timer.cpp
	STM32Drivers/STM32Timer.hpp
)

target_link_libraries(bsp PUBLIC stm32h7_target_include_dep etl::etl logger_include_dep cpf_devices_include_dep)
target_link_libraries(bsp PRIVATE cpf_interfaces_include_dep cpf_devices_include_dep)

add_library(bsp_include_dep INTERFACE)
target_include_directories(bsp_include_dep INTERFACE . STM32Drivers)
target_link_libraries(bsp_include_dep INTERFACE stm32h7_target_include_dep)

add_library(bsp_tests INTERFACE)
target_include_directories(bsp_tests INTERFACE .)
target_sources(bsp_tests INTERFACE
	STM32Drivers/STM32Timer_tests.cpp
	STM32Drivers/STM32UART_tests.cpp
)
