FindStdPeriphLib.cmake 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. IF(STM32_FAMILY STREQUAL "F1")
  2. SET(STDPERIPH_HEADERS
  3. stm32f10x_adc.h
  4. stm32f10x_bkp.h
  5. stm32f10x_can.h
  6. stm32f10x_cec.h
  7. stm32f10x_crc.h
  8. stm32f10x_dac.h
  9. stm32f10x_dbgmcu.h
  10. stm32f10x_dma.h
  11. stm32f10x_exti.h
  12. stm32f10x_flash.h
  13. stm32f10x_fsmc.h
  14. stm32f10x_gpio.h
  15. stm32f10x_i2c.h
  16. stm32f10x_iwdg.h
  17. stm32f10x_pwr.h
  18. stm32f10x_rcc.h
  19. stm32f10x_rtc.h
  20. stm32f10x_sdio.h
  21. stm32f10x_spi.h
  22. stm32f10x_tim.h
  23. stm32f10x_usart.h
  24. stm32f10x_wwdg.h
  25. stm32f10x_misc.h
  26. )
  27. SET(STDPERIPH_SRCS
  28. misc.c
  29. stm32f10x_adc.c
  30. stm32f10x_bkp.c
  31. stm32f10x_can.c
  32. stm32f10x_cec.c
  33. stm32f10x_crc.c
  34. stm32f10x_dac.c
  35. stm32f10x_dbgmcu.c
  36. stm32f10x_dma.c
  37. stm32f10x_exti.c
  38. stm32f10x_flash.c
  39. stm32f10x_fsmc.c
  40. stm32f10x_gpio.c
  41. stm32f10x_i2c.c
  42. stm32f10x_iwdg.c
  43. stm32f10x_pwr.c
  44. stm32f10x_rcc.c
  45. stm32f10x_rtc.c
  46. stm32f10x_sdio.c
  47. stm32f10x_spi.c
  48. stm32f10x_tim.c
  49. stm32f10x_usart.c
  50. stm32f10x_wwdg.c
  51. )
  52. ELSEIF(STM32_FAMILY STREQUAL "F4")
  53. SET(STDPERIPH_HEADERS
  54. stm32f4xx_adc.h
  55. stm32f4xx_can.h
  56. stm32f4xx_crc.h
  57. stm32f4xx_cryp.h
  58. stm32f4xx_dac.h
  59. stm32f4xx_dbgmcu.h
  60. stm32f4xx_dcmi.h
  61. stm32f4xx_dma.h
  62. stm32f4xx_dma2d.h
  63. stm32f4xx_exti.h
  64. stm32f4xx_flash.h
  65. stm32f4xx_fmc.h
  66. stm32f4xx_fsmc.h
  67. stm32f4xx_gpio.h
  68. stm32f4xx_hash.h
  69. stm32f4xx_i2c.h
  70. stm32f4xx_iwdg.h
  71. stm32f4xx_ltdc.h
  72. stm32f4xx_pwr.h
  73. stm32f4xx_rcc.h
  74. stm32f4xx_rng.h
  75. stm32f4xx_rtc.h
  76. stm32f4xx_sai.h
  77. stm32f4xx_sdio.h
  78. stm32f4xx_spi.h
  79. stm32f4xx_syscfg.h
  80. stm32f4xx_tim.h
  81. stm32f4xx_usart.h
  82. stm32f4xx_wwdg.h
  83. )
  84. SET(STDPERIPH_SRCS
  85. misc.c
  86. stm32f4xx_adc.c
  87. stm32f4xx_can.c
  88. stm32f4xx_crc.c
  89. stm32f4xx_cryp.c
  90. stm32f4xx_cryp_aes.c
  91. stm32f4xx_cryp_des.c
  92. stm32f4xx_cryp_tdes.c
  93. stm32f4xx_dac.c
  94. stm32f4xx_dbgmcu.c
  95. stm32f4xx_dcmi.c
  96. stm32f4xx_dma.c
  97. stm32f4xx_dma2d.c
  98. stm32f4xx_exti.c
  99. stm32f4xx_flash.c
  100. stm32f4xx_gpio.c
  101. stm32f4xx_hash.c
  102. stm32f4xx_hash_md5.c
  103. stm32f4xx_hash_sha1.c
  104. stm32f4xx_i2c.c
  105. stm32f4xx_iwdg.c
  106. stm32f4xx_ltdc.c
  107. stm32f4xx_pwr.c
  108. stm32f4xx_rcc.c
  109. stm32f4xx_rng.c
  110. stm32f4xx_rtc.c
  111. stm32f4xx_sai.c
  112. stm32f4xx_sdio.c
  113. stm32f4xx_spi.c
  114. stm32f4xx_syscfg.c
  115. stm32f4xx_tim.c
  116. stm32f4xx_usart.c
  117. stm32f4xx_wwdg.c
  118. )
  119. SET(STDPERIPH_SRCS_40_41xxx
  120. stm32f4xx_fsmc.c
  121. )
  122. SET(STDPERIPH_SRCS_427_437xx
  123. stm32f4xx_fmc.c
  124. )
  125. SET(STDPERIPH_SRCS_429_439xx
  126. stm32f4xx_fmc.c
  127. )
  128. ENDIF()
  129. STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER)
  130. IF(NOT STM32_CHIP_TYPE)
  131. FOREACH(CHIP_TYPE ${STM32_CHIP_TYPES})
  132. STRING(TOLOWER ${CHIP_TYPE} CHIP_TYPE_LOWER)
  133. LIST(APPEND STDPERIPH_FIND_LIBS stdperiph_${STM32_FAMILY_LOWER}_${CHIP_TYPE_LOWER})
  134. ENDFOREACH()
  135. ELSE()
  136. STRING(TOLOWER ${STM32_CHIP_TYPE} STM32_CHIP_TYPE_LOWER)
  137. SET(STDPERIPH_FIND_LIBS stdperiph_${STM32_FAMILY_LOWER}_${STM32_CHIP_TYPE_LOWER})
  138. ENDIF()
  139. FIND_PATH(StdPeriphLib_INCLUDE_DIR ${STDPERIPH_HEADERS}
  140. PATH_SUFFIXES include stm32${STM32_FAMILY_LOWER}
  141. )
  142. FOREACH(STDPERIPH_LIB_NAME ${STDPERIPH_FIND_LIBS})
  143. SET(StdPeriphLib_LIBRARY STDPERIPH_LIBRARY-NOTFOUND)
  144. FIND_LIBRARY(StdPeriphLib_LIBRARY
  145. NAMES ${STDPERIPH_LIB_NAME}
  146. PATH_SUFFIXES lib
  147. )
  148. LIST(APPEND StdPeriphLib_LIBRARIES ${StdPeriphLib_LIBRARY})
  149. ENDFOREACH()
  150. STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER)
  151. FOREACH(STDPERIPH_SRC ${STDPERIPH_SRCS})
  152. SET(STDPERIPH_SRC_FILE STDPERIPH_SRC_FILE-NOTFOUND)
  153. FIND_FILE(STDPERIPH_SRC_FILE NAMES ${STDPERIPH_SRC} PATHS ${CMAKE_FIND_ROOT_PATH} PATH_SUFFIXES share/stdperiph/stm32${STM32_FAMILY_LOWER} stdperiph/stm32${STM32_FAMILY_LOWER})
  154. LIST(APPEND StdPeriphLib_SOURCES ${STDPERIPH_SRC_FILE})
  155. ENDFOREACH()
  156. IF(NOT STM32_CHIP_TYPE)
  157. FOREACH(CHIP_TYPE ${STM32_CHIP_TYPES})
  158. IF(STDPERIPH_SRCS_${CHIP_TYPE})
  159. FOREACH(STDPERIPH_SRC ${STDPERIPH_SRCS_${CHIP_TYPE}})
  160. SET(STDPERIPH_SRC_FILE STDPERIPH_SRC_FILE-NOTFOUND)
  161. FIND_FILE(STDPERIPH_SRC_FILE NAMES ${STDPERIPH_SRC} PATHS ${CMAKE_FIND_ROOT_PATH} PATH_SUFFIXES share/stdperiph/stm32${STM32_FAMILY_LOWER} stdperiph/stm32${STM32_FAMILY_LOWER})
  162. LIST(APPEND StdPeriphLib_SOURCES_${CHIP_TYPE} ${STDPERIPH_SRC_FILE})
  163. LIST(APPEND STDPERIPH_SRCSRC StdPeriphLib_SOURCES_${CHIP_TYPE})
  164. ENDFOREACH()
  165. ENDIF()
  166. ENDFOREACH()
  167. ELSE()
  168. IF(STDPERIPH_SRCS_${STM32_CHIP_TYPE})
  169. FOREACH(STDPERIPH_SRC ${STDPERIPH_SRCS_${STM32_CHIP_TYPE}})
  170. SET(STDPERIPH_SRC_FILE STDPERIPH_SRC_FILE-NOTFOUND)
  171. FIND_FILE(STDPERIPH_SRC_FILE NAMES ${STDPERIPH_SRC} PATHS ${CMAKE_FIND_ROOT_PATH} PATH_SUFFIXES share/stdperiph/stm32${STM32_FAMILY_LOWER} stdperiph/stm32${STM32_FAMILY_LOWER})
  172. LIST(APPEND StdPeriphLib_SOURCES ${STDPERIPH_SRC_FILE})
  173. ENDFOREACH()
  174. ENDIF()
  175. ENDIF()
  176. IF(STDPERIPH_USE_ASSERT)
  177. ADD_DEFINITIONS("-D\"assert_param(expr)\"=\"((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))\"")
  178. ELSE()
  179. ADD_DEFINITIONS("-D\"assert_param(expr)\"=\"((void)0)\"")
  180. ENDIF()
  181. INCLUDE(FindPackageHandleStandardArgs)
  182. IF(NOT STM32_CHIP_TYPE)
  183. FIND_PACKAGE_HANDLE_STANDARD_ARGS(StdPeriphLib DEFAULT_MSG StdPeriphLib_LIBRARIES StdPeriphLib_INCLUDE_DIR StdPeriphLib_SOURCES ${STDPERIPH_SRCSRC})
  184. ELSE()
  185. FIND_PACKAGE_HANDLE_STANDARD_ARGS(StdPeriphLib DEFAULT_MSG StdPeriphLib_LIBRARIES StdPeriphLib_INCLUDE_DIR StdPeriphLib_SOURCES)
  186. ENDIF()
  187. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_STDPERIPH_DRIVER")
  188. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_STDPERIPH_DRIVER")