| 
					
				 | 
			
			
				@@ -241,15 +241,16 @@ private: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 std::unique_ptr< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cmGeneratorTarget:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    TargetPropertyEntry> static CreateTargetPropertyEntry(const BT<std:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                     string>& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TargetPropertyEntry> static CreateTargetPropertyEntry(cmake& cmakeInstance, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                          const BT< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                            std::string>& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                             propertyValue, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           bool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                             evaluateForBuildsystem = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                               false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (cmGeneratorExpression::Find(propertyValue.Value) != std::string::npos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmGeneratorExpression ge(propertyValue.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmGeneratorExpression ge(cmakeInstance, propertyValue.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::unique_ptr<cmCompiledGeneratorExpression> cge = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ge.Parse(propertyValue.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cge->SetEvaluateForBuildsystem(evaluateForBuildsystem); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -262,12 +263,13 @@ std::unique_ptr< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void CreatePropertyGeneratorExpressions( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmBTStringRange entries, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmake& cmakeInstance, cmBTStringRange entries, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::vector<std::unique_ptr<cmGeneratorTarget::TargetPropertyEntry>>& items, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool evaluateForBuildsystem = false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (auto const& entry : entries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    items.push_back(CreateTargetPropertyEntry(entry, evaluateForBuildsystem)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    items.push_back( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      CreateTargetPropertyEntry(cmakeInstance, entry, evaluateForBuildsystem)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -343,29 +345,36 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   this->GlobalGenerator->ComputeTargetObjectDirectory(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetIncludeDirectoriesEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions(*lg->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     t->GetIncludeDirectoriesEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      this->IncludeDirectoriesEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetCompileOptionsEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions(*lg->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     t->GetCompileOptionsEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      this->CompileOptionsEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetCompileFeaturesEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions(*lg->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     t->GetCompileFeaturesEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      this->CompileFeaturesEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetCompileDefinitionsEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions(*lg->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     t->GetCompileDefinitionsEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      this->CompileDefinitionsEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetLinkOptionsEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions(*lg->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     t->GetLinkOptionsEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      this->LinkOptionsEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetLinkDirectoriesEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions(*lg->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     t->GetLinkDirectoriesEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      this->LinkDirectoriesEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetPrecompileHeadersEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions(*lg->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     t->GetPrecompileHeadersEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      this->PrecompileHeadersEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CreatePropertyGeneratorExpressions(t->GetSourceEntries(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                     this->SourceEntries, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CreatePropertyGeneratorExpressions( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *lg->GetCMakeInstance(), t->GetSourceEntries(), this->SourceEntries, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   this->PolicyMap = t->GetPolicyMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -753,6 +762,7 @@ void cmGeneratorTarget::AddSourceCommon(const std::string& src, bool before) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   this->SourceEntries.insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     before ? this->SourceEntries.begin() : this->SourceEntries.end(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CreateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *this->LocalGenerator->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       BT<std::string>(src, this->Makefile->GetBacktrace()), true)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   this->ClearSourcesCache(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -780,6 +790,7 @@ void cmGeneratorTarget::AddIncludeDirectory(const std::string& src, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     before ? this->IncludeDirectoriesEntries.begin() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            : this->IncludeDirectoriesEntries.end(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CreateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *this->Makefile->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       BT<std::string>(src, this->Makefile->GetBacktrace()), true)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1653,7 +1664,8 @@ void AddObjectEntries(cmGeneratorTarget const* headTarget, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           headTarget->GetGlobalGenerator()->IndexGeneratorTargetUniquely( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             lib.Target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::string genex = "$<TARGET_OBJECTS:" + std::move(uniqueName) + ">"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cmGeneratorExpression ge(lib.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cmGeneratorExpression ge(*headTarget->Makefile->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 lib.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(genex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cge->SetEvaluateForBuildsystem(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4192,7 +4204,8 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetCompileDefinitions( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case cmPolicies::OLD: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           std::unique_ptr<TargetPropertyEntry> entry = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CreateTargetPropertyEntry(*configProp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CreateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              *this->LocalGenerator->GetCMakeInstance(), *configProp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           entries.Entries.emplace_back(EvaluateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this, config, language, &dagChecker, *entry)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4778,8 +4791,8 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetStaticLibraryLinkOptions( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (cmValue linkOptions = this->GetProperty("STATIC_LIBRARY_OPTIONS")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::vector<std::string> options = cmExpandedList(*linkOptions); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (const auto& option : options) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      std::unique_ptr<TargetPropertyEntry> entry = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        CreateTargetPropertyEntry(option); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      std::unique_ptr<TargetPropertyEntry> entry = CreateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        *this->LocalGenerator->GetCMakeInstance(), option); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       entries.Entries.emplace_back(EvaluateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this, config, language, &dagChecker, *entry)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4931,8 +4944,8 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetLinkDepends( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (cmValue linkDepends = this->GetProperty("LINK_DEPENDS")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::vector<std::string> depends = cmExpandedList(*linkDepends); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (const auto& depend : depends) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      std::unique_ptr<TargetPropertyEntry> entry = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        CreateTargetPropertyEntry(depend); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      std::unique_ptr<TargetPropertyEntry> entry = CreateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        *this->LocalGenerator->GetCMakeInstance(), depend); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       entries.Entries.emplace_back(EvaluateTargetPropertyEntry( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this, config, language, &dagChecker, *entry)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -6756,7 +6769,8 @@ void cmGeneratorTarget::ExpandLinkItems( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cmMakefile const* mf = this->LocalGenerator->GetMakefile(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   LookupLinkItemScope scope{ this->LocalGenerator }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (BT<std::string> const& entry : entries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmGeneratorExpression ge(entry.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmGeneratorExpression ge(*this->LocalGenerator->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             entry.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(entry.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cge->SetEvaluateForBuildsystem(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::vector<std::string> libs = cmExpandedList( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -8195,7 +8209,8 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmGeneratorExpression ge(entry.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmGeneratorExpression ge(*this->LocalGenerator->GetCMakeInstance(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             entry.Backtrace); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::unique_ptr<cmCompiledGeneratorExpression> const cge = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ge.Parse(entry.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cge->SetEvaluateForBuildsystem(true); 
			 |