summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathew Robinson <mathew@chasinglogic.io>2020-02-19 14:16:18 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-02-21 19:34:45 +0000
commit9791eb19d2945a7b60ca0099dc1330c260be78c3 (patch)
treeadf03c487e2cb3952ff2c1ca899a2db98df032a4
parent0abcb05ffcf0f6fa0ea71923f6f81b285e0378d7 (diff)
downloadmongo-9791eb19d2945a7b60ca0099dc1330c260be78c3.tar.gz
SERVER-46096 Add NINJA_PREFIX
-rw-r--r--.gitignore4
-rw-r--r--SConstruct27
-rw-r--r--site_scons/site_tools/ninja.py6
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: