1import os 2import sys 3 4arguments = sys.argv[2] 5vdso_usr = arguments 6vdso_path = os.path.join(vdso_usr, '..', '..', '..') 7 8EXEC_PATH = os.getenv('RTT_EXEC_PATH') or '/usr/bin' 9PREFIX = os.getenv('RTT_CC_PREFIX') or 'aarch64-none-elf-' 10DEVICE = os.getenv('RTT_DEVICE') or ' -march=armv8-a -mtune=cortex-a53' 11 12CC = PREFIX + 'gcc' 13CPP = PREFIX + 'cpp' 14AS = PREFIX + 'gcc' 15AR = PREFIX + 'ar' 16LINK = PREFIX + 'gcc' 17 18AFLAGS = ' -x assembler-with-cpp' 19CFLAGS = DEVICE + ' -ftree-vectorize -ffast-math -funwind-tables -fno-strict-aliasing -Wall -Wno-cpp -std=gnu99 -fdiagnostics-color=always -fPIC -O2' 20LFLAGS = DEVICE + ' -Bsymbolic -Wl,--gc-sections,-u,system_vectors -T {path}/vdso.lds'.format(path=vdso_usr) 21CFLAGS += " -I . -I {vdso_path} ".format(vdso_path=vdso_path) 22 23src = Glob('*.c') 24env = Environment(tools=['gcc', 'link'], 25 AS = AS, ASFLAGS = AFLAGS, 26 CC = CC, CFLAGS = CFLAGS, 27 CPP = CPP, AR = AR, 28 LINK = LINK, LINKFLAGS = LFLAGS) 29env.PrependENVPath('PATH', EXEC_PATH) 30 31target = os.path.join(vdso_path, 'user', 'build', 'libvdso.so') 32shared_lib = env.SharedLibrary(target=target, source=src) 33Clean(shared_lib, '{vdso_usr}/vdso.lds'.format(vdso_usr=vdso_usr)) 34Clean(shared_lib, '.sconsign.dblite') 35env.Default(shared_lib) 36