| 
					
				 | 
			
			
				@@ -123,6 +123,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::string targetName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::vector<std::string> cmakeFlags(1, "CMAKE_FLAGS"); // fake argv[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::vector<std::string> compileDefs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string cmakeInternal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::string outputVariable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::string copyFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::string copyFileError; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -174,7 +175,8 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     DoingCExtensions, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     DoingCxxExtensions, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     DoingCudaExtensions, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    DoingSources 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    DoingSources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    DoingCMakeInternal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Doing doing = useSources ? DoingSources : DoingNone; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (size_t i = 3; i < argv.size(); ++i) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -223,6 +225,8 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (argv[i] == "CUDA_EXTENSIONS") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       doing = DoingCudaExtensions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       didCudaExtensions = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else if (argv[i] == "__CMAKE_INTERNAL") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      doing = DoingCMakeInternal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (doing == DoingCMakeFlags) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmakeFlags.push_back(argv[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (doing == DoingCompileDefinitions) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -296,6 +300,9 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       doing = DoingNone; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (doing == DoingSources) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       sources.push_back(argv[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else if (doing == DoingCMakeInternal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cmakeInternal = argv[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      doing = DoingNone; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (i == 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this->SrcFileSignature = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       projectName = argv[i].c_str(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -508,6 +515,14 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fprintf(fout, "project(CMAKE_TRY_COMPILE%s)\n", projectLangs.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (cmakeInternal == "ABI") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // This is the ABI detection step, also used for implicit includes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // Erase any include_directories() calls from the toolchain file so 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // that we do not see them as implicit.  Our ABI detection source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // does not include any system headers anyway. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      fprintf(fout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              "set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES \"\")\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fprintf(fout, "set(CMAKE_VERBOSE_MAKEFILE 1)\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (std::string const& li : testLangs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       std::string langFlags = "CMAKE_" + li + "_FLAGS"; 
			 |