summaryrefslogtreecommitdiffstats
path: root/Source/cmComputeLinkDepends.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-12-14 16:28:42 (GMT)
committerBrad King <brad.king@kitware.com>2011-12-14 16:33:01 (GMT)
commit183b95098ea4102da5ca510e8c7a36106a5c257a (patch)
tree14ea2d045ee414171b9d5e18f9ad5cfd528f9550 /Source/cmComputeLinkDepends.cxx
parent4ed1769186f0622efced9d89e6593d136c920dd2 (diff)
downloadCMake-183b95098ea4102da5ca510e8c7a36106a5c257a.zip
CMake-183b95098ea4102da5ca510e8c7a36106a5c257a.tar.gz
CMake-183b95098ea4102da5ca510e8c7a36106a5c257a.tar.bz2
Follow all dependencies of shared library private dependencies
In cmComputeLinkDepends we compute the transitive closure of private shared library dependencies. When a shared library is added to this closure we must follow all of its dependencies whether they are private or public. Previously we only followed the private dependencies. Fix the implementation to follow the public dependencies too. Also extend the ExportImport test to cover this case.
Diffstat (limited to 'Source/cmComputeLinkDepends.cxx')
-rw-r--r--Source/cmComputeLinkDepends.cxx3
1 files changed, 2 insertions, 1 deletions
diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx
index 1021bf2..802cfcf 100644
--- a/Source/cmComputeLinkDepends.cxx
+++ b/Source/cmComputeLinkDepends.cxx
@@ -429,7 +429,8 @@ void cmComputeLinkDepends::HandleSharedDependency(SharedDepEntry const& dep)
if(cmTarget::LinkInterface const* iface =
entry.Target->GetLinkInterface(this->Config))
{
- // We use just the shared dependencies, not the interface.
+ // Follow public and private dependencies transitively.
+ this->QueueSharedDependencies(index, iface->Libraries);
this->QueueSharedDependencies(index, iface->SharedDeps);
}
}