From bd09f6eabc90f03283509b26a2b57bdc42f8eeba Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 23 Apr 2008 00:40:12 -0400 Subject: [PATCH] ENH: Simplify link lines in some cases by not allowing targets to be inferred dependees of items with unknown dependencies. --- Source/cmComputeLinkDepends.cxx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index e232525a2..3632ff61d 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -100,6 +100,9 @@ For the unknown items, we infer dependencies by looking at the B: intersect( {Y,C} , {} ) = {} ; infer no edges C: intersect( {} , {B} ) = {} ; infer no edges +Note that targets are never inferred as dependees because outside +libraries should not depend on them. + ------------------------------------------------------------------------------ Once the complete graph is formed from all known and inferred @@ -548,7 +551,12 @@ cmComputeLinkDepends::AddLinkEntries(int depender_index, for(std::map::iterator dsi = dependSets.begin(); dsi != dependSets.end(); ++dsi) { - if(dependee_index != dsi->first) + // Add this item to the inferred dependencies of other items. + // Target items are never inferred dependees because unknown + // items are outside libraries that should not be depending on + // targets. + if(!this->EntryList[dependee_index].Target && + dependee_index != dsi->first) { dsi->second.insert(dependee_index); }