diff options
author | Brad King <brad.king@kitware.com> | 2007-05-17 14:53:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2007-05-17 14:53:18 (GMT) |
commit | c25d2bfdd2c81076bf637ae1b2aee711d9e6424d (patch) | |
tree | d8832b6899273a77800958ab852cbd5d2631c73c /Source/cmLocalUnixMakefileGenerator3.cxx | |
parent | cc507411d3641297ed9fff7789cd4121dbe849b3 (diff) | |
download | CMake-c25d2bfdd2c81076bf637ae1b2aee711d9e6424d.zip CMake-c25d2bfdd2c81076bf637ae1b2aee711d9e6424d.tar.gz CMake-c25d2bfdd2c81076bf637ae1b2aee711d9e6424d.tar.bz2 |
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.
Diffstat (limited to 'Source/cmLocalUnixMakefileGenerator3.cxx')
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.cxx | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 3d89366..425997b 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -55,6 +55,7 @@ cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3() this->NativeEchoWindows = true; this->MakeCommandEscapeTargetTwice = false; this->IsMakefileGenerator = true; + this->BorlandMakeCurlyHack = false; } //---------------------------------------------------------------------------- @@ -939,6 +940,27 @@ cmLocalUnixMakefileGenerator3 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); } } |