1import os
2ARCH     = 'arm'
3CPU      = 'arm926'
4# toolchains options
5CROSS_TOOL  = 'gcc'
6
7#------- toolchains path -------------------------------------------------------
8if os.getenv('RTT_CC'):
9    CROSS_TOOL = os.getenv('RTT_CC')
10
11if  CROSS_TOOL == 'gcc':
12    PLATFORM    = 'gcc'
13   # EXEC_PATH  = 'D:/ArdaArmTools/Sourcery_Lite/bin'
14    EXEC_PATH   = r'D:/ArdaArmTools/GNUARM_4.9_2015q1/bin'
15elif CROSS_TOOL == 'keil':
16    PLATFORM    = 'armcc'
17    EXEC_PATH   = r'C:/Keil_v5'
18elif CROSS_TOOL == 'iar':
19    PLATFORM    = 'iccarm'
20    EXEC_PATH    = 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3'
21
22if os.getenv('RTT_EXEC_PATH'):
23    EXEC_PATH = os.getenv('RTT_EXEC_PATH')
24
25#BUILD = 'debug'
26BUILD = 'release'
27
28CORE = 'arm926ej-s'
29MAP_FILE = 'rtthread.map'
30LINK_FILE = 'link_scripts/sdram'
31TARGET_NAME = 'rtthread.bin'
32
33#------- GCC settings ----------------------------------------------------------
34if PLATFORM == 'gcc':
35    # toolchains
36    PREFIX = 'arm-none-eabi-'
37    #PREFIX = 'arm-none-linux-gnueabi-'
38    CC = PREFIX + 'gcc'
39    AS = PREFIX + 'gcc'
40    AR = PREFIX + 'ar'
41    LINK = PREFIX + 'gcc'
42    TARGET_EXT = 'elf'
43    SIZE = PREFIX + 'size'
44    OBJDUMP = PREFIX + 'objdump'
45    OBJCPY = PREFIX + 'objcopy'
46
47    DEVICE = ' -mcpu=arm926ej-s'
48    CFLAGS = DEVICE
49    AFLAGS = '-c'+ DEVICE + ' -x assembler-with-cpp'
50    AFLAGS += ' -Iplatform'
51    LFLAGS = DEVICE
52    LFLAGS += ' -Wl,--gc-sections,-cref,-Map=' + MAP_FILE
53    LFLAGS += ' -T ' + LINK_FILE + '.ld'
54
55    CPATH = ''
56    LPATH = ''
57
58    if BUILD == 'debug':
59        CFLAGS += ' -O0 -gdwarf-2'
60        AFLAGS += ' -gdwarf-2'
61    else:
62        CFLAGS += ' -O2'
63
64    POST_ACTION = OBJCPY + ' -O binary $TARGET ' + TARGET_NAME + '\n'
65    POST_ACTION += SIZE + ' $TARGET\n'
66#------- Keil settings ---------------------------------------------------------
67elif PLATFORM == 'armcc':
68    # toolchains
69    CC = 'armcc'
70    AS = 'armasm'
71    AR = 'armar'
72    LINK = 'armlink'
73    TARGET_EXT = 'axf'
74    EXEC_PATH += '/arm/armcc/bin/'
75
76    DEVICE = ' --cpu=' + CORE
77    CFLAGS = DEVICE + ' --apcs=interwork --diag_suppress=870'
78    AFLAGS = DEVICE + ' -Iplatform'
79    LFLAGS = DEVICE + ' --strict'
80    LFLAGS += ' --info sizes --info totals --info unused --info veneers'
81    LFLAGS += ' --list ' + MAP_FILE
82    LFLAGS += ' --scatter  ' + LINK_FILE + '.scat'
83
84    if BUILD == 'debug':
85        CFLAGS += ' -g -O0'
86        AFLAGS += ' -g'
87    else:
88        CFLAGS += ' -O2'
89
90    POST_ACTION = 'fromelf --bin $TARGET --output ' + TARGET_NAME + ' \n'
91    POST_ACTION += 'fromelf -z $TARGET\n'
92#------- IAR settings ----------------------------------------------------------
93elif PLATFORM == 'iccarm':
94    # toolchains
95    CC = 'iccarm'
96    AS = 'iasmarm'
97    AR = 'iarchive'
98    LINK = 'ilinkarm'
99    TARGET_EXT = 'axf'
100
101    DEVICE = CORE
102
103    CFLAGS = '--cpu=' + DEVICE
104    CFLAGS += ' --diag_suppress Pa050'
105    CFLAGS += ' --no_cse'
106    CFLAGS += ' --no_unroll'
107    CFLAGS += ' --no_inline'
108    CFLAGS += ' --no_code_motion'
109    CFLAGS += ' --no_tbaa'
110    CFLAGS += ' --no_clustering'
111    CFLAGS += ' --no_scheduling'
112
113    CFLAGS += ' --endian=little'
114    CFLAGS += ' -e'
115    CFLAGS += ' --fpu=none'
116    CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"'
117    CFLAGS += ' --silent'
118
119    AFLAGS = '--cpu '+ DEVICE
120    AFLAGS += ' -s+'
121    AFLAGS += ' -w+'
122    AFLAGS += ' -r'
123    AFLAGS += ' --fpu none'
124    AFLAGS += ' -S'
125    AFLAGS += ' -Iplatform'
126
127    if BUILD == 'debug':
128        CFLAGS += ' --debug'
129        CFLAGS += ' -On'
130    else:
131        CFLAGS += ' -Oh'
132
133    LFLAGS = '--config ' + LINK_FILE +'.icf'
134    LFLAGS += ' --entry __iar_program_start'
135    LFLAGS += ' --map ' + MAP_FILE
136    LFLAGS += ' --silent'
137
138    EXEC_PATH = EXEC_PATH + '/arm/bin/'
139    POST_ACTION = 'ielftool  --silent --bin $TARGET ' + TARGET_NAME
140