summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2006-09-28 14:37:19 (GMT)
committerBrad King <brad.king@kitware.com>2006-09-28 14:37:19 (GMT)
commit019dabc97fd8e71c4682a653138069d0a3026558 (patch)
tree3b16b43e3098881c259048151da6520c753b6f80 /Source
parent0b135767d6670c9b9fc51d50f7e222394383a374 (diff)
downloadCMake-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.cxx1
-rw-r--r--Source/cmLocalGenerator.cxx13
-rw-r--r--Source/cmLocalGenerator.h1
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.h7
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.