1import os
2
3# toolchains options
4ARCH        ='risc-v'
5CPU         ='rv64'
6CROSS_TOOL  ='gcc'
7
8if os.getenv('RTT_ROOT'):
9    RTT_ROOT = os.getenv('RTT_ROOT')
10else:
11    RTT_ROOT = r'../..'
12
13if os.getenv('RTT_CC'):
14    CROSS_TOOL = os.getenv('RTT_CC')
15
16if  CROSS_TOOL == 'gcc':
17    PLATFORM    = 'gcc'
18    EXEC_PATH   = r'/opt/xpack-riscv-none-embed-gcc-8.3.0-2.1/bin'
19else:
20    print('Please make sure your toolchains is GNU GCC!')
21    exit(0)
22
23if os.getenv('RTT_EXEC_PATH'):
24    EXEC_PATH = os.getenv('RTT_EXEC_PATH')
25
26BUILD = 'debug'
27
28if PLATFORM == 'gcc':
29    # toolchains
30    PREFIX  = 'riscv-none-embed-'
31    CC      = PREFIX + 'gcc'
32    CXX     = PREFIX + 'g++'
33    AS      = PREFIX + 'gcc'
34    AR      = PREFIX + 'ar'
35    LINK    = PREFIX + 'gcc'
36    TARGET_EXT = 'elf'
37    SIZE    = PREFIX + 'size'
38    OBJDUMP = PREFIX + 'objdump'
39    OBJCPY  = PREFIX + 'objcopy'
40
41    DEVICE  = ' -march=rv64ima -mabi=lp64 -mcmodel=medany'
42    CFLAGS  = DEVICE + ' -fno-builtin -fno-exceptions -ffunction-sections -static'
43    AFLAGS  = ' -c' + DEVICE + ' -x assembler-with-cpp'
44    LFLAGS  = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T link.lds'
45    CPATH   = ''
46    LPATH   = ''
47
48    if BUILD == 'debug':
49        CFLAGS += ' -O2 -Os -g'
50        AFLAGS += ' -g'
51    else:
52        CFLAGS += ' -O2 -Os'
53
54    CXXFLAGS = CFLAGS
55
56DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtt.asm\n'
57POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
58POST_ACTION += DUMP_ACTION
59# POST_ACTION = SIZE + ' $TARGET \n'
60