FindUSBDevice.cmake 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. IF(NOT STM32Cube_DIR)
  2. SET(STM32Cube_DIR "/opt/STM32Cube_FW_F1_V1.2.0")
  3. MESSAGE(STATUS "No STM32Cube_DIR specified, using default: " ${STM32Cube_DIR})
  4. ENDIF()
  5. SET(USBDevice_SRC
  6. Core/Src/usbd_ctlreq.c
  7. Core/Src/usbd_core.c
  8. Core/Src/usbd_ioreq.c
  9. # Core/Src/usbd_conf_template.c
  10. )
  11. SET(USBDevice_INC
  12. Core/Inc/usbd_ctlreq.h
  13. Core/Inc/usbd_ioreq.h
  14. Core/Inc/usbd_core.h
  15. # Core/Inc/usbd_conf_template.h
  16. Core/Inc/usbd_def.h
  17. )
  18. SET(USBDevice_COMPONENTS CDC DFU AUDIO Template MSC HID CustomHID)
  19. SET(USBDevice_COMPONENTS_CDC_HEADERS
  20. Class/CDC/Inc/usbd_cdc.h
  21. # Class/CDC/Inc/usbd_cdc_if_template.h
  22. )
  23. SET(USBDevice_COMPONENTS_CDC_SOURCES
  24. Class/CDC/Src/usbd_cdc.c
  25. # Class/CDC/Src/usbd_cdc_if_template.c
  26. )
  27. SET(USBDevice_COMPONENTS_DFU_HEADERS
  28. # Class/DFU/Inc/usbd_dfu_media_template.h
  29. Class/DFU/Inc/usbd_dfu.h
  30. )
  31. SET(USBDevice_COMPONENTS_DFU_SOURCES
  32. Class/DFU/Src/usbd_dfu.c
  33. # Class/DFU/Src/usbd_dfu_media_template.c
  34. )
  35. SET(USBDevice_COMPONENTS_AUDIO_HEADERS
  36. Class/AUDIO/Inc/usbd_audio.h
  37. # Class/AUDIO/Inc/usbd_audio_if_template.h
  38. )
  39. SET(USBDevice_COMPONENTS_AUDIO_SOURCES
  40. # Class/AUDIO/Src/usbd_audio_if_template.c
  41. Class/AUDIO/Src/usbd_audio.c
  42. )
  43. SET(USBDevice_COMPONENTS_Template_HEADERS
  44. Class/Template/Inc/usbd_template.h
  45. )
  46. SET(USBDevice_COMPONENTS_Template_SOURCES
  47. Class/Template/Src/usbd_template.c
  48. )
  49. SET(USBDevice_COMPONENTS_MSC_HEADERS
  50. Class/MSC/Inc/usbd_msc_scsi.h
  51. # Class/MSC/Inc/usbd_msc_storage_template.h
  52. Class/MSC/Inc/usbd_msc_data.h
  53. Class/MSC/Inc/usbd_msc.h
  54. Class/MSC/Inc/usbd_msc_bot.h
  55. )
  56. SET(USBDevice_COMPONENTS_MSC_SOURCES
  57. Class/MSC/Src/usbd_msc.c
  58. Class/MSC/Src/usbd_msc_data.c
  59. Class/MSC/Src/usbd_msc_bot.c
  60. Class/MSC/Src/usbd_msc_scsi.c
  61. # Class/MSC/Src/usbd_msc_storage_template.c
  62. )
  63. SET(USBDevice_COMPONENTS_HID_HEADERS
  64. Class/HID/Inc/usbd_hid.h
  65. )
  66. SET(USBDevice_COMPONENTS_HID_SOURCES
  67. Class/HID/Src/usbd_hid.c
  68. )
  69. SET(USBDevice_COMPONENTS_CustomHID_HEADERS
  70. # Class/CustomHID/Inc/usbd_customhid_if_template.h
  71. Class/CustomHID/Inc/usbd_customhid.h
  72. )
  73. SET(USBDevice_COMPONENTS_CustomHID_SOURCES
  74. Class/CustomHID/Src/usbd_customhid.c
  75. # Class/CustomHID/Src/usbd_customhid_if_template.c
  76. )
  77. IF(NOT USBDevice_FIND_COMPONENTS)
  78. SET(USBDevice_FIND_COMPONENTS ${USBDevice_COMPONENTS})
  79. MESSAGE(STATUS "No USBDevice components selected, using all: ${USBDevice_FIND_COMPONENTS}")
  80. ENDIF()
  81. FOREACH(cmp ${USBDevice_FIND_COMPONENTS})
  82. LIST(FIND USBDevice_COMPONENTS ${cmp} USBDevice_FOUND_INDEX)
  83. IF(${USBDevice_FOUND_INDEX} LESS 0)
  84. MESSAGE(FATAL_ERROR "Unknown USBDevice component: ${cmp}. Available components: ${USBDevice_COMPONENTS}")
  85. ENDIF()
  86. LIST(FIND USBDevice_COMPONENTS ${cmp} USBDevice_FOUND_INDEX)
  87. IF(NOT (${USBDevice_FOUND_INDEX} LESS 0))
  88. LIST(APPEND USBDevice_INC ${USBDevice_COMPONENTS_${cmp}_HEADERS})
  89. LIST(APPEND USBDevice_SRC ${USBDevice_COMPONENTS_${cmp}_SOURCES})
  90. ENDIF()
  91. ENDFOREACH()
  92. LIST(REMOVE_DUPLICATES USBDevice_INC)
  93. LIST(REMOVE_DUPLICATES USBDevice_SRC)
  94. FOREACH(INC ${USBDevice_INC})
  95. SET(INC_FILE INC_FILE-NOTFOUND)
  96. GET_FILENAME_COMPONENT(INC_FILE ${STM32Cube_DIR}/Middlewares/ST/STM32_USB_Device_Library/${INC} DIRECTORY)
  97. MESSAGE(STATUS "Found ${INC}: ${INC_FILE}")
  98. LIST(APPEND USBDevice_INCLUDE_DIR ${INC_FILE})
  99. ENDFOREACH()
  100. LIST(REMOVE_DUPLICATES USBDevice_INCLUDE_DIR)
  101. FOREACH(SRC ${USBDevice_SRC})
  102. SET(SRC_FILE SRC_FILE-NOTFOUND)
  103. FIND_FILE(SRC_FILE ${SRC}
  104. HINTS ${STM32Cube_DIR}/Middlewares/ST/STM32_USB_Device_Library
  105. CMAKE_FIND_ROOT_PATH_BOTH
  106. )
  107. MESSAGE(STATUS "Found ${SRC}: ${SRC_FILE}")
  108. LIST(APPEND USBDevice_SOURCES ${SRC_FILE})
  109. ENDFOREACH()
  110. INCLUDE(FindPackageHandleStandardArgs)
  111. FIND_PACKAGE_HANDLE_STANDARD_ARGS(USBDevice DEFAULT_MSG USBDevice_INCLUDE_DIR USBDevice_SOURCES)