BUG: Hack to make echo command work properly in mingw32-make.

This commit is contained in:
Brad King 2006-10-05 14:51:20 -04:00
parent 5341711012
commit 7e92f0b4e4
3 changed files with 27 additions and 1 deletions

View File

@ -61,6 +61,22 @@ cmLocalGenerator *cmGlobalMinGWMakefileGenerator::CreateLocalGenerator()
lg->SetIgnoreLibPrefix(true); lg->SetIgnoreLibPrefix(true);
lg->SetPassMakeflags(false); lg->SetPassMakeflags(false);
lg->SetUnixCD(true); lg->SetUnixCD(true);
// mingw32-make has trouble running code like
//
// @echo message with spaces
//
// If quotes are added
//
// @echo "message with spaces"
//
// it runs but the quotes are displayed. Instead we can separate
// with a semicolon
//
// @echo;message with spaces
//
// to hack around the problem.
lg->SetNativeEchoCommand("@echo;");
return lg; return lg;
} }

View File

@ -50,6 +50,7 @@ cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3()
this->ColorMakefile = false; this->ColorMakefile = false;
this->SkipPreprocessedSourceRules = false; this->SkipPreprocessedSourceRules = false;
this->SkipAssemblySourceRules = false; this->SkipAssemblySourceRules = false;
this->NativeEchoCommand = "@echo ";
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -1044,7 +1045,7 @@ cmLocalUnixMakefileGenerator3::AppendEcho(std::vector<std::string>& commands,
if(color_name.empty()) if(color_name.empty())
{ {
// Use the native echo command. // Use the native echo command.
cmd = "@echo "; cmd = this->NativeEchoCommand;
cmd += this->EscapeForShell(line.c_str(), false, true); cmd += this->EscapeForShell(line.c_str(), false, true);
} }
else else

View File

@ -130,6 +130,14 @@ public:
*/ */
void SetSilentNoColon(bool v) {this->SilentNoColon = v;} void SetSilentNoColon(bool v) {this->SilentNoColon = v;}
/**
* Set the command to use for native make shell echo. The value
* should include all parts of the command up to the beginning of
* the message (including a whitespace separator).
*/
void SetNativeEchoCommand(const char* cmd)
{ this->NativeEchoCommand = cmd; }
/** /**
* Set the string used to include one makefile into another default * Set the string used to include one makefile into another default
* is include. * is include.
@ -332,6 +340,7 @@ private:
std::string ExecutableOutputPath; std::string ExecutableOutputPath;
std::string LibraryOutputPath; std::string LibraryOutputPath;
std::string ConfigurationName; std::string ConfigurationName;
std::string NativeEchoCommand;
bool DefineWindowsNULL; bool DefineWindowsNULL;
bool UnixCD; bool UnixCD;
bool PassMakeflags; bool PassMakeflags;