1from building import *
2
3cwd = GetCurrentDir()
4path = [cwd]
5path += [cwd + '/common']
6path += [cwd + '/core']
7path += [cwd + '/class/hub']
8path += [cwd + '/class/cdc']
9path += [cwd + '/class/msc']
10path += [cwd + '/class/hid']
11path += [cwd + '/class/audio']
12path += [cwd + '/class/video']
13path += [cwd + '/class/wireless']
14path += [cwd + '/class/midi']
15path += [cwd + '/class/adb']
16path += [cwd + '/class/dfu']
17path += [cwd + '/class/midi']
18path += [cwd + '/class/vendor/net']
19path += [cwd + '/class/vendor/serial']
20path += [cwd + '/class/vendor/wifi']
21src = []
22
23LIBS    = []
24LIBPATH = []
25CPPDEFINES = []
26
27# USB DEVICE
28if GetDepend(['RT_CHERRYUSB_DEVICE']):
29    path += [cwd + '/osal']
30    src += Glob('core/usbd_core.c')
31    src += Glob('osal/usb_osal_rtthread.c')
32
33    if GetDepend(['RT_CHERRYUSB_DEVICE_SPEED_HS']):
34        CPPDEFINES+=['CONFIG_USB_HS']
35
36    if GetDepend(['RT_CHERRYUSB_DEVICE_FSDEV_ST']):
37        src += Glob('port/fsdev/usb_dc_fsdev.c')
38        src += Glob('port/fsdev/usb_glue_st.c')
39    if GetDepend(['RT_CHERRYUSB_DEVICE_FSDEV_CUSTOM']):
40        src += Glob('port/fsdev/usb_dc_fsdev.c')
41    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_ST']):
42        src += Glob('port/dwc2/usb_dc_dwc2.c')
43        src += Glob('port/dwc2/usb_glue_st.c')
44    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_ESP']):
45        src += Glob('port/dwc2/usb_dc_dwc2.c')
46        src += Glob('port/dwc2/usb_glue_esp.c')
47    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_KENDRYTE']):
48        src += Glob('port/dwc2/usb_dc_dwc2.c')
49        src += Glob('port/dwc2/usb_glue_kendryte.c')
50    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_AT']):
51        src += Glob('port/dwc2/usb_dc_dwc2.c')
52        src += Glob('port/dwc2/usb_glue_at.c')
53    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_HC']):
54        src += Glob('port/dwc2/usb_dc_dwc2.c')
55        src += Glob('port/dwc2/usb_glue_hc.c')
56    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_NATION']):
57        src += Glob('port/dwc2/usb_dc_dwc2.c')
58        src += Glob('port/dwc2/usb_glue_nation.c')
59    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_GD']):
60        src += Glob('port/dwc2/usb_dc_dwc2.c')
61        src += Glob('port/dwc2/usb_glue_gd.c')
62    if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_CUSTOM']):
63        src += Glob('port/dwc2/usb_dc_dwc2.c')
64    if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_ES']):
65        src += Glob('port/musb/usb_dc_musb.c')
66        src += Glob('port/musb/usb_glue_es.c')
67    if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_SUNXI']):
68        src += Glob('port/musb/usb_dc_musb.c')
69        src += Glob('port/musb/usb_glue_sunxi.c')
70    if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_BK']):
71        src += Glob('port/musb/usb_dc_musb.c')
72        src += Glob('port/musb/usb_glue_bk.c')
73    if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_SIFLI']):
74        src += Glob('port/musb/usb_dc_musb.c')
75        src += Glob('port/musb/usb_glue_sifli.c')
76    if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_CUSTOM']):
77        src += Glob('port/musb/usb_dc_musb.c')
78    if GetDepend(['RT_CHERRYUSB_DEVICE_CHIPIDEA_MCX']):
79        path += [cwd + '/port/chipidea']
80        src += Glob('port/chipidea/usb_dc_chipidea.c')
81        src += Glob('port/nxp/usb_glue_mcx.c')
82    if GetDepend(['RT_CHERRYUSB_DEVICE_CHIPIDEA_CUSTOM']):
83        path += [cwd + '/port/chipidea']
84        src += Glob('port/chipidea/usb_dc_chipidea.c')
85    if GetDepend(['RT_CHERRYUSB_DEVICE_KINETIS_MCX']):
86        src += Glob('port/kinetis/usb_dc_kinetis.c')
87        src += Glob('port/kinetis/usb_glue_mcx.c')
88    if GetDepend(['RT_CHERRYUSB_DEVICE_KINETIS_CUSTOM']):
89        src += Glob('port/kinetis/usb_dc_kinetis.c')
90    if GetDepend(['RT_CHERRYUSB_DEVICE_BL']):
91        src += Glob('port/bouffalolab/usb_dc_bl.c')
92    if GetDepend(['RT_CHERRYUSB_DEVICE_HPM']):
93        path += [cwd + '/port/hpmicro']
94        src += Glob('port/hpmicro/usb_dc_hpm.c')
95        src += Glob('port/hpmicro/usb_glue_hpm.c')
96    if GetDepend(['RT_CHERRYUSB_DEVICE_AIC']):
97        src += Glob('port/aic/usb_dc_aic.c')
98        src += Glob('port/aic/usb_dc_aic_ll.c')
99    if GetDepend(['RT_CHERRYUSB_DEVICE_CH32']):
100        if GetDepend(['RT_CHERRYUSB_DEVICE_HS']):
101            src += Glob('port/ch32/usb_dc_usbhs.c')
102        else:
103            src += Glob('port/ch32/usb_dc_usbfs.c')
104    if GetDepend(['RT_CHERRYUSB_DEVICE_PUSB2']):
105        path += [cwd + '/port/pusb2/rt-thread']
106        src += Glob('port/pusb2/rt-thread/usb_dc_glue_phytium.c')
107        if GetDepend(['ARCH_ARMV8']):
108            LIBPATH = [cwd + '/port/pusb2']
109            LIBS = ['libpusb2_dc_a64.a']
110        if GetDepend(['ARCH_ARM_CORTEX_A']):
111            LIBPATH = [cwd + '/port/pusb2']
112            LIBS = ['libpusb2_dc_a32_softfp_neon.a']
113    if GetDepend(['RT_CHERRYUSB_DEVICE_NRF5X']):
114        src += Glob('port/nrf5x/usb_dc_nrf5x.c')
115
116    if GetDepend(['RT_CHERRYUSB_DEVICE_CDC_ACM']):
117        src += Glob('class/cdc/usbd_cdc_acm.c')
118    if GetDepend(['RT_CHERRYUSB_DEVICE_HID']):
119        src += Glob('class/hid/usbd_hid.c')
120    if GetDepend(['RT_CHERRYUSB_DEVICE_MSC']):
121        src += Glob('class/msc/usbd_msc.c')
122    if GetDepend(['RT_CHERRYUSB_DEVICE_AUDIO']):
123        src += Glob('class/audio/usbd_audio.c')
124    if GetDepend(['RT_CHERRYUSB_DEVICE_VIDEO']):
125        src += Glob('class/video/usbd_video.c')
126    if GetDepend(['RT_CHERRYUSB_DEVICE_CDC_RNDIS']):
127        src += Glob('class/wireless/usbd_rndis.c')
128    if GetDepend(['RT_CHERRYUSB_DEVICE_CDC_ECM']):
129        src += Glob('class/cdc/usbd_cdc_ecm.c')
130    if GetDepend(['RT_CHERRYUSB_DEVICE_CDC_NCM']):
131        src += Glob('class/cdc/usbd_cdc_ncm.c')
132    if GetDepend(['RT_CHERRYUSB_DEVICE_DFU']):
133        src += Glob('class/dfu/usbd_dfu.c')
134    if GetDepend(['RT_CHERRYUSB_DEVICE_ADB']):
135        src += Glob('class/adb/usbd_adb.c')
136        src += Glob('platform/rtthread/usbd_adb_shell.c')
137
138    if GetDepend(['RT_CHERRYUSB_DEVICE_CDC_ACM_CHARDEV']):
139        src += Glob('platform/rtthread/usbd_serial.c')
140
141    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM']):
142        src += Glob('demo/cdc_acm_template.c')
143    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_MSC']) or GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_MSC_BLKDEV']):
144        src += Glob('demo/msc_ram_template.c')
145    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_HID_MOUSE']):
146        src += Glob('demo/hid_mouse_template.c')
147    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_HID_KEYBOARD']):
148        src += Glob('demo/hid_keyboard_template.c')
149    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_HID_CUSTOM']):
150        src += Glob('demo/hid_custom_inout_template.c')
151    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_VIDEO']):
152        src += Glob('demo/video_static_mjpeg_template.c')
153    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_AUDIO_V1_MIC_SPEAKER']):
154        src += Glob('demo/audio_v1_mic_speaker_multichan_template.c')
155    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_AUDIO_V2_MIC_SPEAKER']):
156        src += Glob('demo/audio_v2_mic_speaker_multichan_template.c')
157    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_RNDIS']):
158        src += Glob('demo/cdc_rndis_template.c')
159    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ECM']):
160        src += Glob('demo/cdc_ecm_template.c')
161    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_NCM']):
162        src += Glob('demo/cdc_ncm_template.c')
163    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM_MSC']):
164        src += Glob('demo/cdc_acm_msc_template.c')
165    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM_MSC_HID']):
166        src += Glob('demo/cdc_acm_hid_msc_template.c')
167    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV1']):
168        src += Glob('demo/winusb1.0_template.c')
169    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV2_CDC']):
170        src += Glob('demo/winusb2.0_cdc_template.c')
171    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV2_HID']):
172        src += Glob('demo/winusb2.0_hid_template.c')
173    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_ADB']):
174        src += Glob('demo/adb/usbd_adb_template.c')
175    if GetDepend(['RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM_CHARDEV']):
176        src += Glob('demo/cdc_acm_rttchardev_template.c')
177
178# USB HOST
179if GetDepend(['RT_CHERRYUSB_HOST']):
180    src += Glob('core/usbh_core.c')
181    src += Glob('class/hub/usbh_hub.c')
182    src += Glob('osal/usb_osal_rtthread.c')
183
184    if GetDepend(['RT_CHERRYUSB_HOST_EHCI_BL']):
185        src += Glob('port/ehci/usb_hc_ehci.c')
186        src += Glob('port/ehci/usb_glue_bouffalo.c')
187    if GetDepend(['RT_CHERRYUSB_HOST_EHCI_HPM']):
188        path += [cwd + '/port/hpmicro']
189        src += Glob('port/ehci/usb_hc_ehci.c')
190        src += Glob('port/hpmicro/usb_hc_hpm.c')
191        src += Glob('port/hpmicro/usb_glue_hpm.c')
192    if GetDepend(['RT_CHERRYUSB_HOST_EHCI_AIC']):
193        path += [cwd + '/port/ehci']
194        path += [cwd + '/port/ohci']
195        src += Glob('port/ehci/usb_hc_ehci.c')
196        src += Glob('port/ehci/usb_glue_aic.c')
197        src += Glob('port/ohci/usb_hc_ohci.c')
198    if GetDepend(['RT_CHERRYUSB_HOST_EHCI_MCX']):
199        path += [cwd + '/port/chipidea']
200        src += Glob('port/ehci/usb_hc_ehci.c')
201        src += Glob('port/nxp/usb_glue_mcx.c')
202    if GetDepend(['RT_CHERRYUSB_HOST_EHCI_NUC980']):
203        src += Glob('port/ehci/usb_hc_ehci.c')
204        src += Glob('port/ehci/usb_glue_nuc980.c')
205    if GetDepend(['RT_CHERRYUSB_HOST_EHCI_MA35D0']):
206        src += Glob('port/ehci/usb_hc_ehci.c')
207        src += Glob('port/ehci/usb_glue_ma35d0.c')
208    if GetDepend(['RT_CHERRYUSB_HOST_EHCI_CUSTOM']):
209        src += Glob('port/ehci/usb_hc_ehci.c')
210    if GetDepend(['RT_CHERRYUSB_HOST_DWC2_ST']):
211        src += Glob('port/dwc2/usb_hc_dwc2.c')
212        src += Glob('port/dwc2/usb_glue_st.c')
213    if GetDepend(['RT_CHERRYUSB_HOST_DWC2_ESP']):
214        src += Glob('port/dwc2/usb_hc_dwc2.c')
215        src += Glob('port/dwc2/usb_glue_esp.c')
216    if GetDepend(['RT_CHERRYUSB_HOST_DWC2_KENDRYTE']):
217        src += Glob('port/dwc2/usb_hc_dwc2.c')
218        src += Glob('port/dwc2/usb_glue_kendryte.c')
219    if GetDepend(['RT_CHERRYUSB_HOST_DWC2_HC']):
220        src += Glob('port/dwc2/usb_hc_dwc2.c')
221        src += Glob('port/dwc2/usb_glue_hc.c')
222    if GetDepend(['RT_CHERRYUSB_HOST_DWC2_NATION']):
223        src += Glob('port/dwc2/usb_hc_dwc2.c')
224        src += Glob('port/dwc2/usb_glue_nation.c')
225    if GetDepend(['RT_CHERRYUSB_HOST_DWC2_CUSTOM']):
226        src += Glob('port/dwc2/usb_hc_dwc2.c')
227    if GetDepend(['RT_CHERRYUSB_HOST_MUSB_STANDARD']):
228        src += Glob('port/musb/usb_hc_musb.c')
229    if GetDepend(['RT_CHERRYUSB_HOST_MUSB_ES']):
230        src += Glob('port/musb/usb_hc_musb.c')
231        src += Glob('port/musb/usb_glue_es.c')
232    if GetDepend(['RT_CHERRYUSB_HOST_MUSB_SUNXI']):
233        src += Glob('port/musb/usb_hc_musb.c')
234        src += Glob('port/musb/usb_glue_sunxi.c')
235    if GetDepend(['RT_CHERRYUSB_HOST_MUSB_BK']):
236        src += Glob('port/musb/usb_hc_musb.c')
237        src += Glob('port/musb/usb_glue_bk.c')
238    if GetDepend(['RT_CHERRYUSB_HOST_MUSB_SIFLI']):
239        src += Glob('port/musb/usb_hc_musb.c')
240        src += Glob('port/musb/usb_glue_sifli.c')
241    if GetDepend(['RT_CHERRYUSB_HOST_MUSB_CUSTOM']):
242        src += Glob('port/musb/usb_hc_musb.c')
243    if GetDepend(['RT_CHERRYUSB_HOST_KINETIS_MCX']):
244        src += Glob('port/kinetis/usb_hc_kinetis.c')
245        src += Glob('port/kinetis/usb_glue_mcx.c')
246    if GetDepend(['RT_CHERRYUSB_HOST_KINETIS_CUSTOM']):
247        src += Glob('port/kinetis/usb_hc_kinetis.c')
248    if GetDepend(['RT_CHERRYUSB_HOST_PUSB2']):
249        path += [cwd + '/port/pusb2/rt-thread']
250        src += Glob('port/pusb2/rt-thread/usb_hc_glue_phytium.c')
251        if GetDepend(['ARCH_ARMV8']):
252            LIBPATH = [cwd + '/port/pusb2']
253            LIBS = ['libpusb2_hc_a64.a']
254        if GetDepend(['ARCH_ARM_CORTEX_A']):
255            LIBPATH = [cwd + '/port/pusb2']
256            LIBS = ['libpusb2_hc_a32_softfp_neon.a']
257
258    if GetDepend(['RT_CHERRYUSB_HOST_XHCI']):
259        path += [cwd + '/port/xhci/phytium/rt-thread']
260        src += Glob('port/xhci/phytium/rt-thread/usb_glue_phytium_plat.c')
261        src += Glob('port/xhci/phytium/rt-thread/usb_glue_phytium.c')
262        if GetDepend(['ARCH_ARMV8']):
263            LIBPATH = [cwd + '/port/xhci/phytium']
264            LIBS = ['libxhci_a64.a']
265        if GetDepend(['ARCH_ARM_CORTEX_A']):
266            LIBPATH = [cwd + '/port/xhci/phytium']
267            LIBS = ['libxhci_a32_softfp_neon.a']
268
269    if GetDepend(['RT_CHERRYUSB_HOST_CDC_ACM']):
270        src += Glob('class/cdc/usbh_cdc_acm.c')
271    if GetDepend(['RT_CHERRYUSB_HOST_HID']):
272        src += Glob('class/hid/usbh_hid.c')
273    if GetDepend(['RT_CHERRYUSB_HOST_MSC']):
274        src += Glob('class/msc/usbh_msc.c')
275    if GetDepend(['RT_CHERRYUSB_HOST_CDC_RNDIS']):
276        src += Glob('class/wireless/usbh_rndis.c')
277    if GetDepend(['RT_CHERRYUSB_HOST_CDC_ECM']):
278        src += Glob('class/cdc/usbh_cdc_ecm.c')
279    if GetDepend(['RT_CHERRYUSB_HOST_CDC_NCM']):
280        src += Glob('class/cdc/usbh_cdc_ncm.c')
281    if GetDepend(['RT_CHERRYUSB_HOST_VIDEO']):
282        src += Glob('class/video/usbh_video.c')
283    if GetDepend(['RT_CHERRYUSB_HOST_AUDIO']):
284        src += Glob('class/audio/usbh_audio.c')
285    if GetDepend(['RT_CHERRYUSB_HOST_BLUETOOTH']):
286        src += Glob('class/wireless/usbh_bluetooth.c')
287    if GetDepend(['RT_CHERRYUSB_HOST_ASIX']):
288        src += Glob('class/vendor/net/usbh_asix.c')
289    if GetDepend(['RT_CHERRYUSB_HOST_RTL8152']):
290        src += Glob('class/vendor/net/usbh_rtl8152.c')
291    if GetDepend(['RT_CHERRYUSB_HOST_FTDI']):
292        src += Glob('class/vendor/serial/usbh_ftdi.c')
293    if GetDepend(['RT_CHERRYUSB_HOST_CH34X']):
294        src += Glob('class/vendor/serial/usbh_ch34x.c')
295    if GetDepend(['RT_CHERRYUSB_HOST_CP210X']):
296        src += Glob('class/vendor/serial/usbh_cp210x.c')
297    if GetDepend(['RT_CHERRYUSB_HOST_PL2303']):
298        src += Glob('class/vendor/serial/usbh_pl2303.c')
299
300    if GetDepend(['CONFIG_TEST_USBH_HID']):
301        src += Glob('demo/usb_host.c')
302
303    if GetDepend(['RT_CHERRYUSB_HOST_CDC_ACM'])    \
304        or GetDepend(['RT_CHERRYUSB_HOST_FTDI'])   \
305        or GetDepend(['RT_CHERRYUSB_HOST_CH34X'])  \
306        or GetDepend(['RT_CHERRYUSB_HOST_CP210X']) \
307        or GetDepend(['RT_CHERRYUSB_HOST_PL2303']):
308        src += Glob('platform/rtthread/usbh_serial.c')
309
310    if GetDepend('RT_USING_DFS') and GetDepend(['RT_CHERRYUSB_HOST_MSC']):
311       src += Glob('platform/rtthread/usbh_dfs.c')
312
313    if GetDepend('RT_CHERRYUSB_HOST_CDC_ECM') \
314        or GetDepend('RT_CHERRYUSB_HOST_CDC_RNDIS') \
315        or GetDepend('RT_CHERRYUSB_HOST_CDC_NCM') \
316        or GetDepend('RT_CHERRYUSB_HOST_ASIX') \
317        or GetDepend('RT_CHERRYUSB_HOST_RTL8152'):
318       src += Glob('platform/rtthread/usbh_lwip.c')
319
320src += Glob('platform/rtthread/usb_msh.c')
321src += Glob('platform/rtthread/usb_check.c')
322
323group = DefineGroup('CherryUSB', src, depend = ['RT_USING_CHERRYUSB'], LIBS = LIBS, LIBPATH=LIBPATH, CPPPATH = path, CPPDEFINES = CPPDEFINES)
324
325Return('group')
326
327