aboutsummaryrefslogtreecommitdiff
path: root/build2/cc/compile.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-05-17 15:13:58 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-05-17 15:13:58 +0200
commitaaf2525e9e8ed356feba437e56df737428a52f55 (patch)
treed6f0903840a743cf3dd0e37fa4d87e12b07fe3c6 /build2/cc/compile.cxx
parent23a1ab205c777330453a8137557cd02754533748 (diff)
Add ability to disable use of preprocessed output in compilation
This can be done from a buildfile for a scope (including project root scope) and per target via cc.reprocess: cc.reprocess = true obj{hello}: cc.reprocess = false As as well externally via config.cc.reprocess: b config.cc.reprocess=true [configure]
Diffstat (limited to 'build2/cc/compile.cxx')
-rw-r--r--build2/cc/compile.cxx11
1 files changed, 7 insertions, 4 deletions
diff --git a/build2/cc/compile.cxx b/build2/cc/compile.cxx
index 32b5f6e..1eb4c9b 100644
--- a/build2/cc/compile.cxx
+++ b/build2/cc/compile.cxx
@@ -567,11 +567,14 @@ namespace build2
pair<auto_rmfile, bool> p (inject (act, t, lo, src, dd, u));
dd.close ();
- // If the preprocessed output is suitable for compilation, pass it
- // along.
+ // If the preprocessed output is suitable for compilation and is not
+ // disabled, pass it along.
//
- if (p.second)
- md.psrc = move (p.first);
+ if (!p.first.path ().empty () && p.second)
+ {
+ if (!cast_false<bool> (t[c_reprocess]))
+ md.psrc = move (p.first);
+ }
md.mt = u ? timestamp_nonexistent : mt;
}