فهرست منبع

BSP
Add a find script for BSP devices

ma11 10 سال پیش
والد
کامیت
cd6ab68ead
1فایلهای تغییر یافته به همراه85 افزوده شده و 0 حذف شده
  1. 85 0
      cmake/FindSTM32BSP.cmake

+ 85 - 0
cmake/FindSTM32BSP.cmake

@@ -0,0 +1,85 @@
+IF(STM32_FAMILY STREQUAL "F4")
+	IF(STM_BOARD STREQUAL "STM32F429I-Discovery")
+		SET(BSP_COMPONENTS eeprom
+			    gyroscope
+			    io
+			    lcd
+			    sdram
+			    ts)
+		SET(BSP_PREFIX stm32f429i_discovery_)
+		SET(BSP_HEADERS stm32f429i_discovery.h)
+		SET(BSP_SRC stm32f429i_discovery.c)
+	ENDIF()
+	set(COMMON_COMPONENTS ampire480272
+			      ampire640480
+			      cs43l22
+			      exc7200
+			      ili9325
+			      ili9341
+			      l3gd20
+			      lis302dl
+			      lis3dsh
+			      lsm303dlhc
+			      mfxstm32l152
+			      n25q256a
+			      ov2640
+			      s5k5cag
+			      st7735
+			      stmpe1600
+			      stmpe811
+			      ts3510
+			      wm8994
+			      )
+ENDIF()
+
+IF(NOT STM32BSP_FIND_COMPONENTS)
+	SET(STM32BSP_FIND_COMPONENTS ${BSP_COMPONENTS} ${COMMON_COMPONENTS})
+	MESSAGE(STATUS "No STM32BSP components selected, using all: ${STM32BSP_FIND_COMPONENTS}")
+ENDIF()
+
+
+
+FOREACH(cmp ${STM32BSP_FIND_COMPONENTS})
+	LIST(FIND BSP_COMPONENTS ${cmp} STM32BSP_FOUND_INDEX)
+	IF(${STM32BSP_FOUND_INDEX} LESS 0)
+		LIST(FIND COMMON_COMPONENTS ${cmp} COMMON_FOUND_INDEX)
+		IF(${COMMON_FOUND_INDEX} LESS 0)
+			MESSAGE(FATAL_ERROR "Unknown STM32BSP component: ${cmp}. Available components: ${BSP_COMPONENTS} and ${COMMON_COMPONENTS}")
+		ELSE()
+			LIST(APPEND BSP_COMMON_HEADER ${cmp}.h)
+			LIST(APPEND BSP_SRC ${cmp}.c)
+    		ENDIF()
+	ELSE()
+		LIST(APPEND BSP_HEADERS ${BSP_PREFIX}${cmp}.h)
+		LIST(APPEND BSP_SRC ${BSP_PREFIX}${cmp}.c)
+	ENDIF()
+ENDFOREACH()
+
+FIND_PATH(STM32BSP_INCLUDE_DIR ${BSP_HEADERS}
+	HINTS ${STM32Cube_DIR}/Drivers/BSP/${STM_BOARD}
+	CMAKE_FIND_ROOT_PATH_BOTH
+	)
+
+FOREACH(cmp ${BSP_COMMON_HEADERS})
+	FIND_PATH(STM32BSP_${cmp}_INCLUDE_DIR ${cmp}
+		HINTS ${STM32Cube_DIR}/Drivers/BSP/Components
+		PATH_SUFFIXES ${cmp}
+		CMAKE_FIND_ROOT_PATH_BOTH
+	)
+	LIST(APPEND BSP_HEADERS ${STM32BSP_${cmp}_INCLUDE_DIR})
+ENDFOREACH()
+
+FOREACH(file ${BSP_SRC})
+	STRING(REPLACE ".c" "" subfolder ${file})
+	FIND_FILE(BSP_${file}_FILE ${file}
+		HINTS ${STM32Cube_DIR}/Drivers/BSP/${STM_BOARD} ${STM32Cube_DIR}/Drivers/BSP/Components
+		PATH_SUFFIXES ${subfolder}
+		CMAKE_FIND_ROOT_PATH_BOTH
+		)
+	MESSAGE(STATUS "BSP file is " ${BSP_${file}_FILE})
+	LIST(APPEND STM32BSP_SOURCES ${BSP_${file}_FILE})
+ENDFOREACH()
+
+INCLUDE(FindPackageHandleStandardArgs)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(STM32BSP DEFAULT_MSG STM32BSP_INCLUDE_DIR STM32BSP_SOURCES)