FindCMSIS.cmake 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER)
  2. IF(STM32_FAMILY STREQUAL "F1")
  3. SET(CMSIS_STARTUP_PREFIX startup_stm32f10x_)
  4. SET(CMSIS_HEADERS system_stm32f10x.h core_cm3.h stm32f10x.h)
  5. SET(CMSIS_LINKER_SCRIPT_NAME stm32f1_flash.ld.in)
  6. ELSEIF(STM32_FAMILY STREQUAL "F4")
  7. SET(CMSIS_STARTUP_PREFIX startup_stm32f)
  8. SET(CMSIS_HEADERS system_stm32f4xx.h core_cm4.h stm32f4xx.h)
  9. SET(CMSIS_LINKER_SCRIPT_NAME stm32f4_flash.ld.in)
  10. ENDIF()
  11. IF((NOT STM32_CHIP_TYPE) AND (NOT STM32_CHIP))
  12. UNSET(CMSIS_STARTUP_NAME)
  13. UNSET(CMSIS_STARTUP_SOURCE)
  14. FOREACH(CHIP_TYPE ${STM32_CHIP_TYPES})
  15. STRING(TOLOWER ${CHIP_TYPE} CHIP_TYPE_LOWER)
  16. LIST(APPEND CMSIS_FIND_LIBS cmsis_${STM32_FAMILY_LOWER}_${CHIP_TYPE_LOWER})
  17. ENDFOREACH()
  18. ELSE()
  19. IF(NOT STM32_CHIP_TYPE)
  20. STM32_GET_CHIP_TYPE(${STM32_CHIP} STM32_CHIP_TYPE)
  21. IF(NOT STM32_CHIP_TYPE)
  22. MESSAGE(FATAL_ERROR "Unknown chip: ${STM32_CHIP}. Try to use STM32_CHIP_TYPE directly.")
  23. ENDIF()
  24. MESSAGE(STATUS "${STM32_CHIP} is ${STM32_CHIP_TYPE} device")
  25. ENDIF()
  26. STRING(TOLOWER ${STM32_CHIP_TYPE} STM32_CHIP_TYPE_LOWER)
  27. SET(CMSIS_FIND_LIBS cmsis_${STM32_FAMILY_LOWER}_${STM32_CHIP_TYPE_LOWER})
  28. SET(CMSIS_STARTUP_NAME ${CMSIS_STARTUP_PREFIX}${STM32_CHIP_TYPE_LOWER}.s)
  29. ENDIF()
  30. FIND_PATH(CMSIS_INCLUDE_DIR ${CMSIS_HEADERS}
  31. PATH_SUFFIXES include stm32${STM32_FAMILY_LOWER}
  32. )
  33. FOREACH(CMSIS_LIB_NAME ${CMSIS_FIND_LIBS})
  34. SET(CMSIS_LIBRARY CMSIS_LIBRARY-NOTFOUND)
  35. FIND_LIBRARY(CMSIS_LIBRARY
  36. NAMES ${CMSIS_LIB_NAME}
  37. PATH_SUFFIXES lib
  38. )
  39. LIST(APPEND CMSIS_LIBRARIES ${CMSIS_LIBRARY})
  40. ENDFOREACH()
  41. FIND_PATH(CMSIS_LINKER_SCRIPT ${CMSIS_LINKER_SCRIPT_NAME}
  42. PATH_SUFFIXES share/cmsis cmsis
  43. )
  44. INCLUDE(FindPackageHandleStandardArgs)
  45. IF(NOT STM32_CHIP_TYPE)
  46. FIND_PACKAGE_HANDLE_STANDARD_ARGS(CMSIS DEFAULT_MSG CMSIS_LIBRARIES CMSIS_INCLUDE_DIR CMSIS_LINKER_SCRIPT)
  47. ELSE()
  48. FIND_FILE(CMSIS_STARTUP_SOURCE
  49. ${CMSIS_STARTUP_NAME}
  50. PATHS ${CMAKE_FIND_ROOT_PATH}/share/cmsis/
  51. )
  52. FIND_PACKAGE_HANDLE_STANDARD_ARGS(CMSIS DEFAULT_MSG CMSIS_LIBRARIES CMSIS_INCLUDE_DIR CMSIS_STARTUP_SOURCE CMSIS_LINKER_SCRIPT)
  53. ENDIF()