SConstruct 1.3 KB

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