SConscript 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import os
  2. from os import path
  3. import config
  4. def get_srcs(src_dir, exts, recursive=False):
  5. srcs = []
  6. files = os.listdir(src_dir)
  7. for fd in files:
  8. fd_full = path.join(src_dir, fd)
  9. if path.isfile(fd_full):
  10. base,ext = path.splitext(fd)
  11. if ext in exts:
  12. srcs.append(fd_full)
  13. elif path.isdir(fd_full) and recursive:
  14. srcs = srcs + get_srcs(fd_full, exts, recursive)
  15. else:
  16. pass
  17. return srcs
  18. env = Environment(CC=config.CC,
  19. CCFLAGS=config.CCFLAGS,
  20. CXX=config.CXX,
  21. CXXFLAGS=config.CXXFLAGS,
  22. CPPPATH=config.CPPPATH,
  23. LINK=config.LINK,
  24. LINKFLAGS=config.LDFLAGS,
  25. AS=config.AS,
  26. ASFLAGS=config.ASFLAGS,
  27. CPPDEFINES=config.CPPDEFINES,
  28. ENV=os.environ)
  29. env.Replace(ASCOM='$AS $ASFLAGS $CPPPATH $CPPDEFINES -c $SOURCE -o $TARGET')
  30. env.Replace(LINKCOM='$LINK $SOURCES $LINKFLAGS -o $TARGET')
  31. srcDirs = ['application', 'linkscripts']
  32. curDir = GetLaunchDir()
  33. srcs = []
  34. for item in os.listdir(curDir):
  35. fd = path.join(curDir, item)
  36. if path.isdir(fd) and item in srcDirs:
  37. srcs = srcs + get_srcs(fd, ['.c', '.cpp', '.s'], True)
  38. for i in range(len(srcs)):
  39. srcs[i] = srcs[i][len(curDir)+1:]
  40. t=env.Program(config.TARGET, srcs)
  41. env.SideEffect(config.PROJECT+'.map', t)
  42. # Post Action
  43. a1=env.AddPostAction(config.TARGET, config.OBJCOPY + ' -Oihex ' + '$TARGET ' + config.HEX_TARGET)
  44. a2=env.AddPostAction(config.TARGET, config.OBJCOPY + ' -Obinary -S ' + '$TARGET ' + config.BIN_TARGET)
  45. env.SideEffect(config.HEX_TARGET, a1)
  46. env.SideEffect(config.BIN_TARGET, a2)