diff options
author | Stephen Kelly <steveire@gmail.com> | 2016-10-08 10:21:38 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2016-10-10 18:38:58 (GMT) |
commit | 09b6cc66b09b9689ca01faee5e33ef101b46f972 (patch) | |
tree | 2620c6e9ab74ecca3d8e15cbf82ad8136c9bdd2a | |
parent | 0c978063259fb013856b617d680cebcdee51ab1a (diff) | |
download | CMake-09b6cc66b09b9689ca01faee5e33ef101b46f972.zip CMake-09b6cc66b09b9689ca01faee5e33ef101b46f972.tar.gz CMake-09b6cc66b09b9689ca01faee5e33ef101b46f972.tar.bz2 |
cmLinkLineComputer: Move LinkPath computation from cmLocalGenerator
Add a ConvertToOutputForExisting method which can be made virtual later
to satisfy different generator needs.
Pass additional strings as parameters for now. They can be turned into
class state later.
-rw-r--r-- | Source/cmLinkLineComputer.cxx | 28 | ||||
-rw-r--r-- | Source/cmLinkLineComputer.h | 5 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 13 |
3 files changed, 35 insertions, 11 deletions
diff --git a/Source/cmLinkLineComputer.cxx b/Source/cmLinkLineComputer.cxx index b2b56bf..a5e8b72 100644 --- a/Source/cmLinkLineComputer.cxx +++ b/Source/cmLinkLineComputer.cxx @@ -72,3 +72,31 @@ std::string cmLinkLineComputer::ConvertToOutputFormat(std::string const& input) return this->OutputConverter->ConvertToOutputFormat(input, shellFormat); } + +std::string cmLinkLineComputer::ConvertToOutputForExisting( + std::string const& input) +{ + cmOutputConverter::OutputFormat shellFormat = (this->ForResponse) + ? cmOutputConverter::RESPONSE + : ((this->UseWatcomQuote) ? cmOutputConverter::WATCOMQUOTE + : cmOutputConverter::SHELL); + + return this->OutputConverter->ConvertToOutputForExisting(input, shellFormat); +} + +std::string cmLinkLineComputer::ComputeLinkPath( + cmComputeLinkInformation& cli, std::string const& libPathFlag, + std::string const& libPathTerminator) +{ + std::string linkPath; + std::vector<std::string> const& libDirs = cli.GetDirectories(); + for (std::vector<std::string>::const_iterator libDir = libDirs.begin(); + libDir != libDirs.end(); ++libDir) { + std::string libpath = this->ConvertToOutputForExisting(*libDir); + linkPath += " " + libPathFlag; + linkPath += libpath; + linkPath += libPathTerminator; + linkPath += " "; + } + return linkPath; +} diff --git a/Source/cmLinkLineComputer.h b/Source/cmLinkLineComputer.h index 2317385..d38213f 100644 --- a/Source/cmLinkLineComputer.h +++ b/Source/cmLinkLineComputer.h @@ -23,8 +23,13 @@ public: std::string ComputeLinkLibs(cmComputeLinkInformation& cli); + std::string ComputeLinkPath(cmComputeLinkInformation& cli, + std::string const& libPathFlag, + std::string const& libPathTerminator); + private: std::string ConvertToOutputFormat(std::string const& input); + std::string ConvertToOutputForExisting(std::string const& input); cmState::Directory StateDir; cmOutputConverter* OutputConverter; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 0d2fe86..ab3d3b6 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1441,17 +1441,8 @@ void cmLocalGenerator::OutputLinkLibraries( } } - // Append the library search path flags. - std::vector<std::string> const& libDirs = cli.GetDirectories(); - for (std::vector<std::string>::const_iterator libDir = libDirs.begin(); - libDir != libDirs.end(); ++libDir) { - std::string libpath = - this->ConvertToOutputForExisting(*libDir, shellFormat); - linkPath += " " + libPathFlag; - linkPath += libpath; - linkPath += libPathTerminator; - linkPath += " "; - } + linkPath = + linkLineComputer->ComputeLinkPath(cli, libPathFlag, libPathTerminator); std::string linkLibs = linkLineComputer->ComputeLinkLibs(cli); |