1Import('RTT_ROOT')
2Import('rtconfig')
3from building import *
4
5# get current directory
6cwd = GetCurrentDir()
7
8#var defined
9CPPDEFINES = []
10src = []
11path = []
12
13#common lib define
14CPPDEFINES += [rtconfig.DEVICE_TYPE, 'DEBUG']
15
16#CMSIS/Include/ common/ common2/service/delay
17path += [cwd + '/CMSIS/Include/']
18path += [cwd + '/common/utils/', cwd + '/common/utils/interrupt/']
19path += [cwd + '/common/boards/']
20path += [cwd + '/common2/services/delay/', cwd + '/common2/services/delay/sam0/']
21src += Glob('./common/utils/interrupt/interrupt_sam_nvic.c')
22
23#sam0/ sam0/utils/
24path += [cwd + '/sam0/', cwd + '/sam0/utils/']
25path += [cwd + '/sam0/utils/preprocessor']
26path += [cwd + '/sam0/utils/header_files']
27
28#sam0/utils/cmsis/
29if rtconfig.DEVICE_SERIES == 'SAMD20':
30    #D20
31    path += [cwd + '/sam0/', cwd + '/sam0/utils/cmsis/samd20/include/']
32    path += [cwd + '/sam0/utils/cmsis/samd20/source/']
33    src += Glob('./sam0/utils/cmsis/samd20/source/*.c')
34    if rtconfig.PLATFORM in ['gcc']:
35        src += Glob('./sam0/utils/cmsis/samd20/source/gcc/*.s')
36    elif rtconfig.PLATFORM in ['armcc', 'armclang']:
37        src += Glob('./sam0/utils/cmsis/samd20/source/arm/*.s')
38elif rtconfig.DEVICE_SERIES == 'SAMD21':
39    #D21
40    path += [cwd + '/sam0/utils/cmsis/samd21/include/']
41    path += [cwd + '/sam0/utils/cmsis/samd21/source/']
42    src += Glob('./sam0/utils/cmsis/samd21/source/*.c')
43    if rtconfig.PLATFORM in ['gcc']:
44        src += Glob('./sam0/utils/cmsis/samd21/source/gcc/*.s')
45    elif rtconfig.PLATFORM in ['armcc', 'armclang']:
46        src += Glob('./sam0/utils/cmsis/samd21/source/arm/*.s')
47
48#sam0/drivers/system
49path += [cwd + '/sam0/drivers/system/']
50src += Glob('./sam0/drivers/system/system.c')
51path += [cwd + '/sam0/drivers/system/pinmux']
52src += Glob('./sam0/drivers/system/pinmux/*.c')
53path += [cwd + '/sam0/drivers/system/power/power_sam_d_r_h']
54path += [cwd + '/sam0/drivers/system/reset/reset_sam_d_r_h']
55path += [cwd + '/sam0/drivers/system/clock']
56path += [cwd + '/sam0/drivers/system/interrupt/']
57src += Glob('./sam0/drivers/system/interrupt/*.c')
58if rtconfig.DEVICE_SERIES == 'SAMD20':
59    path += [cwd + '/sam0/drivers/system/interrupt/system_interrupt_samd20/']
60elif rtconfig.DEVICE_SERIES == 'SAMD21':
61    path += [cwd + '/sam0/drivers/system/interrupt/system_interrupt_samd21/']
62
63#sam0/drivers/system/clock
64if rtconfig.DEVICE_SERIES == 'SAMD20':
65    path += [cwd + '/sam0/drivers/system/clock/clock_samd20']
66    #path += [cwd + '/sam0/drivers/system/clock/clock_samd20/module_config']
67    src += Glob('./sam0/drivers/system/clock/clock_samd20/*.c')
68elif rtconfig.DEVICE_SERIES == 'SAMD21':
69    #path += [cwd + '/sam0/drivers/system/clock/clock_samd21_r21_da_ha1/module_config']
70    path += [cwd + '/sam0/drivers/system/clock/clock_samd21_r21_da_ha1']
71    src += Glob('./sam0/drivers/system/clock/clock_samd21_r21_da_ha1/*.c')
72
73#sam0/drivers/sercom
74path += [cwd + '/sam0/drivers/sercom', cwd + '/sam0/drivers/sercom/usart']
75src += Glob('./sam0/drivers/sercom/*.c')
76src += Glob('./sam0/drivers/sercom/usart/*.c')
77SrcRemove(src, './sam0/drivers/sercom/sercom_interrupt.c')
78SrcRemove(src, './sam0/drivers/sercom/usart/usart_interrupt.c')
79CPPDEFINES += ['USART_CALLBACK_MODE=false']
80
81#sam0/drivers/port
82path += [cwd + '/sam0/drivers/port']
83src += Glob('./sam0/drivers/port/port.c')
84
85#sam0/drivers/rtc
86path += [cwd + '/sam0/drivers/rtc']
87src += Glob('./sam0/drivers/rtc/rtc_sam_d_r_h/rtc_count*.c')
88CPPDEFINES += ['RTC_COUNT_ASYNC=true']
89
90#sam0/drivers/extint
91path += [cwd + '/sam0/drivers/extint', cwd + '/sam0/drivers/extint/extint_sam_d_r_h']
92src += Glob('./sam0/drivers/extint/extint_callback.c')
93src += Glob('./sam0/drivers/extint/extint_sam_d_r_h/extint.c')
94CPPDEFINES += ['EXTINT_CALLBACK_MODE=true']
95
96group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)
97
98Return('group')
99