FindBSP.cmake 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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_STM32F0xx_Nucleo_32 stm32f0xx_nucleo_32.c)
  9. set(BSP_F0_SOURCES_STM32F0xx_Nucleo stm32f0xx_nucleo.c)
  10. set(BSP_F0_SOURCES_STM32F072B_Discovery stm32f072b_discovery_eeprom.c stm32f072b_discovery_gyroscope.c stm32f072b_discovery.c)
  11. set(BSP_F0_SOURCES_STM32F0308_Discovery stm32f0308_discovery.c)
  12. set(BSP_F0_SOURCES_STM32072B_EVAL stm32072b_eval_eeprom.c stm32072b_eval_lcd.c stm32072b_eval_sd.c stm32072b_eval_tsensor.c stm32072b_eval.c)
  13. set(BSP_F0_SOURCES_STM32091C_EVAL stm32091c_eval_eeprom.c stm32091c_eval_lcd.c stm32091c_eval_sd.c stm32091c_eval_tsensor.c stm32091c_eval.c)
  14. set(BSP_F0_DEVICE_STM32F072B_Discovery F072RB)
  15. set(BSP_F0_DEVICE_STM32F0308_Discovery F030R8)
  16. set(BSP_F0_DEVICE_STM32072B_EVAL F072VB)
  17. set(BSP_F0_DEVICE_STM32091C_EVAL F091VC)
  18. if(NOT BSP_FIND_COMPONENTS)
  19. set(BSP_FIND_COMPONENTS
  20. STM32F0 STM32F1 STM32F2 STM32F3 STM32F4 STM32F7
  21. STM32G0 STM32G4
  22. STM32H7
  23. STM32L0 STM32L1 STM32L4
  24. )
  25. endif()
  26. foreach(COMP ${BSP_FIND_COMPONENTS})
  27. string(TOLOWER ${COMP} COMP_L)
  28. string(TOUPPER ${COMP} COMP_U)
  29. string(REGEX MATCH "^STM32([FGHL][0-9]).*$" COMP_U ${COMP_U})
  30. if(NOT CMAKE_MATCH_1)
  31. message(FATAL_ERROR "Unknown HAL component: ${COMP}")
  32. endif()
  33. set(FAMILY ${CMAKE_MATCH_1})
  34. string(TOLOWER ${FAMILY} FAMILY_L)
  35. if(NOT STM32_CUBE_${FAMILY}_PATH)
  36. set(STM32_CUBE_${FAMILY}_PATH /opt/STM32Cube${FAMILY} CACHE PATH "Path to STM32Cube${FAMILY}")
  37. message(STATUS "No STM32_CUBE_${FAMILY}_PATH specified using default: ${STM32_CUBE_${FAMILY}_PATH}")
  38. endif()
  39. find_path(BSP_${FAMILY}_PATH
  40. NAMES Components/Common/io.h
  41. PATHS "${STM32_CUBE_${FAMILY}_PATH}/Drivers/BSP"
  42. NO_DEFAULT_PATH
  43. )
  44. if (NOT BSP_${FAMILY}_PATH)
  45. continue()
  46. endif()
  47. set(BSP_${FAMILY}_INCLUDE "${BSP_${FAMILY}_PATH}/Components/Common")
  48. add_library(BSP::STM32::${FAMILY} INTERFACE IMPORTED)
  49. target_link_libraries(BSP::STM32::${FAMILY} INTERFACE STM32::${FAMILY})
  50. target_include_directories(BSP::STM32::${FAMILY} INTERFACE "${BSP_${FAMILY}_PATH}/Components/Common")
  51. foreach(BOARD ${BSP_${FAMILY}_BOARDS})
  52. string(REPLACE "-" "_" BOARD_CANONICAL ${BOARD})
  53. add_library(BSP::STM32::${BOARD_CANONICAL} INTERFACE IMPORTED)
  54. target_link_libraries(BSP::STM32::${BOARD_CANONICAL} INTERFACE BSP::STM32::${FAMILY} CMSIS::STM32::${FAMILY})
  55. target_include_directories(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${FAMILY}_PATH}/${BOARD}")
  56. foreach(SRC ${BSP_${FAMILY}_SOURCES_${BOARD_CANONICAL}})
  57. target_sources(BSP::STM32::${BOARD_CANONICAL} INTERFACE "${BSP_${FAMILY}_PATH}/${BOARD}/${SRC}")
  58. endforeach()
  59. if(BSP_${FAMILY}_DEVICE_${BOARD_CANONICAL})
  60. target_link_libraries(BSP::STM32::${BOARD_CANONICAL} INTERFACE CMSIS::STM32::${BSP_${FAMILY}_DEVICE_${BOARD_CANONICAL}})
  61. endif()
  62. endforeach()
  63. foreach(BCOMP ${BSP_${FAMILY}_COMPONENTS})
  64. string(TOLOWER ${BCOMP} BCOMP_L)
  65. string(TOUPPER ${BCOMP} BCOMP_U)
  66. add_library(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE IMPORTED)
  67. target_link_libraries(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE BSP::STM32::${FAMILY} CMSIS::STM32::${FAMILY})
  68. target_include_directories(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE "${BSP_${FAMILY}_PATH}/Components/${BCOMP}")
  69. target_sources(BSP::STM32::${FAMILY}::${BCOMP_U} INTERFACE "${BSP_${FAMILY}_PATH}/Components/${BCOMP}/${BCOMP}.c")
  70. endforeach()
  71. set(BSP_${COMP}_FOUND TRUE)
  72. if(BSP_${COMP}_FOUND)
  73. list(APPEND BSP_INCLUDE_DIRS "${BSP_${FAMILY}_INCLUDE}")
  74. endif()
  75. endforeach()
  76. include(FindPackageHandleStandardArgs)
  77. find_package_handle_standard_args(BSP
  78. REQUIRED_VARS BSP_INCLUDE_DIRS
  79. FOUND_VAR BSP_FOUND
  80. HANDLE_COMPONENTS
  81. )