CMakeLists.txt 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. cmake_minimum_required(VERSION 3.15)
  2. if(CONFIG_CHERRYUSB OR ESP_PLATFORM)
  3. if(BL_SDK_BASE)
  4. message(STATUS "enable cherryusb in bouffalo_sdk")
  5. set(CONFIG_CHERRYUSB_DEVICE_CDC_ACM 1)
  6. set(CONFIG_CHERRYUSB_DEVICE_HID 1)
  7. set(CONFIG_CHERRYUSB_DEVICE_MSC 1)
  8. set(CONFIG_CHERRYUSB_DEVICE_AUDIO 1)
  9. set(CONFIG_CHERRYUSB_DEVICE_VIDEO 1)
  10. set(CONFIG_CHERRYUSB_DEVICE_GAMEPAD 1)
  11. set(CONFIG_CHERRYUSB_HOST_CDC_ACM 1)
  12. set(CONFIG_CHERRYUSB_HOST_CDC_ECM 1)
  13. set(CONFIG_CHERRYUSB_HOST_CDC_NCM 1)
  14. set(CONFIG_CHERRYUSB_HOST_HID 1)
  15. set(CONFIG_CHERRYUSB_HOST_MSC 1)
  16. set(CONFIG_CHERRYUSB_HOST_VIDEO 1)
  17. set(CONFIG_CHERRYUSB_HOST_AUDIO 1)
  18. set(CONFIG_CHERRYUSB_HOST_CDC_RNDIS 1)
  19. # set(CONFIG_CHERRYUSB_HOST_BLUETOOTH 1)
  20. set(CONFIG_CHERRYUSB_HOST_ASIX 1)
  21. set(CONFIG_CHERRYUSB_HOST_RTL8152 1)
  22. set(CONFIG_CHERRYUSB_HOST_CH34X 1)
  23. set(CONFIG_CHERRYUSB_HOST_CP210X 1)
  24. set(CONFIG_CHERRYUSB_HOST_FTDI 1)
  25. set(CONFIG_CHERRYUSB_HOST_PL2303 1)
  26. set(CONFIG_CHERRYUSB_HOST_GSM 1)
  27. set(CONFIG_CHERRYUSB_DEVICE_BL 1)
  28. set(CONFIG_CHERRYUSB_HOST_EHCI_BL 1)
  29. set(CONFIG_CHERRYUSB_OSAL "freertos")
  30. include(${CMAKE_CURRENT_LIST_DIR}/cherryusb.cmake)
  31. list(REMOVE_DUPLICATES cherryusb_srcs)
  32. list(REMOVE_DUPLICATES cherryusb_incs)
  33. sdk_generate_library(cherryusb)
  34. sdk_add_include_directories(${cherryusb_incs})
  35. sdk_library_add_sources(${cherryusb_srcs})
  36. elseif(ESP_PLATFORM)
  37. message(STATUS "enable cherryusb in esp-idf")
  38. set(CONFIG_CHERRYUSB_DEVICE_DWC2_ESP 1)
  39. set(CONFIG_CHERRYUSB_HOST_DWC2_ESP 1)
  40. set(CONFIG_CHERRYUSB_OSAL "idf")
  41. include(${CMAKE_CURRENT_LIST_DIR}/cherryusb.cmake)
  42. list(REMOVE_DUPLICATES cherryusb_srcs)
  43. list(REMOVE_DUPLICATES cherryusb_incs)
  44. set(ldfragments "osal/idf/linker.lf")
  45. if(CONFIG_CHERRYUSB_HOST_CDC_ECM
  46. OR CONFIG_CHERRYUSB_HOST_CDC_RNDIS
  47. OR CONFIG_CHERRYUSB_HOST_CDC_NCM
  48. OR CONFIG_CHERRYUSB_HOST_ASIX
  49. OR CONFIG_CHERRYUSB_HOST_RTL8152
  50. )
  51. idf_component_get_property(lwip lwip COMPONENT_LIB)
  52. target_compile_definitions(${lwip} PRIVATE "-DPBUF_POOL_BUFSIZE=1600")
  53. endif()
  54. idf_component_get_property(freertos_include freertos ORIG_INCLUDE_PATH)
  55. if(CONFIG_CHERRYUSB_HOST_MSC)
  56. list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/platform/idf/usbh_fatfs.c)
  57. endif()
  58. set(priv_req esp_mm esp_netif esp_timer fatfs)
  59. if(${IDF_VERSION_MAJOR} LESS 6)
  60. list(APPEND priv_req usb)
  61. endif()
  62. idf_component_register(
  63. SRCS
  64. ${cherryusb_srcs}
  65. INCLUDE_DIRS
  66. ${cherryusb_incs}
  67. ${freertos_include}
  68. PRIV_REQUIRES
  69. ${priv_req}
  70. LDFRAGMENTS
  71. ${ldfragments}
  72. )
  73. if(CONFIG_CHERRYUSB_HOST)
  74. target_linker_script(${COMPONENT_LIB} INTERFACE "osal/idf/usbh_class_info.ld")
  75. # 强制链接器不删除符号
  76. if(CONFIG_CHERRYUSB_HOST_CDC_ACM)
  77. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_acm_none_class_info")
  78. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_data_class_info")
  79. endif()
  80. if(CONFIG_CHERRYUSB_HOST_HID)
  81. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u hid_custom_class_info")
  82. endif()
  83. if(CONFIG_CHERRYUSB_HOST_MSC)
  84. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u msc_class_info")
  85. endif()
  86. if(CONFIG_CHERRYUSB_HOST_CDC_ECM)
  87. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_ecm_class_info")
  88. endif()
  89. if(CONFIG_CHERRYUSB_HOST_CDC_RNDIS)
  90. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u rndis_class_info")
  91. endif()
  92. if(CONFIG_CHERRYUSB_HOST_CDC_NCM)
  93. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cdc_ncm_class_info")
  94. endif()
  95. if(CONFIG_CHERRYUSB_HOST_VIDEO)
  96. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u video_ctrl_class_info")
  97. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u video_streaming_class_info")
  98. endif()
  99. if(CONFIG_CHERRYUSB_HOST_AUDIO)
  100. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u audio_ctrl_intf_class_info")
  101. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u audio_streaming_intf_class_info")
  102. endif()
  103. if(CONFIG_CHERRYUSB_HOST_BLUETOOTH)
  104. if(CONFIG_USBHOST_BLUETOOTH_HCI_H4)
  105. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u bluetooth_h4_nrf_class_info")
  106. else()
  107. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u bluetooth_class_info")
  108. endif()
  109. endif()
  110. if(CONFIG_CHERRYUSB_HOST_ASIX)
  111. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u asix_class_info")
  112. endif()
  113. if(CONFIG_CHERRYUSB_HOST_RTL8152)
  114. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u rtl8152_class_info")
  115. endif()
  116. if(CONFIG_CHERRYUSB_HOST_FTDI)
  117. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u ftdi_class_info")
  118. endif()
  119. if(CONFIG_CHERRYUSB_HOST_CH34X)
  120. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u ch34x_class_info")
  121. endif()
  122. if(CONFIG_CHERRYUSB_HOST_CP210X)
  123. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u cp210x_class_info")
  124. endif()
  125. if(CONFIG_CHERRYUSB_HOST_PL2303)
  126. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u pl2303_class_info")
  127. endif()
  128. if(CONFIG_CHERRYUSB_HOST_GSM)
  129. target_link_libraries(${COMPONENT_LIB} INTERFACE "-u gsm_class_info")
  130. endif()
  131. endif()
  132. if(CONFIG_CHERRYUSB)
  133. set_source_files_properties("class/audio/usbd_audio.c" PROPERTIES COMPILE_FLAGS -Wno-maybe-uninitialized)
  134. endif()
  135. elseif(ZEPHYR_BASE)
  136. message(STATUS "enable cherryusb in zephyr")
  137. set(CONFIG_CHERRYUSB_OSAL "zephyr")
  138. include(${CMAKE_CURRENT_LIST_DIR}/cherryusb.cmake)
  139. list(REMOVE_DUPLICATES cherryusb_srcs)
  140. list(REMOVE_DUPLICATES cherryusb_incs)
  141. if (CONFIG_SHELL)
  142. list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/platform/zephyr/usb_cmd.c)
  143. endif ()
  144. if (CONFIG_FILE_SYSTEM AND CONFIG_CHERRYUSB_HOST)
  145. list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/platform/zephyr/usbh_msc_disk.c)
  146. endif ()
  147. zephyr_library()
  148. if(cherryusb_incs)
  149. zephyr_include_directories(${cherryusb_incs})
  150. endif()
  151. if(cherryusb_srcs)
  152. zephyr_library_sources(${cherryusb_srcs})
  153. endif()
  154. if (CONFIG_CHERRYUSB_HOST)
  155. zephyr_linker_sources(SECTIONS zephyr/usbh_class_info.ld)
  156. endif()
  157. elseif(HPM_SDK_BASE)
  158. message(STATUS "enable cherryusb in hpm_sdk")
  159. set(CONFIG_CHERRYUSB_DEVICE_CDC_ACM 1)
  160. set(CONFIG_CHERRYUSB_DEVICE_HID 1)
  161. set(CONFIG_CHERRYUSB_DEVICE_MSC 1)
  162. set(CONFIG_CHERRYUSB_DEVICE_AUDIO 1)
  163. set(CONFIG_CHERRYUSB_DEVICE_VIDEO 1)
  164. set(CONFIG_CHERRYUSB_DEVICE_GAMEPAD 1)
  165. set(CONFIG_CHERRYUSB_HOST_CDC_ACM 1)
  166. set(CONFIG_CHERRYUSB_HOST_CDC_ECM 1)
  167. set(CONFIG_CHERRYUSB_HOST_CDC_NCM 1)
  168. set(CONFIG_CHERRYUSB_HOST_HID 1)
  169. set(CONFIG_CHERRYUSB_HOST_MSC 1)
  170. set(CONFIG_CHERRYUSB_HOST_VIDEO 1)
  171. set(CONFIG_CHERRYUSB_HOST_AUDIO 1)
  172. set(CONFIG_CHERRYUSB_HOST_CDC_RNDIS 1)
  173. # set(CONFIG_CHERRYUSB_HOST_BLUETOOTH 1)
  174. set(CONFIG_CHERRYUSB_HOST_ASIX 1)
  175. set(CONFIG_CHERRYUSB_HOST_RTL8152 1)
  176. set(CONFIG_CHERRYUSB_HOST_CH34X 1)
  177. set(CONFIG_CHERRYUSB_HOST_CP210X 1)
  178. set(CONFIG_CHERRYUSB_HOST_FTDI 1)
  179. set(CONFIG_CHERRYUSB_HOST_PL2303 1)
  180. set(CONFIG_CHERRYUSB_HOST_GSM 1)
  181. set(CONFIG_CHERRYUSB_DEVICE_HPM 1)
  182. set(CONFIG_CHERRYUSB_HOST_EHCI_HPM 1)
  183. set(CONFIG_CHERRYUSB_OSAL "freertos")
  184. include(${CMAKE_CURRENT_LIST_DIR}/cherryusb.cmake)
  185. list(REMOVE_DUPLICATES cherryusb_srcs)
  186. list(REMOVE_DUPLICATES cherryusb_incs)
  187. sdk_inc(${cherryusb_incs})
  188. sdk_src(${cherryusb_srcs})
  189. endif()
  190. endif()