summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-12-10 13:24:56 (GMT)
committerKitware Robot <kwrobot@kitware.com>2018-12-10 13:25:03 (GMT)
commit2e2455cbd3ff429181d147374bbc3810acb98a97 (patch)
tree5aa8a484a54a4868979748d7d87387f9e1894876
parentd3983f7fc62eb35d08ab69ecdddff47953d86dab (diff)
parentcfd808ff19bbd407dc230458e8a9369412244487 (diff)
downloadCMake-2e2455cbd3ff429181d147374bbc3810acb98a97.zip
CMake-2e2455cbd3ff429181d147374bbc3810acb98a97.tar.gz
CMake-2e2455cbd3ff429181d147374bbc3810acb98a97.tar.bz2
Merge topic 'ninja-win-long-commands'
cfd808ff19 cmLocalNinjaGenerator: Prevent echoing of lines in ninja generated batch files 2c3f2dfa5a cmLocalNinjaGenerator: Report line of failure in ninja generated batch file 2295040e85 cmLocalNinjaGenerator: Propagate failures from batch file back to ninja Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2701
-rw-r--r--Source/cmLocalNinjaGenerator.cxx17
1 files changed, 15 insertions, 2 deletions
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index 8a07516..a8647b1 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -318,7 +318,10 @@ std::string cmLocalNinjaGenerator::WriteCommandScript(
cmsys::ofstream script(scriptPath.c_str());
-#ifndef _WIN32
+#ifdef _WIN32
+ script << "@echo off\n";
+ int line = 1;
+#else
script << "set -e\n\n";
#endif
@@ -329,12 +332,22 @@ std::string cmLocalNinjaGenerator::WriteCommandScript(
// for the raw shell script.
cmSystemTools::ReplaceString(cmd, "$$", "$");
#ifdef _WIN32
- script << cmd << " || exit /b" << '\n';
+ script << cmd << " || (set FAIL_LINE=" << ++line << "& goto :ABORT)"
+ << '\n';
#else
script << cmd << '\n';
#endif
}
+#ifdef _WIN32
+ script << "goto :EOF\n\n"
+ ":ABORT\n"
+ "set ERROR_CODE=%ERRORLEVEL%\n"
+ "echo Batch file failed at line %FAIL_LINE% "
+ "with errorcode %ERRORLEVEL%\n"
+ "exit /b %ERROR_CODE%";
+#endif
+
return scriptPath;
}