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