FindUSBHost.cmake 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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(USBHost_HEADERS
  6. Core/Inc/usbh_ctlreq.h
  7. Core/Inc/usbh_ioreq.h
  8. Core/Inc/usbh_core.h
  9. Core/Src/usbh_pipes.h
  10. )
  11. SET(USBHost_SRC
  12. Core/Src/usbh_ctlreq.c
  13. Core/Src/usbh_core.c
  14. Core/Src/usbh_ioreq.c
  15. Core/Src/usbh_pipes.c
  16. )
  17. SET(USBHost_COMPONENTS CDC AUDIO MSC HID MTP)
  18. ADD_DEFINITIONS(-DUSE_USB_HS)
  19. ADD_DEFINITIONS(-DUSE_HAL_DRIVER)
  20. SET(USBHost_COMPONENTS_CDC_HEADERS
  21. Class/CDC/Inc/usbh_cdc.h
  22. )
  23. SET(USBHost_COMPONENTS_CDC_SOURCES
  24. Class/CDC/Src/usbh_cdc.c
  25. )
  26. SET(USBHost_COMPONENTS_AUDIO_HEADERS
  27. Class/AUDIO/Inc/usbh_audio.h
  28. )
  29. SET(USBHost_COMPONENTS_AUDIO_SOURCES
  30. Class/AUDIO/Src/usbh_audio.c
  31. )
  32. SET(USBHost_COMPONENTS_MSC_HEADERS
  33. Class/MSC/Inc/usbh_msc_scsi.h
  34. # Class/MSC/Inc/usbh_msc_data.h
  35. Class/MSC/Inc/usbh_msc.h
  36. Class/MSC/Inc/usbh_msc_bot.h
  37. )
  38. SET(USBHost_COMPONENTS_MSC_SOURCES
  39. Class/MSC/Src/usbh_msc.c
  40. # Class/MSC/Src/usbh_msc_data.c
  41. Class/MSC/Src/usbh_msc_bot.c
  42. Class/MSC/Src/usbh_msc_scsi.c
  43. )
  44. SET(USBHost_COMPONENTS_HID_HEADERS
  45. Class/HID/Inc/usbh_hid_keybd.h
  46. Class/HID/Inc/usbh_hid_mouse.h
  47. Class/HID/Inc/usbh_hid_parser.h
  48. Class/HID/Inc/usbh_hid_usage.h
  49. Class/HID/Inc/usbh_hid.h
  50. )
  51. SET(USBHost_COMPONENTS_HID_SOURCES
  52. Class/HID/Src/usbh_hid_keybd.c
  53. Class/HID/Src/usbh_hid_mouse.c
  54. Class/HID/Src/usbh_hid_parser.c
  55. Class/HID/Src/usbh_hid.c
  56. )
  57. SET(USBHost_COMPONENTS_MTP_HEADERS
  58. Class/MTP/Inc/usbh_mtp_ptp.h
  59. Class/MTP/Inc/usbh_mtp.h
  60. )
  61. SET(USBHost_COMPONENTS_MTP_SOURCES
  62. Class/MTP/Src/usbh_mtp_ptp.c
  63. Class/MTP/Src/usbh_mtp.c
  64. )
  65. IF(NOT USBHost_FIND_COMPONENTS)
  66. SET(USBHost_FIND_COMPONENTS ${USBHost_COMPONENTS})
  67. MESSAGE(STATUS "No USBHost components selected, using all: ${USBHost_FIND_COMPONENTS}")
  68. ENDIF()
  69. MESSAGE(STATUS "USBHost components: ${USBHost_FIND_COMPONENTS}")
  70. FOREACH(cmp ${USBHost_FIND_COMPONENTS})
  71. LIST(FIND USBHost_COMPONENTS ${cmp} USBHost_FOUND_INDEX)
  72. IF(${USBHost_FOUND_INDEX} LESS 0)
  73. MESSAGE(FATAL_ERROR "Unknown USBHost component: ${cmp}. Available components: ${USBHost_COMPONENTS}")
  74. ENDIF()
  75. LIST(FIND USBHost_COMPONENTS ${cmp} USBHost_FOUND_INDEX)
  76. IF(NOT (${USBHost_FOUND_INDEX} LESS 0))
  77. LIST(APPEND USBHost_HEADERS ${USBHost_COMPONENTS_${cmp}_HEADERS})
  78. LIST(APPEND USBHost_SRC ${USBHost_COMPONENTS_${cmp}_SOURCES})
  79. ENDIF()
  80. ENDFOREACH()
  81. LIST(REMOVE_DUPLICATES USBHost_HEADERS)
  82. LIST(REMOVE_DUPLICATES USBHost_SRC)
  83. FOREACH(INC ${USBHost_HEADERS})
  84. SET(INC_FILE INC_FILE-NOTFOUND)
  85. GET_FILENAME_COMPONENT(INC_FILE ${STM32Cube_DIR}/Middlewares/ST/STM32_USB_Host_Library/${INC} DIRECTORY)
  86. MESSAGE(STATUS "Found ${INC}: ${INC_FILE}")
  87. LIST(APPEND USBHost_INCLUDE_DIRS ${INC_FILE})
  88. ENDFOREACH()
  89. LIST(REMOVE_DUPLICATES USBHost_INCLUDE_DIRS)
  90. FOREACH(SRC ${USBHost_SRC})
  91. SET(SRC_FILE SRC_FILE-NOTFOUND)
  92. FIND_FILE(SRC_FILE ${SRC}
  93. HINTS ${STM32Cube_DIR}/Middlewares/ST/STM32_USB_Host_Library
  94. CMAKE_FIND_ROOT_PATH_BOTH
  95. )
  96. MESSAGE(STATUS "Found ${SRC}: ${SRC_FILE}")
  97. LIST(APPEND USBHost_SOURCES ${SRC_FILE})
  98. ENDFOREACH()
  99. INCLUDE(FindPackageHandleStandardArgs)
  100. FIND_PACKAGE_HANDLE_STANDARD_ARGS(USBHost DEFAULT_MSG USBHost_INCLUDE_DIRS USBHost_SOURCES)