for name in ['build',
'build_log',
'clean',
+ 'debug_flags',
'depfile_parser',
'deps_log',
'disk_interface',
'edit_distance',
'eval_env',
- 'explain',
'graph',
'graphviz',
'lexer',
#endif
#include "build_log.h"
+#include "debug_flags.h"
#include "depfile_parser.h"
#include "deps_log.h"
#include "disk_interface.h"
// 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()) {
// limitations under the License.
bool g_explaining = false;
+
+bool g_keep_rsp = false;
extern bool g_explaining;
+extern bool g_keep_rsp;
+
#endif // NINJA_EXPLAIN_H_
#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"
#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"
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") {
} 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);