1import os
2from building import *
3
4objs = []
5cwd  = GetCurrentDir()
6
7PORT_DRV_DIR = cwd + '/drivers'
8DRIVERS_EXAMPLE_DIR = cwd + '/drivers_example'
9PHYTIUM_SDK_DIR = cwd + '/phytium_standalone_sdk'
10COMMON_DIR = cwd + '/common'
11
12# common source
13src  = Glob(PHYTIUM_SDK_DIR+'/common/fassert.c')
14path = [PHYTIUM_SDK_DIR + '/common/']
15
16src  += Glob(COMMON_DIR+'/*.c')
17path += [COMMON_DIR ]
18
19# arch port
20path += [PHYTIUM_SDK_DIR + '/arch/armv8/gcc']
21
22if GetDepend(['TARGET_ARMV8_AARCH32']):
23    src += Glob(PHYTIUM_SDK_DIR+'/arch/armv8/aarch32/fsmcc.c') + Glob(PHYTIUM_SDK_DIR+'/arch/armv8/aarch32/gcc/fcpu_asm.S')
24    path += [PHYTIUM_SDK_DIR + '/arch/armv8/aarch32']
25elif GetDepend(['TARGET_ARMV8_AARCH64']):
26    src += Glob(PHYTIUM_SDK_DIR+'/arch/armv8/aarch64/fsmcc.c') + Glob(PHYTIUM_SDK_DIR+'/arch/armv8/aarch64/gcc/fcpu_asm.S')
27    path += [PHYTIUM_SDK_DIR + '/arch/armv8/aarch64']
28
29# soc & soc_port
30src += Glob(PHYTIUM_SDK_DIR+'/soc/common/fcpu_info.c')
31path += [PHYTIUM_SDK_DIR + '/soc/common']
32
33if GetDepend(['TARGET_PE2204']):
34    src += Glob(cwd+'/port/soc_port/pe220x/*.c') + Glob(cwd+'/port/soc_port/pe220x/pe2204/*.c')
35    path += [PHYTIUM_SDK_DIR + '/soc/pe220x'] + [PHYTIUM_SDK_DIR + '/soc/pe220x/pe2204']
36
37if GetDepend(['TARGET_PE2202']):
38    src += Glob(cwd+'/port/soc_port/pe220x/*.c') + Glob(cwd+'/port/soc_port/pe220x/pe2202/*.c')
39    path += [PHYTIUM_SDK_DIR + '/soc/pe220x'] + [PHYTIUM_SDK_DIR + '/soc/pe220x/pe2202']
40
41if GetDepend(['TARGET_PD2408']):
42    src += Glob(cwd+'/port/soc_port/pd2408/*.c')
43    path += [PHYTIUM_SDK_DIR + '/soc/pd2408']
44
45# board port
46if GetDepend(['E2000D_DEMO_BOARD']):
47    path += cwd + '/fboard_port/e2000d_demo'
48
49if GetDepend(['E2000Q_DEMO_BOARD']):
50    path += cwd + '/fboard_port/e2000q_demo'
51
52if GetDepend(['PHYTIUMPI_FIREFLY_BOARD']):
53    path += cwd + '/fboard_port/firefly'
54
55if GetDepend(['BSP_USING_SDCARD_FATFS']):
56    if GetDepend(['E2000D_DEMO_BOARD']):
57        src += Glob(cwd + '/port/fboard_port/e2000d_demo/mnt_sdcard.c')
58
59    if GetDepend(['E2000Q_DEMO_BOARD']):
60        src += Glob(cwd + '/port/fboard_port/e2000q_demo/mnt_sdcard.c')
61
62    if GetDepend(['PHYTIUMPI_FIREFLY_BOARD']):
63        src += Glob(cwd + '/port/fboard_port/firefly/mnt_sdcard.c')
64
65    if GetDepend(['PD2408_TEST_A_BOARD']):
66        src += Glob(cwd + '/port/fboard_port/pd2408_test_a/mnt_sdcard.c')
67else:
68    src += Glob(cwd + '/port/fboard_port/mnt_ramdisk.c')
69
70# driver
71path += [PORT_DRV_DIR]
72
73## spim
74if GetDepend(['BSP_USING_SPI']):
75    src += Glob(PHYTIUM_SDK_DIR+'/drivers/spi/fspim/*.c') + Glob(PORT_DRV_DIR+'/drv_spi.c')
76    path += [PHYTIUM_SDK_DIR + '/drivers/spi/fspim']
77
78## spim msg
79if GetDepend(['BSP_USING_SPI_MSG']):
80    src += Glob(PHYTIUM_SDK_DIR+'/drivers/spi/fspim_v2_0/*.c') + Glob(PORT_DRV_DIR+'/drv_spi_msg.c')
81    path += [PHYTIUM_SDK_DIR + '/drivers/spi/fspim_v2_0'] + [PHYTIUM_SDK_DIR + '/drivers/msg']
82
83## serial
84if GetDepend(['BSP_USING_UART']):
85    src += Glob(PHYTIUM_SDK_DIR+'/drivers/serial/fpl011/*.c') + Glob(PORT_DRV_DIR+'/drv_usart.c')
86    path += [PHYTIUM_SDK_DIR + '/drivers/serial/fpl011']
87
88## serial_v2
89if GetDepend(['BSP_USING_UART_MSG']):
90    src += Glob(PHYTIUM_SDK_DIR+'/drivers/serial/fpl011/*.c')
91    src += Glob(PHYTIUM_SDK_DIR+'/drivers/serial/fserial_v2_0/*.c') + Glob(PORT_DRV_DIR+'/drv_usart_msg.c')
92    path += [PHYTIUM_SDK_DIR + '/drivers/serial/fpl011']
93    path += [PHYTIUM_SDK_DIR + '/drivers/serial/fserial_v2_0'] +  [PHYTIUM_SDK_DIR + '/drivers/msg/']
94
95## can
96if GetDepend(['BSP_USING_CAN']):
97    src += Glob(PHYTIUM_SDK_DIR+'/drivers/can/fcan/*.c') + Glob(PORT_DRV_DIR+'/drv_can.c')
98    path += [PHYTIUM_SDK_DIR + '/drivers/can/fcan/']
99
100## qspi
101if GetDepend(['BSP_USING_QSPI']):
102    src += Glob(PHYTIUM_SDK_DIR+'/drivers/qspi/fqspi/*.c') + Glob(PORT_DRV_DIR+'/drv_qspi.c')
103    path += [PHYTIUM_SDK_DIR + '/drivers/qspi/fqspi/']
104
105## eth
106if GetDepend(['BSP_USING_ETH']):
107    src += Glob(PHYTIUM_SDK_DIR+'/drivers/eth/fxmac/*.c') + Glob(PORT_DRV_DIR+'/drv_xmac.c')
108    path += [PHYTIUM_SDK_DIR + '/drivers/eth/fxmac/'] + [PHYTIUM_SDK_DIR + '/drivers/eth/fxmac/phy/']
109
110
111## eth_v2
112if GetDepend(['BSP_USING_ETH_MSG']):
113    src += Glob(PHYTIUM_SDK_DIR+'/drivers/eth/fxmac_v2_0/*.c') + Glob(PORT_DRV_DIR+'/drv_xmac_msg.c')
114    path += [PHYTIUM_SDK_DIR + '/drivers/eth/fxmac_v2_0/'] + [PHYTIUM_SDK_DIR + '/drivers/msg']
115
116
117## sdif
118if GetDepend(['BSP_USING_SDIF']):
119    src += Glob(PHYTIUM_SDK_DIR+'/drivers/mmc/fsdif/*.c') + Glob(PORT_DRV_DIR+'/drv_sdif.c')
120    path += [PHYTIUM_SDK_DIR + '/drivers/mmc/fsdif/']
121
122## sdif_msg
123if GetDepend(['BSP_USING_SDIF_MSG']):
124    src += Glob(PHYTIUM_SDK_DIR+'/drivers/mmc/fsdif_v2_0/*.c') + Glob(PORT_DRV_DIR+'/drv_sdif_msg.c')
125    path += [PHYTIUM_SDK_DIR + '/drivers/mmc/fsdif_v2_0/'] + [PHYTIUM_SDK_DIR + '/drivers/msg/']
126
127## gpio
128if GetDepend(['BSP_USING_GPIO']):
129    src += Glob(PHYTIUM_SDK_DIR+'/drivers/pin/fgpio/*.c') + Glob(PORT_DRV_DIR+'/drv_gpio.c')
130    path += [PHYTIUM_SDK_DIR + '/drivers/pin/fgpio/']
131    if GetDepend(['TARGET_PE220X']):
132        src +=  Glob(PHYTIUM_SDK_DIR+'/soc/pe220x/fgpio_table.c')
133    if GetDepend(['TARGET_PD2408']):
134        src +=  Glob(PHYTIUM_SDK_DIR+'/soc/pd2408/fgpio_table.c')
135
136## i2s
137if GetDepend(['BSP_USING_I2S']):
138    src += Glob(PHYTIUM_SDK_DIR+'/drivers/i2s/fi2s/*.c') \
139           + Glob(PHYTIUM_SDK_DIR+'/drivers/dma/fddma/*.c') \
140           + Glob(PORT_DRV_DIR+'/drv_i2s.c')
141    path += [PHYTIUM_SDK_DIR + '/drivers/i2s/fi2s/'] \
142           + [PHYTIUM_SDK_DIR + '/drivers/dma/fddma/']
143
144## pwm
145if GetDepend(['BSP_USING_PWM']):
146    src += Glob(PHYTIUM_SDK_DIR+'/drivers/pwm/fpwm/*.c') + Glob(PORT_DRV_DIR+'/drv_pwm.c')
147    path += [PHYTIUM_SDK_DIR + '/drivers/pwm/fpwm/']
148
149## i2c
150if GetDepend(['BSP_USING_I2C']):
151    src += Glob(PHYTIUM_SDK_DIR+'/drivers/i2c/fi2c/*.c') + Glob(PORT_DRV_DIR+'/drv_i2c.c')
152    path += [PHYTIUM_SDK_DIR + '/drivers/i2c/fi2c/']
153
154## i2c msg
155if GetDepend(['BSP_USING_I2C_MSG']):
156    src += Glob(PHYTIUM_SDK_DIR+'/drivers/i2c/fi2c_v2_0/*.c') + Glob(PORT_DRV_DIR+'/drv_i2c_msg.c')
157    path += [PHYTIUM_SDK_DIR + '/drivers/i2c/fi2c_v2_0/'] + [PHYTIUM_SDK_DIR + '/drivers/msg/']
158
159# fdriver dc
160if GetDepend(['BSP_USING_DC']):
161     src += Glob(PHYTIUM_SDK_DIR+'/drivers/media/fdcdp/*.c') + Glob(PORT_DRV_DIR+'/drv_dc.c')
162     path += [PHYTIUM_SDK_DIR + '/drivers/media/fdcdp/']
163
164## iopad
165if GetDepend(['BSP_USING_IOPAD']):
166    src += Glob(PHYTIUM_SDK_DIR+'/drivers/iomux/fiopad/*.c')
167    path += [PHYTIUM_SDK_DIR + '/drivers/iomux/fiopad/']
168
169## mio
170if GetDepend(['I2C_USE_MIO']):
171    src += Glob(PHYTIUM_SDK_DIR+'/drivers/mio/fmio/*.c')
172    path += [PHYTIUM_SDK_DIR + '/drivers/mio/fmio/']
173
174## device
175if GetDepend(['BSP_USING_DEVICE']):
176    src += Glob(PHYTIUM_SDK_DIR+'/drivers/device/fdevice/fdevice.c')
177    path += [PHYTIUM_SDK_DIR + '/drivers/device/fdevice/']
178    if GetDepend(['BSP_USING_ES8336']):
179        src +=  Glob(PHYTIUM_SDK_DIR+'/drivers/device/fes8336/fes8336.c') + Glob(PHYTIUM_SDK_DIR+'/drivers/i2c/fi2c/*.c')
180        path += [PHYTIUM_SDK_DIR + '/drivers/device/fes8336/'] + [PHYTIUM_SDK_DIR + '/drivers/i2c/fi2c/']
181    if GetDepend(['BSP_USING_ES8388']):
182        src +=  Glob(PHYTIUM_SDK_DIR+'/drivers/device/fes8388/fes8388.c') + Glob(PHYTIUM_SDK_DIR+'/drivers/i2c/fi2c/*.c')
183        path += [PHYTIUM_SDK_DIR + '/drivers/device/fes8388/'] + [PHYTIUM_SDK_DIR + '/drivers/i2c/fi2c/']
184
185## drivers_example
186if GetDepend(['BSP_USING_DRIVERS_EXAMPLE']):
187    src += Glob(DRIVERS_EXAMPLE_DIR+'/*.c')
188    path += [DRIVERS_EXAMPLE_DIR]
189
190## board
191if GetDepend(['E2000D_DEMO_BOARD']):
192    src += Glob(PHYTIUM_SDK_DIR+'/board/e2000d_demo/fio_mux.c')
193    path += [PHYTIUM_SDK_DIR + '/board/e2000d_demo/']
194
195    if GetDepend(['BSP_USING_SDIF_LAYER']):
196        src += Glob(PHYTIUM_SDK_DIR+'/board/e2000d_demo/fsdif_timing.c')
197
198if GetDepend(['E2000Q_DEMO_BOARD']):
199    src += Glob(PHYTIUM_SDK_DIR+'/board/e2000q_demo/fio_mux.c')
200    path += [PHYTIUM_SDK_DIR + '/board/e2000q_demo/']
201
202    if GetDepend(['BSP_USING_SDIF_LAYER']):
203        src += Glob(PHYTIUM_SDK_DIR+'/board/e2000q_demo/fsdif_timing.c')
204
205if GetDepend(['PD2408_TEST_A_BOARD']):
206    src += Glob(PHYTIUM_SDK_DIR+'/board/pd2408_test_a/fio_mux.c')
207    path += [PHYTIUM_SDK_DIR + '/board/pd2408_test_a/']
208
209    if GetDepend(['BSP_USING_SDIF_LAYER']):
210        src += Glob(PHYTIUM_SDK_DIR+'/board/pd2408_test_a/fsdif_timing.c')
211
212if GetDepend(['PD2408_TEST_B_BOARD']):
213    src += Glob(PHYTIUM_SDK_DIR+'/board/pd2408_test_b/fio_mux.c')
214    path += [PHYTIUM_SDK_DIR + '/board/pd2408_test_b/']
215
216    if GetDepend(['BSP_USING_SDIF_LAYER']):
217        src += Glob(PHYTIUM_SDK_DIR+'/board/pd2408_test_b/fsdif_timing.c')
218
219if GetDepend(['PHYTIUMPI_FIREFLY_BOARD']):
220    src += Glob(PHYTIUM_SDK_DIR+'/board/phytiumpi_firefly/fio_mux.c')
221    path += [PHYTIUM_SDK_DIR + '/board/phytiumpi_firefly/']
222
223    if GetDepend(['BSP_USING_SDIF_LAYER']):
224        src += Glob(PHYTIUM_SDK_DIR+'/board/phytiumpi_firefly/fsdif_timing.c')
225
226
227LIBS    = []
228LIBPATH = []
229
230## fdriver port
231src += Glob(cwd+'/port/fdriver_port/*.c')
232path += [cwd + '/port/fdriver_port']
233
234## fboard port
235path += [cwd + '/port/fboard_port']
236
237## lwip port
238src += Glob(cwd+'/port/lwip_port/*.c')
239path += [cwd + '/port/lwip_port']
240
241## cherryusb port
242src += Glob(cwd + '/port/cherryusb_port/*.c')
243
244# phytium ports rt-thread examples
245PORT_DRV_DIR = cwd + '/examples'
246
247src	+= Glob(PORT_DRV_DIR + '/*.c')
248
249# sdkcomfig.h
250path += [cwd]
251
252# add group
253ASFLAGS = ''
254group = DefineGroup('FT_DRIVER', src, depend=[
255                    ''],LIBS = LIBS,LIBPATH=LIBPATH, CPPPATH=path, ASFLAGS = ASFLAGS)
256
257
258Return('group')
259