FindSTM32BSP.cmake 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. MESSAGE("STM Board: ${STM_BOARD}")
  2. IF(STM32_FAMILY STREQUAL "F4")
  3. IF(STM_BOARD STREQUAL "STM32F429I-Discovery")
  4. SET(BSP_COMPONENTS
  5. eeprom
  6. gyroscope
  7. io
  8. lcd
  9. sdram
  10. ts)
  11. SET(BSP_PREFIX stm32f429i_discovery_)
  12. SET(BSP_HEADERS stm32f429i_discovery.h)
  13. SET(BSP_SRC stm32f429i_discovery.c)
  14. ENDIF()
  15. IF(STM_BOARD STREQUAL "STM324xG_EVAL")
  16. SET(BSP_COMPONENTS
  17. lcd
  18. camera
  19. eeprom
  20. io
  21. sd
  22. sram
  23. ts)
  24. SET(BSP_PREFIX stm324xg_eval_)
  25. SET(BSP_HEADERS stm324xg_eval.h)
  26. SET(BSP_SRC stm324xg_eval.c)
  27. ENDIF()
  28. set(COMMON_COMPONENTS ampire480272
  29. ampire640480
  30. cs43l22
  31. exc7200
  32. ili9325
  33. ili9341
  34. l3gd20
  35. lis302dl
  36. lis3dsh
  37. lsm303dlhc
  38. mfxstm32l152
  39. n25q256a
  40. ov2640
  41. s5k5cag
  42. st7735
  43. stmpe1600
  44. stmpe811
  45. ts3510
  46. wm8994
  47. )
  48. ENDIF()
  49. IF(NOT STM32BSP_FIND_COMPONENTS)
  50. SET(STM32BSP_FIND_COMPONENTS ${BSP_COMPONENTS} ${COMMON_COMPONENTS})
  51. MESSAGE(STATUS "No STM32BSP components selected, using all: ${STM32BSP_FIND_COMPONENTS}")
  52. ENDIF()
  53. FOREACH(cmp ${STM32BSP_FIND_COMPONENTS})
  54. LIST(FIND BSP_COMPONENTS ${cmp} STM32BSP_FOUND_INDEX)
  55. IF(${STM32BSP_FOUND_INDEX} LESS 0)
  56. LIST(FIND COMMON_COMPONENTS ${cmp} COMMON_FOUND_INDEX)
  57. IF(${COMMON_FOUND_INDEX} LESS 0)
  58. MESSAGE(FATAL_ERROR "Unknown STM32BSP component: ${cmp}. Available components: ${BSP_COMPONENTS} and ${COMMON_COMPONENTS}")
  59. ELSE()
  60. LIST(APPEND BSP_COMMON_HEADER ${cmp}.h)
  61. LIST(APPEND BSP_SRC ${cmp}.c)
  62. ENDIF()
  63. ELSE()
  64. LIST(APPEND BSP_HEADERS ${BSP_PREFIX}${cmp}.h)
  65. LIST(APPEND BSP_SRC ${BSP_PREFIX}${cmp}.c)
  66. ENDIF()
  67. ENDFOREACH()
  68. FIND_PATH(STM32BSP_INCLUDE_DIR ${BSP_HEADERS}
  69. HINTS ${STM32Cube_DIR}/Drivers/BSP/${STM_BOARD}
  70. CMAKE_FIND_ROOT_PATH_BOTH
  71. )
  72. FOREACH(cmp ${BSP_COMMON_HEADERS})
  73. FIND_PATH(STM32BSP_${cmp}_INCLUDE_DIR ${cmp}
  74. HINTS ${STM32Cube_DIR}/Drivers/BSP/Components
  75. PATH_SUFFIXES ${cmp}
  76. CMAKE_FIND_ROOT_PATH_BOTH
  77. )
  78. LIST(APPEND BSP_HEADERS ${STM32BSP_${cmp}_INCLUDE_DIR})
  79. ENDFOREACH()
  80. FOREACH(file ${BSP_SRC})
  81. STRING(REPLACE ".c" "" subfolder ${file})
  82. FIND_FILE(BSP_${file}_FILE ${file}
  83. HINTS ${STM32Cube_DIR}/Drivers/BSP/${STM_BOARD} ${STM32Cube_DIR}/Drivers/BSP/Components
  84. PATH_SUFFIXES ${subfolder}
  85. CMAKE_FIND_ROOT_PATH_BOTH
  86. )
  87. MESSAGE(STATUS "BSP file is " ${BSP_${file}_FILE})
  88. LIST(APPEND STM32BSP_SOURCES ${BSP_${file}_FILE})
  89. ENDFOREACH()
  90. INCLUDE(FindPackageHandleStandardArgs)
  91. FIND_PACKAGE_HANDLE_STANDARD_ARGS(STM32BSP DEFAULT_MSG STM32BSP_INCLUDE_DIR STM32BSP_SOURCES)