summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2005-10-20 17:40:28 (GMT)
committerKen Martin <ken.martin@kitware.com>2005-10-20 17:40:28 (GMT)
commit929553a02e97fc741368e316552cae068f58fbff (patch)
treefa0e671b5a60cf9f2109f683096606156b21416c
parent097debb55a6914b3498d4894d0169eea2e92c876 (diff)
downloadCMake-929553a02e97fc741368e316552cae068f58fbff.zip
CMake-929553a02e97fc741368e316552cae068f58fbff.tar.gz
CMake-929553a02e97fc741368e316552cae068f58fbff.tar.bz2
ENH: big cleanup and fix for jump commands
-rw-r--r--Source/cmGlobalUnixMakefileGenerator3.cxx218
-rw-r--r--Source/cmGlobalUnixMakefileGenerator3.h15
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.cxx184
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.h9
4 files changed, 177 insertions, 249 deletions
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx
index b55164f..56dc39d 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.cxx
+++ b/Source/cmGlobalUnixMakefileGenerator3.cxx
@@ -101,73 +101,10 @@ void cmGlobalUnixMakefileGenerator3::Generate()
this->cmGlobalGenerator::Generate();
// write the main makefile
- this->WriteMainMakefile();
this->WriteMainMakefile2();
this->WriteMainCMakefile();
}
-void cmGlobalUnixMakefileGenerator3::WriteMainMakefile()
-{
- // Open the output file. This should not be copy-if-different
- // because the check-build-system step compares the makefile time to
- // see if the build system must be regenerated.
- std::string makefileName =
- this->GetCMakeInstance()->GetHomeOutputDirectory();
- makefileName += "/Makefile";
- cmGeneratedFileStream makefileStream(makefileName.c_str());
- if(!makefileStream)
- {
- return;
- }
-
- // get a local generator for some useful methods
- cmLocalUnixMakefileGenerator3 *lg =
- static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[0]);
-
- // Write the do not edit header.
- lg->WriteDisclaimer(makefileStream);
-
- // Write the main entry point target. This must be the VERY first
- // target so that make with no arguments will run it.
- // Just depend on the all target to drive the build.
- std::vector<std::string> depends;
- std::vector<std::string> no_commands;
- depends.push_back("all");
-
- // Write the rule.
- lg->WriteMakeRule(makefileStream,
- "Default target executed when no arguments are "
- "given to make.",
- "default_target",
- depends,
- no_commands);
-
- lg->WriteMakeVariables(makefileStream);
-
- lg->WriteSpecialTargetsTop(makefileStream);
-
- this->WriteAllRules(lg,makefileStream);
-
- // Keep track of targets already listed.
- std::set<cmStdString> emittedTargets;
-
- // write the target convenience rules
- unsigned int i;
- for (i = 0; i < m_LocalGenerators.size(); ++i)
- {
- lg = static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[i]);
- this->WriteConvenienceRules(makefileStream,lg,emittedTargets);
- }
-
- // add a help target as long as there isn;t a real target named help
- if(emittedTargets.insert("help").second)
- {
- this->WriteHelpRule(makefileStream);
- }
- lg = static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[0]);
- lg->WriteSpecialTargetsBottom(makefileStream);
-}
-
void cmGlobalUnixMakefileGenerator3::WriteMainMakefile2()
{
// Open the output file. This should not be copy-if-different
@@ -368,51 +305,6 @@ void cmGlobalUnixMakefileGenerator3
cmakefileStream << " )\n";
}
-//----------------------------------------------------------------------------
-void cmGlobalUnixMakefileGenerator3
-::WriteAllRules(cmLocalUnixMakefileGenerator3 *lg,
- std::ostream& makefileStream)
-{
- // Write section header.
- lg->WriteDivider(makefileStream);
- makefileStream
- << "# Rules to build dependencies and targets.\n"
- << "\n";
-
- std::vector<std::string> depends;
- std::vector<std::string> commands;
-
- // Check the build system in this directory.
- depends.push_back("cmake_check_build_system");
- commands.push_back(lg->GetRecursiveMakeCall("CMakeFiles/Makefile2","all"));
-
- // Write the rule.
- lg->WriteMakeRule(makefileStream, "The main all target", "all", depends, commands);
-
- // write the clean
- depends.clear();
- commands.clear();
- commands.push_back(lg->GetRecursiveMakeCall("CMakeFiles/Makefile2","clean"));
- lg->WriteMakeRule(makefileStream, "The main clean target", "clean",
- depends, commands);
-
- // write the depend rule, really a recompute depends rule
- depends.clear();
- commands.clear();
- std::string cmakefileName = "CMakeFiles/Makefile.cmake";
- std::string runRule =
- "$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)";
- runRule += " --check-build-system ";
- runRule += lg->Convert(cmakefileName.c_str(),cmLocalGenerator::NONE,
- cmLocalGenerator::SHELL);
- runRule += " 1";
-
- commands.push_back(runRule);
- lg->WriteMakeRule(makefileStream, "clear depends",
- "depend",
- depends, commands);
-}
-
//----------------------------------------------------------------------------
void
@@ -680,48 +572,52 @@ cmGlobalUnixMakefileGenerator3
void
cmGlobalUnixMakefileGenerator3
::WriteConvenienceRules(std::ostream& ruleFileStream,
- cmLocalUnixMakefileGenerator3 *lg,
std::set<cmStdString> &emitted)
{
std::vector<std::string> depends;
std::vector<std::string> commands;
- // write the directory level rules for this local gen
- //this->WriteDirectoryRules(ruleFileStream,lg);
-
depends.push_back("cmake_check_build_system");
-
- // for each target Generate the rule files for each target.
- cmTargets& targets = lg->GetMakefile()->GetTargets();
- for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
+
+ // write the target convenience rules
+ unsigned int i;
+ cmLocalUnixMakefileGenerator3 *lg;
+ for (i = 0; i < m_LocalGenerators.size(); ++i)
{
- if((t->second.GetType() == cmTarget::EXECUTABLE) ||
- (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
- (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
- (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
- (t->second.GetType() == cmTarget::UTILITY))
+ lg = static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[i]);
+
+ // for each target Generate the rule files for each target.
+ cmTargets& targets = lg->GetMakefile()->GetTargets();
+ for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
{
- // Don't emit the same rule twice (e.g. two targets with the same
- // simple name)
- if(t->second.GetName() &&
- strlen(t->second.GetName()) &&
- emitted.insert(t->second.GetName()).second)
+ if((t->second.GetType() == cmTarget::EXECUTABLE) ||
+ (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
+ (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
+ (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
+ (t->second.GetType() == cmTarget::UTILITY))
{
- // Add a rule to build the target by name.
- lg->WriteDivider(ruleFileStream);
- ruleFileStream
- << "# Target rules for targets named "
- << t->second.GetName() << "\n\n";
-
- // Write the rule.
- commands.clear();
- commands.push_back(lg->GetRecursiveMakeCall("CMakeFiles/Makefile2",
- t->second.GetName()));
- depends.clear();
- depends.push_back("cmake_check_build_system");
- lg->WriteMakeRule(ruleFileStream,
- "Build rule for target.",
- t->second.GetName(), depends, commands);
+ // Don't emit the same rule twice (e.g. two targets with the same
+ // simple name)
+ if(t->second.GetName() &&
+ strlen(t->second.GetName()) &&
+ emitted.insert(t->second.GetName()).second)
+ {
+ // Add a rule to build the target by name.
+ lg->WriteDivider(ruleFileStream);
+ ruleFileStream
+ << "# Target rules for targets named "
+ << t->second.GetName() << "\n\n";
+
+ // Write the rule.
+ commands.clear();
+ commands.push_back(lg->GetRecursiveMakeCall("CMakeFiles/Makefile2",
+ t->second.GetName()));
+ depends.clear();
+ depends.push_back("cmake_check_build_system");
+ lg->WriteMakeRule(ruleFileStream,
+ "Build rule for target.",
+ t->second.GetName(), depends, commands);
+ }
}
}
}
@@ -947,12 +843,9 @@ cmGlobalUnixMakefileGenerator3
}
//----------------------------------------------------------------------------
-void
-cmGlobalUnixMakefileGenerator3::WriteHelpRule(std::ostream& ruleFileStream)
+void cmGlobalUnixMakefileGenerator3::WriteHelpRule
+(std::ostream& ruleFileStream, cmLocalUnixMakefileGenerator3 *lg)
{
- cmLocalUnixMakefileGenerator3 *lg =
- static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[0]);
-
// add the help target
std::string path;
std::vector<std::string> no_depends;
@@ -970,25 +863,30 @@ cmGlobalUnixMakefileGenerator3::WriteHelpRule(std::ostream& ruleFileStream)
// for each local generator
unsigned int i;
+ cmLocalUnixMakefileGenerator3 *lg2;
for (i = 0; i < m_LocalGenerators.size(); ++i)
{
- lg = static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[i]);
-
- // for each target Generate the rule files for each target.
- cmTargets& targets = lg->GetMakefile()->GetTargets();
- for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
+ lg2 = static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[i]);
+ // for the passed in makefile or if this is the top Makefile wripte out
+ // the targets
+ if (lg2 == lg || !lg->GetParent())
{
- if((t->second.GetType() == cmTarget::EXECUTABLE) ||
- (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
- (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
- (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
- (t->second.GetType() == cmTarget::UTILITY))
+ // for each target Generate the rule files for each target.
+ cmTargets& targets = lg->GetMakefile()->GetTargets();
+ for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
{
- if(emittedTargets.insert(t->second.GetName()).second)
+ if((t->second.GetType() == cmTarget::EXECUTABLE) ||
+ (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
+ (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
+ (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
+ (t->second.GetType() == cmTarget::UTILITY))
{
- path = "... ";
- path += t->second.GetName();
- lg->AppendEcho(commands,path.c_str());
+ if(emittedTargets.insert(t->second.GetName()).second)
+ {
+ path = "... ";
+ path += t->second.GetName();
+ lg->AppendEcho(commands,path.c_str());
+ }
}
}
}
diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h
index f82f9df..66e4c68 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.h
+++ b/Source/cmGlobalUnixMakefileGenerator3.h
@@ -88,17 +88,18 @@ public:
void WriteMainCMakefileLanguageRules(cmGeneratedFileStream& cmakefileStream,
std::vector<cmLocalGenerator *> &);
+ // write out the help rule listing the valid targets
+ void WriteHelpRule(std::ostream& ruleFileStream,
+ cmLocalUnixMakefileGenerator3 *);
+
+ // write the top lvel target rules
+ void WriteConvenienceRules(std::ostream& ruleFileStream,
+ std::set<cmStdString> &emitted);
+
protected:
- void WriteMainMakefile();
void WriteMainMakefile2();
void WriteMainCMakefile();
- void WriteAllRules(cmLocalUnixMakefileGenerator3 *lg,
- std::ostream& makefileStream);
- void WriteHelpRule(std::ostream& ruleFileStream);
- void WriteConvenienceRules(std::ostream& ruleFileStream,
- cmLocalUnixMakefileGenerator3 *,
- std::set<cmStdString> &emitted);
void WriteConvenienceRules2(std::ostream& ruleFileStream,
cmLocalUnixMakefileGenerator3 *,
bool exclude);
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index 67511c4..339150f 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -1390,7 +1390,8 @@ cmLocalUnixMakefileGenerator3
m_Makefile->GetRequiredDefinition(linkRuleVar.c_str());
std::vector<std::string> commands1;
cmSystemTools::ExpandListArgument(linkRule, commands1);
- this->CreateCDCommand(commands1);
+ this->CreateCDCommand(commands1,m_Makefile->GetStartOutputDirectory(),
+ m_Makefile->GetHomeOutputDirectory());
commands.insert(commands.end(), commands1.begin(), commands1.end());
// Add a rule to create necessary symlinks for the library.
@@ -1720,7 +1721,8 @@ cmLocalUnixMakefileGenerator3
std::string linkRule = m_Makefile->GetRequiredDefinition(linkRuleVar);
std::vector<std::string> commands1;
cmSystemTools::ExpandListArgument(linkRule, commands1);
- this->CreateCDCommand(commands1);
+ this->CreateCDCommand(commands1,m_Makefile->GetStartOutputDirectory(),
+ m_Makefile->GetHomeOutputDirectory());
commands.insert(commands.end(), commands1.begin(), commands1.end());
// Add a rule to create necessary symlinks for the library.
@@ -2346,7 +2348,8 @@ cmLocalUnixMakefileGenerator3
}
// push back the custom commands
- this->CreateCDCommand(commands1);
+ this->CreateCDCommand(commands1,m_Makefile->GetStartOutputDirectory(),
+ m_Makefile->GetHomeOutputDirectory());
commands.insert(commands.end(), commands1.begin(), commands1.end());
}
@@ -2814,39 +2817,25 @@ cmLocalUnixMakefileGenerator3
}
//----------------------------------------------------------------------------
-void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
+void cmLocalUnixMakefileGenerator3
+::WriteLocalAllRules(std::ostream& ruleFileStream)
{
- // only write the local Makefile if we are not at the top
- if (!m_Parent)
- {
- return;
- }
-
- // generate the includes
- std::string ruleFileName = "Makefile";
-
- // Open the rule file. This should be copy-if-different because the
- // rules may depend on this file itself.
- std::string ruleFileNameFull = this->ConvertToFullPath(ruleFileName);
- cmGeneratedFileStream ruleFileStream(ruleFileNameFull.c_str());
- ruleFileStream.SetCopyIfDifferent(true);
- if(!ruleFileStream)
- {
- return;
- }
this->WriteDisclaimer(ruleFileStream);
-
this->WriteMakeVariables(ruleFileStream);
-
this->WriteSpecialTargetsTop(ruleFileStream);
std::vector<std::string> depends;
std::vector<std::string> commands;
-
+
// Write the all rule.
std::string dir = m_Makefile->GetStartOutputDirectory();
dir += "/directorystart";
dir = this->Convert(dir.c_str(),HOME_OUTPUT,MAKEFILE);
+ // if at the top the rule is called all
+ if (!m_Parent)
+ {
+ dir = "all";
+ }
this->CreateJumpCommand(commands,"CMakeFiles/Makefile2",dir);
this->WriteMakeRule(ruleFileStream, "The main all target", "all", depends, commands);
@@ -2858,10 +2847,61 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
this->CreateJumpCommand(commands,"CMakeFiles/Makefile2",dir);
this->WriteMakeRule(ruleFileStream, "The main clean target", "clean", depends, commands);
- // write our targets, and while doing it collect up the object
- // file rules
- this->WriteLocalMakefileTargets(ruleFileStream);
+ // write the depend rule, really a recompute depends rule
+ depends.clear();
+ commands.clear();
+ std::string cmakefileName = "CMakeFiles/Makefile.cmake";
+ std::string runRule =
+ "$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)";
+ runRule += " --check-build-system ";
+ runRule += this->Convert(cmakefileName.c_str(),cmLocalGenerator::NONE,
+ cmLocalGenerator::SHELL);
+ runRule += " 1";
+ commands.push_back(runRule);
+ this->WriteMakeRule(ruleFileStream, "clear depends",
+ "depend",
+ depends, commands);
+}
+
+//----------------------------------------------------------------------------
+void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
+{
+ // generate the includes
+ std::string ruleFileName = "Makefile";
+
+ // Open the rule file. This should be copy-if-different because the
+ // rules may depend on this file itself.
+ std::string ruleFileNameFull = this->ConvertToFullPath(ruleFileName);
+ cmGeneratedFileStream ruleFileStream(ruleFileNameFull.c_str());
+ ruleFileStream.SetCopyIfDifferent(true);
+ if(!ruleFileStream)
+ {
+ return;
+ }
+
+ // write the all rules
+ this->WriteLocalAllRules(ruleFileStream);
+
+ // Keep track of targets already listed.
+ std::set<cmStdString> emittedTargets;
+
+ // only write local targets unless at the top
+ if (m_Parent)
+ {
+ // write our targets, and while doing it collect up the object
+ // file rules
+ this->WriteLocalMakefileTargets(ruleFileStream,emittedTargets);
+ }
+ else
+ {
+ cmGlobalUnixMakefileGenerator3 *gg =
+ static_cast<cmGlobalUnixMakefileGenerator3*>(m_GlobalGenerator);
+ gg->WriteConvenienceRules(ruleFileStream,emittedTargets);
+ }
+ std::vector<std::string> depends;
+ std::vector<std::string> commands;
+
// now write out the object rules
// for each object file name
for (std::map<cmStdString,std::vector<cmTarget *> >::iterator lo =
@@ -2885,11 +2925,20 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile()
lo->first.c_str(), depends, commands);
}
- this->WriteHelpRule(ruleFileStream);
+ // add a help target as long as there isn;t a real target named help
+ if(emittedTargets.insert("help").second)
+ {
+ cmGlobalUnixMakefileGenerator3 *gg =
+ static_cast<cmGlobalUnixMakefileGenerator3*>(m_GlobalGenerator);
+ gg->WriteHelpRule(ruleFileStream,this);
+ }
+
+ this->WriteSpecialTargetsBottom(ruleFileStream);
}
void cmLocalUnixMakefileGenerator3
-::WriteLocalMakefileTargets(std::ostream& ruleFileStream)
+::WriteLocalMakefileTargets(std::ostream& ruleFileStream,
+ std::set<cmStdString> &emitted)
{
std::vector<std::string> depends;
std::vector<std::string> commands;
@@ -2906,16 +2955,24 @@ void cmLocalUnixMakefileGenerator3
(t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
(t->second.GetType() == cmTarget::UTILITY))
{
- // Add a rule to build the target by name.
+ emitted.insert(t->second.GetName());
+
+ // for subdirs add a rule to build this specific target by name.
localName = this->GetRelativeTargetDirectory(t->second);
localName += "/rule";
commands.clear();
depends.clear();
- this->CreateJumpCommand(commands,"CMakeFiles/Makefile2",localName);
+ // Build the target for this pass.
+ commands.push_back(this->GetRecursiveMakeCall
+ ("CMakeFiles/Makefile2",localName.c_str()));
+
+ this->CreateCDCommand(commands,
+ m_Makefile->GetHomeOutputDirectory(),
+ m_Makefile->GetStartOutputDirectory());
this->WriteMakeRule(ruleFileStream, "Convenience name for target.",
localName.c_str(), depends, commands);
-
+
// Add a target with the canonical name (no prefix, suffix or path).
if(localName != t->second.GetName())
{
@@ -2929,21 +2986,27 @@ void cmLocalUnixMakefileGenerator3
}
void cmLocalUnixMakefileGenerator3
-::CreateCDCommand(std::vector<std::string>& commands)
+::CreateCDCommand(std::vector<std::string>& commands, const char *tgtDir,
+ const char *retDir)
{
+ // do we need to cd?
+ if (!strcmp(tgtDir,retDir))
+ {
+ return;
+ }
+
if(m_WindowsShell)
{
// On Windows we must perform each step separately and then change
// back because the shell keeps the working directory between
// commands.
std::string cmd = "cd ";
- cmd += this->ConvertToOutputForExisting
- (m_Makefile->GetStartOutputDirectory());
+ cmd += this->ConvertToOutputForExisting(tgtDir);
commands.insert(commands.begin(),cmd);
// Change back to the starting directory. Any trailing slash must be
// removed to avoid problems with Borland Make.
- std::string back = m_Makefile->GetHomeOutputDirectory();
+ std::string back = retDir;
if(back.size() && back[back.size()-1] == '/')
{
back = back.substr(0, back.size()-1);
@@ -2961,7 +3024,7 @@ void cmLocalUnixMakefileGenerator3
for (; i != commands.end(); ++i)
{
std::string cmd = "cd ";
- cmd += this->ConvertToOutputForExisting(m_Makefile->GetStartOutputDirectory());
+ cmd += this->ConvertToOutputForExisting(tgtDir);
cmd += " && ";
cmd += *i;
*i = cmd;
@@ -2978,7 +3041,9 @@ void cmLocalUnixMakefileGenerator3
commands.push_back(this->GetRecursiveMakeCall
(MakefileName,localName.c_str()));
- this->CreateCDCommand(commands);
+ this->CreateCDCommand(commands,
+ m_Makefile->GetHomeOutputDirectory(),
+ m_Makefile->GetStartOutputDirectory());
}
//----------------------------------------------------------------------------
@@ -3055,47 +3120,6 @@ cmLocalUnixMakefileGenerator3
return cmd;
}
-//----------------------------------------------------------------------------
-void
-cmLocalUnixMakefileGenerator3::WriteHelpRule(std::ostream& ruleFileStream)
-{
- // add the help target
- std::string path;
- std::vector<std::string> no_depends;
- std::vector<std::string> commands;
- this->AppendEcho(commands,
- "The following are some of the valid targets for this Makefile:");
- this->AppendEcho(commands,"... all (the default if no target is provided)");
- this->AppendEcho(commands,"... clean");
- this->AppendEcho(commands,"... install");
- this->AppendEcho(commands,"... rebuild_cache");
-
- // Keep track of targets already listed.
- std::set<cmStdString> emittedTargets;
-
- // for each target Generate the rule files for each target.
- cmTargets& targets = this->GetMakefile()->GetTargets();
- for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
- {
- if((t->second.GetType() == cmTarget::EXECUTABLE) ||
- (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
- (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
- (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
- (t->second.GetType() == cmTarget::UTILITY))
- {
- if(emittedTargets.insert(t->second.GetName()).second)
- {
- path = "... ";
- path += t->second.GetName();
- this->AppendEcho(commands,path.c_str());
- }
- }
- }
- this->WriteMakeRule(ruleFileStream, "Help Target",
- "help:",
- no_depends, commands);
- ruleFileStream << "\n\n";
-}
void cmLocalUnixMakefileGenerator3
::WriteDependLanguageInfo(std::ostream& cmakefileStream, cmTarget &target)
diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h
index 466cf50..b03d062 100644
--- a/Source/cmLocalUnixMakefileGenerator3.h
+++ b/Source/cmLocalUnixMakefileGenerator3.h
@@ -154,13 +154,17 @@ public:
void AppendEcho(std::vector<std::string>& commands,
const char* text);
+ // write the target rules for the local Makefile into the stream
+ void WriteLocalAllRules(std::ostream& ruleFileStream);
+
protected:
// write the depend info
void WriteDependLanguageInfo(std::ostream& cmakefileStream, cmTarget &tgt);
// write the target rules for the local Makefile into the stream
- void WriteLocalMakefileTargets(std::ostream& ruleFileStream);
+ void WriteLocalMakefileTargets(std::ostream& ruleFileStream,
+ std::set<cmStdString> &emitted);
// write the local help rule
void WriteHelpRule(std::ostream& ruleFileStream);
@@ -171,7 +175,8 @@ protected:
std::string & localName);
// create a command that cds to the start dir then runs the commands
- void CreateCDCommand(std::vector<std::string>& commands);
+ void CreateCDCommand(std::vector<std::string>& commands,
+ const char *targetDir, const char *returnDir);
// these two methods just compute reasonable values for m_LibraryOutputPath
// and m_ExecutableOutputPath