| 
					
				 | 
			
			
				@@ -471,23 +471,29 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // The directory-level rule should depend on the target-level rules 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // for all targets in the directory. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::vector<std::string> depends; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for(cmTargets::iterator l = lg->GetMakefile()->GetTargets().begin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      l != lg->GetMakefile()->GetTargets().end(); ++l) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmGeneratorTargetsType targets = lg->GetMakefile()->GetGeneratorTargets(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for(cmGeneratorTargetsType::iterator l = targets.begin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      l != targets.end(); ++l) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if((l->second.GetType() == cmTarget::EXECUTABLE) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (l->second.GetType() == cmTarget::STATIC_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (l->second.GetType() == cmTarget::SHARED_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (l->second.GetType() == cmTarget::MODULE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (l->second.GetType() == cmTarget::OBJECT_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (l->second.GetType() == cmTarget::INTERFACE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (l->second.GetType() == cmTarget::UTILITY)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if((l->second->GetType() == cmTarget::EXECUTABLE) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (l->second->GetType() == cmTarget::STATIC_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (l->second->GetType() == cmTarget::SHARED_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (l->second->GetType() == cmTarget::MODULE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (l->second->GetType() == cmTarget::OBJECT_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (l->second->GetType() == cmTarget::INTERFACE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (l->second->GetType() == cmTarget::UTILITY)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(l->second->Target->IsImported()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // Add this to the list of depends rules in this directory. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if((!check_all || !l->second.GetPropertyAsBool("EXCLUDE_FROM_ALL")) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if((!check_all || !l->second->GetPropertyAsBool("EXCLUDE_FROM_ALL")) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          (!check_relink || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          l->second.NeedRelinkBeforeInstall(lg->ConfigurationName.c_str()))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          l->second->Target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   ->NeedRelinkBeforeInstall(lg->ConfigurationName.c_str()))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        std::string tname = lg->GetRelativeTargetDirectory(l->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        std::string tname = lg->GetRelativeTargetDirectory(*l->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tname += "/"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tname += pass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.push_back(tname); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -632,49 +638,55 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     lg = static_cast<cmLocalUnixMakefileGenerator3 *> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (this->LocalGenerators[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // for each target Generate the rule files for each target. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmTargets& targets = lg->GetMakefile()->GetTargets(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmGeneratorTargetsType targets = lg->GetMakefile()->GetGeneratorTargets(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for(cmGeneratorTargetsType::iterator t = targets.begin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        t != targets.end(); ++t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(t->second->Target->IsImported()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // Don't emit the same rule twice (e.g. two targets with the same 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // simple name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if(t->second.GetName() && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         strlen(t->second.GetName()) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         emitted.insert(t->second.GetName()).second && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(t->second->GetName() && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         strlen(t->second->GetName()) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         emitted.insert(t->second->GetName()).second && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          // Handle user targets here.  Global targets are handled in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          // the local generator on a per-directory basis. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         ((t->second.GetType() == cmTarget::EXECUTABLE) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          (t->second.GetType() == cmTarget::STATIC_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          (t->second.GetType() == cmTarget::SHARED_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          (t->second.GetType() == cmTarget::MODULE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          (t->second.GetType() == cmTarget::OBJECT_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          (t->second.GetType() == cmTarget::INTERFACE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          (t->second.GetType() == cmTarget::UTILITY))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         ((t->second->GetType() == cmTarget::EXECUTABLE) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (t->second->GetType() == cmTarget::STATIC_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (t->second->GetType() == cmTarget::SHARED_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (t->second->GetType() == cmTarget::MODULE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (t->second->GetType() == cmTarget::OBJECT_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (t->second->GetType() == cmTarget::INTERFACE_LIBRARY) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (t->second->GetType() == cmTarget::UTILITY))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Add a rule to build the target by name. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         lg->WriteDivider(ruleFileStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ruleFileStream 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           << "# Target rules for targets named " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          << t->second.GetName() << "\n\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          << t->second->GetName() << "\n\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Write the rule. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         commands.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::string tmp = cmake::GetCMakeFilesDirectoryPostSlash(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tmp += "Makefile2"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         commands.push_back(lg->GetRecursiveMakeCall 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            (tmp.c_str(),t->second.GetName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            (tmp.c_str(),t->second->GetName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.push_back("cmake_check_build_system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         lg->WriteMakeRule(ruleFileStream, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "Build rule for target.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          t->second.GetName(), depends, commands, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          t->second->GetName(), depends, commands, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (t->second.GetType() == cmTarget::INTERFACE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (t->second->GetType() == cmTarget::INTERFACE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Add a fast rule to build the target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        std::string localName = lg->GetRelativeTargetDirectory(t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        std::string localName = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          lg->GetRelativeTargetDirectory(*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::string makefileName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         makefileName = localName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         makefileName += "/build.make"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -682,7 +694,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         commands.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::string makeTargetName = localName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         makeTargetName += "/build"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        localName = t->second.GetName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        localName = t->second->GetName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         localName += "/fast"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         commands.push_back(lg->GetRecursiveMakeCall 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             (makefileName.c_str(), makeTargetName.c_str())); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -691,11 +703,12 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Add a local name for the rule to relink the target before 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // installation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(t->second.NeedRelinkBeforeInstall(lg->ConfigurationName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(t->second->Target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ->NeedRelinkBeforeInstall(lg->ConfigurationName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          makeTargetName = lg->GetRelativeTargetDirectory(t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          makeTargetName = lg->GetRelativeTargetDirectory(*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           makeTargetName += "/preinstall"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          localName = t->second.GetName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          localName = t->second->GetName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           localName += "/preinstall"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           commands.clear(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -729,26 +742,31 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   depends.push_back("cmake_check_build_system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // for each target Generate the rule files for each target. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmTargets& targets = lg->GetMakefile()->GetTargets(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmGeneratorTargetsType targets = lg->GetMakefile()->GetGeneratorTargets(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for(cmGeneratorTargetsType::iterator t = targets.begin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      t != targets.end(); ++t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (t->second.GetName() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     && strlen(t->second.GetName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     && ((t->second.GetType() == cmTarget::EXECUTABLE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || (t->second.GetType() == cmTarget::STATIC_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || (t->second.GetType() == cmTarget::SHARED_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || (t->second.GetType() == cmTarget::MODULE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || (t->second.GetType() == cmTarget::OBJECT_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || (t->second.GetType() == cmTarget::INTERFACE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || (t->second.GetType() == cmTarget::UTILITY))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(t->second->Target->IsImported()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (t->second->GetName() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     && strlen(t->second->GetName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     && ((t->second->GetType() == cmTarget::EXECUTABLE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || (t->second->GetType() == cmTarget::STATIC_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || (t->second->GetType() == cmTarget::SHARED_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || (t->second->GetType() == cmTarget::MODULE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || (t->second->GetType() == cmTarget::OBJECT_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || (t->second->GetType() == cmTarget::INTERFACE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || (t->second->GetType() == cmTarget::UTILITY))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       std::string makefileName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // Add a rule to build the target by name. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      localName = lg->GetRelativeTargetDirectory(t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      localName = lg->GetRelativeTargetDirectory(*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       makefileName = localName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       makefileName += "/build.make"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      bool needRequiresStep = this->NeedRequiresStep(t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      bool needRequiresStep = this->NeedRequiresStep(*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       lg->WriteDivider(ruleFileStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ruleFileStream 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -757,7 +775,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       commands.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if(t->second.GetType() != cmTarget::INTERFACE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(t->second->GetType() != cmTarget::INTERFACE_LIBRARY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         makeTargetName = localName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         makeTargetName += "/depend"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -793,7 +811,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                   cmLocalGenerator::SHELL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           progCmd << " "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           std::vector<unsigned long>& progFiles = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this->ProgressMap[&t->second].Marks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->ProgressMap[t->second->Target].Marks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           for (std::vector<unsigned long>::iterator i = progFiles.begin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 i != progFiles.end(); ++i) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -802,14 +820,14 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           commands.push_back(progCmd.str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         progressDir = "Built target "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        progressDir += t->first; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progressDir += t->second->GetName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         lg->AppendEcho(commands,progressDir.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this->AppendGlobalTargetDepends(depends,t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this->AppendGlobalTargetDepends(depends,*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if(depends.empty() && this->EmptyRuleHackDepends != "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.push_back(this->EmptyRuleHackDepends); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -818,7 +836,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         localName.c_str(), depends, commands, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // add the all/all dependency 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if(!this->IsExcluded(this->LocalGenerators[0], t->second)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(!this->IsExcluded(this->LocalGenerators[0], *t->second->Target)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.push_back(localName); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -843,7 +861,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       std::set<cmTarget *> emitted; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       progCmd << " " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              << this->CountProgressMarksInTarget(&t->second, emitted); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              << this->CountProgressMarksInTarget(t->second->Target, emitted); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       commands.push_back(progCmd.str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       std::string tmp = cmake::GetCMakeFilesDirectoryPostSlash(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -861,7 +879,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       depends.push_back("cmake_check_build_system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      localName = lg->GetRelativeTargetDirectory(t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      localName = lg->GetRelativeTargetDirectory(*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       localName += "/rule"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       lg->WriteMakeRule(ruleFileStream, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         "Build rule for subdir invocation for target.", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -872,12 +890,13 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       depends.push_back(localName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       lg->WriteMakeRule(ruleFileStream, "Convenience name for target.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        t->second.GetName(), depends, commands, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        t->second->GetName(), depends, commands, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // Add rules to prepare the target for installation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if(t->second.NeedRelinkBeforeInstall(lg->ConfigurationName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(t->second->Target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ->NeedRelinkBeforeInstall(lg->ConfigurationName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        localName = lg->GetRelativeTargetDirectory(t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        localName = lg->GetRelativeTargetDirectory(*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         localName += "/preinstall"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         commands.clear(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -887,7 +906,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "Pre-install relink rule for target.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           localName.c_str(), depends, commands, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(!this->IsExcluded(this->LocalGenerators[0], t->second)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(!this->IsExcluded(this->LocalGenerators[0], *t->second->Target)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           depends.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           depends.push_back(localName); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -898,7 +917,7 @@ cmGlobalUnixMakefileGenerator3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // add the clean rule 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      localName = lg->GetRelativeTargetDirectory(t->second); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      localName = lg->GetRelativeTargetDirectory(*t->second->Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       makeTargetName = localName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       makeTargetName += "/clean"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       depends.clear(); 
			 |