[cmake-commits] king committed cmGlobalBorlandMakefileGenerator.cxx
1.25 1.26 cmGlobalMinGWMakefileGenerator.cxx 1.9 1.10
cmLocalGenerator.cxx 1.217 1.218 cmLocalGenerator.h 1.81 1.82
cmLocalUnixMakefileGenerator3.cxx 1.207 1.208
cmLocalUnixMakefileGenerator3.h 1.70 1.71
cmake-commits at cmake.org
cmake-commits at cmake.org
Thu May 17 10:53:19 EDT 2007
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv1454/Source
Modified Files:
cmGlobalBorlandMakefileGenerator.cxx
cmGlobalMinGWMakefileGenerator.cxx cmLocalGenerator.cxx
cmLocalGenerator.h cmLocalUnixMakefileGenerator3.cxx
cmLocalUnixMakefileGenerator3.h
Log Message:
ENH: Added testing for custom command line arguments containing all special characters on the US keyboard. Fixed curly brace arguments on borland and % arguments in mingw32-make.
Index: cmLocalUnixMakefileGenerator3.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalUnixMakefileGenerator3.h,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- cmLocalUnixMakefileGenerator3.h 10 May 2007 18:43:55 -0000 1.70
+++ cmLocalUnixMakefileGenerator3.h 17 May 2007 14:53:17 -0000 1.71
@@ -98,6 +98,11 @@
void SetWatcomWMake(bool v) {this->WatcomWMake = v;}
/**
+ * Set to true if the make tool being used is MinGW Make.
+ */
+ void SetMinGWMake(bool v) {this->MinGWMake = 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.
@@ -165,6 +170,13 @@
void SetMakeCommandEscapeTargetTwice(bool b)
{ this->MakeCommandEscapeTargetTwice = b; }
+ /**
+ * Set whether the Borland curly brace command line hack should be
+ * applied.
+ */
+ void SetBorlandMakeCurlyHack(bool b)
+ { this->BorlandMakeCurlyHack = b; }
+
// used in writing out Cmake files such as WriteDirectoryInformation
static void WriteCMakeArgument(std::ostream& os, const char* s);
@@ -338,6 +350,7 @@
bool PassMakeflags;
bool SilentNoColon;
bool MakeCommandEscapeTargetTwice;
+ bool BorlandMakeCurlyHack;
//==========================================================================
std::string HomeRelativeOutputPath;
Index: cmLocalGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalGenerator.cxx,v
retrieving revision 1.217
retrieving revision 1.218
diff -u -d -r1.217 -r1.218
--- cmLocalGenerator.cxx 16 May 2007 13:07:53 -0000 1.217
+++ cmLocalGenerator.cxx 17 May 2007 14:53:17 -0000 1.218
@@ -47,6 +47,7 @@
this->WindowsShell = false;
this->WindowsVSIDE = false;
this->WatcomWMake = false;
+ this->MinGWMake = false;
this->MSYSShell = false;
this->IgnoreLibPrefix = false;
this->UseRelativePaths = false;
@@ -2772,6 +2773,10 @@
{
flags |= cmsysSystem_Shell_Flag_WatcomWMake;
}
+ if(this->MinGWMake)
+ {
+ flags |= cmsysSystem_Shell_Flag_MinGWMake;
+ }
// Compute the buffer size needed.
int size = (this->WindowsShell ?
Index: cmLocalGenerator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalGenerator.h,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -d -r1.81 -r1.82
--- cmLocalGenerator.h 10 May 2007 18:43:55 -0000 1.81
+++ cmLocalGenerator.h 17 May 2007 14:53:17 -0000 1.82
@@ -304,6 +304,7 @@
bool WindowsShell;
bool WindowsVSIDE;
bool WatcomWMake;
+ bool MinGWMake;
bool ForceUnixPath;
bool MSYSShell;
bool UseRelativePaths;
Index: cmGlobalMinGWMakefileGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalMinGWMakefileGenerator.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmGlobalMinGWMakefileGenerator.cxx 13 Oct 2006 14:22:45 -0000 1.9
+++ cmGlobalMinGWMakefileGenerator.cxx 17 May 2007 14:53:17 -0000 1.10
@@ -61,6 +61,7 @@
lg->SetIgnoreLibPrefix(true);
lg->SetPassMakeflags(false);
lg->SetUnixCD(true);
+ lg->SetMinGWMake(true);
// mingw32-make has trouble running code like
//
Index: cmGlobalBorlandMakefileGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalBorlandMakefileGenerator.cxx,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- cmGlobalBorlandMakefileGenerator.cxx 8 Mar 2007 18:05:02 -0000 1.25
+++ cmGlobalBorlandMakefileGenerator.cxx 17 May 2007 14:53:17 -0000 1.26
@@ -51,6 +51,7 @@
lg->SetGlobalGenerator(this);
lg->SetUnixCD(false);
lg->SetMakeCommandEscapeTargetTwice(true);
+ lg->SetBorlandMakeCurlyHack(true);
return lg;
}
Index: cmLocalUnixMakefileGenerator3.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalUnixMakefileGenerator3.cxx,v
retrieving revision 1.207
retrieving revision 1.208
diff -u -d -r1.207 -r1.208
--- cmLocalUnixMakefileGenerator3.cxx 16 May 2007 17:24:17 -0000 1.207
+++ cmLocalUnixMakefileGenerator3.cxx 17 May 2007 14:53:17 -0000 1.208
@@ -55,6 +55,7 @@
this->NativeEchoWindows = true;
this->MakeCommandEscapeTargetTwice = false;
this->IsMakefileGenerator = true;
+ this->BorlandMakeCurlyHack = false;
}
//----------------------------------------------------------------------------
@@ -939,6 +940,27 @@
escapeAllowMakeVars);
}
}
+ if(this->BorlandMakeCurlyHack)
+ {
+ // Borland Make has a very strange bug. If the first curly
+ // brace anywhere in the command string is a left curly, it
+ // must be written {{} instead of just {. Otherwise some
+ // curly braces are removed. The hack can be skipped if the
+ // first curly brace is the last character.
+ std::string::size_type lcurly = cmd.find("{");
+ if(lcurly != cmd.npos && lcurly < (cmd.size()-1))
+ {
+ std::string::size_type rcurly = cmd.find("}");
+ if(rcurly == cmd.npos || rcurly > lcurly)
+ {
+ // The first curly is a left curly. Use the hack.
+ std::string hack_cmd = cmd.substr(0, lcurly);
+ hack_cmd += "{{}";
+ hack_cmd += cmd.substr(lcurly+1);
+ cmd = hack_cmd;
+ }
+ }
+ }
commands1.push_back(cmd);
}
}
More information about the Cmake-commits
mailing list