1import os 2 3# toolchains options 4ARCH ='risc-v' 5VENDOR ='t-head' 6CPU ='c906' 7CROSS_TOOL ='gcc' 8 9RTT_ROOT = os.getenv('RTT_ROOT') or os.path.join(os.getcwd(),'..','..','..') 10 11if os.getenv('RTT_CC'): 12 CROSS_TOOL = os.getenv('RTT_CC') 13 14if CROSS_TOOL == 'gcc': 15 PLATFORM = 'gcc' 16 EXEC_PATH = r'/opt/riscv64_musl/bin' 17else: 18 print('Please make sure your toolchains is GNU GCC!') 19 exit(0) 20 21if os.getenv('RTT_EXEC_PATH'): 22 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 23 24BUILD = 'debug' 25 26if PLATFORM == 'gcc': 27 # toolchains 28 #PREFIX = 'riscv64-unknown-elf-' 29 PREFIX = os.getenv('RTT_CC_PREFIX') or 'riscv64-unknown-linux-musl-' 30 CC = PREFIX + 'gcc' 31 CXX = PREFIX + 'g++' 32 AS = PREFIX + 'gcc' 33 AR = PREFIX + 'ar' 34 LINK = PREFIX + 'gcc' 35 TARGET_EXT = 'elf' 36 SIZE = PREFIX + 'size' 37 OBJDUMP = PREFIX + 'objdump' 38 OBJCPY = PREFIX + 'objcopy' 39 40 DEVICE = ' -mcmodel=medany -march=rv64imafdc -mabi=lp64' 41 CFLAGS = DEVICE + ' -fvar-tracking -ffreestanding -fno-common -ffunction-sections -fdata-sections -fstrict-volatile-bitfields ' 42 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' 43 LFLAGS = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T link.lds' + ' -lsupc++ -lgcc -static' 44 CPATH = '' 45 LPATH = '' 46 47 if BUILD == 'debug': 48 CFLAGS += ' -O0 -ggdb' 49 AFLAGS += ' -ggdb' 50 else: 51 CFLAGS += ' -O2 -Os' 52 53 CXXFLAGS = CFLAGS 54 55DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtthread.asm\n' 56POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 57