BUG: Fix cmComputeLinkDepends::AddVarLinkEntries
- Track link type correctly - Use _LINK_TYPE variables exported by CMake 2.4
This commit is contained in:
parent
0cdf73f0a2
commit
7b048433c1
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue