|
|
@@ -410,28 +410,58 @@ void cmComputeLinkDepends::AddVarLinkEntries(int depender_index,
|
|
|
// 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;
|
|
|
}
|
|
|
}
|
|
|
|