|
|
@@ -0,0 +1,91 @@
|
|
|
+IF(STM32_FAMILY STREQUAL "F4")
|
|
|
+ SET(STD_COMPONENTS adc can cec crc cryp dac dbgmcu dcmi dfsdm dma2d dma dsi
|
|
|
+ exti flash flash_ramfunc fmc fmpi2c fsmc gpio hash i2c iwdg lptim ltdc pwr qspi rcc
|
|
|
+ rng rtc sai sdio spdifrx spi syscfg tim usart wwdg)
|
|
|
+
|
|
|
+ SET(STD_REQUIRED_COMPONENTS dma dma2d fmc i2c ltdc gpio rcc spi usart adc tim exti syscfg)
|
|
|
+
|
|
|
+ SET(STD_EX_COMPONENTS cryp hash)
|
|
|
+
|
|
|
+ SET(STD_PREFIX stm32f4xx_)
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+SET(STD_HEADERS
|
|
|
+ misc.h
|
|
|
+ stm32f4xx.h
|
|
|
+ core_cm4.h
|
|
|
+ )
|
|
|
+
|
|
|
+SET(STD_SRCS
|
|
|
+ misc.c
|
|
|
+ )
|
|
|
+
|
|
|
+IF(NOT STM32STDPERIPH_FIND_COMPONENTS)
|
|
|
+ SET(STM32STDPERIPH_FIND_COMPONENTS ${STD_COMPONENTS})
|
|
|
+ MESSAGE(STATUS "No STM32STD components selected, using all: ${STM32STD_FIND_COMPONENTS}")
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+FOREACH(cmp ${STD_REQUIRED_COMPONENTS})
|
|
|
+ LIST(FIND STM32STDPERIPH_FIND_COMPONENTS ${cmp} STM32STD_FOUND_INDEX)
|
|
|
+ IF(${STM32STD_FOUND_INDEX} LESS 0)
|
|
|
+ LIST(APPEND STM32STDPERIPH_FIND_COMPONENTS ${cmp})
|
|
|
+ ENDIF()
|
|
|
+ENDFOREACH()
|
|
|
+
|
|
|
+FOREACH(cmp ${STM32STD_FIND_COMPONENTS})
|
|
|
+ LIST(FIND STD_COMPONENTS ${cmp} STM32STD_FOUND_INDEX)
|
|
|
+ IF($STM32STD_FOUND_INDEX LESS 0)
|
|
|
+ MESSAGE(FATAL_ERROR "Unknown STM32STD Peripheral component: ${cmp}. Available components: ${STD_COMPONENTS}")
|
|
|
+ ELSE()
|
|
|
+ LIST(APPEND STD_HEADERS ${STD_PREFIX}${cmp}.h)
|
|
|
+ LIST(APPEND STD_SRCS ${STD_PREFIX}${cmp}.c)
|
|
|
+ ENDIF()
|
|
|
+ LIST(FIND STD_EX_COMPONENTS ${cmp} STM32STD_FOUND_INDEX)
|
|
|
+ if(NOT (${STM32STD_FOUND_INDEX} LESS 0))
|
|
|
+ STRING(COMPARE EQUAL ${cmp} "cryp" STM32_EQUAL)
|
|
|
+ if(${STM32_EQUAL})
|
|
|
+ LIST(APPEND STD_SRCS ${STD_PREFIX}${cmp}_aes.c)
|
|
|
+ LIST(APPEND STD_SRCS ${STD_PREFIX}${cmp}_des.c)
|
|
|
+ LIST(APPEND STD_SRCS ${STD_PREFIX}${cmp}_tdes.c)
|
|
|
+ ENDIF()
|
|
|
+ STRING(COMPARE EQUAL ${cmp} "hash" STM32_EQUAL)
|
|
|
+ if(${STM32_EQUAL})
|
|
|
+ LIST(APPEND STD_SRCS ${STD_PREFIX}${cmp}_md5.c)
|
|
|
+ LIST(APPEND STD_SRCS ${STD_PREFIX}${cmp}_sha1.c)
|
|
|
+ ENDIF()
|
|
|
+ ENDIF()
|
|
|
+ENDFOREACH()
|
|
|
+
|
|
|
+LIST(REMOVE_DUPLICATES STD_HEADERS)
|
|
|
+LIST(REMOVE_DUPLICATES STD_SRCS)
|
|
|
+
|
|
|
+FOREACH(HEADER ${STD_HEADERS})
|
|
|
+ FIND_PATH(STM32STD_${HEADER}_INCLUDE_DIR
|
|
|
+ NAMES ${HEADER}
|
|
|
+ PATHS
|
|
|
+ ${STM32STD_DIR}/Libraries/CMSIS/Device/ST/STM32F4xx/Include
|
|
|
+ ${STM32STD_DIR}/Libraries/CMSIS/Include
|
|
|
+ ${STM32STD_DIR}/Libraries/STM32F4xx_StdPeriph_Driver/inc
|
|
|
+ CMAKE_FIND_ROOT_PATH_BOTH
|
|
|
+ )
|
|
|
+ LIST(APPEND STM32STD_INCLUDE_DIR ${STM32STD_${HEADER}_INCLUDE_DIR})
|
|
|
+ENDFOREACH()
|
|
|
+
|
|
|
+SET(SRC_HINTS_DIR ${STM32STD_DIR}/Libraries/STM32${STM32_FAMILY}xx_StdPeriph_Driver/src)
|
|
|
+
|
|
|
+FOREACH(STD_SRC ${STD_SRCS})
|
|
|
+ STRING(MAKE_C_IDENTIFIER "${STD_SRC}" STD_SRC_CLEAN)
|
|
|
+ SET(STD_${STD_SRC_CLEAN}_FILE STD_SRC_FILE-NOTFOUND)
|
|
|
+ FIND_FILE(STD_${STD_SRC_CLEAN}_FILE ${STD_SRC}
|
|
|
+ PATH_SUFFIXES src
|
|
|
+ HINTS ${SRC_HINTS_DIR}
|
|
|
+ CMAKE_FIND_ROOT_PATH_BOTH
|
|
|
+ )
|
|
|
+ LIST(APPEND STM32STD_SOURCES ${STD_${STD_SRC_CLEAN}_FILE})
|
|
|
+ENDFOREACH()
|
|
|
+
|
|
|
+LIST(REMOVE_DUPLICATES STM32STD_INCLUDE_DIR)
|
|
|
+
|
|
|
+INCLUDE(FindPackageHandleStandardArgs)
|
|
|
+
|
|
|
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(STM32STD DEFAULT_MSG STM32STD_INCLUDE_DIR STM32STD_SOURCES)
|