diff options
author | Brad King <brad.king@kitware.com> | 2006-09-28 14:37:19 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2006-09-28 14:37:19 (GMT) |
commit | 019dabc97fd8e71c4682a653138069d0a3026558 (patch) | |
tree | 3b16b43e3098881c259048151da6520c753b6f80 /Source | |
parent | 0b135767d6670c9b9fc51d50f7e222394383a374 (diff) | |
download | CMake-019dabc97fd8e71c4682a653138069d0a3026558.zip CMake-019dabc97fd8e71c4682a653138069d0a3026558.tar.gz CMake-019dabc97fd8e71c4682a653138069d0a3026558.tar.bz2 |
BUG: MSYS makefile shell needs posix paths to executables in some cases and it does not hurt to do it always.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalMSYSMakefileGenerator.cxx | 1 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 13 | ||||
-rw-r--r-- | Source/cmLocalGenerator.h | 1 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.h | 7 |
4 files changed, 22 insertions, 0 deletions
diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx index 8ae0b08..9cce564 100644 --- a/Source/cmGlobalMSYSMakefileGenerator.cxx +++ b/Source/cmGlobalMSYSMakefileGenerator.cxx @@ -88,6 +88,7 @@ cmLocalGenerator *cmGlobalMSYSMakefileGenerator::CreateLocalGenerator() { cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; lg->SetWindowsShell(false); + lg->SetMSYSShell(true); lg->SetGlobalGenerator(this); lg->SetIgnoreLibPrefix(true); lg->SetPassMakeflags(false); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 95eb666..bcd05c3 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -40,6 +40,7 @@ cmLocalGenerator::cmLocalGenerator() this->Parent = 0; this->WindowsShell = false; this->WindowsVSIDE = false; + this->MSYSShell = false; this->IgnoreLibPrefix = false; this->UseRelativePaths = false; this->Configured = false; @@ -2007,6 +2008,18 @@ std::string cmLocalGenerator::Convert(const char* source, { cmSystemTools::SetForceUnixPaths(true); } + + // For the MSYS shell convert drive letters to posix paths, so + // that c:/some/path becomes /c/some/path. This is needed to + // avoid problems with the shell path translation. + if(this->MSYSShell) + { + if(result.size() > 2 && result[1] == ':') + { + result[1] = result[0]; + result[0] = '/'; + } + } } return result; } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 66b47e5..f12ed9c 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -274,6 +274,7 @@ protected: bool WindowsShell; bool WindowsVSIDE; bool ForceUnixPath; + bool MSYSShell; bool UseRelativePaths; bool IgnoreLibPrefix; bool Configured; diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 6e0491e..31c3e58 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -108,6 +108,13 @@ public: void SetWindowsShell(bool v) {this->WindowsShell = v;} /** + * Set to true if the shell being used is the MSYS shell. + * This controls if statements in the makefile and the SHELL variable. + * The default is false. + */ + void SetMSYSShell(bool v) {this->MSYSShell = v;} + + /** * If set to true, then NULL is set to nil for non Windows_NT. * This uses make syntax used by nmake and borland. * The default is false. |