sconsmodular.py 982 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import posixpath
  2. import os
  3. def BuildModule(env, module):
  4. src_dir = str(env.Dir(".").srcdir or os.getcwd())
  5. module_sconscript = posixpath.join(src_dir, module, "SConscript")
  6. if not os.path.exists(module_sconscript):
  7. module_sconscript = posixpath.join(src_dir, f"{module}.scons")
  8. if not os.path.exists(module_sconscript):
  9. print(f"Cannot build module {module}: scons file not found")
  10. Exit(2)
  11. return env.SConscript(
  12. module_sconscript,
  13. variant_dir=posixpath.join(env.subst("$BUILD_DIR"), module),
  14. duplicate=0,
  15. )
  16. def BuildModules(env, modules):
  17. result = []
  18. for module in modules:
  19. build_res = env.BuildModule(module)
  20. # print("module ", module, build_res)
  21. if build_res is None:
  22. continue
  23. result.append(build_res)
  24. return result
  25. def generate(env):
  26. env.AddMethod(BuildModule)
  27. env.AddMethod(BuildModules)
  28. def exists(env):
  29. return True