1import os
2# toolchains options
3ARCH     = 'arm'
4CPU      = 'cortex-a'
5# toolchains options
6CROSS_TOOL 	= 'gcc'
7
8if os.getenv('RTT_CC'):
9	CROSS_TOOL = os.getenv('RTT_CC')
10if os.getenv('RTT_ROOT'):
11    RTT_ROOT = os.getenv('RTT_ROOT')
12
13# cross_tool provides the cross compiler
14# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
15
16if  CROSS_TOOL == 'gcc':
17	PLATFORM = 'gcc'
18	EXEC_PATH = r'C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q1-update\bin'
19
20if os.getenv('RTT_EXEC_PATH'):
21	EXEC_PATH = os.getenv('RTT_EXEC_PATH')
22
23#BUILD = 'debug'
24BUILD = ''
25MAP_FILE = 'rtthread_ma35d1.map'
26LINK_FILE = 'linking_scripts/aarch32'
27TARGET_NAME = 'rtthread.bin'
28
29#------- GCC settings ----------------------------------------------------------
30if PLATFORM == 'gcc':
31    # toolchains
32    PREFIX = 'arm-none-eabi-'
33    CC = PREFIX + 'gcc'
34    AS = PREFIX + 'gcc'
35    AR = PREFIX + 'ar'
36    CXX = PREFIX + 'g++'
37    LINK = PREFIX + 'gcc'
38    TARGET_EXT = 'elf'
39    SIZE = PREFIX + 'size'
40    OBJDUMP = PREFIX + 'objdump'
41    OBJCPY = PREFIX + 'objcopy'
42    STRIP = PREFIX + 'strip'
43
44    DEVICE = ' -march=armv8-a -mfpu=neon-vfpv4  -ftree-vectorize -ffast-math -msoft-float'
45    CFLAGS = DEVICE + ' -Wall -fno-zero-initialized-in-bss '
46    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -D__ASSEMBLY__'
47    LFLAGS = DEVICE + ' -nostartfiles  -Wl,--gc-sections,-cref,-Map=' + MAP_FILE + ',-cref,-u,system_vectors' + ' -T ' + LINK_FILE + '.ld'
48    CXXFLAGS = '  -march=armv8-a -mfpu=neon-vfpv4 -std=c++11 '
49
50    M_CFLAGS = CFLAGS + ' -mlong-calls -fPIC '
51    M_CXXFLAGS = CXXFLAGS + ' -mlong-calls -fPIC'
52    M_LFLAGS = DEVICE + CXXFLAGS + ' -Wl,--gc-sections,-z,max-page-size=0x4' +\
53                                ' -shared -fPIC -nostartfiles -nostdlib -static-libgcc'
54    M_POST_ACTION = STRIP + ' -R .hash $TARGET\n' + SIZE + ' $TARGET \n'
55    #M_BIN_PATH = r'z:\fatdisk\root'
56
57    CPATH = ''
58    LPATH = ''
59
60    if BUILD == 'debug':
61        CFLAGS += ' -O0 -gdwarf-2 -g'
62        AFLAGS += ' -gdwarf-2'
63    else:
64        CFLAGS += ' -O2'
65
66    CXXFLAGS = CFLAGS
67
68    POST_ACTION = OBJCPY + ' -O binary $TARGET ' + TARGET_NAME + '\n'
69    POST_ACTION += SIZE + ' $TARGET\n'
70
71
72def dist_handle(BSP_ROOT, dist_dir):
73    import sys
74    cwd_path = os.getcwd()
75    sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools'))
76    from sdk_dist import dist_do_building
77    dist_do_building(BSP_ROOT, dist_dir)
78