| 
					
				 | 
			
			
				@@ -335,6 +335,9 @@ cmGlobalXCodeGenerator::PostBuildMakeTarget(std::string const& tName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define CMAKE_CHECK_BUILD_SYSTEM_TARGET "ZERO_CHECK" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -366,8 +369,18 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   makecommand.push_back(this->CurrentXCodeHackMakefile.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   makecommand.push_back(""); // placeholder, see below 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Add Re-Run CMake rules 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  this->CreateReRunCMakeFile(root, gens); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Add ZERO_CHECK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  bool regenerate = !mf->IsOn("CMAKE_SUPPRESS_REGENERATION"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (regenerate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->CreateReRunCMakeFile(root, gens); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string file = this->ConvertToRelativeForMake( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this->CurrentReRunCMakeMakefile.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmSystemTools::ReplaceString(file, "\\ ", " "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mf->AddUtilityCommand(CMAKE_CHECK_BUILD_SYSTEM_TARGET, true, no_depends, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          no_working_directory, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          "make", "-f", file.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // now make the allbuild depend on all the non-utility targets 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // in the project 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -379,10 +392,17 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmTargets& tgts = lg->GetMakefile()->GetTargets(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmTarget& target = l->second; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (regenerate && (l->first != CMAKE_CHECK_BUILD_SYSTEM_TARGET)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        target.AddUtility(CMAKE_CHECK_BUILD_SYSTEM_TARGET); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // make all exe, shared libs and modules 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // run the depend check makefile as a post build rule 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // this will make sure that when the next target is built 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -402,8 +422,8 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                     cmTarget::POST_BUILD, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                     "Depend check for xcode", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                     dir.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if(!target.GetPropertyAsBool("EXCLUDE_FROM_ALL")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         allbuild->AddUtility(target.GetName()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1114,11 +1134,6 @@ void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       commands.push_back(*(*i)->GetCustomCommand()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  std::vector<cmCustomCommand> reruncom; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmXCodeObject* cmakeReRunPhase = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this->CreateBuildPhase("CMake ReRun", "cmakeReRunPhase", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                           cmtarget, reruncom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  buildPhases->AddObject(cmakeReRunPhase); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // create prebuild phase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cmXCodeObject* cmakeRulesBuildPhase = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->CreateBuildPhase("CMake Rules", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1207,20 +1222,6 @@ cmGlobalXCodeGenerator::AddCommandsToBuildPhase(cmXCodeObject* buildphase, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                 const & commands, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                 const char* name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if(strcmp(name, "cmakeReRunPhase") == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::string cdir = this->CurrentMakefile->GetHomeOutputDirectory(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cdir = this->ConvertToRelativeForMake(cdir.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::string makecmd = "make -C "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    makecmd += cdir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    makecmd += " -f "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    makecmd += 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this->ConvertToRelativeForMake(this->CurrentReRunCMakeMakefile.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmSystemTools::ReplaceString(makecmd, "\\ ", "\\\\ "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    buildphase->AddAttribute("shellScript", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             this->CreateString(makecmd.c_str())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // collect multiple outputs of custom commands into a set 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // which will be used for every configuration 
			 |