diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | SConstruct | 27 | ||||
-rw-r--r-- | site_scons/site_tools/ninja.py | 6 |
3 files changed, 28 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore index 4aa101ca973..5b9d3fcf8cb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ /.jsdbshell /.dbshell /*.ninja -/*.ninja.deps +/*.ninja.* /.ninja_deps /.ninja_log /perf.data @@ -188,4 +188,4 @@ python3-venv python2-venv # Generated resmoke configuration file -resmoke.ini
\ No newline at end of file +resmoke.ini diff --git a/SConstruct b/SConstruct index eca31e4210d..34cbe6d77c8 100644 --- a/SConstruct +++ b/SConstruct @@ -834,6 +834,25 @@ env_vars.Add('MSVC_VERSION', help='Sets the version of Visual C++ to use (e.g. 14.1 for VS2017, 14.2 for VS2019)', default="14.2") +env_vars.Add('NINJA_PREFIX', + default="build", + help="""A prefix to add to the beginning of generated ninja +files. Useful for when compiling multiple build ninja files for +different configurations, for instance: + + scons --sanitize=asan --ninja NINJA_PREFIX=asan asan.ninja + scons --sanitize=tsan --ninja NINJA_PREFIX=tsan tsan.ninja + +Will generate the files (respectively): + + asan.ninja + tsan.ninja + +Defaults to build, best used with the generate-ninja alias so you don't have to +reiterate the prefix in the target name and variable. +""") + + env_vars.Add('NINJA_SUFFIX', help="""A suffix to add to the end of generated build.ninja files. Useful for when compiling multiple build ninja files for @@ -3783,9 +3802,13 @@ if get_option('ninja') != 'disabled': env.Alias("all", env.Alias("generated-sources")) env.Alias("core", env.Alias("generated-sources")) + ninja_suffix = env.get("NINJA_SUFFIX", "") + if ninja_suffix and ninja_suffix[0] != ".": + env["NINJA_SUFFIX"] = "." + ninja_suffix + if get_option("install-mode") == "hygienic": ninja_build = env.Ninja( - target="build.ninja", + target="${NINJA_PREFIX}.ninja$NINJA_SUFFIX", source=[ env.Alias("install-all-meta"), env.Alias("test-execution-aliases"), @@ -3793,7 +3816,7 @@ if get_option('ninja') != 'disabled': ) else: ninja_build = env.Ninja( - target="build.ninja", + target="${NINJA_PREFIX}.ninja$NINJA_SUFFIX", source=[ env.Alias("all"), env.Alias("test-execution-aliases"), diff --git a/site_scons/site_tools/ninja.py b/site_scons/site_tools/ninja.py index a865cc6dee3..28d7d42b80a 100644 --- a/site_scons/site_tools/ninja.py +++ b/site_scons/site_tools/ninja.py @@ -997,11 +997,7 @@ def ninja_builder(env, target, source): ninja_syntax_mod_name = os.path.basename(ninja_syntax_file) ninja_syntax = importlib.import_module(ninja_syntax_mod_name.replace(".py", "")) - suffix = env.get("NINJA_SUFFIX", "") - if suffix and not suffix[0] == ".": - suffix = "." + suffix - - generated_build_ninja = target[0].get_abspath() + suffix + generated_build_ninja = target[0].get_abspath() ninja_state = NinjaState(env, ninja_syntax.Writer) for src in source: |