d86de6c98e
A new `env.Run` method is added which allows to control the verbosity of builders output automatically depending on whether the "verbose" option is set. It also allows to optionally run any SCons commands in a subprocess using the existing `run_in_subprocess` method, unifying the interface. `Action` objects wrap all builder functions to include a short build message associated with any action. Notably, this removes quite verbose output generated by `make_doc_header` and `make_editor_icons_action` builders.
66 lines
2 KiB
Python
66 lines
2 KiB
Python
#!/usr/bin/env python
|
|
|
|
import modules_builders
|
|
import os
|
|
|
|
Import("env")
|
|
|
|
env_modules = env.Clone()
|
|
|
|
Export("env_modules")
|
|
|
|
# Header with MODULE_*_ENABLED defines.
|
|
env.CommandNoCache(
|
|
"modules_enabled.gen.h",
|
|
Value(env.module_list),
|
|
env.Run(
|
|
modules_builders.generate_modules_enabled,
|
|
"Generating enabled modules header.",
|
|
# NOTE: No need to run in subprocess since this is still executed serially.
|
|
subprocess=False,
|
|
),
|
|
)
|
|
|
|
# Header to be included in `tests/test_main.cpp` to run module-specific tests.
|
|
if env["tests"]:
|
|
env.CommandNoCache(
|
|
"modules_tests.gen.h",
|
|
Value(env.module_list),
|
|
env.Run(
|
|
modules_builders.generate_modules_tests,
|
|
"Generating modules tests header.",
|
|
# NOTE: No need to run in subprocess since this is still executed serially.
|
|
subprocess=False,
|
|
),
|
|
)
|
|
env.AlwaysBuild("modules_tests.gen.h")
|
|
|
|
vs_sources = []
|
|
# libmodule_<name>.a for each active module.
|
|
for name, path in env.module_list.items():
|
|
env.modules_sources = []
|
|
|
|
if not os.path.isabs(path):
|
|
SConscript(name + "/SCsub") # Built-in.
|
|
else:
|
|
SConscript(path + "/SCsub") # Custom.
|
|
|
|
# Some modules are not linked automatically but can be enabled optionally
|
|
# on iOS, so we handle those specially.
|
|
if env["platform"] == "iphone" and name in ["arkit", "camera"]:
|
|
continue
|
|
|
|
lib = env_modules.add_library("module_%s" % name, env.modules_sources)
|
|
env.Prepend(LIBS=[lib])
|
|
if env["vsproj"]:
|
|
vs_sources += env.modules_sources
|
|
|
|
# libmodules.a with only register_module_types.
|
|
# Must be last so that all libmodule_<name>.a libraries are on the right side
|
|
# in the linker command.
|
|
env.modules_sources = []
|
|
env_modules.add_source_files(env.modules_sources, "register_module_types.gen.cpp")
|
|
lib = env_modules.add_library("modules", env.modules_sources)
|
|
env.Prepend(LIBS=[lib])
|
|
if env["vsproj"]:
|
|
env.modules_sources += vs_sources
|