| 
					
				 | 
			
			
				@@ -68,7 +68,7 @@ const char* getShapeForTarget(const cmGeneratorTarget* target) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 std::map<std::string, LinkLibraryScopeType> getScopedLinkLibrariesFromTarget( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmTarget* Target) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmTarget* Target, const cmGlobalGenerator* globalGenerator) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char sep = ';'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::map<std::string, LinkLibraryScopeType> tokens; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,6 +95,13 @@ std::map<std::string, LinkLibraryScopeType> getScopedLinkLibrariesFromTarget( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string element = interfaceLinkLibraries.substr(start, end - start); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (globalGenerator->IsAlias(element)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const auto tgt = globalGenerator->FindTarget(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (tgt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        element = tgt->GetName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (std::string::npos == element.find("$<LINK_ONLY:", 0)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // we assume first, that this library is an interface library. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // if we find it again in the linklibraries property, we promote it to an 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -116,6 +123,12 @@ std::map<std::string, LinkLibraryScopeType> getScopedLinkLibrariesFromTarget( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string element = linkLibraries.substr(start, end - start); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (globalGenerator->IsAlias(element)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const auto tgt = globalGenerator->FindTarget(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (tgt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        element = tgt->GetName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (tokens.find(element) == tokens.end()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // this library is not found in interfaceLinkLibraries but in 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -137,13 +150,13 @@ std::map<std::string, LinkLibraryScopeType> getScopedLinkLibrariesFromTarget( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-cmGraphVizWriter::cmGraphVizWriter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const std::vector<cmLocalGenerator*>& localGenerators) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cmGraphVizWriter::cmGraphVizWriter(const cmGlobalGenerator* globalGenerator) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   : GraphType("digraph") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   , GraphName("GG") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   , GraphHeader("node [\n  fontsize = \"12\"\n];") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   , GraphNodePrefix("node") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  , LocalGenerators(localGenerators) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  , GlobalGenerator(globalGenerator) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  , LocalGenerators(globalGenerator->GetLocalGenerators()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   , GenerateForExecutables(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   , GenerateForStaticLibs(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   , GenerateForSharedLibs(true) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -374,7 +387,8 @@ void cmGraphVizWriter::WriteConnections( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::string myNodeName = this->TargetNamesNodes.find(targetName)->second; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::map<std::string, LinkLibraryScopeType> ll = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    getScopedLinkLibrariesFromTarget(targetPtrIt->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getScopedLinkLibrariesFromTarget(targetPtrIt->second->Target, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     GlobalGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (auto const& llit : ll) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const char* libName = llit.first.c_str(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -439,7 +453,7 @@ void cmGraphVizWriter::WriteDependerConnections( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Now we have a target, check whether it links against targetName. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // If so, draw a connection, and then continue with dependers on that one. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::map<std::string, LinkLibraryScopeType> ll = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getScopedLinkLibrariesFromTarget(tptr.second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getScopedLinkLibrariesFromTarget(tptr.second->Target, GlobalGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (auto const& llit : ll) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (llit.first == targetName) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -540,6 +554,13 @@ int cmGraphVizWriter::CollectAllExternalLibs(int cnt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (GlobalGenerator->IsAlias(libName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const auto tgt = GlobalGenerator->FindTarget(libName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (tgt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            libName = tgt->GetName().c_str(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::map<std::string, const cmGeneratorTarget*>::const_iterator tarIt = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           this->TargetPtrs.find(libName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (tarIt == this->TargetPtrs.end()) { 
			 |