set(BSP_F0_BOARDS STM32F0xx_Nucleo_32 STM32F0xx-Nucleo STM32F072B-Discovery STM32F0308-Discovery STM32072B_EVAL STM32091C_EVAL ) set(BSP_F0_COMPONENTS hx8347d l3gd20 spfd5408 st7735 stlm75 ) set(BSP_F0_SOURCES_STM32F072B_Discovery eeprom gyroscope) set(BSP_F0_SOURCES_STM32072B_EVAL eeprom lcd sd tsensor) set(BSP_F0_SOURCES_STM32091C_EVAL eeprom lcd sd tsensor) set(BSP_F0_DEVICE_STM32F072B_Discovery F072RB) set(BSP_F0_DEVICE_STM32F0308_Discovery F030R8) set(BSP_F0_DEVICE_STM32072B_EVAL F072VB) set(BSP_F0_DEVICE_STM32091C_EVAL F091VC) set(BSP_F1_BOARDS STM32F1xx_Nucleo STM32VL-Discovery STM3210C_EVAL STM3210E_EVAL ) set(BSP_F1_COMPONENTS ak4343 cs43l22 hx8347d ili9320 ili9325 lis302dl spfd5408 st7735 stlm75 stmpe811 ) set(BSP_F1_SOURCES_STM3210C_EVAL accelerometer audio eeprom io lcd sd ts) set(BSP_F1_SOURCES_STM3210E_EVAL audio lcd nand nor sd serialflash sram tsensor) set(BSP_F1_DEVICE_STM32VL_Discovery F100RB) set(BSP_F1_DEVICE_STM3210C_EVAL F107VC) set(BSP_F1_DEVICE_STM3210E_EVAL F103ZE) set(BSP_F2_BOARDS STM32F2xx_Nucleo_144 STM322xG_EVAL ) set(BSP_F2_COMPONENTS cs43l22 ili9320 ili9325 ili9341 ov2640 st7735 stmpe811 ) set(BSP_F2_SOURCES_STM322xG_EVAL audio camera eeprom io lcd sd sram ts) set(BSP_F2_DEVICE_STM322xG_EVAL F207IG) set(BSP_F3_BOARDS STM32F3-Discovery STM32F3xx_Nucleo_32 STM32F3xx_Nucleo_144 STM32F3xx-Nucleo STM32F3348-Discovery STM32303C_EVAL STM32303E_EVAL STM32373C_EVAL ) set(BSP_F3_COMPONENTS cs42l52 cs43l22 hx8347d hx8347g hx8347i ili9320 ili9325 ili9328 l3gd20 lsm303dlhc spfd5408 st7735 stts751 ) set(BSP_F3_SOURCES_STM32F3_Discovery accelerometer gyroscope) set(BSP_F3_SOURCES_STM32303C_EVAL audio eeprom lcd sd tsensor) set(BSP_F3_SOURCES_STM32303E_EVAL audio eeprom lcd sd tsensor) set(BSP_F3_SOURCES_STM32373C_EVAL audio eeprom lcd sd tsensor) set(BSP_F3_DEVICE_STM32F3_Discovery F303VC) set(BSP_F3_DEVICE_STM32F3348_Discovery F334C8) set(BSP_F3_DEVICE_STM32303C_EVAL F303VC) set(BSP_F3_DEVICE_STM32303E_EVAL F303VE) set(BSP_F3_DEVICE_STM32373C_EVAL F373VC) set(BSP_F4_BOARDS STM32F4-Discovery STM32F4xx_Nucleo_144 STM32F4xx-Nucleo STM32F401-Discovery STM32F411E-Discovery STM32F413H-Discovery STM32F429I-Discovery STM324x9I_EVAL STM324xG_EVAL STM32412G-Discovery STM32446E_EVAL STM32469I_EVAL STM32469I-Discovery ) set(BSP_F4_COMPONENTS ampire480272 ampire640480 cs43l22 exc7200 ft6x06 ili9325 ili9341 l3gd20 lis3dsh lis302dl ls016b8uy lsm303dlhc mfxstm32l152 n25q128a n25q256a n25q512a otm8009a ov2640 s5k5cag s25fl512s st7735 st7789h2 stmpe811 stmpe1600 ts3510 wm8994 ) set(BSP_F4_SOURCES_STM32F4_Discovery accelerometer audio) set(BSP_F4_SOURCES_STM32F401_Discovery accelerometer audio gyroscope) set(BSP_F4_SOURCES_STM32F411E_Discovery accelerometer audio gyroscope) set(BSP_F4_SOURCES_STM32F413H_Discovery audio lcd psram qspi sd ts) set(BSP_F4_SOURCES_STM32F429I_Discovery eeprom gyroscope io lcd sdram ts) set(BSP_F4_SOURCES_STM324x9I_EVAL audio camera eeprom io lcd nor sd sdram sram ts) set(BSP_F4_SOURCES_STM324xG_EVAL audio camera eeprom io lcd sd sram ts) set(BSP_F4_SOURCES_STM32412G_Discovery audio eeprom lcd qspi sd ts) set(BSP_F4_SOURCES_STM3232446E_EVAL audio camera eeprom io lcd qspi sd sdram ts) set(BSP_F4_SOURCES_STM32469I_EVAL audio camera eeprom io lcd nor qspi sd sdram sram ts) set(BSP_F4_SOURCES_STM32469I_Discovery audio eeprom lcd qspi sd sdram ts) set(BSP_F4_DEVICE_STM32F4_Discovery F407VG) set(BSP_F4_DEVICE_STM32F401_Discovery F401VC) set(BSP_F4_DEVICE_STM32F411E_Discovery F411VE) set(BSP_F4_DEVICE_STM32F413H_Discovery F413ZH) set(BSP_F4_DEVICE_STM32F429I_Discovery F429ZI) set(BSP_F4_DEVICE_STM324x9I_EVAL F429NI) set(BSP_F4_DEVICE_STM324xG_EVAL F407IG) set(BSP_F4_DEVICE_STM32412G_Discovery F412ZG) set(BSP_F4_DEVICE_STM32446E_EVAL F446ZE) set(BSP_F4_DEVICE_STM32469I_EVAL F469NI) set(BSP_F4_DEVICE_STM32469I_Discovery F469NI) set(BSP_F7_BOARDS STM32F7xx_Nucleo_144 STM32F723E-Discovery STM32F769I_EVAL STM32F769I-Discovery STM32F7308-Discovery STM32F7508-Discovery STM32746G-Discovery STM32756G_EVAL ) set(BSP_F7_COMPONENTS adv7533 ampire480272 ampire640480 exc7200 ft6x06 ft5336 mfxstm32l152 mx25l512 n25q128a n25q512a otm8009a ov5640 ov9655 rk043fn48h s5k5cag st7735 st7789h2 stmpe811 ts3510 wm8994 ) set(BSP_F7_SOURCES_STM32F723E_Discovery audio lcd psram qspi ts) set(BSP_F7_SOURCES_STM32F769I_EVAL audio camera eeprom io lcd nor qspi sd sdram sram ts) set(BSP_F7_SOURCES_STM32F769I_Discovery audio eeprom lcd qspi sd sdram ts) set(BSP_F7_SOURCES_STM32F7308_Discovery audio lcd psram qspi ts) set(BSP_F7_SOURCES_STM32F7508_Discovery audio camera eeprom lcd qspi sd sdram ts) set(BSP_F7_SOURCES_STM32746G_Discovery audio camera eeprom lcd qspi sd sdram ts) set(BSP_F7_SOURCES_STM32756G_EVAL audio camera eeprom io lcd nor qspi sd sdram sram ts) set(BSP_F7_DEVICE_STM32F723E_Discovery F723IE) set(BSP_F7_DEVICE_STM32F769I_EVAL F769NI) set(BSP_F7_DEVICE_STM32F769I_Discovery F769NI) set(BSP_F7_DEVICE_STM32F7308_Discovery F730I8) set(BSP_F7_DEVICE_STM32F7508_Discovery F750N8) set(BSP_F7_DEVICE_STM32746G_Discovery F746NG) set(BSP_F7_DEVICE_STM32756G_EVAL F756NG) set(BSP_G0_BOARDS STM32G0xx_Nucleo STM32G0xx_Nucleo_32 STM32G071B-Discovery STM32G081B_EVAL STM32G0316-Discovery ) set(BSP_G0_COMPONENTS hx8347d ina230 sn65dp141 ssd1315 st7735 stlm75 tusb546 ) set(BSP_G0_DIR_STM32G0316_Discovery STM32G0316-DISCO) set(BSP_G0_SOURCES_STM32G071B_Discovery lcd pwr pwrmon) set(BSP_G0_SOURCES_STM32G081B_EVAL lcd mux pwr sd tsensor) set(BSP_G0_DEVICE_STM32G071B_Discovery G071RB) set(BSP_G0_DEVICE_STM32G081B_EVAL G081RB) set(BSP_G0_DEVICE_STM32G0316_Discovery G031J6) set(BSP_G4_BOARDS B-G474E-DPOW1 STM32G4xx_Nucleo STM32G474E-EVAL ) set(BSP_G4_COMPONENTS hx8347d mfxstm32l152 mt25ql512abb st7735 stts751 wm8994 ) set(BSP_G4_SOURCES_B-G474E-DPOW1 usbpd_pwr) set(BSP_G4_SOURCES_STM32G481B_EVAL audio bus env_sensor idd io lcd qspi sd smartcard sram usbpd_pwr) set(BSP_G4_DEVICE_B_G474E_DPOW1 G474RE) set(BSP_G4_DEVICE_STM32G474E_EVAL G474QE) set(BSP_H7_BOARDS STM32H7B3I-Discovery STM32H7B3I-EVAL STM32H7xx_Nucleo STM32H743I-EVAL STM32H745I-Discovery STM32H747I-Discovery STM32H747I-EVAL STM32H750B-Discovery ) set(BSP_H7_COMPONENTS adv7533 ampire480272 ampire640480 cs42l51 es_wifi exc7200 ft6x06 ft5336 is42s16800j is42s32800g is42s32800j lan8742 m24lr64 mfxstm32l152 mt25tl01g mt48lc4m32b2 mx25lm51245g otm8009a ov5640 ov9655 rk043fn48h rk070er9427 s5k5cag st7735 stmpe811 ts3510 wm8994 ) set(BSP_H7_DIR_STM32H7B3I_Discovery STM32H7B3I-DK) set(BSP_H7_DIR_STM32H745I_Discovery STM32H745I-DISCO) set(BSP_H7_DIR_STM32H747I_Discovery STM32H747I-DISCO) set(BSP_H7_DIR_STM32H750B_Discovery STM32H750B-DK) set(BSP_H7_SOURCES_STM32H7B3I_Discovery audio bus camera eeprom lcd ospi sd sdram ts) set(BSP_H7_SOURCES_STM32H7B3I_EVAL audio bus camera eeprom io lcd nor ospi sd sdram sram ts) set(BSP_H7_SOURCES_STM32H743I_EVAL audio bus eeprom io lcd nor qspi sd sdram sram ts) set(BSP_H7_SOURCES_STM32H745I_Discovery audio bus lcd mmc qspi sdram ts) set(BSP_H7_SOURCES_STM32H747I_Discovery audio bus camera lcd qspi sd sdram ts) set(BSP_H7_SOURCES_STM32H747I_EVAL audio bus eeprom io lcd nor qspi sd sdram sram ts) set(BSP_H7_SOURCES_STM32H750B_Discovery audio bus lcd mmc qspi sdram ts) set(BSP_H7_DEVICE_STM32H7B3I_Discovery H7B3LI) set(BSP_H7_DEVICE_STM32H7B3I_EVAL H7B3LI) set(BSP_H7_DEVICE_STM32H743I_EVAL H743XI) set(BSP_H7_DEVICE_STM32H745I_Discovery H745XI) set(BSP_H7_DEVICE_STM32H747I_Discovery H747XI) set(BSP_H7_DEVICE_STM32H747I_EVAL H743XI) set(BSP_H7_DEVICE_STM32H750B_Discovery H750XB) if(NOT BSP_FIND_COMPONENTS) set(BSP_FIND_COMPONENTS STM32F0 STM32F1 STM32F2 STM32F3 STM32F4 STM32F7 STM32G0 STM32G4 STM32H7 STM32L0 STM32L1 STM32L4 ) endif() foreach(COMP ${BSP_FIND_COMPONENTS}) string(TOLOWER ${COMP} COMP_L) string(TOUPPER ${COMP} COMP_U) string(REGEX MATCH "^STM32([FGHL][0-9]).*$" COMP_U ${COMP_U}) if(NOT CMAKE_MATCH_1) message(FATAL_ERROR "Unknown HAL component: ${COMP}") endif() set(FAMILY ${CMAKE_MATCH_1}) string(TOLOWER ${FAMILY} FAMILY_L) if(NOT STM32_CUBE_${FAMILY}_PATH) set(STM32_CUBE_${FAMILY}_PATH /opt/STM32Cube${FAMILY} CACHE PATH "Path to STM32Cube${FAMILY}") message(STATUS "No STM32_CUBE_${FAMILY}_PATH specified using default: ${STM32_CUBE_${FAMILY}_PATH}") endif() find_path(BSP_${FAMILY}_PATH NAMES Components/Common/io.h PATHS "${STM32_CUBE_${FAMILY}_PATH}/Drivers/BSP" NO_DEFAULT_PATH ) if (NOT BSP_${FAMILY}_PATH) continue() endif() set(BSP_${FAMILY}_INCLUDE "${BSP_${FAMILY}_PATH}/Components/Common") add_library(BSP::STM32::${FAMILY} INTERFACE IMPORTED) target_link_libraries(BSP::STM32::${FAMILY} INTERFACE STM32::${FAMILY}) target_include_directories(BSP::STM32::${FAMILY} INTERFACE "${BSP_${FAMILY}_PATH}/Components/Common") foreach(BOARD ${BSP_${FAMILY}_BOARDS}) string(REPLACE "-" "_" BOARD_CANONICAL ${BOARD}) string(TOLOWER ${BOARD_CANONICAL} BOARD_CANONICAL_L) find_path(BSP_${BOARD_CANONICAL}_PATH NAMES ${BOARD_CANONICAL_L}.h PATHS "${BSP_${FAMILY}_PATH}/${BOARD}" "${BSP_${FAMILY}_PATH}/${BSP_${FAMILY}_DIR_${BOARD_CANONICAL}}" NO_DEFAULT_PATH ) if (NOT BSP_${BOARD_CANONICAL}_PATH) continue() endif() add_library(BSP::STM32::${BOARD_CANONICAL} INTERFACE IMPORTED) target_link_libraries(BSP::STM32::${BOARD_CANONICAL} INTERFACE BSP::STM32::${FAMILY} CMSIS::STM32::${FAMILY}) target_include_directories(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${BOARD_CANONICAL}_PATH}") target_sources(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${BOARD_CANONICAL}_PATH}/${BOARD_CANONICAL_L}.c") foreach(SRC ${BSP_${FAMILY}_SOURCES_${BOARD_CANONICAL}}) target_sources(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${BOARD_CANONICAL}_PATH}/${BOARD_CANONICAL_L}_${SRC}.c") endforeach() if(BSP_${FAMILY}_DEVICE_${BOARD_CANONICAL}) target_link_libraries(BSP::STM32::${BOARD_CANONICAL} INTERFACE CMSIS::STM32::${BSP_${FAMILY}_DEVICE_${BOARD_CANONICAL}}) endif() endforeach() foreach(BCOMP ${BSP_${FAMILY}_COMPONENTS}) string(TOLOWER ${BCOMP} BCOMP_L) string(TOUPPER ${BCOMP} BCOMP_U) add_library(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE IMPORTED) target_link_libraries(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE BSP::STM32::${FAMILY} CMSIS::STM32::${FAMILY}) target_include_directories(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE "${BSP_${FAMILY}_PATH}/Components/${BCOMP}") find_file(BSP_${BOARD_CANONICAL}_${COMP}_SOURCE NAMES ${BCOMP}.c PATHS "${BSP_${FAMILY}_PATH}/Components/${BCOMP}" NO_DEFAULT_PATH ) if (BSP_${BOARD_CANONICAL}_${COMP}_SOURCE) target_sources(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE "${BSP_${BOARD_CANONICAL}_${COMP}_SOURCE}") endif() endforeach() set(BSP_${COMP}_FOUND TRUE) if(BSP_${COMP}_FOUND) list(APPEND BSP_INCLUDE_DIRS "${BSP_${FAMILY}_INCLUDE}") endif() endforeach() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(BSP REQUIRED_VARS BSP_INCLUDE_DIRS FOUND_VAR BSP_FOUND HANDLE_COMPONENTS )