summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2002-01-17 12:54:56 -0500
committerBill Hoffman <bill.hoffman@kitware.com>2002-01-17 12:54:56 -0500
commit3df3d839ccf5430e6c033ab4f0745d5f2e65d8c6 (patch)
tree715cde362c43fe24c9714f1bfc61cb8c3d2b75c7 /Source
parent46881989961dd54b8ba66cfd6ff950ddf54742f6 (diff)
downloadcmake-3df3d839ccf5430e6c033ab4f0745d5f2e65d8c6.tar.gz
ENH: only output each link path once
Diffstat (limited to 'Source')
-rw-r--r--Source/cmDSPWriter.cxx93
1 files changed, 56 insertions, 37 deletions
diff --git a/Source/cmDSPWriter.cxx b/Source/cmDSPWriter.cxx
index 25194c418f..d1bb6ef6f0 100644
--- a/Source/cmDSPWriter.cxx
+++ b/Source/cmDSPWriter.cxx
@@ -550,6 +550,8 @@ void cmDSPWriter::WriteDSPHeader(std::ostream& fout, const char *libName,
const cmTarget &target,
std::vector<cmSourceGroup> &)
{
+ std::set<std::string> pathEmitted;
+
// determine the link directories
std::string libOptions;
std::string libDebugOptions;
@@ -578,18 +580,22 @@ void cmDSPWriter::WriteDSPHeader(std::ostream& fout, const char *libName,
{
libPath += "/";
}
- libOptions += " /LIBPATH:\"";
- libOptions += cmSystemTools::HandleNetworkPaths(libPath.c_str());
- libOptions += "$(INTDIR)\" ";
- libOptions += " /LIBPATH:\"";
- libOptions += cmSystemTools::HandleNetworkPaths(libPath.c_str());
- libOptions += "\" ";
- libMultiLineOptions += "# ADD LINK32 /LIBPATH:\"";
- libMultiLineOptions += cmSystemTools::HandleNetworkPaths(libPath.c_str());
- libMultiLineOptions += "$(INTDIR)\" ";
- libMultiLineOptions += " /LIBPATH:\"";
- libMultiLineOptions += cmSystemTools::HandleNetworkPaths(libPath.c_str());
- libMultiLineOptions += "\" \n";
+ std::string lpath = cmSystemTools::HandleNetworkPaths(libPath.c_str());
+ if(pathEmitted.insert(lpath).second)
+ {
+ libOptions += " /LIBPATH:\"";
+ libOptions += lpath;
+ libOptions += "$(INTDIR)\" ";
+ libOptions += " /LIBPATH:\"";
+ libOptions += lpath;
+ libOptions += "\" ";
+ libMultiLineOptions += "# ADD LINK32 /LIBPATH:\"";
+ libMultiLineOptions += lpath;
+ libMultiLineOptions += "$(INTDIR)\" ";
+ libMultiLineOptions += " /LIBPATH:\"";
+ libMultiLineOptions += lpath;
+ libMultiLineOptions += "\" \n";
+ }
}
if(exePath.size())
{
@@ -598,37 +604,50 @@ void cmDSPWriter::WriteDSPHeader(std::ostream& fout, const char *libName,
{
exePath += "/";
}
- libOptions += " /LIBPATH:\"";
- libOptions += cmSystemTools::HandleNetworkPaths(exePath.c_str());
- libOptions += "$(INTDIR)\" ";
- libOptions += " /LIBPATH:\"";
- libOptions += cmSystemTools::HandleNetworkPaths(exePath.c_str());
- libOptions += "\" ";
- libMultiLineOptions += "# ADD LINK32 /LIBPATH:\"";
- libMultiLineOptions += cmSystemTools::HandleNetworkPaths(exePath.c_str());
- libMultiLineOptions += "$(INTDIR)\" ";
- libMultiLineOptions += " /LIBPATH:\"";
- libMultiLineOptions += cmSystemTools::HandleNetworkPaths(exePath.c_str());
- libMultiLineOptions += "\" \n";
+ std::string lpath = cmSystemTools::HandleNetworkPaths(exePath.c_str());
+ if(pathEmitted.insert(lpath).second)
+ {
+ libOptions += " /LIBPATH:\"";
+ libOptions += lpath;
+ libOptions += "$(INTDIR)\" ";
+ libOptions += " /LIBPATH:\"";
+ libOptions += lpath;
+ libOptions += "\" ";
+ libMultiLineOptions += "# ADD LINK32 /LIBPATH:\"";
+ libMultiLineOptions += lpath;
+ libMultiLineOptions += "$(INTDIR)\" ";
+ libMultiLineOptions += " /LIBPATH:\"";
+ libMultiLineOptions += lpath;
+ libMultiLineOptions += "\" \n";
+ }
}
std::vector<std::string>::iterator i;
std::vector<std::string>& libdirs = m_Makefile->GetLinkDirectories();
for(i = libdirs.begin(); i != libdirs.end(); ++i)
{
- libOptions += " /LIBPATH:\"";
- libOptions += cmSystemTools::HandleNetworkPaths(i->c_str());
- libOptions += "/$(INTDIR)\" ";
- libOptions += " /LIBPATH:\"";
- libOptions += cmSystemTools::HandleNetworkPaths(i->c_str());
- libOptions += "\" ";
-
- libMultiLineOptions += "# ADD LINK32 /LIBPATH:\"";
- libMultiLineOptions += cmSystemTools::HandleNetworkPaths(i->c_str());
- libMultiLineOptions += "/$(INTDIR)\" ";
- libMultiLineOptions += " /LIBPATH:\"";
- libMultiLineOptions += cmSystemTools::HandleNetworkPaths(i->c_str());
- libMultiLineOptions += "\" \n";
+ std::string lpath = cmSystemTools::HandleNetworkPaths(i->c_str());
+ if(lpath[lpath.size()-1] != '/')
+ {
+ lpath += "/";
+ }
+ if(pathEmitted.insert(lpath).second)
+ {
+ libOptions += " /LIBPATH:\"";
+ libOptions += lpath;
+ libOptions += "/$(INTDIR)\" ";
+ libOptions += " /LIBPATH:\"";
+ libOptions += lpath;
+ libOptions += "\" ";
+
+ libMultiLineOptions += "# ADD LINK32 /LIBPATH:\"";
+ libMultiLineOptions += lpath;
+ libMultiLineOptions += "/$(INTDIR)\" ";
+ libMultiLineOptions += " /LIBPATH:\"";
+ libMultiLineOptions += lpath;
+ libMultiLineOptions += "\" \n";
+ }
}
+
// find link libraries
const cmTarget::LinkLibraries& libs = target.GetLinkLibraries();
cmTarget::LinkLibraries::const_iterator j;