CMakeLists.txt 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. PROJECT(stm32stdperiph)
  2. CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
  3. ENABLE_LANGUAGE(ASM)
  4. IF(NOT DEFINED CMSIS_INCLUDE_DIR)
  5. FIND_PACKAGE(CMSIS REQUIRED)
  6. ENDIF()
  7. IF(${STM32_FAMILY} STREQUAL "F1")
  8. IF(NOT STM32F1_StdPeriphLib_DIR)
  9. SET(STM32F1_StdPeriphLib_DIR "/opt/STM32F10x_StdPeriph_Lib_V3.5.0")
  10. MESSAGE(STATUS "No STM32F1_StdPeriphLib_DIR specified, using default: " ${STM32F1_StdPeriphLib_DIR})
  11. ENDIF()
  12. INCLUDE_DIRECTORIES(
  13. ${STM32F1_StdPeriphLib_DIR}/Libraries/STM32F10x_StdPeriph_Driver/inc/
  14. )
  15. SET(STDPERIPH_SOURCE_DIR ${STM32F1_StdPeriphLib_DIR}/Libraries/STM32F10x_StdPeriph_Driver/src)
  16. SET(STDPERIPH_HEADER_DIR ${STM32F1_StdPeriphLib_DIR}/Libraries/STM32F10x_StdPeriph_Driver/inc)
  17. SET(STDPERIPH_HEADERS
  18. ${STDPERIPH_HEADER_DIR}/stm32f10x_adc.h
  19. ${STDPERIPH_HEADER_DIR}/stm32f10x_bkp.h
  20. ${STDPERIPH_HEADER_DIR}/stm32f10x_can.h
  21. ${STDPERIPH_HEADER_DIR}/stm32f10x_cec.h
  22. ${STDPERIPH_HEADER_DIR}/stm32f10x_crc.h
  23. ${STDPERIPH_HEADER_DIR}/stm32f10x_dac.h
  24. ${STDPERIPH_HEADER_DIR}/stm32f10x_dbgmcu.h
  25. ${STDPERIPH_HEADER_DIR}/stm32f10x_dma.h
  26. ${STDPERIPH_HEADER_DIR}/stm32f10x_exti.h
  27. ${STDPERIPH_HEADER_DIR}/stm32f10x_flash.h
  28. ${STDPERIPH_HEADER_DIR}/stm32f10x_fsmc.h
  29. ${STDPERIPH_HEADER_DIR}/stm32f10x_gpio.h
  30. ${STDPERIPH_HEADER_DIR}/stm32f10x_i2c.h
  31. ${STDPERIPH_HEADER_DIR}/stm32f10x_iwdg.h
  32. ${STDPERIPH_HEADER_DIR}/stm32f10x_pwr.h
  33. ${STDPERIPH_HEADER_DIR}/stm32f10x_rcc.h
  34. ${STDPERIPH_HEADER_DIR}/stm32f10x_rtc.h
  35. ${STDPERIPH_HEADER_DIR}/stm32f10x_sdio.h
  36. ${STDPERIPH_HEADER_DIR}/stm32f10x_spi.h
  37. ${STDPERIPH_HEADER_DIR}/stm32f10x_tim.h
  38. ${STDPERIPH_HEADER_DIR}/stm32f10x_usart.h
  39. ${STDPERIPH_HEADER_DIR}/stm32f10x_wwdg.h
  40. )
  41. SET(STDPERIPH_SOURCES
  42. ${STDPERIPH_SOURCE_DIR}/misc.c
  43. ${STDPERIPH_SOURCE_DIR}/stm32f10x_adc.c
  44. ${STDPERIPH_SOURCE_DIR}/stm32f10x_bkp.c
  45. ${STDPERIPH_SOURCE_DIR}/stm32f10x_can.c
  46. ${STDPERIPH_SOURCE_DIR}/stm32f10x_cec.c
  47. ${STDPERIPH_SOURCE_DIR}/stm32f10x_crc.c
  48. ${STDPERIPH_SOURCE_DIR}/stm32f10x_dac.c
  49. ${STDPERIPH_SOURCE_DIR}/stm32f10x_dbgmcu.c
  50. ${STDPERIPH_SOURCE_DIR}/stm32f10x_dma.c
  51. ${STDPERIPH_SOURCE_DIR}/stm32f10x_exti.c
  52. ${STDPERIPH_SOURCE_DIR}/stm32f10x_flash.c
  53. ${STDPERIPH_SOURCE_DIR}/stm32f10x_fsmc.c
  54. ${STDPERIPH_SOURCE_DIR}/stm32f10x_gpio.c
  55. ${STDPERIPH_SOURCE_DIR}/stm32f10x_i2c.c
  56. ${STDPERIPH_SOURCE_DIR}/stm32f10x_iwdg.c
  57. ${STDPERIPH_SOURCE_DIR}/stm32f10x_pwr.c
  58. ${STDPERIPH_SOURCE_DIR}/stm32f10x_rcc.c
  59. ${STDPERIPH_SOURCE_DIR}/stm32f10x_rtc.c
  60. ${STDPERIPH_SOURCE_DIR}/stm32f10x_sdio.c
  61. ${STDPERIPH_SOURCE_DIR}/stm32f10x_spi.c
  62. ${STDPERIPH_SOURCE_DIR}/stm32f10x_tim.c
  63. ${STDPERIPH_SOURCE_DIR}/stm32f10x_usart.c
  64. ${STDPERIPH_SOURCE_DIR}/stm32f10x_wwdg.c
  65. )
  66. INSTALL(FILES ${STDPERIPH_HEADER_DIR}/misc.h RENAME stm32f10x_misc.h DESTINATION include/stm32f1)
  67. ELSEIF(${STM32_FAMILY} STREQUAL "F4")
  68. IF(NOT STM32F4_StdPeriphLib_DIR)
  69. SET(STM32F4_StdPeriphLib_DIR "/opt/STM32F4xx_DSP_StdPeriph_Lib_V1.3.0")
  70. MESSAGE(STATUS "No STM32F4_StdPeriphLib_DIR specified, using default: " ${STM32F4_StdPeriphLib_DIR})
  71. ENDIF()
  72. INCLUDE_DIRECTORIES(
  73. ${STM32F4_StdPeriphLib_DIR}/Libraries/STM32F4xx_StdPeriph_Driver/inc/
  74. )
  75. SET(STDPERIPH_SOURCE_DIR ${STM32F4_StdPeriphLib_DIR}/Libraries/STM32F4xx_StdPeriph_Driver/src)
  76. SET(STDPERIPH_HEADER_DIR ${STM32F4_StdPeriphLib_DIR}/Libraries/STM32F4xx_StdPeriph_Driver/inc)
  77. SET(STDPERIPH_HEADERS
  78. ${STDPERIPH_HEADER_DIR}/stm32f4xx_adc.h
  79. ${STDPERIPH_HEADER_DIR}/stm32f4xx_can.h
  80. ${STDPERIPH_HEADER_DIR}/stm32f4xx_crc.h
  81. ${STDPERIPH_HEADER_DIR}/stm32f4xx_cryp.h
  82. ${STDPERIPH_HEADER_DIR}/stm32f4xx_dac.h
  83. ${STDPERIPH_HEADER_DIR}/stm32f4xx_dbgmcu.h
  84. ${STDPERIPH_HEADER_DIR}/stm32f4xx_dcmi.h
  85. ${STDPERIPH_HEADER_DIR}/stm32f4xx_dma.h
  86. ${STDPERIPH_HEADER_DIR}/stm32f4xx_dma2d.h
  87. ${STDPERIPH_HEADER_DIR}/stm32f4xx_exti.h
  88. ${STDPERIPH_HEADER_DIR}/stm32f4xx_flash.h
  89. ${STDPERIPH_HEADER_DIR}/stm32f4xx_fmc.h
  90. ${STDPERIPH_HEADER_DIR}/stm32f4xx_fsmc.h
  91. ${STDPERIPH_HEADER_DIR}/stm32f4xx_gpio.h
  92. ${STDPERIPH_HEADER_DIR}/stm32f4xx_hash.h
  93. ${STDPERIPH_HEADER_DIR}/stm32f4xx_i2c.h
  94. ${STDPERIPH_HEADER_DIR}/stm32f4xx_iwdg.h
  95. ${STDPERIPH_HEADER_DIR}/stm32f4xx_ltdc.h
  96. ${STDPERIPH_HEADER_DIR}/stm32f4xx_pwr.h
  97. ${STDPERIPH_HEADER_DIR}/stm32f4xx_rcc.h
  98. ${STDPERIPH_HEADER_DIR}/stm32f4xx_rng.h
  99. ${STDPERIPH_HEADER_DIR}/stm32f4xx_rtc.h
  100. ${STDPERIPH_HEADER_DIR}/stm32f4xx_sai.h
  101. ${STDPERIPH_HEADER_DIR}/stm32f4xx_sdio.h
  102. ${STDPERIPH_HEADER_DIR}/stm32f4xx_spi.h
  103. ${STDPERIPH_HEADER_DIR}/stm32f4xx_syscfg.h
  104. ${STDPERIPH_HEADER_DIR}/stm32f4xx_tim.h
  105. ${STDPERIPH_HEADER_DIR}/stm32f4xx_usart.h
  106. ${STDPERIPH_HEADER_DIR}/stm32f4xx_wwdg.h
  107. )
  108. SET(STDPERIPH_SOURCES
  109. ${STDPERIPH_SOURCE_DIR}/misc.c
  110. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_adc.c
  111. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_can.c
  112. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_crc.c
  113. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_cryp.c
  114. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_cryp_aes.c
  115. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_cryp_des.c
  116. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_cryp_tdes.c
  117. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_dac.c
  118. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_dbgmcu.c
  119. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_dcmi.c
  120. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_dma.c
  121. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_dma2d.c
  122. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_exti.c
  123. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_flash.c
  124. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_gpio.c
  125. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_hash.c
  126. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_hash_md5.c
  127. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_hash_sha1.c
  128. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_i2c.c
  129. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_iwdg.c
  130. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_ltdc.c
  131. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_pwr.c
  132. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_rcc.c
  133. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_rng.c
  134. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_rtc.c
  135. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_sai.c
  136. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_sdio.c
  137. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_spi.c
  138. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_syscfg.c
  139. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_tim.c
  140. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_usart.c
  141. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_wwdg.c
  142. )
  143. SET(STDPERIPH_SOURCES_40_41xxx
  144. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_fsmc.c
  145. )
  146. SET(STDPERIPH_SOURCES_427_437xx
  147. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_fmc.c
  148. )
  149. SET(STDPERIPH_SOURCES_429_439xx
  150. ${STDPERIPH_SOURCE_DIR}/stm32f4xx_fmc.c
  151. )
  152. INSTALL(FILES ${STDPERIPH_HEADER_DIR}/misc.h RENAME stm32f4xx_misc.h DESTINATION include/stm32f4)
  153. ENDIF()
  154. INCLUDE_DIRECTORIES(
  155. ${CMAKE_CURRENT_SOURCE_DIR}
  156. ${CMSIS_INCLUDE_DIR}
  157. )
  158. IF(USE_ASSERT)
  159. ADD_DEFINITIONS("-D\"assert_param(expr)\"=\"((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))\"")
  160. ELSE()
  161. ADD_DEFINITIONS("-D\"assert_param(expr)\"=\"((void)0)\"")
  162. ENDIF()
  163. STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER)
  164. ADD_CUSTOM_TARGET(stdperiph_${STM32_FAMILY_LOWER})
  165. FOREACH(CHIP_TYPE ${STM32_CHIP_TYPES})
  166. STRING(TOLOWER ${CHIP_TYPE} CHIP_TYPE_LOWER)
  167. LIST(APPEND STDPERIPH_LIBRARIES stdperiph_${STM32_FAMILY_LOWER}_${CHIP_TYPE_LOWER})
  168. SET(TARGET_NAME stdperiph_${STM32_FAMILY_LOWER}_${CHIP_TYPE_LOWER})
  169. ADD_LIBRARY(${TARGET_NAME} ${STDPERIPH_SOURCES} ${STDPERIPH_SOURCES_${CHIP_TYPE}})
  170. STM32_SET_CHIP_DEFINITIONS(${TARGET_NAME} ${CHIP_TYPE})
  171. ADD_DEPENDENCIES(stdperiph_${STM32_FAMILY_LOWER} ${TARGET_NAME})
  172. ENDFOREACH()
  173. INSTALL(TARGETS ${STDPERIPH_LIBRARIES} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
  174. INSTALL(FILES ${STDPERIPH_HEADERS} DESTINATION include/stm32${STM32_FAMILY_LOWER})