summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Graham <scottmg@chromium.org>2013-09-10 22:34:01 (GMT)
committerScott Graham <scottmg@chromium.org>2013-09-10 22:34:01 (GMT)
commitcc89c1aaec13487dc633cd69f7022fcb72fc1c10 (patch)
tree2172945e24d3a4a1df6758794f3691363a3e18c6
parente36590b781d956acf9711da311d0934471f95643 (diff)
downloadNinja-cc89c1aaec13487dc633cd69f7022fcb72fc1c10.zip
Ninja-cc89c1aaec13487dc633cd69f7022fcb72fc1c10.tar.gz
Ninja-cc89c1aaec13487dc633cd69f7022fcb72fc1c10.tar.bz2
add -d keeprsp to preserve @rsp files on success on windows
-rwxr-xr-xconfigure.py2
-rw-r--r--src/build.cc3
-rw-r--r--src/debug_flags.cc (renamed from src/explain.cc)2
-rw-r--r--src/debug_flags.h (renamed from src/explain.h)2
-rw-r--r--src/graph.cc2
-rw-r--r--src/ninja.cc6
6 files changed, 13 insertions, 4 deletions
diff --git a/configure.py b/configure.py
index c838392..9fe3be8 100755
--- a/configure.py
+++ b/configure.py
@@ -263,12 +263,12 @@ n.comment('Core source files all build into ninja library.')
for name in ['build',
'build_log',
'clean',
+ 'debug_flags',
'depfile_parser',
'deps_log',
'disk_interface',
'edit_distance',
'eval_env',
- 'explain',
'graph',
'graphviz',
'lexer',
diff --git a/src/build.cc b/src/build.cc
index 8a93632..9718f85 100644
--- a/src/build.cc
+++ b/src/build.cc
@@ -25,6 +25,7 @@
#endif
#include "build_log.h"
+#include "debug_flags.h"
#include "depfile_parser.h"
#include "deps_log.h"
#include "disk_interface.h"
@@ -776,7 +777,7 @@ bool Builder::FinishCommand(CommandRunner::Result* result, string* err) {
// Delete any left over response file.
string rspfile = edge->GetBinding("rspfile");
- if (!rspfile.empty())
+ if (!rspfile.empty() && !g_keep_rsp)
disk_interface_->RemoveFile(rspfile);
if (scan_.build_log()) {
diff --git a/src/explain.cc b/src/debug_flags.cc
index 4e14c25..75f1ea5 100644
--- a/src/explain.cc
+++ b/src/debug_flags.cc
@@ -13,3 +13,5 @@
// limitations under the License.
bool g_explaining = false;
+
+bool g_keep_rsp = false;
diff --git a/src/explain.h b/src/debug_flags.h
index d4f6a6c..ba3ebf3 100644
--- a/src/explain.h
+++ b/src/debug_flags.h
@@ -24,4 +24,6 @@
extern bool g_explaining;
+extern bool g_keep_rsp;
+
#endif // NINJA_EXPLAIN_H_
diff --git a/src/graph.cc b/src/graph.cc
index 6191998..9801a7b 100644
--- a/src/graph.cc
+++ b/src/graph.cc
@@ -18,10 +18,10 @@
#include <stdio.h>
#include "build_log.h"
+#include "debug_flags.h"
#include "depfile_parser.h"
#include "deps_log.h"
#include "disk_interface.h"
-#include "explain.h"
#include "manifest_parser.h"
#include "metrics.h"
#include "state.h"
diff --git a/src/ninja.cc b/src/ninja.cc
index 0586bdc..a313ecb 100644
--- a/src/ninja.cc
+++ b/src/ninja.cc
@@ -32,8 +32,8 @@
#include "build_log.h"
#include "deps_log.h"
#include "clean.h"
+#include "debug_flags.h"
#include "disk_interface.h"
-#include "explain.h"
#include "graph.h"
#include "graphviz.h"
#include "manifest_parser.h"
@@ -747,6 +747,7 @@ bool DebugEnable(const string& name) {
printf("debugging modes:\n"
" stats print operation counts/timing info\n"
" explain explain what caused a command to execute\n"
+" keeprsp don't delete @response files on success\n"
"multiple modes can be enabled via -d FOO -d BAR\n");
return false;
} else if (name == "stats") {
@@ -755,6 +756,9 @@ bool DebugEnable(const string& name) {
} else if (name == "explain") {
g_explaining = true;
return true;
+ } else if (name == "keeprsp") {
+ g_keep_rsp = true;
+ return true;
} else {
const char* suggestion =
SpellcheckString(name.c_str(), "stats", "explain", NULL);