|  | @@ -61,7 +61,7 @@ void cmLocalVisualStudio6Generator::OutputDSPFile()
 | 
	
		
			
				|  |  |    for(i = includes.begin(); i != includes.end(); ++i)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      m_IncludeOptions +=  " /I ";
 | 
	
		
			
				|  |  | -    std::string tmp = this->ConvertToRelativeOutputPath(i->c_str());
 | 
	
		
			
				|  |  | +    std::string tmp = this->ConvertToOptionallyRelativeOutputPath(i->c_str());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // quote if not already quoted
 | 
	
		
			
				|  |  |      if (tmp[0] != '"')
 | 
	
	
		
			
				|  | @@ -163,15 +163,10 @@ void cmLocalVisualStudio6Generator::AddDSPBuildRule()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    std::string dspname = *(m_CreatedProjectNames.end()-1);
 | 
	
		
			
				|  |  |    dspname += ".dsp.cmake";
 | 
	
		
			
				|  |  | -  std::string makefileIn = m_Makefile->GetStartDirectory();
 | 
	
		
			
				|  |  | -  makefileIn += "/";
 | 
	
		
			
				|  |  | -  makefileIn += "CMakeLists.txt";
 | 
	
		
			
				|  |  | -  makefileIn = this->ConvertToRelativeOutputPath(makefileIn.c_str());
 | 
	
		
			
				|  |  |    const char* dsprule = m_Makefile->GetRequiredDefinition("CMAKE_COMMAND");
 | 
	
		
			
				|  |  |    cmCustomCommandLine commandLine;
 | 
	
		
			
				|  |  |    commandLine.push_back(dsprule);
 | 
	
		
			
				|  |  | -  commandLine.push_back(makefileIn);
 | 
	
		
			
				|  |  | -  makefileIn = m_Makefile->GetStartDirectory();
 | 
	
		
			
				|  |  | +  std::string makefileIn = m_Makefile->GetStartDirectory();
 | 
	
		
			
				|  |  |    makefileIn += "/";
 | 
	
		
			
				|  |  |    makefileIn += "CMakeLists.txt";
 | 
	
		
			
				|  |  |    std::string args;
 | 
	
	
		
			
				|  | @@ -357,7 +352,7 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
 | 
	
		
			
				|  |  |          // Tell MS-Dev what the source is.  If the compiler knows how to
 | 
	
		
			
				|  |  |          // build it, then it will.
 | 
	
		
			
				|  |  |          fout << "SOURCE=" << 
 | 
	
		
			
				|  |  | -          this->ConvertToRelativeOutputPath(source.c_str()) << "\n\n";
 | 
	
		
			
				|  |  | +          this->ConvertToOptionallyRelativeOutputPath(source.c_str()) << "\n\n";
 | 
	
		
			
				|  |  |          if(!depends.empty())
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            // Write out the dependencies for the rule.
 | 
	
	
		
			
				|  | @@ -366,7 +361,7 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
 | 
	
		
			
				|  |  |                d != depends.end(); ++d)
 | 
	
		
			
				|  |  |              { 
 | 
	
		
			
				|  |  |              fout << "\\\n\t" << 
 | 
	
		
			
				|  |  | -              this->ConvertToRelativeOutputPath(d->c_str());
 | 
	
		
			
				|  |  | +              this->ConvertToOptionallyRelativeOutputPath(d->c_str());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |            fout << "\n";
 | 
	
		
			
				|  |  |            }
 | 
	
	
		
			
				|  | @@ -470,12 +465,12 @@ void cmLocalVisualStudio6Generator::WriteCustomRule(std::ostream& fout,
 | 
	
		
			
				|  |  |          libPath += dep;
 | 
	
		
			
				|  |  |          libPath += ".exe";
 | 
	
		
			
				|  |  |          fout << "\\\n\t" << 
 | 
	
		
			
				|  |  | -          this->ConvertToRelativeOutputPath(libPath.c_str());
 | 
	
		
			
				|  |  | +          this->ConvertToOptionallyRelativeOutputPath(libPath.c_str());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        else
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |          fout << "\\\n\t" << 
 | 
	
		
			
				|  |  | -          this->ConvertToRelativeOutputPath(d->c_str());
 | 
	
		
			
				|  |  | +          this->ConvertToOptionallyRelativeOutputPath(d->c_str());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      fout << "\n";
 | 
	
	
		
			
				|  | @@ -490,7 +485,7 @@ void cmLocalVisualStudio6Generator::WriteCustomRule(std::ostream& fout,
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      // Write a rule for every output generated by this command.
 | 
	
		
			
				|  |  | -    fout << this->ConvertToRelativeOutputPath(output)
 | 
	
		
			
				|  |  | +    fout << this->ConvertToOptionallyRelativeOutputPath(output)
 | 
	
		
			
				|  |  |           << " :  \"$(SOURCE)\" \"$(INTDIR)\" \"$(OUTDIR)\"\n\t";
 | 
	
		
			
				|  |  |      fout << command << "\n\n";
 | 
	
		
			
				|  |  |      fout << "# End Custom Build\n\n";
 | 
	
	
		
			
				|  | @@ -722,13 +717,13 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
 | 
	
		
			
				|  |  |        libPath += "/";
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      std::string lpath = 
 | 
	
		
			
				|  |  | -      this->ConvertToRelativeOutputPath(libPath.c_str());
 | 
	
		
			
				|  |  | +      this->ConvertToOptionallyRelativeOutputPath(libPath.c_str());
 | 
	
		
			
				|  |  |      if(lpath.size() == 0)
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        lpath = ".";
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      std::string lpathIntDir = libPath + "$(INTDIR)";
 | 
	
		
			
				|  |  | -    lpathIntDir =  this->ConvertToRelativeOutputPath(lpathIntDir.c_str());
 | 
	
		
			
				|  |  | +    lpathIntDir =  this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str());
 | 
	
		
			
				|  |  |      if(pathEmitted.insert(lpath).second)
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        libOptions += " /LIBPATH:";
 | 
	
	
		
			
				|  | @@ -759,13 +754,13 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
 | 
	
		
			
				|  |  |        exePath += "/";
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      std::string lpath = 
 | 
	
		
			
				|  |  | -      this->ConvertToRelativeOutputPath(exePath.c_str());
 | 
	
		
			
				|  |  | +      this->ConvertToOptionallyRelativeOutputPath(exePath.c_str());
 | 
	
		
			
				|  |  |      if(lpath.size() == 0)
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        lpath = ".";
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      std::string lpathIntDir = exePath + "$(INTDIR)";
 | 
	
		
			
				|  |  | -    lpathIntDir =  this->ConvertToRelativeOutputPath(lpathIntDir.c_str());
 | 
	
		
			
				|  |  | +    lpathIntDir =  this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str());
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      if(pathEmitted.insert(lpath).second)
 | 
	
		
			
				|  |  |        {
 | 
	
	
		
			
				|  | @@ -799,13 +794,13 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
 | 
	
		
			
				|  |  |        path += "/";
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      std::string lpath = 
 | 
	
		
			
				|  |  | -      this->ConvertToRelativeOutputPath(path.c_str());
 | 
	
		
			
				|  |  | +      this->ConvertToOptionallyRelativeOutputPath(path.c_str());
 | 
	
		
			
				|  |  |      if(lpath.size() == 0)
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        lpath = ".";
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      std::string lpathIntDir = path + "$(INTDIR)";
 | 
	
		
			
				|  |  | -    lpathIntDir =  this->ConvertToRelativeOutputPath(lpathIntDir.c_str());
 | 
	
		
			
				|  |  | +    lpathIntDir =  this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str());
 | 
	
		
			
				|  |  |      if(pathEmitted.insert(lpath).second)
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        libOptions += " /LIBPATH:";
 | 
	
	
		
			
				|  | @@ -858,8 +853,8 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
 | 
	
		
			
				|  |  |          lib += ".lib";
 | 
	
		
			
				|  |  |          libDebug += ".lib";
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      lib = this->ConvertToRelativeOutputPath(lib.c_str());
 | 
	
		
			
				|  |  | -      libDebug = this->ConvertToRelativeOutputPath(libDebug.c_str());
 | 
	
		
			
				|  |  | +      lib = this->ConvertToOptionallyRelativeOutputPath(lib.c_str());
 | 
	
		
			
				|  |  | +      libDebug = this->ConvertToOptionallyRelativeOutputPath(libDebug.c_str());
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |        if (j->second == cmTarget::GENERAL)
 | 
	
		
			
				|  |  |          {
 | 
	
	
		
			
				|  | @@ -1024,10 +1019,10 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha
 | 
	
		
			
				|  |  |      // to convert to output path for unix to win32 conversion
 | 
	
		
			
				|  |  |      cmSystemTools::ReplaceString(line, "LIBRARY_OUTPUT_PATH",
 | 
	
		
			
				|  |  |                                   removeQuotes(
 | 
	
		
			
				|  |  | -                                   this->ConvertToRelativeOutputPath(libPath.c_str())).c_str());
 | 
	
		
			
				|  |  | +                                   this->ConvertToOptionallyRelativeOutputPath(libPath.c_str())).c_str());
 | 
	
		
			
				|  |  |      cmSystemTools::ReplaceString(line, "EXECUTABLE_OUTPUT_PATH",
 | 
	
		
			
				|  |  |                                   removeQuotes(
 | 
	
		
			
				|  |  | -                                   this->ConvertToRelativeOutputPath(exePath.c_str())).c_str());
 | 
	
		
			
				|  |  | +                                   this->ConvertToOptionallyRelativeOutputPath(exePath.c_str())).c_str());
 | 
	
		
			
				|  |  |      cmSystemTools::ReplaceString(line, 
 | 
	
		
			
				|  |  |                                   "EXTRA_DEFINES", 
 | 
	
		
			
				|  |  |                                   m_Makefile->GetDefineFlags());
 |