summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Barre <sebastien.barre@kitware.com>2002-04-11 13:53:41 (GMT)
committerSebastien Barre <sebastien.barre@kitware.com>2002-04-11 13:53:41 (GMT)
commite455a83969be5ff4642a9c505f2f1c23248b01f7 (patch)
treea40fe7fb31079af7e0c3d83776d801c8ac053e0d
parent9d0a4b8a5f45a6c8884c1a386c21b39bda9c3739 (diff)
downloadCMake-e455a83969be5ff4642a9c505f2f1c23248b01f7.zip
CMake-e455a83969be5ff4642a9c505f2f1c23248b01f7.tar.gz
CMake-e455a83969be5ff4642a9c505f2f1c23248b01f7.tar.bz2
FIX: echo pb, make Nmake gen use Unix gen, factorize stuff in Unix gen
-rw-r--r--Source/cmNMakeMakefileGenerator.cxx97
-rw-r--r--Source/cmUnixMakefileGenerator.cxx70
2 files changed, 53 insertions, 114 deletions
diff --git a/Source/cmNMakeMakefileGenerator.cxx b/Source/cmNMakeMakefileGenerator.cxx
index 9e55a03..27ef084 100644
--- a/Source/cmNMakeMakefileGenerator.cxx
+++ b/Source/cmNMakeMakefileGenerator.cxx
@@ -69,6 +69,10 @@ std::string cmNMakeMakefileGenerator::ShortPath(const char* path)
// them back together
std::string cmNMakeMakefileGenerator::ShortPathCommand(const char* command)
{
+ if (!command)
+ {
+ return "";
+ }
if(!strchr(command, ' '))
{
return command;
@@ -248,78 +252,43 @@ void cmNMakeMakefileGenerator::OutputMakeRule(std::ostream& fout,
const char* command3,
const char* command4)
{
- if(!target)
- {
- cmSystemTools::Error("no target for OutputMakeRule");
- return;
- }
-
- std::string replace;
- if(comment)
- {
- replace = comment;
- m_Makefile->ExpandVariablesInString(replace);
- fout << "#---------------------------------------------------------\n";
- fout << "# " << comment;
- fout << "\n#\n";
- }
- fout << "\n";
- replace = target;
- m_Makefile->ExpandVariablesInString(replace);
- replace = this->ConvertToOutputPath(replace.c_str());
- fout << replace.c_str() << ": ";
- if(depends)
+ std::string short_command;
+ if (command)
{
- replace = depends;
- m_Makefile->ExpandVariablesInString(replace);
- fout << replace.c_str();
+ short_command = ShortPathCommand(command);
+ command = short_command.c_str();
}
- fout << "\n";
- if(command)
- {
- replace = ShortPathCommand(command);
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
- {
- fout << "\t" << "echo " << replace.c_str() << "\n";
- }
- fout << "\t" << replace.c_str() << "\n";
- }
- if(command2)
+
+ std::string short_command2;
+ if (command2)
{
- replace = ShortPathCommand(command2);
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
- {
- fout << "\t" << "echo " << replace.c_str() << "\n";
- }
- fout << "\t" << replace.c_str() << "\n";
+ short_command2 = ShortPathCommand(command2);
+ command2 = short_command2.c_str();
}
- if(command3)
+
+ std::string short_command3;
+ if (command3)
{
- replace = ShortPathCommand(command3);
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
- {
- fout << "\t" << "echo " << replace.c_str() << "\n";
- }
- fout << "\t" << replace.c_str() << "\n";
+ short_command3 = ShortPathCommand(command3);
+ command3 = short_command3.c_str();
}
- if(command4)
+
+ std::string short_command4;
+ if (command4)
{
- replace = ShortPathCommand(command4);
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
- {
- fout << "\t" << "echo " << replace.c_str() << "\n";
- }
- fout << "\t" << replace.c_str() << "\n";
+ short_command4 = ShortPathCommand(command4);
+ command4 = short_command4.c_str();
}
- fout << "\n";
+
+ cmUnixMakefileGenerator::OutputMakeRule(fout,
+ comment,
+ target,
+ depends,
+ command,
+ command2,
+ command3,
+ command4);
+ return;
}
void
diff --git a/Source/cmUnixMakefileGenerator.cxx b/Source/cmUnixMakefileGenerator.cxx
index 417fb3b..28fc5f2 100644
--- a/Source/cmUnixMakefileGenerator.cxx
+++ b/Source/cmUnixMakefileGenerator.cxx
@@ -2026,13 +2026,15 @@ void cmUnixMakefileGenerator::OutputMakeRule(std::ostream& fout,
replace = comment;
m_Makefile->ExpandVariablesInString(replace);
fout << "#---------------------------------------------------------\n";
- fout << "# " << comment;
+ fout << "# " << replace;
fout << "\n#\n";
}
fout << "\n";
+
replace = target;
m_Makefile->ExpandVariablesInString(replace);
fout << this->ConvertToOutputPath(replace.c_str()) << ": ";
+
if(depends)
{
replace = depends;
@@ -2040,62 +2042,30 @@ void cmUnixMakefileGenerator::OutputMakeRule(std::ostream& fout,
fout << replace.c_str();
}
fout << "\n";
- if(command)
- {
- replace = command;
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
- {
- std::string echostring = replace;
- cmSystemTools::ReplaceString(echostring, "\n", "\\n");
- fout << "\t" << "echo \"" << echostring.c_str() << "\"\n";
- }
- fout << "\t" << replace.c_str() << "\n";
- }
- if(command2)
- {
- replace = command2;
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
- {
- std::string echostring = replace;
- cmSystemTools::ReplaceString(echostring, "\n", "\\n");
- fout << "\t" << "echo \"" << echostring.c_str() << "\"\n";
- }
- fout << "\t" << replace.c_str() << "\n";
- }
- if(command3)
- {
- replace = command3;
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
- {
- std::string echostring = replace;
- cmSystemTools::ReplaceString(echostring, "\n", "\\n");
- fout << "\t" << "echo \"" << echostring.c_str() << "\"\n";
- }
- fout << "\t" << replace.c_str() << "\n";
- }
- if(command4)
+
+ const char* commands[] = { command, command2, command3, command4 };
+
+ for (int i = 0; i < sizeof(commands) / sizeof(commands[0]); ++i)
{
- replace = command4;
- m_Makefile->ExpandVariablesInString(replace);
- if(replace[0] != '-' && replace.find("echo") != 0
- && replace.find("$(MAKE)") != 0)
+ if(commands[i])
{
- std::string echostring = replace;
- cmSystemTools::ReplaceString(echostring, "\n", "\\n");
- fout << "\t" << "echo \"" << echostring.c_str() << "\"\n";
+ replace = commands[i];
+ m_Makefile->ExpandVariablesInString(replace);
+ if(replace[0] != '-' && replace.find("echo") != 0
+ && replace.find("$(MAKE)") != 0)
+ {
+ std::string echostring = replace;
+ cmSystemTools::ReplaceString(echostring, "\n\t", "\n\techo ");
+ // let's try to see what happens without \"
+ // fout << "\techo \"" << echostring.c_str() << "\"\n";
+ fout << "\techo " << echostring.c_str() << "\n";
+ }
+ fout << "\t" << replace.c_str() << "\n";
}
- fout << "\t" << replace.c_str() << "\n";
}
fout << "\n";
}
-
void cmUnixMakefileGenerator::SetLocal (bool local)
{
if (local)