Commit 09b6cc66 authored by Stephen Kelly's avatar Stephen Kelly
Browse files

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.
parent 0c978063
Pipeline #30052 passed with stage
......@@ -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;
}
......@@ -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;
......
......@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment