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/gnu-mcu-eclipse/riscv-none-gcc/8.2.0-2.1-20190425-1021/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 = 'release'
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  = ' -mcmodel=medany -march=rv64imafc -mabi=lp64f -fsingle-precision-constant'
42    CFLAGS  = DEVICE + ' -fno-common -ffunction-sections -fdata-sections -fstrict-volatile-bitfields'
43    AFLAGS  = ' -c' + DEVICE + ' -x assembler-with-cpp'
44    LFLAGS  = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T link.lds'
45    CPATH   = ''
46    LPATH   = ''
47
48    if BUILD == 'debug':
49        CFLAGS += ' -O0 -ggdb'
50        AFLAGS += ' -ggdb'
51    else:
52        CFLAGS += ' -O2 -Os'
53
54    CXXFLAGS = CFLAGS + ' -std=gnu++17 -Wno-multichar'
55
56DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtt.asm\n'
57POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
58