CMakeLists.txt 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. PROJECT(stm32cmsis)
  2. CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
  3. ENABLE_LANGUAGE(ASM)
  4. IF(${STM32_FAMILY} STREQUAL "F1")
  5. IF(NOT STM32F1_StdPeriphLib_DIR)
  6. SET(STM32F1_StdPeriphLib_DIR "/opt/STM32F10x_StdPeriph_Lib_V3.5.0")
  7. MESSAGE(STATUS "No STM32F1_StdPeriphLib_DIR specified, using default: " ${STM32F1_StdPeriphLib_DIR})
  8. ENDIF()
  9. INCLUDE_DIRECTORIES(
  10. ${STM32F1_StdPeriphLib_DIR}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/
  11. ${STM32F1_StdPeriphLib_DIR}/Libraries/CMSIS/CM3/CoreSupport/
  12. )
  13. SET(CMSIS_HEADERS
  14. ${STM32F1_StdPeriphLib_DIR}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h
  15. ${STM32F1_StdPeriphLib_DIR}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h
  16. ${STM32F1_StdPeriphLib_DIR}/Libraries/CMSIS/CM3/CoreSupport/core_cm3.h
  17. )
  18. SET(CMSIS_SOURCES
  19. ${STM32F1_StdPeriphLib_DIR}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c
  20. )
  21. SET(CMSIS_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/stm32f1_flash.ld.in)
  22. SET(STARTUP_PREFIX ${STM32F1_StdPeriphLib_DIR}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_)
  23. ELSEIF(${STM32_FAMILY} STREQUAL "F4")
  24. IF(NOT STM32F4_StdPeriphLib_DIR)
  25. SET(STM32F4_StdPeriphLib_DIR "/opt/STM32F4xx_DSP_StdPeriph_Lib_V1.3.0")
  26. MESSAGE(STATUS "No STM32F4_StdPeriphLib_DIR specified, using default: " ${STM32F4_StdPeriphLib_DIR})
  27. ENDIF()
  28. INCLUDE_DIRECTORIES(
  29. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Device/ST/STM32F4xx/Include/
  30. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Include/
  31. )
  32. SET(CMSIS_HEADERS
  33. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h
  34. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
  35. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Include/core_cm4.h
  36. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Include/core_cm4_simd.h
  37. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Include/core_cmFunc.h
  38. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Include/core_cmInstr.h
  39. )
  40. SET(CMSIS_SOURCES
  41. ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c
  42. )
  43. SET(CMSIS_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/stm32f4_flash.ld.in)
  44. SET(STARTUP_PREFIX ${STM32F4_StdPeriphLib_DIR}/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc_ride7/startup_stm32f)
  45. ENDIF()
  46. INCLUDE_DIRECTORIES(
  47. ${CMAKE_CURRENT_SOURCE_DIR}
  48. )
  49. STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER)
  50. ADD_CUSTOM_TARGET(cmsis_${STM32_FAMILY_LOWER})
  51. FOREACH(CHIP_TYPE ${STM32_CHIP_TYPES})
  52. STRING(TOLOWER ${CHIP_TYPE} CHIP_TYPE_LOWER)
  53. LIST(APPEND CMSIS_STARTUP_FILES ${STARTUP_PREFIX}${CHIP_TYPE_LOWER}.s)
  54. LIST(APPEND CMSIS_LIBRARIES cmsis_${STM32_FAMILY_LOWER}_${CHIP_TYPE_LOWER})
  55. SET(TARGET_NAME cmsis_${STM32_FAMILY_LOWER}_${CHIP_TYPE_LOWER})
  56. ADD_LIBRARY(${TARGET_NAME} ${CMSIS_SOURCES})
  57. STM32_SET_CHIP_DEFINITIONS(${TARGET_NAME} ${CHIP_TYPE})
  58. ADD_DEPENDENCIES(cmsis_${STM32_FAMILY_LOWER} ${TARGET_NAME})
  59. ENDFOREACH()
  60. INSTALL(TARGETS ${CMSIS_LIBRARIES} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
  61. INSTALL(FILES ${CMSIS_HEADERS} DESTINATION include/stm32${STM32_FAMILY_LOWER})
  62. INSTALL(FILES ${CMSIS_STARTUP_FILES} ${CMSIS_LINKER_SCRIPT} DESTINATION share/cmsis/)
  63. INSTALL(FILES ${CMSIS_SOURCES} DESTINATION share/cmsis/)