diff options
author | Justin Goshi <jgoshi@microsoft.com> | 2019-09-11 17:37:03 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-09-18 17:59:07 (GMT) |
commit | 0ac9dcb807d6e7b1f905bc9685f8ae217dfce38b (patch) | |
tree | 2689f0a999e3f061bd41c1a95950f11dc9f40405 /Source/cmLinkLineComputer.cxx | |
parent | 0c6468178a76b6a2a11791b010ab01c97855affa (diff) | |
download | CMake-0ac9dcb807d6e7b1f905bc9685f8ae217dfce38b.zip CMake-0ac9dcb807d6e7b1f905bc9685f8ae217dfce38b.tar.gz CMake-0ac9dcb807d6e7b1f905bc9685f8ae217dfce38b.tar.bz2 |
cmLinkLineComputer: Add ComputeLinkPath overload with backtraces
Diffstat (limited to 'Source/cmLinkLineComputer.cxx')
-rw-r--r-- | Source/cmLinkLineComputer.cxx | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/Source/cmLinkLineComputer.cxx b/Source/cmLinkLineComputer.cxx index 91c551f..d5225db 100644 --- a/Source/cmLinkLineComputer.cxx +++ b/Source/cmLinkLineComputer.cxx @@ -4,10 +4,12 @@ #include "cmLinkLineComputer.h" #include <sstream> +#include <utility> #include <vector> #include "cmComputeLinkInformation.h" #include "cmGeneratorTarget.h" +#include "cmListFileCache.h" #include "cmOutputConverter.h" #include "cmStateDirectory.h" #include "cmStateTypes.h" @@ -63,6 +65,7 @@ std::string cmLinkLineComputer::ComputeLinkLibs(cmComputeLinkInformation& cli) item.Target->GetType() == cmStateEnums::INTERFACE_LIBRARY) { continue; } + if (item.IsPath) { linkLibs += cli.GetLibLinkFileFlag(); linkLibs += @@ -72,6 +75,7 @@ std::string cmLinkLineComputer::ComputeLinkLibs(cmComputeLinkInformation& cli) } linkLibs += " "; } + return linkLibs; } @@ -101,8 +105,19 @@ std::string cmLinkLineComputer::ComputeLinkPath( std::string const& libPathTerminator) { std::string linkPath; + std::vector<BT<std::string>> linkPathList; + this->ComputeLinkPath(cli, libPathFlag, libPathTerminator, linkPathList); + cli.AppendValues(linkPath, linkPathList); + return linkPath; +} +void cmLinkLineComputer::ComputeLinkPath( + cmComputeLinkInformation& cli, std::string const& libPathFlag, + std::string const& libPathTerminator, std::vector<BT<std::string>>& linkPath) +{ if (cli.GetLinkLanguage() == "Swift") { + std::string linkPathNoBT; + for (const cmComputeLinkInformation::Item& item : cli.GetItems()) { const cmGeneratorTarget* target = item.Target; if (!target) { @@ -116,20 +131,23 @@ std::string cmLinkLineComputer::ComputeLinkPath( type = cmStateEnums::ImportLibraryArtifact; } - linkPath += cmStrCat(" ", libPathFlag, - item.Target->GetDirectory(cli.GetConfig(), type), - libPathTerminator, " "); + linkPathNoBT += cmStrCat( + " ", libPathFlag, item.Target->GetDirectory(cli.GetConfig(), type), + libPathTerminator, " "); } } - } - for (std::string const& libDir : cli.GetDirectories()) { - linkPath += - cmStrCat(" ", libPathFlag, this->ConvertToOutputForExisting(libDir), - libPathTerminator, " "); + if (!linkPathNoBT.empty()) { + linkPath.emplace_back(std::move(linkPathNoBT)); + } } - return linkPath; + for (BT<std::string> libDir : cli.GetDirectoriesWithBacktraces()) { + libDir.Value = cmStrCat(" ", libPathFlag, + this->ConvertToOutputForExisting(libDir.Value), + libPathTerminator, " "); + linkPath.emplace_back(libDir); + } } std::string cmLinkLineComputer::ComputeRPath(cmComputeLinkInformation& cli) |