SCsub 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/env python
  2. import modules_builders
  3. import os
  4. Import("env")
  5. env_modules = env.Clone()
  6. Export("env_modules")
  7. # Header with MODULE_*_ENABLED defines.
  8. env.Depends("modules_enabled.gen.h", Value(env.module_list))
  9. env.CommandNoCache(
  10. "modules_enabled.gen.h",
  11. Value(env.module_list),
  12. env.Run(
  13. modules_builders.generate_modules_enabled,
  14. "Generating enabled modules header.",
  15. # NOTE: No need to run in subprocess since this is still executed serially.
  16. subprocess=False,
  17. ),
  18. )
  19. # Header to be included in `tests/test_main.cpp` to run module-specific tests.
  20. if env["tests"]:
  21. env.Depends("modules_tests.gen.h", Value(env.module_list))
  22. env.CommandNoCache(
  23. "modules_tests.gen.h",
  24. Value(env.module_list),
  25. env.Run(
  26. modules_builders.generate_modules_tests,
  27. "Generating modules tests header.",
  28. # NOTE: No need to run in subprocess since this is still executed serially.
  29. subprocess=False,
  30. ),
  31. )
  32. env.AlwaysBuild("modules_tests.gen.h")
  33. vs_sources = []
  34. # libmodule_<name>.a for each active module.
  35. for name, path in env.module_list.items():
  36. env.modules_sources = []
  37. if not os.path.isabs(path):
  38. SConscript(name + "/SCsub") # Built-in.
  39. else:
  40. SConscript(path + "/SCsub") # Custom.
  41. lib = env_modules.add_library("module_%s" % name, env.modules_sources)
  42. env.Prepend(LIBS=[lib])
  43. if env["vsproj"]:
  44. vs_sources += env.modules_sources
  45. # libmodules.a with only register_module_types.
  46. # Must be last so that all libmodule_<name>.a libraries are on the right side
  47. # in the linker command.
  48. env.modules_sources = []
  49. env_modules.add_source_files(env.modules_sources, "register_module_types.gen.cpp")
  50. lib = env_modules.add_library("modules", env.modules_sources)
  51. env.Prepend(LIBS=[lib])
  52. if env["vsproj"]:
  53. env.modules_sources += vs_sources