diff options
author | Brad King <brad.king@kitware.com> | 2016-10-20 14:38:00 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-10-20 15:04:21 (GMT) |
commit | 010560be6674def3ce02d05dcf2331230d0c4e91 (patch) | |
tree | 656b301004d07296a990f20eeb91573bcee81fb3 /Source/cmGlobalNinjaGenerator.cxx | |
parent | 2d3aa94225e259c9bc1c0d469e6326b476d225c1 (diff) | |
download | CMake-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.cxx | 13 |
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(); } |