FindSTM32HAL.cmake 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. IF(STM32_FAMILY STREQUAL "F0")
  2. SET(HAL_COMPONENTS adc can cec comp cortex crc dac dma flash gpio i2c
  3. i2s irda iwdg pcd pwr rcc rtc smartcard smbus
  4. spi tim tsc uart usart wwdg)
  5. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  6. # Components that have _ex sources
  7. SET(HAL_EX_COMPONENTS adc crc dac flash i2c pcd pwr rcc rtc smartcard spi tim uart)
  8. SET(HAL_PREFIX stm32f0xx_)
  9. ELSEIF(STM32_FAMILY STREQUAL "F1")
  10. SET(HAL_COMPONENTS adc can cec cortex crc dac dma eth flash gpio hcd i2c
  11. i2s irda iwdg nand nor pccard pcd pwr rcc rtc sd smartcard
  12. spi sram tim uart usart wwdg fsmc sdmmc usb)
  13. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  14. # Components that have _ex sources
  15. SET(HAL_EX_COMPONENTS adc dac flash gpio pcd rcc rtc tim)
  16. SET(HAL_PREFIX stm32f1xx_)
  17. ELSEIF(STM32_FAMILY STREQUAL "F2")
  18. SET(HAL_COMPONENTS adc can cortex crc cryp dac dcmi dma eth flash
  19. gpio hash hcd i2c i2s irda iwdg nand nor pccard
  20. pcd pwr rcc rng rtc sd smartcard spi sram tim
  21. uart usart wwdg fsmc sdmmc usb)
  22. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  23. # Components that have _ex sources
  24. SET(HAL_EX_COMPONENTS adc dac dma flash pwr rcc rtc tim)
  25. SET(HAL_PREFIX stm32f2xx_)
  26. ELSEIF(STM32_FAMILY STREQUAL "F3")
  27. SET(HAL_COMPONENTS adc can cec comp cortex crc dac dma flash gpio i2c i2s
  28. irda nand nor opamp pccard pcd pwr rcc rtc sdadc
  29. smartcard smbus spi sram tim tsc uart usart wwdg)
  30. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  31. SET(HAL_EX_COMPONENTS adc crc dac flash i2c i2s opamp pcd pwr
  32. rcc rtc smartcard spi tim uart)
  33. SET(HAL_PREFIX stm32f3xx_)
  34. ELSEIF(STM32_FAMILY STREQUAL "F4")
  35. SET(HAL_COMPONENTS adc can cec cortex crc cryp dac dcmi dma dma2d eth flash
  36. flash_ramfunc fmpi2c gpio hash hcd i2c i2s irda iwdg ltdc
  37. nand nor pccard pcd pwr qspi rcc rng rtc sai sd sdram
  38. smartcard spdifrx spi sram tim uart usart wwdg)
  39. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  40. # Components that have _ex sources
  41. SET(HAL_EX_COMPONENTS adc cryp dac dcmi dma flash fmpi2c hash i2c i2s pcd
  42. pwr rcc rtc sai tim)
  43. SET(HAL_PREFIX stm32f4xx_)
  44. ELSEIF(STM32_FAMILY STREQUAL "F7")
  45. SET(HAL_COMPONENTS adc can cec cortex crc cryp dac dcmi dma dma2d eth flash
  46. gpio hash hcd i2c i2s irda iwdg lptim ltdc nand nor pcd
  47. pwr qspi rcc rng rtc sai sd sdram smartcard spdifrx spi
  48. sram tim uart usart wwdg fmc sdmmc usb)
  49. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  50. # Components that have _ex sources
  51. SET(HAL_EX_COMPONENTS adc crc cryp dac dcmi dma flash hash i2c pcd
  52. pwr rcc rtc sai tim)
  53. SET(HAL_PREFIX stm32f7xx_)
  54. ELSEIF(STM32_FAMILY STREQUAL "H7")
  55. SET(HAL_COMPONENTS adc can cec cortex crc cryp dac dcmi dma dma2d eth flash
  56. gpio hash hcd i2c i2s irda iwdg lptim ltdc nand nor pcd
  57. pwr qspi rcc rng rtc sai sd sdram smartcard spdifrx spi
  58. sram tim uart usart wwdg fmc sdmmc usb)
  59. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  60. # Components that have _ex sources
  61. SET(HAL_EX_COMPONENTS adc crc cryp dac dcmi dma flash hash i2c pcd
  62. pwr rcc rtc sai tim)
  63. SET(HAL_PREFIX stm32h7xx_)
  64. ELSEIF(STM32_FAMILY STREQUAL "G0")
  65. SET(HAL_COMPONENTS adc cec comp cortex crc cryp dac dma exti flash gpio i2c i2c i2s irda iwdg sptim pwr rcc rng rtc smartcard smbus spi tim uart usart wwdg)
  66. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  67. # Components that have _ex sources
  68. SET(HAL_EX_COMPONENTS tim smartcard rtc rcc adc crc cryp dac dma flash pwr spi uart usart i2c)
  69. SET(HAL_PREFIX stm32g0xx_)
  70. ELSEIF(STM32_FAMILY STREQUAL "L0")
  71. SET(HAL_COMPONENTS adc comp cortex crc crs cryp dac dma exti firewall flash gpio i2c
  72. i2s irda iwdg lcd lptim lpuart pcd pwr rcc rng rtc smartcard
  73. smbus spi tim tsc uart usart utils wwdg)
  74. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  75. # Components that have _ex sources
  76. SET(HAL_EX_COMPONENTS adc comp crc cryp dac flash i2c pcd pwr rcc rtc smartcard tim uart usart)
  77. SET(HAL_PREFIX stm32l0xx_)
  78. ELSEIF(STM32_FAMILY STREQUAL "L1")
  79. SET(HAL_COMPONENTS adc comp cortex crc cryp dac dma flash flash_ramfunc
  80. gpio i2c i2s irda iwdg lcd nor opamp pcd pwr rcc rtc
  81. sd smartcard spi sram tim uart usart wwdg)
  82. SET(HAL_REQUIRED_COMPONENTS cortex pwr)
  83. # Components that have _ex sources
  84. SET(HAL_EX_COMPONENTS adc cryp dac flash opamp pcd pwr rcc rtc spi tim)
  85. # Components that have ll_ in names instead of hal_
  86. SET(HAL_PREFIX stm32l1xx_)
  87. ELSEIF(STM32_FAMILY STREQUAL "L4")
  88. SET(HAL_COMPONENTS adc can comp cortex crc cryp dac dcmi dfsdm dma dma2d dsi
  89. firewall flash flash_ramfunc gfxmmu gpio hash hcd i2c irda iwdg
  90. lcd lptim ltdc nand nor opamp ospi pcd pwr qspi rcc rng rtc sai
  91. sd smartcard smbus spi sram swpmi tim tsc uart usart wwdg)
  92. SET(HAL_REQUIRED_COMPONENTS cortex pwr rcc)
  93. # Components that have _ex sources
  94. SET(HAL_EX_COMPONENTS adc crc cryp dac dfsdm dma flash hash i2c ltdc
  95. opamp pcd pwr rcc rtc sai sd smartcard spi tim uart usart)
  96. SET(HAL_PREFIX stm32l4xx_)
  97. ENDIF()
  98. SET(HAL_HEADERS
  99. ${HAL_PREFIX}hal.h
  100. ${HAL_PREFIX}hal_def.h
  101. )
  102. SET(HAL_SRCS
  103. ${HAL_PREFIX}hal.c
  104. )
  105. IF(NOT STM32HAL_FIND_COMPONENTS)
  106. SET(STM32HAL_FIND_COMPONENTS ${HAL_COMPONENTS})
  107. MESSAGE(STATUS "No STM32HAL components selected, using all: ${STM32HAL_FIND_COMPONENTS}")
  108. ENDIF()
  109. FOREACH(cmp ${HAL_REQUIRED_COMPONENTS})
  110. LIST(FIND STM32HAL_FIND_COMPONENTS ${cmp} STM32HAL_FOUND_INDEX)
  111. IF(${STM32HAL_FOUND_INDEX} LESS 0)
  112. LIST(APPEND STM32HAL_FIND_COMPONENTS ${cmp})
  113. ENDIF()
  114. ENDFOREACH()
  115. FOREACH(cmp ${STM32HAL_FIND_COMPONENTS})
  116. LIST(FIND HAL_COMPONENTS ${cmp} STM32HAL_FOUND_INDEX)
  117. IF(${STM32HAL_FOUND_INDEX} LESS 0)
  118. MESSAGE(FATAL_ERROR "Unknown STM32HAL component: ${cmp}. Available components: ${HAL_COMPONENTS}")
  119. ELSE()
  120. LIST(APPEND HAL_HEADERS ${HAL_PREFIX}hal_${cmp}.h)
  121. LIST(APPEND HAL_SRCS ${HAL_PREFIX}hal_${cmp}.c)
  122. ENDIF()
  123. LIST(FIND HAL_EX_COMPONENTS ${cmp} STM32HAL_FOUND_INDEX)
  124. IF(NOT (${STM32HAL_FOUND_INDEX} LESS 0))
  125. LIST(APPEND HAL_HEADERS ${HAL_PREFIX}hal_${cmp}_ex.h)
  126. LIST(APPEND HAL_SRCS ${HAL_PREFIX}hal_${cmp}_ex.c)
  127. ENDIF()
  128. ENDFOREACH()
  129. LIST(REMOVE_DUPLICATES HAL_HEADERS)
  130. LIST(REMOVE_DUPLICATES HAL_SRCS)
  131. STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER)
  132. FIND_PATH(STM32HAL_INCLUDE_DIR ${HAL_HEADERS}
  133. PATH_SUFFIXES include stm32${STM32_FAMILY_LOWER}
  134. HINTS ${STM32Cube_DIR}/Drivers/STM32${STM32_FAMILY}xx_HAL_Driver/Inc
  135. CMAKE_FIND_ROOT_PATH_BOTH
  136. )
  137. FOREACH(HAL_SRC ${HAL_SRCS})
  138. STRING(MAKE_C_IDENTIFIER "${HAL_SRC}" HAL_SRC_CLEAN)
  139. SET(HAL_${HAL_SRC_CLEAN}_FILE HAL_SRC_FILE-NOTFOUND)
  140. FIND_FILE(HAL_${HAL_SRC_CLEAN}_FILE ${HAL_SRC}
  141. PATH_SUFFIXES src stm32${STM32_FAMILY_LOWER}
  142. HINTS ${STM32Cube_DIR}/Drivers/STM32${STM32_FAMILY}xx_HAL_Driver/Src
  143. CMAKE_FIND_ROOT_PATH_BOTH
  144. )
  145. LIST(APPEND STM32HAL_SOURCES ${HAL_${HAL_SRC_CLEAN}_FILE})
  146. ENDFOREACH()
  147. INCLUDE(FindPackageHandleStandardArgs)
  148. FIND_PACKAGE_HANDLE_STANDARD_ARGS(STM32HAL DEFAULT_MSG STM32HAL_INCLUDE_DIR STM32HAL_SOURCES)