| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- set(HAL_DRIVERS_F0
- adc can cec comp cortex crc dac dma exti flash gpio i2c i2s irda iwdg pcd
- pwr rcc rtc smartcard smbus spi tim tsc uart usart wwdg
- )
- set(HAL_EX_DRIVERS_F0
- adc crc dac flash i2c pcd pwr rcc rtc smartcard spi tim uart usart
- )
- set(HAL_LL_DRIVERS_F0
- adc comp crc crs dac dma exti gpio i2c pwr rcc rtc spi tim usart usb utils
- )
- set(HAL_DRIVERS_F1
- adc can cec cortex crc dac dma eth exti flash gpio hcd i2c i2s irda iwdg
- mmc nand nor pccard pcd pwr rcc rtc sd smartcard spi sram tim uart usart
- wwdg
- )
- set(HAL_EX_DRIVERS_F1
- adc dac flash gpio pcd rcc rtc tim
- )
- set(HAL_LL_DRIVERS_F1
- adc crc dac dma exti fsmc gpio i2c pwr rcc rtc sdmmc spi tim usart usb utils
- )
- set(HAL_DRIVERS_F2
- adc can cortex crc cryp dac dcmi dma eth exti flash gpio hash hcd i2c i2s
- irda iwdg mmc nand nor pccard pcd pwr rcc rng rtc sd smartcard spi sram tim
- uart usart wwdg
- )
- set(HAL_EX_DRIVERS_F2
- adc dac dcmi dma flash pcd pwr rcc rtc tim
- )
- set(HAL_LL_DRIVERS_F2
- adc crc dac dma exti fsmc gpio i2c pwr rcc rng rtc sdmmc spi tim usart usb
- utils
- )
- set(HAL_DRIVERS_F3
- adc can cec comp cortex crc dac dma exti flash gpio hrtim i2c i2s irda iwdg
- nand nor opamp pccard pcd pwr rcc rtc sdadc smartcard smbus spi sram tim tsc
- uart usart wwdg
- )
- set(HAL_EX_DRIVERS_F3
- adc crc dac flash i2c i2s opamp pcd pwr rcc rtc smartcard spi tim uart usart
- )
- set(HAL_LL_DRIVERS_F3
- adc comp crc dac dma exti fmc gpio hrtim i2c opamp pwr rcc rtc spi tim usart
- usb utils
- )
- set(HAL_DRIVERS_F4
- adc can cec cortex crc cryp dac dcmi dfsdm dma dma2d dsi eth exti flash
- flash_ramfunc fmpi2c gpio hash hcd i2c i2s irda iwdg lptim ltdc mmc nand nor
- pccard pcd pwr qspi rcc rng rtc sai sd sdram smartcard smbus spdifrx spi
- sram tim uart usart wwdg
- )
- set(HAL_EX_DRIVERS_F4
- adc cryp dac dcmi dma flash fmpi2c hash i2c i2s ltdc pcd pwr rcc rtc sai tim
- )
- set(HAL_LL_DRIVERS_F4
- adc crc dac dma dma2d exti fmc fsmc gpio i2c lptim pwr rcc rng rtc sdmmc spi
- tim usart usb utils
- )
- set(HAL_DRIVERS_F7
- adc can cec cortex crc cryp dac dcmi dfsdm dma dma2d dsi eth exti flash
- gpio hash hcd i2c i2s irda iwdg jpeg lptim ltdc mdios mmc nand nor pcd pwr
- qspi rcc rng rtc sai sd sdram smartcard smbus spdifrx spi sram tim uart
- usart wwdg
- )
- set(HAL_EX_DRIVERS_F7
- adc crc cryp dac dcmi dma flash hash i2c ltdc pcd pwr rcc rtc sai smartcard
- spi tim uart
- )
- set(HAL_LL_DRIVERS_F7
- adc crc dac dma dma2d exti fmc gpio i2c lptim pwr rcc rng rtc sdmmc spi tim
- usart usb utils
- )
- set(HAL_DRIVERS_G0
- adc cec comp cortex crc cryp dac dma exti flash gpio i2c i2s irda iwdg lptim
- pwr rcc rng rtc smartcard smbus spi tim uart usart wwdg
- )
- set(HAL_EX_DRIVERS_G0
- adc crc cryp dac dma flash i2c pwr rcc rtc smartcard spi tim uart usart
- )
- set(HAL_LL_DRIVERS_G0
- adc comp crc dac dma exti gpio i2c lptim lpuart pwr rcc rng rtc spi tim ucpd
- usart utils
- )
- set(HAL_DRIVERS_G4
- adc comp cordic cortex crc cryp dac dma exti fdcan flash flash_ramfunc fmac
- gpio hrtim i2c i2s irda iwdg lptim nand nor opamp pcd pwr qspi rcc rng rtc
- sai smartcard smbus spi sram tim uart usart wwdg
- )
- set(HAL_EX_DRIVERS_G4
- adc crc cryp dac dma flash i2c opamp pcd pwr rcc rtc sai smartcard spi tim
- uart usart
- )
- set(HAL_LL_DRIVERS_G4
- adc comp cordic crc crs dac dma exti fmac fmc gpio hrtim i2c lptim lpuart
- opamp pwr rcc rng rtc spi tim ucpd usart usb utils
- )
- set(HAL_DRIVERS_H7
- adc cec comp cortex crc cryp dac dcmi dfsdm dma dma2d dsi dts eth exti fdcan
- flash gfxmmu gpio hash hrtim hsem i2c i2s irda iwdg jpeg lptim ltdc mdios
- mdma mmc nand nor opamp ospi otfdec pcd pssi pwr qspi ramecc rcc rng rtc sai
- sd sdram smartcard smbus spdifrx spi sram swpmi tim uart usart wwdg
- )
- set(HAL_EX_DRIVERS_H7
- adc crc cryp dac dfsdm dma eth flash hash i2c i2s ltdc mmc opamp pcd pwr rcc
- rng rtc sai sd smartcard spi tim uart usart
- )
- set(HAL_LL_DRIVERS_H7
- adc bdma comp crc crs dac delayblock dma dma2d exti fmc gpio hrtim i2c lptim
- lpuart mdma opamp pwr rcc rng rtc sdmmc spi swpmi tim usart usb utils
- )
- set(HAL_DRIVERS_L0
- adc comp cortex crc cryp dac dma firewall flash flash_ramfunc gpio i2c i2s
- irda iwdg lcd lptim pcd pwr rcc rng rtc smartcard smbus spi tim tsc uart
- usart wwdg
- )
- set(HAL_EX_DRIVERS_L0
- adc comp crc cryp dac flash i2c pcd pwr rcc rtc smartcard tim uart
- )
- set(HAL_LL_DRIVERS_L0
- adc comp crc crs dac dma exti gpio i2c lptim lpuart pwr rcc rng rtc spi tim
- usart usb utils
- )
- set(HAL_DRIVERS_L1
- adc comp cortex crc cryp dac dma flash flash_ramfunc gpio i2c i2s irda iwdg
- lcd nor opamp pcd pwr rcc rtc sd smartcard spi sram tim uart usart wwdg
- )
- set(HAL_EX_DRIVERS_L1
- adc cryp dac flash opamp pcd pcd pwr rcc rtc tim
- )
- set(HAL_LL_DRIVERS_L1
- adc comp crc dac dma exti fsmc gpio i2c opamp pwr rcc rtc sdmmc spi tim
- usart usb utils
- )
- set(HAL_DRIVERS_L4
- adc can comp cortex crc cryp dac dcmi dfsdm dma dma2d dsi exti firewall
- flash flash_ramfunc gfxmmu gpio hash hcd i2c irda iwdg lcd lptim ltdc mmc
- nand nor opamp ospi pcd pka pssi pwr qspi rcc rng rtc sai sd smartcard smbus
- spi sram swpmi tim tsc uart usart wwdg
- )
- set(HAL_EX_DRIVERS_L4
- adc crc cryp dac dfsdm dma flash hash i2c ltdc mmc opamp pcd pwr rcc rng rtc
- sai sd smartcard spi tim uart usart
- )
- set(HAL_LL_DRIVERS_L4
- adc comp crc crs dac dma dma2d exti fmc gpio i2c lptim lpuart opamp pka pwr
- rcc rng rtc sdmmc spi swpmi tim usart usb utils
- )
- foreach(FAMILY ${STM32_SUPPORTED_FAMILIES})
- list(APPEND HAL_DRIVERS ${HAL_DRIVERS_${FAMILY}})
- list(APPEND HAL_LL_DRIVERS ${HAL_LL_DRIVERS_${FAMILY}})
- endforeach()
- list(REMOVE_DUPLICATES HAL_DRIVERS)
- list(REMOVE_DUPLICATES HAL_LL_DRIVERS)
- foreach(COMP ${HAL_FIND_COMPONENTS})
- string(TOLOWER ${COMP} COMP_L)
- string(TOUPPER ${COMP} COMP_U)
-
- string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
- if(CMAKE_MATCH_1)
- list(APPEND HAL_FIND_COMPONENTS_FAMILIES ${COMP})
- continue()
- endif()
- if(${COMP_L} IN_LIST HAL_DRIVERS)
- list(APPEND HAL_FIND_COMPONENTS_DRIVERS ${COMP})
- continue()
- endif()
- string(REGEX REPLACE "^ll_" "" COMP_L ${COMP_L})
- if(${COMP_L} IN_LIST HAL_LL_DRIVERS)
- list(APPEND HAL_FIND_COMPONENTS_DRIVERS_LL ${COMP})
- continue()
- endif()
- message(FATAL_ERROR "Unknown HAL component: ${COMP}")
- endforeach()
- if(NOT HAL_FIND_COMPONENTS_FAMILIES)
- set(HAL_FIND_COMPONENTS_FAMILIES
- STM32F0 STM32F1 STM32F2 STM32F3 STM32F4 STM32F7
- STM32G0 STM32G4
- STM32H7_M7 STM32H7_M4
- STM32L0 STM32L1 STM32L4
- )
- endif()
- if(STM32H7 IN_LIST HAL_FIND_COMPONENTS_FAMILIES)
- list(REMOVE_ITEM HAL_FIND_COMPONENTS_FAMILIES STM32H7)
- list(APPEND HAL_FIND_COMPONENTS_FAMILIES STM32H7_M7 STM32H7_M4)
- endif()
- list(REMOVE_DUPLICATES HAL_FIND_COMPONENTS_FAMILIES)
- if((NOT HAL_FIND_COMPONENTS_DRIVERS) AND (NOT HAL_FIND_COMPONENTS_DRIVERS_LL))
- set(HAL_FIND_COMPONENTS_DRIVERS ${HAL_DRIVERS})
- set(HAL_FIND_COMPONENTS_DRIVERS_LL ${HAL_LL_DRIVERS})
- endif()
- list(REMOVE_DUPLICATES HAL_FIND_COMPONENTS_DRIVERS)
- list(REMOVE_DUPLICATES HAL_FIND_COMPONENTS_DRIVERS_LL)
- message(STATUS "Search for HAL families: ${HAL_FIND_COMPONENTS_FAMILIES}")
- message(STATUS "Search for HAL drivers: ${HAL_FIND_COMPONENTS_DRIVERS}")
- message(STATUS "Search for HAL LL drivers: ${HAL_FIND_COMPONENTS_DRIVERS_LL}")
- foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
- string(TOUPPER ${COMP} COMP_U)
-
- string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
- if(CMAKE_MATCH_3)
- set(CORE ${CMAKE_MATCH_3})
- set(CORE_C "::${CORE}")
- set(CORE_U "_${CORE}")
- else()
- unset(CORE)
- unset(CORE_C)
- unset(CORE_U)
- endif()
-
- set(FAMILY ${CMAKE_MATCH_1})
- string(TOLOWER ${FAMILY} FAMILY_L)
-
- if((NOT STM32_HAL_${FAMILY}_PATH) AND (NOT STM32_CUBE_${FAMILY}_PATH))
- set(STM32_CUBE_${FAMILY}_PATH /opt/STM32Cube${FAMILY} CACHE PATH "Path to STM32Cube${FAMILY}")
- message(STATUS "Neither STM32_CUBE_${FAMILY}_PATH nor STM32_HAL_${FAMILY}_PATH specified using default STM32_CUBE_${FAMILY}_PATH: ${STM32_CUBE_${FAMILY}_PATH}")
- endif()
-
- find_path(HAL_${FAMILY}_PATH
- NAMES Inc/stm32${FAMILY_L}xx_hal.h
- PATHS "${STM32_HAL_${FAMILY}_PATH}" "${STM32_CUBE_${FAMILY}_PATH}/Drivers/STM32${FAMILY}xx_HAL_Driver"
- NO_DEFAULT_PATH
- )
- if (NOT HAL_${FAMILY}_PATH)
- continue()
- endif()
-
- find_path(HAL_${FAMILY}${CORE_U}_INCLUDE
- NAMES stm32${FAMILY_L}xx_hal.h
- PATHS "${HAL_${FAMILY}_PATH}/Inc"
- NO_DEFAULT_PATH
- )
- find_file(HAL_${FAMILY}${CORE_U}_SOURCE
- NAMES stm32${FAMILY_L}xx_hal.c
- PATHS "${HAL_${FAMILY}_PATH}/Src"
- NO_DEFAULT_PATH
- )
-
- if ((NOT HAL_${FAMILY}${CORE_U}_INCLUDE) OR (NOT HAL_${FAMILY}${CORE_U}_SOURCE))
- set(HAL_${COMP}_FOUND FALSE)
- continue()
- endif()
- if(NOT (TARGET HAL::STM32::${FAMILY}${CORE_C}))
- add_library(HAL::STM32::${FAMILY}${CORE_C} INTERFACE IMPORTED)
- target_link_libraries(HAL::STM32::${FAMILY}${CORE_C} INTERFACE STM32::${FAMILY}${CORE_C} CMSIS::STM32::${FAMILY}${CORE_C})
- target_include_directories(HAL::STM32::${FAMILY}${CORE_C} INTERFACE "${HAL_${FAMILY}${CORE_U}_INCLUDE}")
- target_sources(HAL::STM32::${FAMILY}${CORE_C} INTERFACE "${HAL_${FAMILY}${CORE_U}_SOURCE}")
- endif()
-
- foreach(DRV_COMP ${HAL_FIND_COMPONENTS_DRIVERS})
- string(TOLOWER ${DRV_COMP} DRV_L)
- string(TOUPPER ${DRV_COMP} DRV)
-
- if(NOT (DRV_L IN_LIST HAL_DRIVERS_${FAMILY}))
- continue()
- endif()
-
- find_file(HAL_${FAMILY}${CORE_U}_${DRV}_SOURCE
- NAMES stm32${FAMILY_L}xx_hal_${DRV_L}.c
- PATHS "${HAL_${FAMILY}_PATH}/Src"
- NO_DEFAULT_PATH
- )
- list(APPEND HAL_${FAMILY}${CORE_U}_SOURCES "${HAL_${FAMILY}_${DRV}_SOURCE}")
- if(NOT HAL_${FAMILY}${CORE_U}_${DRV}_SOURCE)
- message(WARNING "Cannot find ${DRV} driver for ${${FAMILY}${CORE_U}}")
- set(HAL_${DRV_COMP}_FOUND FALSE)
- continue()
- endif()
-
- set(HAL_${DRV_COMP}_FOUND TRUE)
- if(HAL_${FAMILY}${CORE_U}_${DRV}_SOURCE AND (NOT (TARGET HAL::STM32::${FAMILY}::${DRV})))
- add_library(HAL::STM32::${FAMILY}${CORE_C}::${DRV} INTERFACE IMPORTED)
- target_link_libraries(HAL::STM32::${FAMILY}${CORE_C}::${DRV} INTERFACE HAL::STM32::${FAMILY}${CORE_C})
- target_sources(HAL::STM32::${FAMILY}${CORE_C}::${DRV} INTERFACE "${HAL_${FAMILY}${CORE_U}_${DRV}_SOURCE}")
- endif()
-
- if(HAL_${FAMILY}${CORE_U}_${DRV}_SOURCE AND (${DRV_L} IN_LIST HAL_EX_DRIVERS_${FAMILY}))
- find_file(HAL_${FAMILY}${CORE_U}_${DRV}_EX_SOURCE
- NAMES stm32${FAMILY_L}xx_hal_${DRV_L}_ex.c
- PATHS "${HAL_${FAMILY}_PATH}/Src"
- NO_DEFAULT_PATH
- )
- list(APPEND HAL_${FAMILY}${CORE_U}_SOURCES "${HAL_${FAMILY}${CORE_U}_${DRV}_EX_SOURCE}")
- if(NOT HAL_${FAMILY}${CORE_U}_${DRV}_EX_SOURCE)
- message(WARNING "Cannot find ${DRV}Ex driver for ${${FAMILY}${CORE_U}}")
- endif()
-
- if((TARGET HAL::STM32::${FAMILY}${CORE_C}::${DRV}) AND (NOT (TARGET HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex)))
- add_library(HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex INTERFACE IMPORTED)
- target_link_libraries(HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex INTERFACE HAL::STM32::${FAMILY}${CORE_C}::${DRV})
- target_sources(HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex INTERFACE "${HAL_${FAMILY}${CORE_U}_${DRV}_EX_SOURCE}")
- endif()
- endif()
- endforeach()
-
- foreach(DRV_COMP ${HAL_FIND_COMPONENTS_DRIVERS_LL})
- string(TOLOWER ${DRV_COMP} DRV_L)
- string(REGEX REPLACE "^ll_" "" DRV_L ${DRV_L})
- string(TOUPPER ${DRV_L} DRV)
-
- if(NOT (DRV_L IN_LIST HAL_LL_DRIVERS_${FAMILY}))
- continue()
- endif()
-
- find_file(HAL_${FAMILY}${CORE_U}_${DRV}_LL_SOURCE
- NAMES stm32${FAMILY_L}xx_ll_${DRV_L}.c
- PATHS "${HAL_${FAMILY}_PATH}/Src"
- NO_DEFAULT_PATH
- )
- list(APPEND HAL_${FAMILY}${CORE_U}_SOURCES "${HAL_${FAMILY}_${DRV}_LL_SOURCE}")
- if(NOT HAL_${FAMILY}${CORE_U}_${DRV}_LL_SOURCE)
- message(WARNING "Cannot find LL_${DRV} driver for ${${FAMILY}${CORE_U}}")
- set(HAL_${DRV_COMP}_FOUND FALSE)
- continue()
- endif()
-
- set(HAL_${DRV_COMP}_FOUND TRUE)
- if(HAL_${FAMILY}${CORE_U}_${DRV}_LL_SOURCE AND (NOT (TARGET HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV})))
- add_library(HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV} INTERFACE IMPORTED)
- target_include_directories(HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV} INTERFACE "${HAL_${FAMILY}${CORE_U}_INCLUDE}")
- target_sources(HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV} INTERFACE "${HAL_${FAMILY}${CORE_U}_${DRV}_LL_SOURCE}")
- endif()
- endforeach()
-
- set(HAL_${COMP}_FOUND TRUE)
- list(APPEND HAL_INCLUDE_DIRS "${HAL_${FAMILY}${CORE_U}_INCLUDE}")
- list(APPEND HAL_SOURCES "${HAL_${FAMILY}${CORE_U}_SOURCES}")
- endforeach()
- list(REMOVE_DUPLICATES HAL_INCLUDE_DIRS)
- list(REMOVE_DUPLICATES HAL_SOURCES)
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(HAL
- REQUIRED_VARS HAL_INCLUDE_DIRS HAL_SOURCES
- FOUND_VAR HAL_FOUND
- HANDLE_COMPONENTS
- )
|