| 
					
				 | 
			
			
				@@ -15,6 +15,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "cmComputeLinkInformation.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "cmCustomCommand.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "cmCustomCommandGenerator.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "cmCustomCommandLines.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "cmDocumentationEntry.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "cmGeneratedFileStream.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "cmGeneratorExpression.h" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -500,22 +501,18 @@ void cmGlobalXCodeGenerator::AddExtraTargets( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const char* no_working_directory = nullptr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::vector<std::string> no_depends; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cmTarget* allbuild = mf->AddUtilityCommand( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    "ALL_BUILD", cmMakefile::TargetOrigin::Generator, true, no_depends, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    no_working_directory, "echo", "Build all projects"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "ALL_BUILD", cmMakefile::TargetOrigin::Generator, true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    no_working_directory, no_depends, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmMakeSingleCommandLine({ "echo", "Build all projects" })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cmGeneratorTarget* allBuildGt = new cmGeneratorTarget(allbuild, root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   root->AddGeneratorTarget(allBuildGt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Add XCODE depend helper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::string dir = root->GetCurrentBinaryDirectory(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmCustomCommandLine makeHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  makeHelper.push_back("make"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  makeHelper.push_back("-C"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  makeHelper.push_back(dir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  makeHelper.push_back("-f"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  makeHelper.push_back(this->CurrentXCodeHackMakefile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  makeHelper.push_back("OBJDIR=$(OBJDIR)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  makeHelper.push_back(""); // placeholder, see below 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmCustomCommandLines commandLines = cmMakeSingleCommandLine( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { "make", "-C", dir, "-f", this->CurrentXCodeHackMakefile, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "OBJDIR=$(OBJDIR)", /* placeholder, see below */ "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Add ZERO_CHECK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool regenerate = !this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -530,7 +527,8 @@ void cmGlobalXCodeGenerator::AddExtraTargets( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmSystemTools::ReplaceString(file, "\\ ", " "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmTarget* check = mf->AddUtilityCommand( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       CMAKE_CHECK_BUILD_SYSTEM_TARGET, cmMakefile::TargetOrigin::Generator, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      true, no_depends, no_working_directory, "make", "-f", file.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      true, no_working_directory, no_depends, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cmMakeSingleCommandLine({ "make", "-f", file })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmGeneratorTarget* checkGt = new cmGeneratorTarget(check, root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     root->AddGeneratorTarget(checkGt); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -555,10 +553,8 @@ void cmGlobalXCodeGenerator::AddExtraTargets( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // this will make sure that when the next target is built 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // things are up-to-date 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (target->GetType() == cmStateEnums::OBJECT_LIBRARY) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        makeHelper.back() = // fill placeholder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        commandLines.front().back() = // fill placeholder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           this->PostBuildMakeTarget(target->GetName(), "$(CONFIGURATION)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cmCustomCommandLines commandLines; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        commandLines.push_back(makeHelper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::vector<std::string> no_byproducts; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         gen->GetMakefile()->AddCustomCommandToTarget( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           target->GetName(), no_byproducts, no_depends, commandLines, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1440,19 +1436,14 @@ void cmGlobalXCodeGenerator::CreateCustomCommands( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (gtgt->GetType() == cmStateEnums::SHARED_LIBRARY && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       !gtgt->IsFrameworkOnApple()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmCustomCommandLines cmd; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmd.resize(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmd[0].push_back(cmSystemTools::GetCMakeCommand()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmd[0].push_back("-E"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmd[0].push_back("cmake_symlink_library"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string str_file = cmStrCat("$<TARGET_FILE:", gtgt->GetName(), '>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string str_so_file = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmStrCat("$<TARGET_SONAME_FILE:", gtgt->GetName(), '>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string str_link_file = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmStrCat("$<TARGET_LINKER_FILE:", gtgt->GetName(), '>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmd[0].push_back(str_file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmd[0].push_back(str_so_file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmd[0].push_back(str_link_file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmCustomCommandLines cmd = cmMakeSingleCommandLine( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { cmSystemTools::GetCMakeCommand(), "-E", "cmake_symlink_library", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        str_file, str_so_file, str_link_file }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmCustomCommand command(this->CurrentMakefile, std::vector<std::string>(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             std::vector<std::string>(), 
			 |