|
|
@@ -607,6 +607,27 @@ cmLocalUnixMakefileGenerator3
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+std::string
|
|
|
+cmLocalUnixMakefileGenerator3
|
|
|
+::ConvertShellCommand(std::string const& cmd, RelativeRoot root)
|
|
|
+{
|
|
|
+ if(this->WatcomWMake &&
|
|
|
+ cmSystemTools::FileIsFullPath(cmd.c_str()) &&
|
|
|
+ cmd.find_first_of("( )") != cmd.npos)
|
|
|
+ {
|
|
|
+ // On Watcom WMake use the windows short path for the command
|
|
|
+ // name. This is needed to avoid funny quoting problems on
|
|
|
+ // lines with shell redirection operators.
|
|
|
+ std::string scmd;
|
|
|
+ if(cmSystemTools::GetShortPath(cmd.c_str(), scmd))
|
|
|
+ {
|
|
|
+ return this->Convert(scmd.c_str(), NONE, SHELL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return this->Convert(cmd.c_str(), root, SHELL);
|
|
|
+}
|
|
|
+
|
|
|
//----------------------------------------------------------------------------
|
|
|
void
|
|
|
cmLocalUnixMakefileGenerator3
|
|
|
@@ -646,13 +667,13 @@ cmLocalUnixMakefileGenerator3
|
|
|
makefileStream
|
|
|
<< "# The CMake executable.\n"
|
|
|
<< "CMAKE_COMMAND = "
|
|
|
- << this->Convert(cmakecommand.c_str(), FULL, SHELL).c_str()
|
|
|
+ << this->ConvertShellCommand(cmakecommand, FULL)
|
|
|
<< "\n"
|
|
|
<< "\n";
|
|
|
makefileStream
|
|
|
<< "# The command to remove a file.\n"
|
|
|
<< "RM = "
|
|
|
- << this->Convert(cmakecommand.c_str(),FULL,SHELL).c_str()
|
|
|
+ << this->ConvertShellCommand(cmakecommand, FULL)
|
|
|
<< " -E remove -f\n"
|
|
|
<< "\n";
|
|
|
|
|
|
@@ -662,7 +683,7 @@ cmLocalUnixMakefileGenerator3
|
|
|
makefileStream
|
|
|
<< "# The program to use to edit the cache.\n"
|
|
|
<< "CMAKE_EDIT_COMMAND = "
|
|
|
- << this->Convert(edit_cmd,FULL,SHELL) << "\n"
|
|
|
+ << this->ConvertShellCommand(edit_cmd, FULL) << "\n"
|
|
|
<< "\n";
|
|
|
}
|
|
|
|
|
|
@@ -1019,22 +1040,9 @@ cmLocalUnixMakefileGenerator3
|
|
|
// without the current directory being in the search path.
|
|
|
cmd = "./" + cmd;
|
|
|
}
|
|
|
- if(this->WatcomWMake &&
|
|
|
- cmSystemTools::FileIsFullPath(cmd.c_str()) &&
|
|
|
- cmd.find(" ") != cmd.npos)
|
|
|
- {
|
|
|
- // On Watcom WMake use the windows short path for the command
|
|
|
- // name. This is needed to avoid funny quoting problems on
|
|
|
- // lines with shell redirection operators.
|
|
|
- std::string scmd;
|
|
|
- if(cmSystemTools::GetShortPath(cmd.c_str(), scmd))
|
|
|
- {
|
|
|
- cmd = scmd;
|
|
|
- }
|
|
|
- }
|
|
|
std::string launcher =
|
|
|
this->MakeLauncher(cc, target, workingDir? NONE : START_OUTPUT);
|
|
|
- cmd = launcher + this->Convert(cmd.c_str(),NONE,SHELL);
|
|
|
+ cmd = launcher + this->ConvertShellCommand(cmd, NONE);
|
|
|
|
|
|
ccg.AppendArguments(c, cmd);
|
|
|
if(content)
|