xref: /nrf52832-nimble/rtconfig.py (revision 150812a83cab50279bd772ef6db1bfaf255f2c5b)
1*150812a8SEvalZeroimport os
2*150812a8SEvalZero
3*150812a8SEvalZero# toolchains options
4*150812a8SEvalZeroARCH='arm'
5*150812a8SEvalZeroCPU='cortex-m4'
6*150812a8SEvalZeroCROSS_TOOL='keil'
7*150812a8SEvalZero
8*150812a8SEvalZeroif os.getenv('RTT_CC'):
9*150812a8SEvalZero	CROSS_TOOL = os.getenv('RTT_CC')
10*150812a8SEvalZero
11*150812a8SEvalZero# cross_tool provides the cross compiler
12*150812a8SEvalZero# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
13*150812a8SEvalZero
14*150812a8SEvalZeroif  CROSS_TOOL == 'gcc':
15*150812a8SEvalZero	PLATFORM 	= 'gcc'
16*150812a8SEvalZero	EXEC_PATH 	= 'D:/SourceryGCC/bin'
17*150812a8SEvalZeroelif CROSS_TOOL == 'keil':
18*150812a8SEvalZero	PLATFORM 	= 'armcc'
19*150812a8SEvalZero	EXEC_PATH 	= 'C:/Developer/Software/Keil_v5'
20*150812a8SEvalZeroelif CROSS_TOOL == 'iar':
21*150812a8SEvalZero    print('================ERROR============================')
22*150812a8SEvalZero    print('Not support iar yet!')
23*150812a8SEvalZero    print('=================================================')
24*150812a8SEvalZero    exit(0)
25*150812a8SEvalZero
26*150812a8SEvalZero
27*150812a8SEvalZeroBUILD = 'debug'
28*150812a8SEvalZero
29*150812a8SEvalZeroif PLATFORM == 'gcc':
30*150812a8SEvalZero    # toolchains
31*150812a8SEvalZero    PREFIX = 'arm-none-eabi-'
32*150812a8SEvalZero    CC = PREFIX + 'gcc'
33*150812a8SEvalZero    AS = PREFIX + 'gcc'
34*150812a8SEvalZero    AR = PREFIX + 'ar'
35*150812a8SEvalZero    LINK = PREFIX + 'gcc'
36*150812a8SEvalZero    TARGET_EXT = 'elf'
37*150812a8SEvalZero    SIZE = PREFIX + 'size'
38*150812a8SEvalZero    OBJDUMP = PREFIX + 'objdump'
39*150812a8SEvalZero    OBJCPY = PREFIX + 'objcopy'
40*150812a8SEvalZero
41*150812a8SEvalZero    DEVICE = ' -mcpu=cortex-m4 -mthumb -ffunction-sections -fdata-sections'
42*150812a8SEvalZero    CFLAGS = DEVICE
43*150812a8SEvalZero    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
44*150812a8SEvalZero    LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-nrf52832.map,-cref,-u,Reset_Handler -T nrf52_xxaa.ld'
45*150812a8SEvalZero
46*150812a8SEvalZero    CPATH = ''
47*150812a8SEvalZero    LPATH = ''
48*150812a8SEvalZero
49*150812a8SEvalZero    if BUILD == 'debug':
50*150812a8SEvalZero        CFLAGS += ' -O0 -gdwarf-2'
51*150812a8SEvalZero        AFLAGS += ' -gdwarf-2'
52*150812a8SEvalZero    else:
53*150812a8SEvalZero        CFLAGS += ' -O2'
54*150812a8SEvalZero
55*150812a8SEvalZero    POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
56*150812a8SEvalZero
57*150812a8SEvalZeroelif PLATFORM == 'armcc':
58*150812a8SEvalZero    # toolchains
59*150812a8SEvalZero    CC = 'armcc'
60*150812a8SEvalZero    AS = 'armasm'
61*150812a8SEvalZero    AR = 'armar'
62*150812a8SEvalZero    LINK = 'armlink'
63*150812a8SEvalZero    TARGET_EXT = 'axf'
64*150812a8SEvalZero
65*150812a8SEvalZero    DEVICE = ' --cpu=cortex-m4.fp'
66*150812a8SEvalZero    CFLAGS = DEVICE + ' --apcs=interwork'
67*150812a8SEvalZero    AFLAGS = DEVICE
68*150812a8SEvalZero    LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-nrf52832.map --scatter rtthread-nrf52832.sct'
69*150812a8SEvalZero
70*150812a8SEvalZero    CFLAGS += ' --c99 --gnu'
71*150812a8SEvalZero    CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC'
72*150812a8SEvalZero    LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB'
73*150812a8SEvalZero
74*150812a8SEvalZero    EXEC_PATH += '/arm/bin40/'
75*150812a8SEvalZero
76*150812a8SEvalZero    if BUILD == 'debug':
77*150812a8SEvalZero        CFLAGS += ' -g -O0'
78*150812a8SEvalZero        AFLAGS += ' -g'
79*150812a8SEvalZero    else:
80*150812a8SEvalZero        CFLAGS += ' -O2'
81*150812a8SEvalZero
82*150812a8SEvalZero    POST_ACTION = 'fromelf --i32combined $TARGET --output rtthread.hex \n'
83*150812a8SEvalZero    POST_ACTION += 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
84