diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2003-12-30 13:41:04 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2003-12-30 13:41:04 (GMT) |
commit | ae69928e69b81a08272ff5eb53a94f198d4952e1 (patch) | |
tree | e286a28f745230015ef27af3fc82c1805e69b0ee | |
parent | bbfc747f2e63dcc57ba983cc5aec09bf0f5547b4 (diff) | |
download | CMake-ae69928e69b81a08272ff5eb53a94f198d4952e1.zip CMake-ae69928e69b81a08272ff5eb53a94f198d4952e1.tar.gz CMake-ae69928e69b81a08272ff5eb53a94f198d4952e1.tar.bz2 |
BUG: borland make treats ./target and target as different also convert to outputpathrelative may get passed a quoted path
-rw-r--r-- | Source/cmLocalGenerator.cxx | 10 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator.cxx | 12 |
2 files changed, 18 insertions, 4 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 32f0952..e3454ba 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -106,13 +106,16 @@ std::string cmLocalGenerator::ConvertToRelativeOutputPath(const char* p) // Do the work of converting to a relative path std::string pathIn = p; - bool ispath = false; if(pathIn.find('/') == pathIn.npos) { return pathIn; } - + if(pathIn.size() && pathIn[0] == '\"') + { + pathIn = pathIn.substr(1, pathIn.size()-2); + } + std::string ret = pathIn; if(m_CurrentOutputDirectory.size() <= ret.size()) { @@ -180,7 +183,8 @@ std::string cmLocalGenerator::ConvertToRelativeOutputPath(const char* p) { ret = relpath; } - if(ret.size() && ret[0] != '/' && ret[0] != '.') + if(ret.size() + && ret[0] != '\"' && ret[0] != '/' && ret[0] != '.') { if(ret.size() > 1 && ret[1] != ':') { diff --git a/Source/cmLocalUnixMakefileGenerator.cxx b/Source/cmLocalUnixMakefileGenerator.cxx index 08b0177..af4ddf6 100644 --- a/Source/cmLocalUnixMakefileGenerator.cxx +++ b/Source/cmLocalUnixMakefileGenerator.cxx @@ -1323,11 +1323,21 @@ void cmLocalUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout, target += name; target += cmSystemTools::GetExecutableExtension(); target = this->ConvertToRelativeOutputPath(target.c_str()); + cmSystemTools::ConvertToUnixSlashes(target); bool needsLocalTarget = false; - if(target.find('/', 2) != target.npos) + unsigned int startPos = 2; + if(m_Makefile->GetDefinition("BORLAND")) + { + // the borland makefiles treat .\target and target as different + // targets. All other makes treat them the same + startPos = 0; + } + if(target.find('/', startPos) != target.npos) { needsLocalTarget = true; } + target = cmSystemTools::ConvertToOutputPath(target.c_str()); + std::string objs = "$(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") "; std::string depend = "$("; |