FindBSP.cmake 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. set(BSP_F0_BOARDS
  2. STM32F0xx_Nucleo_32 STM32F0xx-Nucleo STM32F072B-Discovery
  3. STM32F0308-Discovery STM32072B_EVAL STM32091C_EVAL
  4. )
  5. set(BSP_F0_COMPONENTS
  6. hx8347d l3gd20 spfd5408 st7735 stlm75
  7. )
  8. set(BSP_F0_SOURCES_STM32F072B_Discovery eeprom gyroscope)
  9. set(BSP_F0_SOURCES_STM32072B_EVAL eeprom lcd sd tsensor)
  10. set(BSP_F0_SOURCES_STM32091C_EVAL eeprom lcd sd tsensor)
  11. set(BSP_F0_DEVICE_STM32F072B_Discovery F072RB)
  12. set(BSP_F0_DEVICE_STM32F0308_Discovery F030R8)
  13. set(BSP_F0_DEVICE_STM32072B_EVAL F072VB)
  14. set(BSP_F0_DEVICE_STM32091C_EVAL F091VC)
  15. set(BSP_F1_BOARDS
  16. STM32F1xx_Nucleo STM32VL-Discovery STM3210C_EVAL STM3210E_EVAL
  17. )
  18. set(BSP_F1_COMPONENTS
  19. ak4343 cs43l22 hx8347d ili9320 ili9325 lis302dl spfd5408 st7735 stlm75
  20. stmpe811
  21. )
  22. set(BSP_F1_SOURCES_STM3210C_EVAL accelerometer audio eeprom io lcd sd ts)
  23. set(BSP_F1_SOURCES_STM3210E_EVAL audio lcd nand nor sd serialflash sram tsensor)
  24. set(BSP_F1_DEVICE_STM32F1xx_Nucleo F103RB)
  25. set(BSP_F1_DEVICE_STM32VL_Discovery F100RB)
  26. set(BSP_F1_DEVICE_STM3210C_EVAL F107VC)
  27. set(BSP_F1_DEVICE_STM3210E_EVAL F103ZE)
  28. set(BSP_F2_BOARDS
  29. STM32F2xx_Nucleo_144 STM322xG_EVAL
  30. )
  31. set(BSP_F2_COMPONENTS
  32. cs43l22 ili9320 ili9325 ili9341 ov2640 st7735 stmpe811
  33. )
  34. set(BSP_F2_SOURCES_STM322xG_EVAL audio camera eeprom io lcd sd sram ts)
  35. set(BSP_F2_DEVICE_STM32F2xx_Nucleo_144 F207ZG)
  36. set(BSP_F2_DEVICE_STM322xG_EVAL F207IG)
  37. set(BSP_F3_BOARDS
  38. STM32F3-Discovery STM32F3xx_Nucleo_32 STM32F3xx_Nucleo_144 STM32F3xx-Nucleo
  39. STM32F3348-Discovery STM32303C_EVAL STM32303E_EVAL STM32373C_EVAL
  40. )
  41. set(BSP_F3_COMPONENTS
  42. cs42l52 cs43l22 hx8347d hx8347g hx8347i ili9320 ili9325 ili9328 l3gd20
  43. lsm303dlhc spfd5408 st7735 stts751
  44. )
  45. set(BSP_F3_SOURCES_STM32F3_Discovery accelerometer gyroscope)
  46. set(BSP_F3_SOURCES_STM32303C_EVAL audio eeprom lcd sd tsensor)
  47. set(BSP_F3_SOURCES_STM32303E_EVAL audio eeprom lcd sd tsensor)
  48. set(BSP_F3_SOURCES_STM32373C_EVAL audio eeprom lcd sd tsensor)
  49. set(BSP_F3_DEVICE_STM32F3_Discovery F303VC)
  50. set(BSP_F3_DEVICE_STM32F3xx_Nucleo_144 F303ZE)
  51. set(BSP_F3_DEVICE_STM32F3348_Discovery F334C8)
  52. set(BSP_F3_DEVICE_STM32303C_EVAL F303VC)
  53. set(BSP_F3_DEVICE_STM32303E_EVAL F303VE)
  54. set(BSP_F3_DEVICE_STM32373C_EVAL F373VC)
  55. set(BSP_F4_BOARDS
  56. STM32F4-Discovery STM32F4xx_Nucleo_144 STM32F4xx-Nucleo STM32F401-Discovery
  57. STM32F411E-Discovery STM32F413H-Discovery STM32F429I-Discovery
  58. STM324x9I_EVAL STM324xG_EVAL STM32412G-Discovery STM32446E_EVAL
  59. STM32469I_EVAL STM32469I-Discovery
  60. )
  61. set(BSP_F4_COMPONENTS
  62. ampire480272 ampire640480 cs43l22 exc7200 ft6x06 ili9325 ili9341 l3gd20
  63. lis3dsh lis302dl ls016b8uy lsm303dlhc mfxstm32l152 n25q128a n25q256a
  64. n25q512a otm8009a ov2640 s5k5cag s25fl512s st7735 st7789h2 stmpe811
  65. stmpe1600 ts3510 wm8994
  66. )
  67. set(BSP_F4_SOURCES_STM32F4_Discovery accelerometer audio)
  68. set(BSP_F4_SOURCES_STM32F401_Discovery accelerometer audio gyroscope)
  69. set(BSP_F4_SOURCES_STM32F411E_Discovery accelerometer audio gyroscope)
  70. set(BSP_F4_SOURCES_STM32F413H_Discovery audio lcd psram qspi sd ts)
  71. set(BSP_F4_SOURCES_STM32F429I_Discovery eeprom gyroscope io lcd sdram ts)
  72. set(BSP_F4_SOURCES_STM324x9I_EVAL audio camera eeprom io lcd nor sd sdram sram ts)
  73. set(BSP_F4_SOURCES_STM324xG_EVAL audio camera eeprom io lcd sd sram ts)
  74. set(BSP_F4_SOURCES_STM32412G_Discovery audio eeprom lcd qspi sd ts)
  75. set(BSP_F4_SOURCES_STM3232446E_EVAL audio camera eeprom io lcd qspi sd sdram ts)
  76. set(BSP_F4_SOURCES_STM32469I_EVAL audio camera eeprom io lcd nor qspi sd sdram sram ts)
  77. set(BSP_F4_SOURCES_STM32469I_Discovery audio eeprom lcd qspi sd sdram ts)
  78. set(BSP_F4_DEVICE_STM32F4_Discovery F407VG)
  79. set(BSP_F4_DEVICE_STM32F401_Discovery F401VC)
  80. set(BSP_F4_DEVICE_STM32F411E_Discovery F411VE)
  81. set(BSP_F4_DEVICE_STM32F413H_Discovery F413ZH)
  82. set(BSP_F4_DEVICE_STM32F429I_Discovery F429ZI)
  83. set(BSP_F4_DEVICE_STM324x9I_EVAL F429NI)
  84. set(BSP_F4_DEVICE_STM324xG_EVAL F407IG)
  85. set(BSP_F4_DEVICE_STM32412G_Discovery F412ZG)
  86. set(BSP_F4_DEVICE_STM32446E_EVAL F446ZE)
  87. set(BSP_F4_DEVICE_STM32469I_EVAL F469NI)
  88. set(BSP_F4_DEVICE_STM32469I_Discovery F469NI)
  89. set(BSP_F7_BOARDS
  90. STM32F7xx_Nucleo_144 STM32F723E-Discovery STM32F769I_EVAL
  91. STM32F769I-Discovery STM32F7308-Discovery STM32F7508-Discovery
  92. STM32746G-Discovery STM32756G_EVAL
  93. )
  94. set(BSP_F7_COMPONENTS
  95. adv7533 ampire480272 ampire640480 exc7200 ft6x06 ft5336 mfxstm32l152
  96. mx25l512 n25q128a n25q512a otm8009a ov5640 ov9655 rk043fn48h s5k5cag st7735
  97. st7789h2 stmpe811 ts3510 wm8994
  98. )
  99. set(BSP_F7_SOURCES_STM32F723E_Discovery audio lcd psram qspi ts)
  100. set(BSP_F7_SOURCES_STM32F769I_EVAL audio camera eeprom io lcd nor qspi sd sdram sram ts)
  101. set(BSP_F7_SOURCES_STM32F769I_Discovery audio eeprom lcd qspi sd sdram ts)
  102. set(BSP_F7_SOURCES_STM32F7308_Discovery audio lcd psram qspi ts)
  103. set(BSP_F7_SOURCES_STM32F7508_Discovery audio camera eeprom lcd qspi sd sdram ts)
  104. set(BSP_F7_SOURCES_STM32746G_Discovery audio camera eeprom lcd qspi sd sdram ts)
  105. set(BSP_F7_SOURCES_STM32756G_EVAL audio camera eeprom io lcd nor qspi sd sdram sram ts)
  106. set(BSP_F7_DEVICE_STM32F723E_Discovery F723IE)
  107. set(BSP_F7_DEVICE_STM32F769I_EVAL F769NI)
  108. set(BSP_F7_DEVICE_STM32F769I_Discovery F769NI)
  109. set(BSP_F7_DEVICE_STM32F7308_Discovery F730I8)
  110. set(BSP_F7_DEVICE_STM32F7508_Discovery F750N8)
  111. set(BSP_F7_DEVICE_STM32746G_Discovery F746NG)
  112. set(BSP_F7_DEVICE_STM32756G_EVAL F756NG)
  113. if(NOT BSP_FIND_COMPONENTS)
  114. set(BSP_FIND_COMPONENTS
  115. STM32F0 STM32F1 STM32F2 STM32F3 STM32F4 STM32F7
  116. STM32G0 STM32G4
  117. STM32H7
  118. STM32L0 STM32L1 STM32L4
  119. )
  120. endif()
  121. foreach(COMP ${BSP_FIND_COMPONENTS})
  122. string(TOLOWER ${COMP} COMP_L)
  123. string(TOUPPER ${COMP} COMP_U)
  124. string(REGEX MATCH "^STM32([FGHL][0-9]).*$" COMP_U ${COMP_U})
  125. if(NOT CMAKE_MATCH_1)
  126. message(FATAL_ERROR "Unknown HAL component: ${COMP}")
  127. endif()
  128. set(FAMILY ${CMAKE_MATCH_1})
  129. string(TOLOWER ${FAMILY} FAMILY_L)
  130. if(NOT STM32_CUBE_${FAMILY}_PATH)
  131. set(STM32_CUBE_${FAMILY}_PATH /opt/STM32Cube${FAMILY} CACHE PATH "Path to STM32Cube${FAMILY}")
  132. message(STATUS "No STM32_CUBE_${FAMILY}_PATH specified using default: ${STM32_CUBE_${FAMILY}_PATH}")
  133. endif()
  134. find_path(BSP_${FAMILY}_PATH
  135. NAMES Components/Common/io.h
  136. PATHS "${STM32_CUBE_${FAMILY}_PATH}/Drivers/BSP"
  137. NO_DEFAULT_PATH
  138. )
  139. if (NOT BSP_${FAMILY}_PATH)
  140. continue()
  141. endif()
  142. set(BSP_${FAMILY}_INCLUDE "${BSP_${FAMILY}_PATH}/Components/Common")
  143. add_library(BSP::STM32::${FAMILY} INTERFACE IMPORTED)
  144. target_link_libraries(BSP::STM32::${FAMILY} INTERFACE STM32::${FAMILY})
  145. target_include_directories(BSP::STM32::${FAMILY} INTERFACE "${BSP_${FAMILY}_PATH}/Components/Common")
  146. foreach(BOARD ${BSP_${FAMILY}_BOARDS})
  147. string(REPLACE "-" "_" BOARD_CANONICAL ${BOARD})
  148. string(TOLOWER ${BOARD_CANONICAL} BOARD_CANONICAL_L)
  149. find_file(BSP_${BOARD_CANONICAL}_SOURCE
  150. NAMES ${BOARD_CANONICAL_L}.c
  151. PATHS "${BSP_${FAMILY}_PATH}/${BOARD}"
  152. NO_DEFAULT_PATH
  153. )
  154. if (NOT BSP_${BOARD_CANONICAL}_SOURCE)
  155. continue()
  156. endif()
  157. add_library(BSP::STM32::${BOARD_CANONICAL} INTERFACE IMPORTED)
  158. target_link_libraries(BSP::STM32::${BOARD_CANONICAL} INTERFACE BSP::STM32::${FAMILY} CMSIS::STM32::${FAMILY})
  159. target_include_directories(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${FAMILY}_PATH}/${BOARD}")
  160. target_sources(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${BOARD_CANONICAL}_SOURCE}")
  161. foreach(SRC ${BSP_${FAMILY}_SOURCES_${BOARD_CANONICAL}})
  162. target_sources(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${FAMILY}_PATH}/${BOARD}/${BOARD_CANONICAL_L}_${SRC}.c")
  163. endforeach()
  164. if(BSP_${FAMILY}_DEVICE_${BOARD_CANONICAL})
  165. target_link_libraries(BSP::STM32::${BOARD_CANONICAL} INTERFACE CMSIS::STM32::${BSP_${FAMILY}_DEVICE_${BOARD_CANONICAL}})
  166. endif()
  167. endforeach()
  168. foreach(BCOMP ${BSP_${FAMILY}_COMPONENTS})
  169. string(TOLOWER ${BCOMP} BCOMP_L)
  170. string(TOUPPER ${BCOMP} BCOMP_U)
  171. add_library(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE IMPORTED)
  172. target_link_libraries(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE BSP::STM32::${FAMILY} CMSIS::STM32::${FAMILY})
  173. target_include_directories(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE "${BSP_${FAMILY}_PATH}/Components/${BCOMP}")
  174. find_file(BSP_${BOARD_CANONICAL}_${COMP}_SOURCE
  175. NAMES ${BCOMP}.c
  176. PATHS "${BSP_${FAMILY}_PATH}/Components/${BCOMP}"
  177. NO_DEFAULT_PATH
  178. )
  179. if (BSP_${BOARD_CANONICAL}_${COMP}_SOURCE)
  180. target_sources(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE "${BSP_${BOARD_CANONICAL}_${COMP}_SOURCE}")
  181. endif()
  182. endforeach()
  183. set(BSP_${COMP}_FOUND TRUE)
  184. if(BSP_${COMP}_FOUND)
  185. list(APPEND BSP_INCLUDE_DIRS "${BSP_${FAMILY}_INCLUDE}")
  186. endif()
  187. endforeach()
  188. include(FindPackageHandleStandardArgs)
  189. find_package_handle_standard_args(BSP
  190. REQUIRED_VARS BSP_INCLUDE_DIRS
  191. FOUND_VAR BSP_FOUND
  192. HANDLE_COMPONENTS
  193. )