summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalNinjaGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-10-20 14:38:00 (GMT)
committerBrad King <brad.king@kitware.com>2016-10-20 15:04:21 (GMT)
commit010560be6674def3ce02d05dcf2331230d0c4e91 (patch)
tree656b301004d07296a990f20eeb91573bcee81fb3 /Source/cmGlobalNinjaGenerator.cxx
parent2d3aa94225e259c9bc1c0d469e6326b476d225c1 (diff)
downloadCMake-010560be6674def3ce02d05dcf2331230d0c4e91.zip
CMake-010560be6674def3ce02d05dcf2331230d0c4e91.tar.gz
CMake-010560be6674def3ce02d05dcf2331230d0c4e91.tar.bz2
Ninja: Fail early on when ninja build tool does not run
Diagnose failure to run `ninja --version` and abort early. Otherwise we end up aborting with a confusing message about ninja version "" being too old. Closes: #16378
Diffstat (limited to 'Source/cmGlobalNinjaGenerator.cxx')
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 50550aa..f023a2a 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -564,8 +564,17 @@ bool cmGlobalNinjaGenerator::FindMakeProgram(cmMakefile* mf)
command.push_back(this->NinjaCommand);
command.push_back("--version");
std::string version;
- cmSystemTools::RunSingleCommand(command, &version, CM_NULLPTR, CM_NULLPTR,
- CM_NULLPTR, cmSystemTools::OUTPUT_NONE);
+ std::string error;
+ if (!cmSystemTools::RunSingleCommand(command, &version, &error, CM_NULLPTR,
+ CM_NULLPTR,
+ cmSystemTools::OUTPUT_NONE)) {
+ mf->IssueMessage(cmake::FATAL_ERROR, "Running\n '" +
+ cmJoin(command, "' '") + "'\n"
+ "failed with:\n " +
+ error);
+ cmSystemTools::SetFatalErrorOccured();
+ return false;
+ }
this->NinjaVersion = cmSystemTools::TrimWhitespace(version);
this->CheckNinjaFeatures();
}