diff options
author | Brad King <brad.king@kitware.com> | 2015-11-06 19:58:09 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-11-06 19:58:09 (GMT) |
commit | 5bd78b0e999d28b163485232e434f5c7a5678ddd (patch) | |
tree | f4c4756bb2571b17514d8df44d320456cfa80b57 /Source | |
parent | 08b8fef254f4fb705046e5c59c1b8e2f4f3afe22 (diff) | |
parent | a3c5ca960bdf7c136fc64e3bb6d6619ca30623d2 (diff) | |
download | CMake-5bd78b0e999d28b163485232e434f5c7a5678ddd.zip CMake-5bd78b0e999d28b163485232e434f5c7a5678ddd.tar.gz CMake-5bd78b0e999d28b163485232e434f5c7a5678ddd.tar.bz2 |
Merge topic 'ninja-version-refactor'
a3c5ca96 cmGlobalNinjaGenerator: Save 'ninja' version very early
ed67f405 cmGlobalNinjaGenerator: Save path to 'ninja' tool very early
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalNinjaGenerator.cxx | 39 | ||||
-rw-r--r-- | Source/cmGlobalNinjaGenerator.h | 6 |
2 files changed, 26 insertions, 19 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 8498e39..a8a307c 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -548,11 +548,11 @@ void cmGlobalNinjaGenerator::Generate() { // Check minimum Ninja version. if (cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, - CurrentNinjaVersion().c_str(), + this->NinjaVersion.c_str(), RequiredNinjaVersion().c_str())) { std::ostringstream msg; - msg << "The detected version of Ninja (" << this->CurrentNinjaVersion(); + msg << "The detected version of Ninja (" << this->NinjaVersion; msg << ") is less than the version of Ninja required by CMake ("; msg << this->RequiredNinjaVersion() << ")."; this->GetCMakeInstance()->IssueMessage(cmake::FATAL_ERROR, msg.str()); @@ -585,6 +585,23 @@ void cmGlobalNinjaGenerator::Generate() this->CloseBuildFileStream(); } +void cmGlobalNinjaGenerator::FindMakeProgram(cmMakefile* mf) +{ + this->cmGlobalGenerator::FindMakeProgram(mf); + if (const char* ninjaCommand = mf->GetDefinition("CMAKE_MAKE_PROGRAM")) + { + this->NinjaCommand = ninjaCommand; + std::vector<std::string> command; + command.push_back(this->NinjaCommand); + command.push_back("--version"); + std::string version; + cmSystemTools::RunSingleCommand(command, + &version, 0, 0, 0, + cmSystemTools::OUTPUT_NONE); + this->NinjaVersion = cmSystemTools::TrimWhitespace(version); + } +} + void cmGlobalNinjaGenerator ::EnableLanguage(std::vector<std::string>const& langs, cmMakefile* mf, @@ -1260,28 +1277,16 @@ std::string cmGlobalNinjaGenerator::ninjaCmd() const { cmLocalGenerator* lgen = this->LocalGenerators[0]; if (lgen) { - return lgen->ConvertToOutputFormat( - lgen->GetMakefile()->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"), - cmLocalGenerator::SHELL); + return lgen->ConvertToOutputFormat(this->NinjaCommand, + cmLocalGenerator::SHELL); } return "ninja"; } -std::string cmGlobalNinjaGenerator::CurrentNinjaVersion() const -{ - std::string version; - std::string command = ninjaCmd() + " --version"; - cmSystemTools::RunSingleCommand(command.c_str(), - &version, 0, 0, 0, - cmSystemTools::OUTPUT_NONE); - - return cmSystemTools::TrimWhitespace(version); -} - bool cmGlobalNinjaGenerator::SupportsConsolePool() const { return cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, - CurrentNinjaVersion().c_str(), + this->NinjaVersion.c_str(), RequiredNinjaVersionForConsolePool().c_str()) == false; } diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index 7547f16..46bd588 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -305,7 +305,6 @@ public: virtual void ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const; - std::string CurrentNinjaVersion() const; // Ninja generator uses 'deps' and 'msvc_deps_prefix' introduced in 1.3 static std::string RequiredNinjaVersion() { return "1.3"; } static std::string RequiredNinjaVersionForConsolePool() { return "1.5"; } @@ -320,7 +319,7 @@ protected: private: virtual std::string GetEditCacheCommand() const; - + virtual void FindMakeProgram(cmMakefile* mf); void OpenBuildFileStream(); void CloseBuildFileStream(); @@ -392,6 +391,9 @@ private: typedef std::map<std::string, cmGeneratorTarget*> TargetAliasMap; TargetAliasMap TargetAliases; + + std::string NinjaCommand; + std::string NinjaVersion; }; #endif // ! cmGlobalNinjaGenerator_h |