| 
														
															@@ -23,6 +23,7 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include <cmsys/Terminal.h> 
														 | 
														
														 | 
														
															 #include <cmsys/Terminal.h> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include <cmsys/ios/sstream> 
														 | 
														
														 | 
														
															 #include <cmsys/ios/sstream> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#include <assert.h> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include <string.h> 
														 | 
														
														 | 
														
															 #include <string.h> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #if defined(__APPLE__) 
														 | 
														
														 | 
														
															 #if defined(__APPLE__) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -117,6 +118,7 @@ cmQtAutoGenerators::cmQtAutoGenerators() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 :Verbose(cmsys::SystemTools::GetEnv("VERBOSE") != 0) 
														 | 
														
														 | 
														
															 :Verbose(cmsys::SystemTools::GetEnv("VERBOSE") != 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ,ColorOutput(true) 
														 | 
														
														 | 
														
															 ,ColorOutput(true) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ,RunMocFailed(false) 
														 | 
														
														 | 
														
															 ,RunMocFailed(false) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+,RunUicFailed(false) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ,GenerateAll(false) 
														 | 
														
														 | 
														
															 ,GenerateAll(false) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -255,7 +257,22 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                     "", makefile->GetCurrentOutputDirectory()); 
														 | 
														
														 | 
														
															                                     "", makefile->GetCurrentOutputDirectory()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::vector<std::string> depends; 
														 | 
														
														 | 
														
															   std::vector<std::string> depends; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  std::string tools = "moc"; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> toolNames; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (target->GetPropertyAsBool("AUTOMOC")) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    toolNames.push_back("moc"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (target->GetPropertyAsBool("AUTOUIC")) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    toolNames.push_back("uic"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::string tools = toolNames[0]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  toolNames.erase(toolNames.begin()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (toolNames.size() == 1) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    tools += " and " + toolNames[0]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::string autogenComment = "Automatic " + tools + " for target "; 
														 | 
														
														 | 
														
															   std::string autogenComment = "Automatic " + tools + " for target "; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   autogenComment += targetName; 
														 | 
														
														 | 
														
															   autogenComment += targetName; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -322,6 +339,10 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     this->SetupAutoMocTarget(target, autogenTargetName, 
														 | 
														
														 | 
														
															     this->SetupAutoMocTarget(target, autogenTargetName, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                              configIncludes, configDefines); 
														 | 
														
														 | 
														
															                              configIncludes, configDefines); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (target->GetPropertyAsBool("AUTOUIC")) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->SetupAutoUicTarget(target); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT"); 
														 | 
														
														 | 
														
															   const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::string inputFile = cmakeRoot; 
														 | 
														
														 | 
														
															   std::string inputFile = cmakeRoot; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -499,6 +520,156 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget* target, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void cmQtAutoGenerators::MergeUicOptions(std::vector<std::string> &opts, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                         const std::vector<std::string> &fileOpts, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                         bool isQt5) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  static const char* valueOptions[] = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    "tr", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    "translate", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    "postfix", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    "generator", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    "g" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  }; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> extraOpts; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for(std::vector<std::string>::const_iterator it = fileOpts.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      it != fileOpts.end(); ++it) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<std::string>::iterator existingIt 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                  = std::find(opts.begin(), opts.end(), *it); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (existingIt != opts.end()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      const char *o = it->c_str(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      if (*o == '-') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ++o; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      if (isQt5 && *o == '-') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ++o; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      if (std::find_if(cmArrayBegin(valueOptions), cmArrayEnd(valueOptions), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                  cmStrCmp(o)) != cmArrayEnd(valueOptions)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert(existingIt + 1 != opts.end()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        *(existingIt + 1) = *(it + 1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ++it; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      extraOpts.push_back(*it); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  opts.insert(opts.end(), extraOpts.begin(), extraOpts.end()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget* target) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmMakefile *makefile = target->GetMakefile(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const char *qtUic = makefile->GetSafeDefinition("QT_UIC_EXECUTABLE"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  makefile->AddDefinition("_qt_uic_executable", qtUic); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::string skip_uic; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const char *sep = ""; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  bool skip  = target->GetPropertyAsBool("SKIP_AUTOUIC"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::set<cmStdString> skipped; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for(std::vector<cmSourceFile*>::const_iterator fileIt = srcFiles.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      fileIt != srcFiles.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      ++fileIt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmSourceFile* sf = *fileIt; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::string absFile = cmsys::SystemTools::GetRealPath( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                    sf->GetFullPath().c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (!skip) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      skip = cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOUIC")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (skip) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      skip_uic += sep; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      skip_uic += absFile; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      sep = ";"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      skipped.insert(absFile); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  makefile->AddDefinition("_skip_uic", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          cmLocalGenerator::EscapeForCMake(skip_uic.c_str()).c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<cmSourceFile*> uiFilesWithOptions 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                        = makefile->GetQtUiFilesWithOptions(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::string uiFileFiles; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::string uiFileOptions; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  sep = ""; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const char *qtVersion = makefile->GetDefinition("_target_qt_version"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (const char* opts = target->GetProperty("AUTOUIC_OPTIONS")) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    makefile->AddDefinition("_uic_target_options", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                            cmLocalGenerator::EscapeForCMake(opts).c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for(std::vector<cmSourceFile*>::const_iterator fileIt = 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      uiFilesWithOptions.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      fileIt != uiFilesWithOptions.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      ++fileIt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmSourceFile* sf = *fileIt; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::string absFile = cmsys::SystemTools::GetRealPath( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                    sf->GetFullPath().c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (!skipped.insert(absFile).second) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      continue; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    uiFileFiles += sep; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    uiFileFiles += absFile; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    uiFileOptions += sep; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::string opts = sf->GetProperty("AUTOUIC_OPTIONS"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmSystemTools::ReplaceString(opts, ";", "@list_sep@"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    uiFileOptions += opts; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    sep = ";"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  makefile->AddDefinition("_qt_uic_options_files", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+              cmLocalGenerator::EscapeForCMake(uiFileFiles.c_str()).c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  makefile->AddDefinition("_qt_uic_options_options", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            cmLocalGenerator::EscapeForCMake(uiFileOptions.c_str()).c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const char* targetName = target->GetName(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (strcmp(qtVersion, "5") == 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmTarget *qt5Uic = makefile->FindTargetToUse("Qt5::uic"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (!qt5Uic) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      // Project does not use Qt5Widgets, but has AUTOUIC ON anyway 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      makefile->RemoveDefinition("_qt_uic_executable"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      makefile->AddDefinition("_qt_uic_executable", qt5Uic->GetLocation(0)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (strcmp(qtVersion, "4") != 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      cmSystemTools::Error("The CMAKE_AUTOUIC feature supports only Qt 4 and " 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                          "Qt 5 ", targetName); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config) 
														 | 
														
														 | 
														
															 bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   bool success = true; 
														 | 
														
														 | 
														
															   bool success = true; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -563,12 +734,15 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                      "AM_Qt5Core_VERSION_MAJOR"); 
														 | 
														
														 | 
														
															                                      "AM_Qt5Core_VERSION_MAJOR"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->Sources = makefile->GetSafeDefinition("AM_SOURCES"); 
														 | 
														
														 | 
														
															   this->Sources = makefile->GetSafeDefinition("AM_SOURCES"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->SkipMoc = makefile->GetSafeDefinition("AM_SKIP_MOC"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->SkipUic = makefile->GetSafeDefinition("AM_SKIP_UIC"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->Headers = makefile->GetSafeDefinition("AM_HEADERS"); 
														 | 
														
														 | 
														
															   this->Headers = makefile->GetSafeDefinition("AM_HEADERS"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->IncludeProjectDirsBefore = makefile->IsOn( 
														 | 
														
														 | 
														
															   this->IncludeProjectDirsBefore = makefile->IsOn( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 "AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE"); 
														 | 
														
														 | 
														
															                                 "AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->Srcdir = makefile->GetSafeDefinition("AM_CMAKE_CURRENT_SOURCE_DIR"); 
														 | 
														
														 | 
														
															   this->Srcdir = makefile->GetSafeDefinition("AM_CMAKE_CURRENT_SOURCE_DIR"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->Builddir = makefile->GetSafeDefinition("AM_CMAKE_CURRENT_BINARY_DIR"); 
														 | 
														
														 | 
														
															   this->Builddir = makefile->GetSafeDefinition("AM_CMAKE_CURRENT_BINARY_DIR"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->MocExecutable = makefile->GetSafeDefinition("AM_QT_MOC_EXECUTABLE"); 
														 | 
														
														 | 
														
															   this->MocExecutable = makefile->GetSafeDefinition("AM_QT_MOC_EXECUTABLE"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->UicExecutable = makefile->GetSafeDefinition("AM_QT_UIC_EXECUTABLE"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::string compileDefsPropOrig = "AM_MOC_COMPILE_DEFINITIONS"; 
														 | 
														
														 | 
														
															   std::string compileDefsPropOrig = "AM_MOC_COMPILE_DEFINITIONS"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::string compileDefsProp = compileDefsPropOrig; 
														 | 
														
														 | 
														
															   std::string compileDefsProp = compileDefsPropOrig; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if(config) 
														 | 
														
														 | 
														
															   if(config) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -594,6 +768,31 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR"); 
														 | 
														
														 | 
														
															   this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->TargetName = makefile->GetSafeDefinition("AM_TARGET_NAME"); 
														 | 
														
														 | 
														
															   this->TargetName = makefile->GetSafeDefinition("AM_TARGET_NAME"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const char *uicOptionsFiles 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        = makefile->GetSafeDefinition("AM_UIC_OPTIONS_FILES"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const char *uicTargetOptions 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        = makefile->GetSafeDefinition("AM_UIC_TARGET_OPTIONS"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmSystemTools::ExpandListArgument(uicTargetOptions, this->UicTargetOptions); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const char *uicOptionsOptions 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                      = makefile->GetSafeDefinition("AM_UIC_OPTIONS_OPTIONS"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> uicFilesVec; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmSystemTools::ExpandListArgument(uicOptionsFiles, uicFilesVec); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> uicOptionsVec; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmSystemTools::ExpandListArgument(uicOptionsOptions, uicOptionsVec); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (uicFilesVec.size() != uicOptionsVec.size()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for (std::vector<std::string>::iterator fileIt = uicFilesVec.begin(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                            optionIt = uicOptionsVec.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                            fileIt != uicFilesVec.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                            ++fileIt, ++optionIt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmSystemTools::ReplaceString(*optionIt, "@list_sep@", ";"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->UicOptions[*fileIt] = *optionIt; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->CurrentCompileSettingsStr = this->MakeCompileSettingsString(makefile); 
														 | 
														
														 | 
														
															   this->CurrentCompileSettingsStr = this->MakeCompileSettingsString(makefile); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE"); 
														 | 
														
														 | 
														
															   this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE"); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -767,10 +966,18 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   const std::vector<std::string>& headerExtensions = 
														 | 
														
														 | 
														
															   const std::vector<std::string>& headerExtensions = 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                                makefile->GetHeaderExtensions(); 
														 | 
														
														 | 
														
															                                                makefile->GetHeaderExtensions(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> includedUis; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> skippedUis; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> uicSkipped; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmSystemTools::ExpandListArgument(this->SkipUic, uicSkipped); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   for (std::vector<std::string>::const_iterator it = sourceFiles.begin(); 
														 | 
														
														 | 
														
															   for (std::vector<std::string>::const_iterator it = sourceFiles.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															        it != sourceFiles.end(); 
														 | 
														
														 | 
														
															        it != sourceFiles.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															        ++it) 
														 | 
														
														 | 
														
															        ++it) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     { 
														 | 
														
														 | 
														
															     { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const bool skipUic = std::find(uicSkipped.begin(), uicSkipped.end(), *it) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        != uicSkipped.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<std::string>& uiFiles = skipUic ? skippedUis : includedUis; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const std::string &absFilename = *it; 
														 | 
														
														 | 
														
															     const std::string &absFilename = *it; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (this->Verbose) 
														 | 
														
														 | 
														
															     if (this->Verbose) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       { 
														 | 
														
														 | 
														
															       { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -778,15 +985,37 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } 
														 | 
														
														 | 
														
															       } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (this->RelaxedMode) 
														 | 
														
														 | 
														
															     if (this->RelaxedMode) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       { 
														 | 
														
														 | 
														
															       { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      this->ParseCppFile(absFilename, headerExtensions, includedMocs); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      this->ParseCppFile(absFilename, headerExtensions, includedMocs, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                         uiFiles); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } 
														 | 
														
														 | 
														
															       } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     else 
														 | 
														
														 | 
														
															     else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       { 
														 | 
														
														 | 
														
															       { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      this->StrictParseCppFile(absFilename, headerExtensions, includedMocs); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      this->StrictParseCppFile(absFilename, headerExtensions, includedMocs, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                               uiFiles); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } 
														 | 
														
														 | 
														
															       } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     this->SearchHeadersForCppFile(absFilename, headerExtensions, headerFiles); 
														 | 
														
														 | 
														
															     this->SearchHeadersForCppFile(absFilename, headerExtensions, headerFiles); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<std::string> mocSkipped; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmSystemTools::ExpandListArgument(this->SkipMoc, mocSkipped); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for (std::vector<std::string>::const_iterator it = mocSkipped.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+       it != mocSkipped.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+       ++it) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (std::find(uicSkipped.begin(), uicSkipped.end(), *it) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        != uicSkipped.end()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      const std::string &absFilename = *it; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      if (this->Verbose) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        std::cout << "AUTOGEN: Checking " << absFilename << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      this->ParseForUic(absFilename, includedUis); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::vector<std::string> headerFilesVec; 
														 | 
														
														 | 
														
															   std::vector<std::string> headerFilesVec; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   cmSystemTools::ExpandListArgument(this->Headers, headerFilesVec); 
														 | 
														
														 | 
														
															   cmSystemTools::ExpandListArgument(this->Headers, headerFilesVec); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   for (std::vector<std::string>::const_iterator it = headerFilesVec.begin(); 
														 | 
														
														 | 
														
															   for (std::vector<std::string>::const_iterator it = headerFilesVec.begin(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -798,7 +1027,7 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // key = moc source filepath, value = moc output filename 
														 | 
														
														 | 
														
															   // key = moc source filepath, value = moc output filename 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::map<std::string, std::string> notIncludedMocs; 
														 | 
														
														 | 
														
															   std::map<std::string, std::string> notIncludedMocs; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  this->ParseHeaders(headerFiles, includedMocs, notIncludedMocs); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->ParseHeaders(headerFiles, includedMocs, notIncludedMocs, includedUis); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // run moc on all the moc's that are #included in source files 
														 | 
														
														 | 
														
															   // run moc on all the moc's that are #included in source files 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   for(std::map<std::string, std::string>::const_iterator 
														 | 
														
														 | 
														
															   for(std::map<std::string, std::string>::const_iterator 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -808,6 +1037,12 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     { 
														 | 
														
														 | 
														
															     { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     this->GenerateMoc(it->first, it->second); 
														 | 
														
														 | 
														
															     this->GenerateMoc(it->first, it->second); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for(std::vector<std::string>::const_iterator it = includedUis.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      it != includedUis.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      ++it) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->GenerateUi(*it); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   cmsys_ios::stringstream outStream; 
														 | 
														
														 | 
														
															   cmsys_ios::stringstream outStream; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   outStream << "/* This file is autogenerated, do not edit*/\n"; 
														 | 
														
														 | 
														
															   outStream << "/* This file is autogenerated, do not edit*/\n"; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -840,6 +1075,12 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     std::cerr << "moc failed..."<< std::endl; 
														 | 
														
														 | 
														
															     std::cerr << "moc failed..."<< std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return false; 
														 | 
														
														 | 
														
															     return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (this->RunUicFailed) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::cerr << "uic failed..."<< std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   outStream.flush(); 
														 | 
														
														 | 
														
															   outStream.flush(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::string automocSource = outStream.str(); 
														 | 
														
														 | 
														
															   std::string automocSource = outStream.str(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (!automocCppChanged) 
														 | 
														
														 | 
														
															   if (!automocCppChanged) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -866,7 +1107,8 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, 
														 | 
														
														 | 
														
															 void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                               const std::vector<std::string>& headerExtensions, 
														 | 
														
														 | 
														
															                               const std::vector<std::string>& headerExtensions, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                              std::map<std::string, std::string>& includedMocs) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                              std::map<std::string, std::string>& includedMocs, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                              std::vector<std::string> &includedUis) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   cmsys::RegularExpression mocIncludeRegExp( 
														 | 
														
														 | 
														
															   cmsys::RegularExpression mocIncludeRegExp( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															               "[\n][ \t]*#[ \t]*include[ \t]+" 
														 | 
														
														 | 
														
															               "[\n][ \t]*#[ \t]*include[ \t]+" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1007,6 +1249,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       matchOffset += mocIncludeRegExp.end(); 
														 | 
														
														 | 
														
															       matchOffset += mocIncludeRegExp.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } while(mocIncludeRegExp.find(contentsString.c_str() + matchOffset)); 
														 | 
														
														 | 
														
															       } while(mocIncludeRegExp.find(contentsString.c_str() + matchOffset)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->ParseForUic(absFilename, contentsString, includedUis); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // In this case, check whether the scanned file itself contains a Q_OBJECT. 
														 | 
														
														 | 
														
															   // In this case, check whether the scanned file itself contains a Q_OBJECT. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // If this is the case, the moc_foo.cpp should probably be generated from 
														 | 
														
														 | 
														
															   // If this is the case, the moc_foo.cpp should probably be generated from 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1047,7 +1290,8 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, 
														 | 
														
														 | 
														
															 void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                               const std::vector<std::string>& headerExtensions, 
														 | 
														
														 | 
														
															                               const std::vector<std::string>& headerExtensions, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                              std::map<std::string, std::string>& includedMocs) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                              std::map<std::string, std::string>& includedMocs, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                              std::vector<std::string>& includedUis) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   cmsys::RegularExpression mocIncludeRegExp( 
														 | 
														
														 | 
														
															   cmsys::RegularExpression mocIncludeRegExp( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															               "[\n][ \t]*#[ \t]*include[ \t]+" 
														 | 
														
														 | 
														
															               "[\n][ \t]*#[ \t]*include[ \t]+" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1138,6 +1382,7 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       matchOffset += mocIncludeRegExp.end(); 
														 | 
														
														 | 
														
															       matchOffset += mocIncludeRegExp.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } while(mocIncludeRegExp.find(contentsString.c_str() + matchOffset)); 
														 | 
														
														 | 
														
															       } while(mocIncludeRegExp.find(contentsString.c_str() + matchOffset)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->ParseForUic(absFilename, contentsString, includedUis); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // In this case, check whether the scanned file itself contains a Q_OBJECT. 
														 | 
														
														 | 
														
															   // In this case, check whether the scanned file itself contains a Q_OBJECT. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // If this is the case, the moc_foo.cpp should probably be generated from 
														 | 
														
														 | 
														
															   // If this is the case, the moc_foo.cpp should probably be generated from 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1158,6 +1403,61 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void cmQtAutoGenerators::ParseForUic(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                              std::vector<std::string>& includedUis) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (this->UicExecutable.empty()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const std::string contentsString = this->ReadAll(absFilename); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (contentsString.empty()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::cerr << "AUTOGEN: warning: " << absFilename << ": file is empty\n" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+              << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->ParseForUic(absFilename, contentsString, includedUis); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void cmQtAutoGenerators::ParseForUic(const std::string&, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                     const std::string& contentsString, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                     std::vector<std::string>& includedUis) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (this->UicExecutable.empty()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmsys::RegularExpression uiIncludeRegExp( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+              "[\n][ \t]*#[ \t]*include[ \t]+" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+              "[\"<](([^ \">]+/)?ui_[^ \">/]+\\.h)[\">]"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::string::size_type matchOffset = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  matchOffset = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if ((strstr(contentsString.c_str(), "ui_") != NULL) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                    && (uiIncludeRegExp.find(contentsString))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    do 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      const std::string currentUi = uiIncludeRegExp.match(1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::string basename = cmsys::SystemTools:: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                  GetFilenameWithoutLastExtension(currentUi); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      // basename should be the part of the ui filename used for 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      // finding the correct header, so we need to remove the ui_ part 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      basename = basename.substr(3); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      includedUis.push_back(basename); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      matchOffset += uiIncludeRegExp.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } while(uiIncludeRegExp.find(contentsString.c_str() + matchOffset)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void 
														 | 
														
														 | 
														
															 void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 cmQtAutoGenerators::SearchHeadersForCppFile(const std::string& absFilename, 
														 | 
														
														 | 
														
															 cmQtAutoGenerators::SearchHeadersForCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                               const std::vector<std::string>& headerExtensions, 
														 | 
														
														 | 
														
															                               const std::vector<std::string>& headerExtensions, 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1197,13 +1497,15 @@ cmQtAutoGenerators::SearchHeadersForCppFile(const std::string& absFilename, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders, 
														 | 
														
														 | 
														
															 void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         const std::map<std::string, std::string>& includedMocs, 
														 | 
														
														 | 
														
															                         const std::map<std::string, std::string>& includedMocs, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        std::map<std::string, std::string>& notIncludedMocs) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        std::map<std::string, std::string>& notIncludedMocs, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        std::vector<std::string>& includedUis) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   for(std::set<std::string>::const_iterator hIt=absHeaders.begin(); 
														 | 
														
														 | 
														
															   for(std::set<std::string>::const_iterator hIt=absHeaders.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       hIt!=absHeaders.end(); 
														 | 
														
														 | 
														
															       hIt!=absHeaders.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       ++hIt) 
														 | 
														
														 | 
														
															       ++hIt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     { 
														 | 
														
														 | 
														
															     { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const std::string& headerName = *hIt; 
														 | 
														
														 | 
														
															     const std::string& headerName = *hIt; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const std::string contents = this->ReadAll(headerName); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (includedMocs.find(headerName) == includedMocs.end()) 
														 | 
														
														 | 
														
															     if (includedMocs.find(headerName) == includedMocs.end()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       { 
														 | 
														
														 | 
														
															       { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1216,7 +1518,6 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                    GetFilenameWithoutLastExtension(headerName); 
														 | 
														
														 | 
														
															                                    GetFilenameWithoutLastExtension(headerName); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															       const std::string currentMoc = "moc_" + basename + ".cpp"; 
														 | 
														
														 | 
														
															       const std::string currentMoc = "moc_" + basename + ".cpp"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      const std::string contents = this->ReadAll(headerName); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       std::string macroName; 
														 | 
														
														 | 
														
															       std::string macroName; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       if (requiresMocing(contents, macroName)) 
														 | 
														
														 | 
														
															       if (requiresMocing(contents, macroName)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1224,11 +1525,10 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         notIncludedMocs[headerName] = currentMoc; 
														 | 
														
														 | 
														
															         notIncludedMocs[headerName] = currentMoc; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } 
														 | 
														
														 | 
														
															       } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->ParseForUic(headerName, contents, includedUis); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, 
														 | 
														
														 | 
														
															 bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                               const std::string& mocFileName) 
														 | 
														
														 | 
														
															                               const std::string& mocFileName) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1305,6 +1605,77 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   return false; 
														 | 
														
														 | 
														
															   return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+bool cmQtAutoGenerators::GenerateUi(const std::string& uiFileName) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (!cmsys::SystemTools::FileExists(this->Builddir.c_str(), false)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmsys::SystemTools::MakeDirectory(this->Builddir.c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::string ui_output_file = "ui_" + uiFileName + ".h"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::string ui_input_file = this->Srcdir + uiFileName + ".ui"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  int sourceNewerThanUi = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  bool success = cmsys::SystemTools::FileTimeCompare(ui_input_file.c_str(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                    (this->Builddir + ui_output_file).c_str(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                     &sourceNewerThanUi); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (this->GenerateAll || !success || sourceNewerThanUi >= 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::string msg = "Generating "; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    msg += ui_output_file; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmSystemTools::MakefileColorEcho(cmsysTerminal_Color_ForegroundBlue 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                          |cmsysTerminal_Color_ForegroundBold, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                      msg.c_str(), true, this->ColorOutput); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<cmStdString> command; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    command.push_back(this->UicExecutable); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::string options; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<std::string> opts = this->UicTargetOptions; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::map<std::string, std::string>::const_iterator optionIt 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            = this->UicOptions.find(ui_input_file); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (optionIt != this->UicOptions.end()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::vector<std::string> fileOpts; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      cmSystemTools::ExpandListArgument(optionIt->second, fileOpts); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      this->MergeUicOptions(opts, fileOpts, this->QtMajorVersion == "5"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for(std::vector<std::string>::const_iterator optIt = opts.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        optIt != opts.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ++optIt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      command.push_back(*optIt); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    command.push_back("-o"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    command.push_back(this->Builddir + ui_output_file); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    command.push_back(ui_input_file); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (this->Verbose) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      for(std::vector<cmStdString>::const_iterator cmdIt = command.begin(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          cmdIt != command.end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          ++cmdIt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        std::cout << *cmdIt << " "; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::cout << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::string output; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    int retVal = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    bool result = cmSystemTools::RunSingleCommand(command, &output, &retVal); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (!result || retVal) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::cerr << "AUTOUIC: error: process for " << ui_output_file << 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                " failed:\n" << output << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      this->RunUicFailed = true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      cmSystemTools::RemoveFile(ui_output_file.c_str()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 std::string cmQtAutoGenerators::Join(const std::vector<std::string>& lst, 
														 | 
														
														 | 
														
															 std::string cmQtAutoGenerators::Join(const std::vector<std::string>& lst, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                               char separator) 
														 | 
														
														 | 
														
															                               char separator) 
														 |