|
|
@@ -41,6 +41,40 @@ cmLocalUnixMakefileGenerator::~cmLocalUnixMakefileGenerator()
|
|
|
|
|
|
void cmLocalUnixMakefileGenerator::Generate(bool fromTheTop)
|
|
|
{
|
|
|
+ if(m_CurrentOutputDirectory.size() == 0)
|
|
|
+ {
|
|
|
+ m_CurrentOutputDirectory = m_Makefile->GetCurrentOutputDirectory();
|
|
|
+ m_HomeOutputDirectory = m_Makefile->GetHomeOutputDirectory();
|
|
|
+ m_HomeDirectory = m_Makefile->GetHomeDirectory();
|
|
|
+#if defined(_WIN32) || defined(__APPLE__)
|
|
|
+ m_CurrentOutputDirectory = cmSystemTools::LowerCase(m_CurrentOutputDirectory);
|
|
|
+ m_HomeOutputDirectory = cmSystemTools::LowerCase(m_HomeOutputDirectory);
|
|
|
+ m_HomeDirectory = cmSystemTools::LowerCase(m_HomeDirectory);
|
|
|
+#endif
|
|
|
+ if(m_RelativePathToSourceDir.size() == 0)
|
|
|
+ {
|
|
|
+ m_RelativePathToSourceDir = cmSystemTools::RelativePath(
|
|
|
+ m_CurrentOutputDirectory.c_str(),
|
|
|
+ m_HomeDirectory.c_str());
|
|
|
+ std::string path = m_CurrentOutputDirectory;
|
|
|
+ cmSystemTools::ReplaceString(path, m_HomeOutputDirectory.c_str(), "");
|
|
|
+ unsigned i;
|
|
|
+ m_RelativePathToBinaryDir = "";
|
|
|
+ for(i =0; i < path.size(); ++i)
|
|
|
+ {
|
|
|
+ if(path[i] == '/')
|
|
|
+ {
|
|
|
+ m_RelativePathToBinaryDir += "../";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ m_HomeOutputDirectoryNoSlash = m_HomeOutputDirectory;
|
|
|
+ m_HomeOutputDirectory += "/";
|
|
|
+ m_CurrentOutputDirectory += "/";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
// suppoirt override in output directories
|
|
|
if (m_Makefile->GetDefinition("LIBRARY_OUTPUT_PATH"))
|
|
|
{
|
|
|
@@ -222,17 +256,18 @@ void cmLocalUnixMakefileGenerator::OutputMakefile(const char* file,
|
|
|
for(std::vector<std::string>::const_iterator i = lfiles.begin();
|
|
|
i != lfiles.end(); ++i)
|
|
|
{
|
|
|
- fout << " " << cmSystemTools::ConvertToOutputPath(i->c_str());
|
|
|
+ fout << " " << this->ConvertToMakefilePath(i->c_str());
|
|
|
}
|
|
|
// Add the cache to the list
|
|
|
std::string cacheFile = m_Makefile->GetHomeOutputDirectory();
|
|
|
cacheFile += "/CMakeCache.txt";
|
|
|
- fout << " " << cmSystemTools::ConvertToOutputPath(cacheFile.c_str());
|
|
|
+ fout << " " << this->ConvertToMakefilePath(cacheFile.c_str());
|
|
|
fout << "\n\n\n";
|
|
|
+
|
|
|
this->OutputMakeVariables(fout);
|
|
|
std::string checkCache = m_Makefile->GetHomeOutputDirectory();
|
|
|
checkCache += "/cmake.check_cache";
|
|
|
- checkCache = cmSystemTools::ConvertToOutputPath(checkCache.c_str());
|
|
|
+ checkCache = this->ConvertToMakefilePath(checkCache.c_str());
|
|
|
// most unix makes will pass the command line flags to make down
|
|
|
// to sub invoked makes via an environment variable. However, some
|
|
|
// makes do not support that, so you have to pass the flags explicitly
|
|
|
@@ -445,7 +480,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
std::string path2 = m_LibraryOutputPath;
|
|
|
path2 += this->GetFullTargetName(l->first.c_str(), l->second);
|
|
|
path = "... ";
|
|
|
- path += cmSystemTools::ConvertToOutputPath(path2.c_str());
|
|
|
+ path += this->ConvertToMakefilePath(path2.c_str());
|
|
|
this->OutputEcho(fout,path.c_str());
|
|
|
}
|
|
|
}
|
|
|
@@ -490,7 +525,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
path = m_LibraryOutputPath;
|
|
|
path += this->GetFullTargetName(l->first.c_str(), l->second);
|
|
|
fout << " \\\n"
|
|
|
- << cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
|
+ << this->ConvertToMakefilePath(path.c_str());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -504,7 +539,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
{
|
|
|
path = m_ExecutableOutputPath;
|
|
|
path += this->GetFullTargetName(l->first.c_str(), l->second);
|
|
|
- fout << " \\\n" << cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
|
+ fout << " \\\n" << this->ConvertToMakefilePath(path.c_str());
|
|
|
}
|
|
|
}
|
|
|
// list utilities last
|
|
|
@@ -537,7 +572,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
if(outExt.size())
|
|
|
{
|
|
|
fout << "\\\n"
|
|
|
- << cmSystemTools::ConvertToOutputPath((*i)->GetSourceName().c_str())
|
|
|
+ << this->ConvertToMakefilePath((*i)->GetSourceName().c_str())
|
|
|
<< outExt.c_str() << " ";
|
|
|
}
|
|
|
}
|
|
|
@@ -553,7 +588,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
std::string outExt(this->GetOutputExtension((*i)->GetSourceExtension().c_str()));
|
|
|
if(outExt.size())
|
|
|
{
|
|
|
- fout << "\\\n\"" << cmSystemTools::ConvertToOutputPath((*i)->GetSourceName().c_str())
|
|
|
+ fout << "\\\n\"" << this->ConvertToMakefilePath((*i)->GetSourceName().c_str())
|
|
|
<< outExt.c_str() << "\" ";
|
|
|
}
|
|
|
}
|
|
|
@@ -585,7 +620,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
path = m_LibraryOutputPath;
|
|
|
path += targetNameSO;
|
|
|
fout << " \\\n"
|
|
|
- << cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
|
+ << this->ConvertToMakefilePath(path.c_str());
|
|
|
}
|
|
|
if(targetNameReal != targetName &&
|
|
|
targetNameReal != targetNameSO)
|
|
|
@@ -593,7 +628,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
path = m_LibraryOutputPath;
|
|
|
path += targetNameReal;
|
|
|
fout << " \\\n"
|
|
|
- << cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
|
+ << this->ConvertToMakefilePath(path.c_str());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -861,7 +896,7 @@ std::string cmLocalUnixMakefileGenerator::CreatePreBuildRules(
|
|
|
{
|
|
|
initNext = true;
|
|
|
}
|
|
|
- std::string command = cmSystemTools::ConvertToOutputPath(cc.GetCommand().c_str());
|
|
|
+ std::string command = this->ConvertToMakefilePath(cc.GetCommand().c_str());
|
|
|
customRuleCode += command + " " + cc.GetArguments();
|
|
|
}
|
|
|
return customRuleCode;
|
|
|
@@ -886,7 +921,7 @@ std::string cmLocalUnixMakefileGenerator::CreatePreLinkRules(
|
|
|
{
|
|
|
initNext = true;
|
|
|
}
|
|
|
- std::string command = cmSystemTools::ConvertToOutputPath(cc.GetCommand().c_str());
|
|
|
+ std::string command = this->ConvertToMakefilePath(cc.GetCommand().c_str());
|
|
|
customRuleCode += command + " " + cc.GetArguments();
|
|
|
}
|
|
|
return customRuleCode;
|
|
|
@@ -911,7 +946,7 @@ std::string cmLocalUnixMakefileGenerator::CreatePostBuildRules(
|
|
|
{
|
|
|
initNext = true;
|
|
|
}
|
|
|
- std::string command = cmSystemTools::ConvertToOutputPath(cc.GetCommand().c_str());
|
|
|
+ std::string command = this->ConvertToMakefilePath(cc.GetCommand().c_str());
|
|
|
customRuleCode += command + " " + cc.GetArguments();
|
|
|
}
|
|
|
return customRuleCode;
|
|
|
@@ -1066,10 +1101,10 @@ void cmLocalUnixMakefileGenerator::OutputLibraryRule(std::ostream& fout,
|
|
|
std::string targetFullPathSO = m_LibraryOutputPath + targetNameSO;
|
|
|
std::string targetFullPathReal = m_LibraryOutputPath + targetNameReal;
|
|
|
std::string targetFullPathBase = m_LibraryOutputPath + targetNameBase;
|
|
|
- targetFullPath = cmSystemTools::ConvertToOutputPath(targetFullPath.c_str());
|
|
|
- targetFullPathSO = cmSystemTools::ConvertToOutputPath(targetFullPathSO.c_str());
|
|
|
- targetFullPathReal = cmSystemTools::ConvertToOutputPath(targetFullPathReal.c_str());
|
|
|
- targetFullPathBase = cmSystemTools::ConvertToOutputPath(targetFullPathBase.c_str());
|
|
|
+ targetFullPath = this->ConvertToMakefilePath(targetFullPath.c_str());
|
|
|
+ targetFullPathSO = this->ConvertToMakefilePath(targetFullPathSO.c_str());
|
|
|
+ targetFullPathReal = this->ConvertToMakefilePath(targetFullPathReal.c_str());
|
|
|
+ targetFullPathBase = this->ConvertToMakefilePath(targetFullPathBase.c_str());
|
|
|
|
|
|
// get the objects that are used to link this library
|
|
|
std::string objs = "$(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") ";
|
|
|
@@ -1193,7 +1228,7 @@ void cmLocalUnixMakefileGenerator::OutputSharedLibraryRule(std::ostream& fout,
|
|
|
if((*i)->GetSourceExtension() == "def")
|
|
|
{
|
|
|
linkFlags += this->GetSafeDefinition("CMAKE_LINK_DEF_FILE_FLAG");
|
|
|
- linkFlags += cmSystemTools::ConvertToOutputPath((*i)->GetFullPath().c_str());
|
|
|
+ linkFlags += this->ConvertToMakefilePath((*i)->GetFullPath().c_str());
|
|
|
linkFlags += " ";
|
|
|
}
|
|
|
}
|
|
|
@@ -1296,8 +1331,13 @@ void cmLocalUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
|
|
|
}
|
|
|
}
|
|
|
target += name;
|
|
|
- target += cmSystemTools::GetExecutableExtension();
|
|
|
- target = cmSystemTools::ConvertToOutputPath(target.c_str());
|
|
|
+ target += cmSystemTools::GetExecutableExtension();
|
|
|
+ target = this->ConvertToMakefilePath(target.c_str());
|
|
|
+ bool needsLocalTarget = false;
|
|
|
+ if(target.find('/') != target.npos)
|
|
|
+ {
|
|
|
+ needsLocalTarget = true;
|
|
|
+ }
|
|
|
|
|
|
std::string objs = "$(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") ";
|
|
|
std::string depend = "$(";
|
|
|
@@ -1397,16 +1437,19 @@ void cmLocalUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
|
|
|
// If there is no executable output path, add a rule with the
|
|
|
// relative path to the executable. This is necessary for
|
|
|
// try-compile to work in this case.
|
|
|
- depend = target;
|
|
|
- target = name;
|
|
|
- target += cmSystemTools::GetExecutableExtension();
|
|
|
- target = cmSystemTools::ConvertToOutputPath(target.c_str());
|
|
|
- commands.resize(0);
|
|
|
- this->OutputMakeRule(fout,
|
|
|
- comment.c_str(),
|
|
|
- target.c_str(),
|
|
|
- depend.c_str(),
|
|
|
- commands);
|
|
|
+ if(needsLocalTarget)
|
|
|
+ {
|
|
|
+ depend = target;
|
|
|
+ target = name;
|
|
|
+ target += cmSystemTools::GetExecutableExtension();
|
|
|
+ target = this->ConvertToMakefilePath(target.c_str());
|
|
|
+ commands.resize(0);
|
|
|
+ this->OutputMakeRule(fout,
|
|
|
+ comment.c_str(),
|
|
|
+ target.c_str(),
|
|
|
+ depend.c_str(),
|
|
|
+ commands);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1446,7 +1489,7 @@ void cmLocalUnixMakefileGenerator::OutputUtilityRule(std::ostream& fout,
|
|
|
depends += " \\\n";
|
|
|
replaceVars = *d;
|
|
|
m_Makefile->ExpandVariablesInString(replaceVars);
|
|
|
- depends += cmSystemTools::ConvertToOutputPath(replaceVars.c_str());
|
|
|
+ depends += this->ConvertToMakefilePath(replaceVars.c_str());
|
|
|
}
|
|
|
}
|
|
|
this->OutputMakeRule(fout, comment.c_str(), name,
|
|
|
@@ -1662,10 +1705,13 @@ void cmLocalUnixMakefileGenerator::OutputBuildTargetInDirWindows(std::ostream& f
|
|
|
const char* libOutPath)
|
|
|
{
|
|
|
const char* makeTarget = library;
|
|
|
- std::string currentDir =
|
|
|
- cmSystemTools::ConvertToOutputPath(m_Makefile->GetCurrentOutputDirectory());
|
|
|
+ std::string jumpBack =
|
|
|
+ cmSystemTools::RelativePath(cmSystemTools::GetProgramPath(fullpath).c_str(),
|
|
|
+ m_Makefile->GetCurrentOutputDirectory());
|
|
|
+ jumpBack = this->ConvertToOutputForExisting(jumpBack.c_str());
|
|
|
std::string wpath = this->ConvertToOutputForExisting(path);
|
|
|
std::string wfullpath = this->ConvertToOutputForExisting(fullpath);
|
|
|
+
|
|
|
if(libOutPath && strcmp( libOutPath, "" ) != 0)
|
|
|
{
|
|
|
makeTarget = wfullpath.c_str();
|
|
|
@@ -1676,7 +1722,7 @@ void cmLocalUnixMakefileGenerator::OutputBuildTargetInDirWindows(std::ostream& f
|
|
|
<< "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) cmake.check_depends\n"
|
|
|
<< "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) -f cmake.check_depends\n"
|
|
|
<< "\t$(MAKE) $(MAKESILENT) " << makeTarget
|
|
|
- << "\n\tcd " << currentDir << "\n";
|
|
|
+ << "\n\tcd " << jumpBack << "\n";
|
|
|
}
|
|
|
|
|
|
void cmLocalUnixMakefileGenerator::OutputBuildTargetInDir(std::ostream& fout,
|
|
|
@@ -1701,7 +1747,7 @@ void cmLocalUnixMakefileGenerator::OutputBuildTargetInDir(std::ostream& fout,
|
|
|
<< "; $(MAKE) $(MAKESILENT) cmake.check_depends"
|
|
|
<< "; $(MAKE) $(MAKESILENT) -f cmake.check_depends"
|
|
|
<< "; $(MAKE) $(MAKESILENT) "
|
|
|
- << cmSystemTools::ConvertToOutputPath(makeTarget) << "\n\n";
|
|
|
+ << this->ConvertToMakefilePath(makeTarget) << "\n\n";
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1772,7 +1818,7 @@ void cmLocalUnixMakefileGenerator::OutputLibDepend(std::ostream& fout,
|
|
|
libpath += name;
|
|
|
libpath += this->GetSafeDefinition("CMAKE_STATIC_LIBRARY_SUFFIX");
|
|
|
}
|
|
|
- fout << cmSystemTools::ConvertToOutputPath(libpath.c_str()) << " ";
|
|
|
+ fout << this->ConvertToMakefilePath(libpath.c_str()) << " ";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1811,7 +1857,7 @@ void cmLocalUnixMakefileGenerator::OutputExeDepend(std::ostream& fout,
|
|
|
exepath += name;
|
|
|
// add the correct extension
|
|
|
exepath += cmSystemTools::GetExecutableExtension();
|
|
|
- fout << cmSystemTools::ConvertToOutputPath(exepath.c_str()) << " ";
|
|
|
+ fout << this->ConvertToMakefilePath(exepath.c_str()) << " ";
|
|
|
}
|
|
|
// if it isn't in the cache, it might still be a utility target
|
|
|
// so check for that
|
|
|
@@ -1857,9 +1903,10 @@ BuildInSubDirectoryWindows(std::ostream& fout,
|
|
|
const char* target2,
|
|
|
bool silent)
|
|
|
{
|
|
|
+ std::string dir;
|
|
|
if(target1)
|
|
|
{
|
|
|
- std::string dir = this->ConvertToOutputForExisting(directory);
|
|
|
+ dir = this->ConvertToOutputForExisting(directory);
|
|
|
if(dir[0] == '\"')
|
|
|
{
|
|
|
dir = dir.substr(1, dir.size()-2);
|
|
|
@@ -1881,9 +1928,19 @@ BuildInSubDirectoryWindows(std::ostream& fout,
|
|
|
fout << "\t@echo " << directory << ": building " << target2 << "\n";
|
|
|
}
|
|
|
fout << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) " << target2 << "\n";
|
|
|
+ }
|
|
|
+ std::string currentDir = dir;
|
|
|
+ cmSystemTools::ConvertToUnixSlashes(currentDir);
|
|
|
+ std::string cdback = "..";
|
|
|
+ for(unsigned int i =0; i < currentDir.size(); ++i)
|
|
|
+ {
|
|
|
+ if(currentDir[i] == '/')
|
|
|
+ {
|
|
|
+ cdback += "/..";
|
|
|
+ }
|
|
|
}
|
|
|
- std::string currentDir = m_Makefile->GetCurrentOutputDirectory();
|
|
|
- fout << "\tcd " << this->ConvertToOutputForExisting(currentDir.c_str()) << "\n\n";
|
|
|
+ fout << "\tcd " << this->ConvertToOutputForExisting(cdback.c_str()) << "\n\n";
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1899,7 +1956,7 @@ void cmLocalUnixMakefileGenerator::BuildInSubDirectory(std::ostream& fout,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- std::string directory = cmSystemTools::ConvertToOutputPath(dir);
|
|
|
+ std::string directory = this->ConvertToMakefilePath(dir);
|
|
|
if(target1)
|
|
|
{
|
|
|
fout << "\t@if test ! -d " << directory
|
|
|
@@ -2046,8 +2103,8 @@ bool cmLocalUnixMakefileGenerator::OutputObjectDepends(std::ostream& fout)
|
|
|
{
|
|
|
std::string s = (*source)->GetSourceName();
|
|
|
s += this->GetOutputExtension((*source)->GetSourceExtension().c_str());
|
|
|
- fout << cmSystemTools::ConvertToOutputPath(s.c_str()) << " : "
|
|
|
- << cmSystemTools::ConvertToOutputPath(dep->c_str()) << "\n";
|
|
|
+ fout << this->ConvertToMakefilePath(s.c_str()) << " : "
|
|
|
+ << this->ConvertToMakefilePath(dep->c_str()) << "\n";
|
|
|
ret = true;
|
|
|
}
|
|
|
fout << "\n\n";
|
|
|
@@ -2098,7 +2155,7 @@ void cmLocalUnixMakefileGenerator::OutputCheckDepends(std::ostream& fout)
|
|
|
// has been done because m_FullPath on cmDependInformation
|
|
|
// always is it called. If it is called here, network builds are
|
|
|
// very slow because of the number of stats
|
|
|
- std::string dependfile = cmSystemTools::ConvertToOutputPath(dep->c_str());
|
|
|
+ std::string dependfile = this->ConvertToMakefilePath(dep->c_str());
|
|
|
// use the lower path function to create uniqe names
|
|
|
std::string lowerpath = this->LowerCasePath(dependfile.c_str());
|
|
|
if(emittedLowerPath.insert(lowerpath).second)
|
|
|
@@ -2152,7 +2209,7 @@ void cmLocalUnixMakefileGenerator::OutputCustomRules(std::ostream& fout)
|
|
|
std::string comment = c->GetComment();
|
|
|
std::string command = c->GetCommand();
|
|
|
cmSystemTools::ReplaceString(command, "/./", "/");
|
|
|
- command = cmSystemTools::ConvertToOutputPath(command.c_str());
|
|
|
+ command = this->ConvertToMakefilePath(command.c_str());
|
|
|
command += " ";
|
|
|
// now add the arguments
|
|
|
command += c->GetArguments();
|
|
|
@@ -2183,7 +2240,7 @@ void cmLocalUnixMakefileGenerator::OutputCustomRules(std::ostream& fout)
|
|
|
}
|
|
|
cmSystemTools::ReplaceString(dep, "/./", "/");
|
|
|
cmSystemTools::ReplaceString(dep, "/$(IntDir)/", "/");
|
|
|
- dep = cmSystemTools::ConvertToOutputPath(dep.c_str());
|
|
|
+ dep = this->ConvertToMakefilePath(dep.c_str());
|
|
|
depends += " ";
|
|
|
depends += dep;
|
|
|
}
|
|
|
@@ -2209,7 +2266,7 @@ void cmLocalUnixMakefileGenerator::OutputCustomRules(std::ostream& fout)
|
|
|
std::string
|
|
|
cmLocalUnixMakefileGenerator::ConvertToOutputForExisting(const char* p)
|
|
|
{
|
|
|
- std::string ret = cmSystemTools::ConvertToOutputPath(p);
|
|
|
+ std::string ret = this->ConvertToMakefilePath(p);
|
|
|
// if there are spaces in the path, then get the short path version
|
|
|
// if there is one
|
|
|
if(ret.find(' ') != std::string::npos)
|
|
|
@@ -2218,7 +2275,7 @@ cmLocalUnixMakefileGenerator::ConvertToOutputForExisting(const char* p)
|
|
|
{
|
|
|
if(!cmSystemTools::GetShortPath(ret.c_str(), ret))
|
|
|
{
|
|
|
- ret = cmSystemTools::ConvertToOutputPath(p);
|
|
|
+ ret = this->ConvertToMakefilePath(p);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2265,16 +2322,16 @@ void cmLocalUnixMakefileGenerator::OutputMakeVariables(std::ostream& fout)
|
|
|
}
|
|
|
|
|
|
fout << "CMAKE_CURRENT_SOURCE = " <<
|
|
|
- cmSystemTools::ConvertToOutputPath(m_Makefile->GetStartDirectory())
|
|
|
+ this->ConvertToMakefilePath(m_Makefile->GetStartDirectory())
|
|
|
<< "\n";
|
|
|
fout << "CMAKE_CURRENT_BINARY = " <<
|
|
|
- cmSystemTools::ConvertToOutputPath(m_Makefile->GetStartOutputDirectory())
|
|
|
+ this->ConvertToMakefilePath(m_Makefile->GetStartOutputDirectory())
|
|
|
<< "\n";
|
|
|
fout << "CMAKE_SOURCE_DIR = " <<
|
|
|
- cmSystemTools::ConvertToOutputPath(m_Makefile->GetHomeDirectory())
|
|
|
+ this->ConvertToMakefilePath(m_Makefile->GetHomeDirectory())
|
|
|
<< "\n";
|
|
|
fout << "CMAKE_BINARY_DIR = " <<
|
|
|
- cmSystemTools::ConvertToOutputPath(m_Makefile->GetHomeOutputDirectory())
|
|
|
+ this->ConvertToMakefilePath(m_Makefile->GetHomeOutputDirectory())
|
|
|
<< "\n";
|
|
|
// Output Include paths
|
|
|
fout << "INCLUDE_FLAGS = ";
|
|
|
@@ -2367,7 +2424,7 @@ void cmLocalUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
|
|
|
installNameReal += targetNameReal;
|
|
|
fname = m_LibraryOutputPath;
|
|
|
fname += targetNameReal;
|
|
|
- fout << "\t$(INSTALL_DATA) " << cmSystemTools::ConvertToOutputPath(fname.c_str())
|
|
|
+ fout << "\t$(INSTALL_DATA) " << this->ConvertToMakefilePath(fname.c_str())
|
|
|
<< " \"$(DESTDIR)" << prefix << l->second.GetInstallPath() << "\"\n";
|
|
|
fout << "\t" << cmakecommand << " -E cmake_symlink_library \""
|
|
|
<< installNameReal << "\" \"" << installNameSO << "\" \"" << installName
|
|
|
@@ -2377,7 +2434,7 @@ void cmLocalUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
|
|
|
case cmTarget::EXECUTABLE:
|
|
|
fname = m_ExecutableOutputPath;
|
|
|
fname += this->GetFullTargetName(l->first.c_str(), l->second);
|
|
|
- fout << "\t$(INSTALL_PROGRAM) " << cmSystemTools::ConvertToOutputPath(fname.c_str())
|
|
|
+ fout << "\t$(INSTALL_PROGRAM) " << this->ConvertToMakefilePath(fname.c_str())
|
|
|
<< " \"$(DESTDIR)" << prefix << l->second.GetInstallPath() << "\"\n";
|
|
|
break;
|
|
|
case cmTarget::INSTALL_FILES:
|
|
|
@@ -2411,7 +2468,7 @@ void cmLocalUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
|
|
|
fout << "\t$(INSTALL_DATA) ";
|
|
|
}
|
|
|
|
|
|
- fout << cmSystemTools::ConvertToOutputPath(i->c_str())
|
|
|
+ fout << this->ConvertToMakefilePath(i->c_str())
|
|
|
<< " \"$(DESTDIR)" << prefix << l->second.GetInstallPath() << "\"\n";
|
|
|
}
|
|
|
}
|
|
|
@@ -2446,7 +2503,7 @@ void cmLocalUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
|
|
|
{
|
|
|
fout << "\t @$(INSTALL_PROGRAM) ";
|
|
|
}
|
|
|
- fout << cmSystemTools::ConvertToOutputPath(i->c_str())
|
|
|
+ fout << this->ConvertToMakefilePath(i->c_str())
|
|
|
<< " \"$(DESTDIR)" << prefix << l->second.GetInstallPath() << "\"\n";
|
|
|
}
|
|
|
}
|
|
|
@@ -2486,14 +2543,14 @@ void cmLocalUnixMakefileGenerator::OutputMakeRules(std::ostream& fout)
|
|
|
{
|
|
|
if(!(*source)->GetPropertyAsBool("HEADER_FILE_ONLY"))
|
|
|
{
|
|
|
- allsources.push_back(cmSystemTools::ConvertToOutputPath((*source)->GetFullPath().c_str()));
|
|
|
+ allsources.push_back(this->ConvertToMakefilePath((*source)->GetFullPath().c_str()));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
std::string checkCache = m_Makefile->GetHomeOutputDirectory();
|
|
|
checkCache += "/cmake.check_cache";
|
|
|
- checkCache = cmSystemTools::ConvertToOutputPath(checkCache.c_str());
|
|
|
+ checkCache = this->ConvertToMakefilePath(checkCache.c_str());
|
|
|
std::vector<std::string> cmake_depends;
|
|
|
cmake_depends.push_back(checkCache);
|
|
|
cmake_depends.push_back("$(CMAKE_MAKEFILE_SOURCES)");
|
|
|
@@ -2538,7 +2595,7 @@ void cmLocalUnixMakefileGenerator::OutputMakeRules(std::ostream& fout)
|
|
|
std::vector<std::string> check_cache_depends;
|
|
|
std::string CMakeCache = m_Makefile->GetHomeOutputDirectory();
|
|
|
CMakeCache += "/CMakeCache.txt";
|
|
|
- CMakeCache = cmSystemTools::ConvertToOutputPath(CMakeCache.c_str());
|
|
|
+ CMakeCache = this->ConvertToMakefilePath(CMakeCache.c_str());
|
|
|
check_cache_depends.push_back(CMakeCache);
|
|
|
check_cache_depends.push_back("$(CMAKE_MAKEFILE_SOURCES)");
|
|
|
|
|
|
@@ -2643,7 +2700,7 @@ OutputBuildObjectFromSource(std::ostream& fout,
|
|
|
std::string comment = "object file";
|
|
|
std::string objectFile = std::string(shortName) +
|
|
|
this->GetOutputExtension(source.GetSourceExtension().c_str());
|
|
|
- objectFile = cmSystemTools::ConvertToOutputPath(objectFile.c_str());
|
|
|
+ objectFile = this->ConvertToMakefilePath(objectFile.c_str());
|
|
|
cmSystemTools::FileFormat format =
|
|
|
cmSystemTools::GetFileFormat(source.GetSourceExtension().c_str());
|
|
|
std::vector<std::string> rules;
|
|
|
@@ -2653,7 +2710,7 @@ OutputBuildObjectFromSource(std::ostream& fout,
|
|
|
flags += extraCompileFlags;
|
|
|
}
|
|
|
std::string sourceFile =
|
|
|
- cmSystemTools::ConvertToOutputPath(source.GetFullPath().c_str());
|
|
|
+ this->ConvertToMakefilePath(source.GetFullPath().c_str());
|
|
|
std::string buildType = this->GetSafeDefinition("CMAKE_BUILD_TYPE");
|
|
|
buildType = cmSystemTools::UpperCase(buildType);
|
|
|
switch(format)
|
|
|
@@ -2761,7 +2818,7 @@ OutputBuildObjectFromSource(std::ostream& fout,
|
|
|
for(std::vector<std::string>::iterator i = depends.begin();
|
|
|
i != depends.end(); ++i)
|
|
|
{
|
|
|
- sourceAndDeps.push_back(cmSystemTools::ConvertToOutputPath(i->c_str()));
|
|
|
+ sourceAndDeps.push_back(this->ConvertToMakefilePath(i->c_str()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2957,7 +3014,7 @@ void cmLocalUnixMakefileGenerator::OutputMakeRule(std::ostream& fout,
|
|
|
replace = target;
|
|
|
m_Makefile->ExpandVariablesInString(replace);
|
|
|
|
|
|
- std::string tgt = cmSystemTools::ConvertToOutputPath(replace.c_str());
|
|
|
+ std::string tgt = this->ConvertToMakefilePath(replace.c_str());
|
|
|
if(depends.empty())
|
|
|
{
|
|
|
fout << tgt.c_str() << ":\n";
|
|
|
@@ -3156,3 +3213,31 @@ void cmLocalUnixMakefileGenerator::GetLibraryNames(const char* n,
|
|
|
// The library name without extension.
|
|
|
baseName = this->GetBaseTargetName(n, t);
|
|
|
}
|
|
|
+
|
|
|
+std::string cmLocalUnixMakefileGenerator::ConvertToMakefilePath(const char* p)
|
|
|
+{
|
|
|
+ std::string pathIn = p;
|
|
|
+#if defined(_WIN32) || defined(__APPLE__)
|
|
|
+ pathIn = cmSystemTools::LowerCase(pathIn);
|
|
|
+#endif
|
|
|
+
|
|
|
+ std::string ret = pathIn;
|
|
|
+ cmSystemTools::ReplaceString(ret, m_CurrentOutputDirectory.c_str(), "");
|
|
|
+ cmSystemTools::ReplaceString(ret, m_HomeDirectory.c_str(),
|
|
|
+ m_RelativePathToSourceDir.c_str());
|
|
|
+ cmSystemTools::ReplaceString(ret, m_HomeOutputDirectory.c_str(),
|
|
|
+ m_RelativePathToBinaryDir.c_str());
|
|
|
+ std::string relpath = m_RelativePathToBinaryDir;
|
|
|
+ if(relpath.size())
|
|
|
+ {
|
|
|
+ relpath.erase(relpath.size()-1, 1);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ relpath = ".";
|
|
|
+ }
|
|
|
+ cmSystemTools::ReplaceString(ret, m_HomeOutputDirectoryNoSlash.c_str(),
|
|
|
+ relpath.c_str());
|
|
|
+ ret = cmSystemTools::ConvertToOutputPath(ret.c_str());
|
|
|
+ return ret;
|
|
|
+}
|