SConstruct 1.3 KB

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