1import os
2
3
4# toolchains options
5ARCH='arm'
6CPU='cortex-a'
7CROSS_TOOL='gcc'
8
9if os.getenv('RTT_CC'):
10    CROSS_TOOL = os.getenv('RTT_CC')
11
12# only support GNU GCC compiler.
13PLATFORM    = 'gcc'
14EXEC_PATH   = r'/usr/lib/arm-none-eabi/bin'
15if os.getenv('RTT_EXEC_PATH'):
16    EXEC_PATH = os.getenv('RTT_EXEC_PATH')
17
18BUILD = 'debug'
19
20LIBPATH  = '/usr/lib/arm-none-eabi/lib'
21
22
23if PLATFORM == 'gcc':
24    # toolchains
25    PREFIX = 'arm-none-eabi-'
26    CC = PREFIX + 'gcc'
27    CXX = PREFIX + 'g++'
28    AS = PREFIX + 'gcc'
29    AR = PREFIX + 'ar'
30    LINK = PREFIX + 'gcc'
31    TARGET_EXT = 'elf'
32    SIZE = PREFIX + 'size'
33    OBJDUMP = PREFIX + 'objdump'
34    OBJCPY = PREFIX + 'objcopy'
35    STRIP = PREFIX + 'strip'
36
37
38    DEVICE = ' -march=armv8-a  -mfpu=vfpv4-d16 -ftree-vectorize -ffast-math -mfloat-abi=soft --specs=nano.specs --specs=nosys.specs -fno-builtin '
39
40    CFLAGS = DEVICE + ' -Wall'
41    AFLAGS = ' -c'+ DEVICE + ' -fsingle-precision-constant  -fno-builtin -x assembler-with-cpp -D__ASSEMBLY__'
42    LINK_SCRIPT = 'ft_aarch32.lds'
43    LFLAGS = DEVICE + '  -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,system_vectors'+\
44                      ' -T %s' % LINK_SCRIPT
45
46    CPATH = ''
47    LPATH = LIBPATH
48
49    # generate debug info in all cases
50    AFLAGS += ' -gdwarf-2'
51    CFLAGS += ' -g -gdwarf-2'
52
53    if BUILD == 'debug':
54        CFLAGS += ' -O0'
55    else:
56        CFLAGS += ' -O2'
57
58    POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' +\
59                  SIZE + ' $TARGET \n'
60