FindSTM32LL.cmake 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. SET(STM32LL_HEADER_ONLY_COMPONENTS bus cortex iwdg system wwdg dmamux)
  2. IF(STM32_FAMILY STREQUAL "F0")
  3. SET(LL_COMPONENTS adc bus comp cortex crc crs dac dma exti gpio i2c
  4. i2s iwdg pwr rcc rtc spi system tim usart utils wwdg)
  5. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  6. SET(LL_PREFIX stm32f0xx_)
  7. ELSEIF(STM32_FAMILY STREQUAL "F1")
  8. SET(LL_COMPONENTS adc bus cortex crc dac dma exti gpio i2c i2s
  9. iwdg pwr rcc rtc spi system tim usart usb utils wwdg)
  10. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  11. SET(LL_PREFIX stm32f1xx_)
  12. ELSEIF(STM32_FAMILY STREQUAL "F2")
  13. SET(LL_COMPONENTS adc bus cortex crc dac dma exti gpio i2c i2s iwdg pwr
  14. rcc rng rtc spi system tim usart usb utils wwdg)
  15. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  16. SET(LL_PREFIX stm32f2xx_)
  17. ELSEIF(STM32_FAMILY STREQUAL "F3")
  18. SET(LL_COMPONENTS adc bus comp cortex crc dac dma exti gpio hrtim i2c i2s
  19. iwdg opamp pwr rcc rtc spi system tim usart utils wwdg)
  20. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  21. SET(LL_PREFIX stm32f3xx_)
  22. ELSEIF(STM32_FAMILY STREQUAL "F4")
  23. SET(LL_COMPONENTS adc bus cortex crc dac dma2d dma exti gpio i2c i2s iwdg
  24. lptim pwr rcc rng rtc spi system tim usart usb utils wwdg)
  25. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  26. SET(LL_PREFIX stm32f4xx_)
  27. ELSEIF(STM32_FAMILY STREQUAL "F7")
  28. SET(LL_COMPONENTS adc bus cortex crc dac dma2d dma exti gpio i2c i2s iwdg
  29. lptim pwr rcc rng rtc spi system tim usart usb utils wwdg)
  30. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  31. SET(LL_PREFIX stm32f7xx_)
  32. ELSEIF(STM32_FAMILY STREQUAL "L0")
  33. SET(LL_COMPONENTS adc bus comp cortex crc crs dac dma exti gpio i2c i2s
  34. iwdg lptim lpuart pwr rcc rng rtc spi system tim usart
  35. utils wwdg)
  36. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  37. SET(LL_PREFIX stm32l0xx_)
  38. ELSEIF(STM32_FAMILY STREQUAL "L4")
  39. SET(LL_COMPONENTS adc bus comp cortex crc crs dac dma2d dmamux dma exti
  40. gpio i2c iwdg lptim lpuart opamp pwr rcc rng rtc spi
  41. system tim usart usb utils wwdg)
  42. SET(LL_REQUIRED_COMPONENTS bus cortex pwr rcc system utils)
  43. SET(LL_PREFIX stm32l4xx_)
  44. ENDIF()
  45. ADD_DEFINITIONS(-DUSE_FULL_LL_DRIVER)
  46. FOREACH(cmp ${LL_REQUIRED_COMPONENTS})
  47. LIST(FIND STM32LL_FIND_COMPONENTS ${cmp} STM32LL_FOUND_INDEX)
  48. IF(${STM32LL_FOUND_INDEX} LESS 0)
  49. LIST(APPEND STM32LL_FIND_COMPONENTS ${cmp})
  50. ENDIF()
  51. ENDFOREACH()
  52. FOREACH(cmp ${STM32LL_FIND_COMPONENTS})
  53. LIST(FIND LL_COMPONENTS ${cmp} STM32LL_FOUND_INDEX)
  54. IF(${STM32LL_FOUND_INDEX} LESS 0)
  55. MESSAGE(FATAL_ERROR "Unknown STM32LL component: ${cmp}. Available components: ${LL_COMPONENTS}")
  56. ELSE()
  57. LIST(FIND STM32LL_HEADER_ONLY_COMPONENTS ${cmp} HEADER_ONLY_FOUND_INDEX)
  58. IF(${HEADER_ONLY_FOUND_INDEX} LESS 0)
  59. LIST(APPEND LL_SRCS ${LL_PREFIX}ll_${cmp}.c)
  60. ENDIF()
  61. LIST(APPEND LL_HEADERS ${LL_PREFIX}ll_${cmp}.h)
  62. ENDIF()
  63. ENDFOREACH()
  64. LIST(REMOVE_DUPLICATES LL_HEADERS)
  65. LIST(REMOVE_DUPLICATES LL_SRCS)
  66. STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER)
  67. FIND_PATH(STM32LL_INCLUDE_DIR ${LL_HEADERS}
  68. PATH_SUFFIXES include stm32${STM32_FAMILY_LOWER}
  69. HINTS ${STM32Cube_DIR}/Drivers/STM32${STM32_FAMILY}xx_HAL_Driver/Inc
  70. CMAKE_FIND_ROOT_PATH_BOTH
  71. )
  72. FOREACH(LL_SRC ${LL_SRCS})
  73. STRING(MAKE_C_IDENTIFIER "${LL_SRC}" LL_SRC_CLEAN)
  74. SET(LL_${LL_SRC_CLEAN}_FILE LL_SRC_FILE-NOTFOUND)
  75. FIND_FILE(LL_${LL_SRC_CLEAN}_FILE ${LL_SRC}
  76. PATH_SUFFIXES src stm32${STM32_FAMILY_LOWER}
  77. HINTS ${STM32Cube_DIR}/Drivers/STM32${STM32_FAMILY}xx_HAL_Driver/Src
  78. CMAKE_FIND_ROOT_PATH_BOTH
  79. )
  80. LIST(APPEND STM32LL_SOURCES ${LL_${LL_SRC_CLEAN}_FILE})
  81. ENDFOREACH()
  82. INCLUDE(FindPackageHandleStandardArgs)
  83. FIND_PACKAGE_HANDLE_STANDARD_ARGS(STM32LL DEFAULT_MSG STM32LL_INCLUDE_DIR STM32LL_SOURCES)