CMakeLists.txt 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. cmake_minimum_required(VERSION 3.16)
  2. set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/stm32_gcc.cmake)
  3. if(NOT TEST_FAMILIES)
  4. set(TEST_FAMILIES C0 F0 F1 F2 F3 F4 F7 G0 G4 H7 L0 L1 L4 L5 MP1 U0 U5 WB WL)
  5. endif()
  6. # Nucleo boards can have different devices on it
  7. set(DEVICE_STM32C0xx_Nucleo C031C6)
  8. set(DEVICE_STM32F0xx_Nucleo_32 F031K6)
  9. set(DEVICE_STM32F0xx_Nucleo F030R8)
  10. set(DEVICE_STM32F1xx_Nucleo F103RB)
  11. set(DEVICE_STM32F2xx_Nucleo_144 F207ZG)
  12. set(DEVICE_STM32F3xx_Nucleo_32 F303K8)
  13. set(DEVICE_STM32F3xx_Nucleo F334R8)
  14. set(DEVICE_STM32F3xx_Nucleo_144 F303ZE)
  15. set(DEVICE_STM32F4xx_Nucleo_144 F429ZI)
  16. set(DEVICE_STM32F4xx_Nucleo F446RE)
  17. set(DEVICE_STM32F7xx_Nucleo_144 F746ZG)
  18. set(DEVICE_STM32G0xx_Nucleo G070RB)
  19. set(DEVICE_STM32G0xx_Nucleo_32 G031K8)
  20. set(DEVICE_STM32G4xx_Nucleo G474RE)
  21. set(DEVICE_STM32L0xx_Nucleo L053R8)
  22. set(DEVICE_STM32L0xx_Nucleo_32 L011K4)
  23. set(DEVICE_STM32L1xx_Nucleo L152RE)
  24. set(DEVICE_STM32L4xx_Nucleo L412RB)
  25. set(DEVICE_STM32L4xx_Nucleo_32 L412KB)
  26. set(DEVICE_STM32L4xx_Nucleo_144 L496ZG)
  27. set(DEVICE_STM32MP15xx_DISCO MP157CAC)
  28. set(DEVICE_STM32MP15xx_EVAL MP157FAA)
  29. set(DEVICE_STM32U0xx_Nucleo U031R8)
  30. set(DEVICE_STM32U0xx_DISCO U083CC)
  31. set(DEFINES_STM32469I_EVAL USE_IOEXPANDER)
  32. set(DEFINES_STM32F769I_EVAL USE_IOEXPANDER)
  33. set(DEFINES_STM32L476G_EVAL USE_IOEXPANDER)
  34. set(DEFINES_STM32L4R9I_EVAL USE_ROCKTECH_480x272)
  35. # Ban some boards because their BSP need non-free components
  36. set(BANNED_BOARDS STM32756G_EVAL)
  37. project(bsp-test C ASM)
  38. set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
  39. if(FETCH_ST_SOURCES)
  40. stm32_fetch_cube(${TEST_FAMILIES})
  41. endif()
  42. find_package(CMSIS REQUIRED)
  43. find_package(HAL REQUIRED)
  44. find_package(BSP REQUIRED)
  45. set(SOURCES main.c)
  46. foreach(FAMILY ${TEST_FAMILIES})
  47. foreach(BOARD ${BSP_${FAMILY}_BOARDS})
  48. string(REPLACE "-" "_" BOARD ${BOARD})
  49. if(BOARD IN_LIST BANNED_BOARDS)
  50. continue()
  51. endif()
  52. add_executable(bsp-test-${BOARD} ${SOURCES})
  53. target_link_libraries(bsp-test-${BOARD}
  54. BSP::STM32::${BOARD}
  55. HAL::STM32::${FAMILY}
  56. STM32::NoSys
  57. )
  58. if(DEVICE_${BOARD})
  59. target_link_libraries(bsp-test-${BOARD} CMSIS::STM32::${DEVICE_${BOARD}})
  60. endif()
  61. if(DEFINES_${BOARD})
  62. target_compile_definitions(bsp-test-${BOARD} PRIVATE ${DEFINES_${BOARD}})
  63. endif()
  64. foreach(COMP ${BSP_${FAMILY}_COMPONENTS})
  65. string(TOUPPER ${COMP} COMP)
  66. # Workaround - F3 has both CS43L22 and CS43L52 that conflicts
  67. if((FAMILY STREQUAL F3) AND (COMP STREQUAL CS43L22))
  68. continue()
  69. endif()
  70. target_link_libraries(bsp-test-${BOARD} BSP::STM32::${FAMILY}::${COMP})
  71. endforeach()
  72. endforeach()
  73. endforeach()