[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