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.
|
// Look for entries meant for this configuration.
|
||||||
std::vector<std::string> actual_libs;
|
std::vector<std::string> actual_libs;
|
||||||
cmTarget::LinkLibraryType llt = cmTarget::GENERAL;
|
cmTarget::LinkLibraryType llt = cmTarget::GENERAL;
|
||||||
|
bool haveLLT = false;
|
||||||
for(std::vector<std::string>::const_iterator di = deplist.begin();
|
for(std::vector<std::string>::const_iterator di = deplist.begin();
|
||||||
di != deplist.end(); ++di)
|
di != deplist.end(); ++di)
|
||||||
{
|
{
|
||||||
if(*di == "debug")
|
if(*di == "debug")
|
||||||
{
|
{
|
||||||
llt = cmTarget::DEBUG;
|
llt = cmTarget::DEBUG;
|
||||||
|
haveLLT = true;
|
||||||
}
|
}
|
||||||
else if(*di == "optimized")
|
else if(*di == "optimized")
|
||||||
{
|
{
|
||||||
llt = cmTarget::OPTIMIZED;
|
llt = cmTarget::OPTIMIZED;
|
||||||
|
haveLLT = true;
|
||||||
}
|
}
|
||||||
else if(*di == "general")
|
else if(*di == "general")
|
||||||
{
|
{
|
||||||
llt = cmTarget::GENERAL;
|
llt = cmTarget::GENERAL;
|
||||||
|
haveLLT = true;
|
||||||
}
|
}
|
||||||
else if(!di->empty())
|
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)
|
if(llt == cmTarget::GENERAL || llt == linkType)
|
||||||
{
|
{
|
||||||
actual_libs.push_back(*di);
|
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