[cmake-commits] king committed cmComputeLinkDepends.cxx 1.9 1.10
cmake-commits at cmake.org
cmake-commits at cmake.org
Mon Feb 11 10:31:40 EST 2008
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv17208/Source
Modified Files:
cmComputeLinkDepends.cxx
Log Message:
BUG: Fix cmComputeLinkDepends::AddVarLinkEntries
- Track link type correctly
- Use _LINK_TYPE variables exported by CMake 2.4
Index: cmComputeLinkDepends.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmComputeLinkDepends.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmComputeLinkDepends.cxx 7 Feb 2008 21:24:54 -0000 1.9
+++ cmComputeLinkDepends.cxx 11 Feb 2008 15:31:38 -0000 1.10
@@ -410,28 +410,58 @@
// Look for entries meant for this configuration.
std::vector<std::string> actual_libs;
cmTarget::LinkLibraryType llt = cmTarget::GENERAL;
+ bool haveLLT = false;
for(std::vector<std::string>::const_iterator di = deplist.begin();
di != deplist.end(); ++di)
{
if(*di == "debug")
{
llt = cmTarget::DEBUG;
+ haveLLT = true;
}
else if(*di == "optimized")
{
llt = cmTarget::OPTIMIZED;
+ haveLLT = true;
}
else if(*di == "general")
{
llt = cmTarget::GENERAL;
+ haveLLT = true;
}
else if(!di->empty())
{
+ // If no explicit link type was given prior to this entry then
+ // check if the entry has its own link type variable. This is
+ // needed for compatibility with dependency files generated by
+ // the export_library_dependencies command from CMake 2.4 and
+ // lower.
+ if(!haveLLT)
+ {
+ std::string var = *di;
+ var += "_LINK_TYPE";
+ if(const char* val = this->Makefile->GetDefinition(var.c_str()))
+ {
+ if(strcmp(val, "debug") == 0)
+ {
+ llt = cmTarget::DEBUG;
+ }
+ else if(strcmp(val, "optimized") == 0)
+ {
+ llt = cmTarget::OPTIMIZED;
+ }
+ }
+ }
+
+ // If the library is meant for this link type then use it.
if(llt == cmTarget::GENERAL || llt == linkType)
{
actual_libs.push_back(*di);
}
- linkType = cmTarget::GENERAL;
+
+ // Reset the link type until another explicit type is given.
+ llt = cmTarget::GENERAL;
+ haveLLT = false;
}
}
More information about the Cmake-commits
mailing list