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