| 
					
				 | 
			
			
				@@ -74,6 +74,7 @@ struct cmTarget::ImportInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 struct cmTarget::CompileInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string CompilePdbDir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 struct TargetConfigPair : public std::pair<cmTarget const* , std::string> { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -275,6 +276,7 @@ void cmTarget::SetMakefile(cmMakefile* mf) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->SetPropertyDefault("LIBRARY_OUTPUT_DIRECTORY", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->SetPropertyDefault("RUNTIME_OUTPUT_DIRECTORY", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->SetPropertyDefault("PDB_OUTPUT_DIRECTORY", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->SetPropertyDefault("COMPILE_PDB_OUTPUT_DIRECTORY", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->SetPropertyDefault("Fortran_FORMAT", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->SetPropertyDefault("Fortran_MODULE_DIRECTORY", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->SetPropertyDefault("GNUtoMS", 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -303,6 +305,7 @@ void cmTarget::SetMakefile(cmMakefile* mf) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     "LIBRARY_OUTPUT_DIRECTORY_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     "RUNTIME_OUTPUT_DIRECTORY_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     "PDB_OUTPUT_DIRECTORY_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "COMPILE_PDB_OUTPUT_DIRECTORY_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     "MAP_IMPORTED_CONFIG_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     0}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for(std::vector<std::string>::iterator ci = configNames.begin(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2517,6 +2520,7 @@ cmTarget::CompileInfo const* cmTarget::GetCompileInfo(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if(i == this->Internal->CompileInfoMap.end()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CompileInfo info; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->ComputePDBOutputDir("COMPILE_PDB", config, info.CompilePdbDir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CompileInfoMapType::value_type entry(config_upper, info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     i = this->Internal->CompileInfoMap.insert(entry).first; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2552,6 +2556,16 @@ std::string cmTarget::GetPDBDirectory(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string cmTarget::GetCompilePDBDirectory(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(CompileInfo const* info = this->GetCompileInfo(config)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return info->CompilePdbDir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const char* cmTarget::GetLocation(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3212,6 +3226,49 @@ std::string cmTarget::GetPDBName(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return prefix+base+".pdb"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string cmTarget::GetCompilePDBName(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string base; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string suffix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  this->GetFullNameInternal(config, false, prefix, base, suffix); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Check for a per-configuration output directory target property. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string configUpper = cmSystemTools::UpperCase(config? config : ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string configProp = "COMPILE_PDB_NAME_"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  configProp += configUpper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const char* config_name = this->GetProperty(configProp.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(config_name && *config_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return prefix + config_name + ".pdb"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const char* name = this->GetProperty("COMPILE_PDB_NAME"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(name && *name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return prefix + name + ".pdb"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string cmTarget::GetCompilePDBPath(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string dir = this->GetCompilePDBDirectory(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string name = this->GetCompilePDBName(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(dir.empty() && !name.empty()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    dir = this->GetPDBDirectory(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(!dir.empty()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    dir += "/"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return dir + name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 bool cmTarget::HasSOName(const char* config) const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 |