| 
					
				 | 
			
			
				@@ -123,7 +123,7 @@ bool StaticLibraryCycle(cmGeneratorTarget const* targetOrigin, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return cycle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** Sanitizes file search paths */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** Sanitizes file search paths.  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class SearchPathSanitizer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -353,9 +353,6 @@ bool cmQtAutoGenInitializer::InitCustomTargets() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Include directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->Dir.Include = cmStrCat(this->Dir.Build, "/include"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (this->MultiConfig) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this->Dir.Include += "_$<CONFIG>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Per config include directories 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (this->MultiConfig) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (std::string const& cfg : this->ConfigsList) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -363,6 +360,10 @@ bool cmQtAutoGenInitializer::InitCustomTargets() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dir = cmStrCat(this->Dir.Build, "/include_", cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->Dir.IncludeGenExp = this->Dir.Include; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this->MultiConfig) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this->Dir.IncludeGenExp += "_$<CONFIG>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Moc, Uic and _autogen target settings 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -454,7 +455,7 @@ bool cmQtAutoGenInitializer::InitCustomTargets() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Add autogen include directory to the origin target INCLUDE_DIRECTORIES 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (this->MocOrUicEnabled() || (this->Rcc.Enabled && this->MultiConfig)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this->GenTarget->AddIncludeDirectory(this->Dir.Include, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->GenTarget->AddIncludeDirectory(this->Dir.IncludeGenExp, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Scan files 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -889,13 +890,15 @@ bool cmQtAutoGenInitializer::InitScanFiles() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmFilePathChecksum const fpathCheckSum(this->Makefile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (Qrc& qrc : this->Rcc.Qrcs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        qrc.PathChecksum = fpathCheckSum.getPart(qrc.QrcFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // RCC output file name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        qrc.RccFile = cmStrCat(this->Dir.Build, '/', qrc.PathChecksum, "/qrc_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               qrc.QrcName, ".cpp"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Path checksum 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        qrc.QrcPathChecksum = fpathCheckSum.getPart(qrc.QrcFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Output file name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        qrc.OutputFile = cmStrCat(this->Dir.Build, '/', qrc.QrcPathChecksum, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  "/qrc_", qrc.QrcName, ".cpp"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          cm::string_view const baseSuffix = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            qrc.Unique ? cm::string_view() : cm::string_view(qrc.PathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cm::string_view const baseSuffix = qrc.Unique 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ? cm::string_view() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            : cm::string_view(qrc.QrcPathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           std::string const base = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cmStrCat(this->Dir.Info, "/RCC", qrc.QrcName, baseSuffix); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           qrc.LockFile = cmStrCat(base, ".lock"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -910,7 +913,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // RCC options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // rcc options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (Qrc& qrc : this->Rcc.Qrcs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // Target options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       std::vector<std::string> opts = optionsTarget; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -920,7 +923,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Replace '-' with '_'. The former is not valid for symbol names. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::replace(name.begin(), name.end(), '-', '_'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!qrc.Unique) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          name += cmStrCat('_', qrc.PathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name += cmStrCat('_', qrc.QrcPathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::vector<std::string> nameOpts; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         nameOpts.emplace_back("-name"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -931,7 +934,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       RccMergeOptions(opts, qrc.Options, modernQt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       qrc.Options = std::move(opts); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // RCC resources 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // rcc resources 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (Qrc& qrc : this->Rcc.Qrcs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (!qrc.Generated) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::string error; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1099,10 +1102,10 @@ bool cmQtAutoGenInitializer::InitRccTargets() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Register info file as generated by CMake 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->Makefile->AddCMakeOutputFile(qrc.InfoFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Register file at target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this->AddGeneratedSource(qrc.RccFile, this->Rcc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->AddGeneratedSource(qrc.OutputFile, this->Rcc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::vector<std::string> ccOutput; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ccOutput.push_back(qrc.RccFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ccOutput.push_back(qrc.OutputFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::vector<std::string> ccDepends; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Add the .qrc and info file to the custom command dependencies 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1132,7 +1135,7 @@ bool cmQtAutoGenInitializer::InitRccTargets() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ccName = cmStrCat(this->GenTarget->GetName(), "_arcc_", qrc.QrcName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!qrc.Unique) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ccName += cmStrCat('_', qrc.PathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ccName += cmStrCat('_', qrc.QrcPathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cmTarget* autoRccTarget = this->Makefile->AddUtilityCommand( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1424,9 +1427,9 @@ bool cmQtAutoGenInitializer::SetupWriteRccInfo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ofs.Write("# Rcc job\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ofs.Write("ARCC_LOCK_FILE", qrc.LockFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ofs.Write("ARCC_SOURCE", qrc.QrcFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ofs.Write("ARCC_OUTPUT_CHECKSUM", qrc.PathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ofs.Write("ARCC_OUTPUT_CHECKSUM", qrc.QrcPathChecksum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ofs.Write("ARCC_OUTPUT_NAME", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                cmSystemTools::GetFilenameName(qrc.RccFile)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cmSystemTools::GetFilenameName(qrc.OutputFile)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ofs.WriteStrings("ARCC_OPTIONS", qrc.Options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ofs.WriteStrings("ARCC_INPUTS", qrc.Resources); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 |