| 
					
				 | 
			
			
				@@ -246,13 +246,7 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Check the target's makefile first. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cmTarget* dependee = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    depender->GetMakefile()->FindTarget(dependee_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Then search globally. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if(!dependee) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    dependee = this->GlobalGenerator->FindTarget(0, dependee_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    depender->GetMakefile()->FindTargetToUse(dependee_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Skip targets that will not really be linked.  This is probably a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // name conflict between an external library and an executable 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -264,25 +258,42 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     dependee = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // If not found then skip then the dependee. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if(!dependee) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(dependee) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->AddTargetDepend(depender_index, dependee, linking); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // No imported targets should have been found. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  assert(!dependee->IsImported()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Lookup the index for this target.  All targets should be known by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // this point. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  std::map<cmTarget*, int>::const_iterator tii = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this->TargetIndex.find(dependee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  assert(tii != this->TargetIndex.end()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  int dependee_index = tii->second; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Add this entry to the dependency graph. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  this->InitialGraph[depender_index].push_back( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmGraphEdge(dependee_index, !linking)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void cmComputeTargetDepends::AddTargetDepend(int depender_index, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             cmTarget* dependee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             bool linking) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(dependee->IsImported()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Skip imported targets but follow their utility dependencies. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::set<cmStdString> const& utils = dependee->GetUtilities(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for(std::set<cmStdString>::const_iterator i = utils.begin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        i != utils.end(); ++i) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cmTarget* transitive_dependee = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dependee->GetMakefile()->FindTargetToUse(i->c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this->AddTargetDepend(depender_index, transitive_dependee, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Lookup the index for this target.  All targets should be known by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // this point. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<cmTarget*, int>::const_iterator tii = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this->TargetIndex.find(dependee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert(tii != this->TargetIndex.end()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    int dependee_index = tii->second; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Add this entry to the dependency graph. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->InitialGraph[depender_index].push_back( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cmGraphEdge(dependee_index, !linking)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //---------------------------------------------------------------------------- 
			 |