summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2006-10-05 18:51:20 (GMT)
committerBrad King <brad.king@kitware.com>2006-10-05 18:51:20 (GMT)
commit7e92f0b4e449057bff26579596ccd11ee8c3c7e3 (patch)
tree3e1283ab96edf3a196309f88895ad1da00d496c9
parent5341711012b8d3787d154a5c2e04ead5aa920edd (diff)
downloadCMake-7e92f0b4e449057bff26579596ccd11ee8c3c7e3.zip
CMake-7e92f0b4e449057bff26579596ccd11ee8c3c7e3.tar.gz
CMake-7e92f0b4e449057bff26579596ccd11ee8c3c7e3.tar.bz2
BUG: Hack to make echo command work properly in mingw32-make.
-rw-r--r--Source/cmGlobalMinGWMakefileGenerator.cxx16
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.cxx3
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.h9
3 files changed, 27 insertions, 1 deletions
diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx
index f66134c..c024f6f 100644
--- a/Source/cmGlobalMinGWMakefileGenerator.cxx
+++ b/Source/cmGlobalMinGWMakefileGenerator.cxx
@@ -61,6 +61,22 @@ cmLocalGenerator *cmGlobalMinGWMakefileGenerator::CreateLocalGenerator()
lg->SetIgnoreLibPrefix(true);
lg->SetPassMakeflags(false);
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;
}
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index c39b898..db5d011 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -50,6 +50,7 @@ cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3()
this->ColorMakefile = false;
this->SkipPreprocessedSourceRules = false;
this->SkipAssemblySourceRules = false;
+ this->NativeEchoCommand = "@echo ";
}
//----------------------------------------------------------------------------
@@ -1044,7 +1045,7 @@ cmLocalUnixMakefileGenerator3::AppendEcho(std::vector<std::string>& commands,
if(color_name.empty())
{
// Use the native echo command.
- cmd = "@echo ";
+ cmd = this->NativeEchoCommand;
cmd += this->EscapeForShell(line.c_str(), false, true);
}
else
diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h
index 260f2aa..e79065d 100644
--- a/Source/cmLocalUnixMakefileGenerator3.h
+++ b/Source/cmLocalUnixMakefileGenerator3.h
@@ -131,6 +131,14 @@ public:
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
* is include.
*/
@@ -332,6 +340,7 @@ private:
std::string ExecutableOutputPath;
std::string LibraryOutputPath;
std::string ConfigurationName;
+ std::string NativeEchoCommand;
bool DefineWindowsNULL;
bool UnixCD;
bool PassMakeflags;