summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2002-12-10 15:55:43 -0500
committerBill Hoffman <bill.hoffman@kitware.com>2002-12-10 15:55:43 -0500
commita93038c52af110e1bf08968869c3ba868c582bd5 (patch)
tree255c087c3f2231ec7bb943697a7574ede00501de
parent0b8dcaddd28276f7755e21df848f3eff8e277910 (diff)
downloadcmake-a93038c52af110e1bf08968869c3ba868c582bd5.tar.gz
ENH: update to new style MakeDepend
-rw-r--r--Source/cmITKWrapTclCommand.cxx44
-rw-r--r--Source/cmITKWrapTclCommand.h7
2 files changed, 38 insertions, 13 deletions
diff --git a/Source/cmITKWrapTclCommand.cxx b/Source/cmITKWrapTclCommand.cxx
index 512f56706a..e762ce598c 100644
--- a/Source/cmITKWrapTclCommand.cxx
+++ b/Source/cmITKWrapTclCommand.cxx
@@ -27,6 +27,37 @@ cmITKWrapTclCommand::~cmITKWrapTclCommand()
delete m_MakeDepend;
}
+
+
+void
+cmITKWrapTclCommand::AddDependencies(cmDependInformation const *info,
+ std::vector<std::string>& depends,
+ std::set<cmDependInformation const*>& visited)
+{
+ if(!info)
+ {
+ return;
+ }
+ // add info to the visited set
+ visited.insert(info);
+
+ // add this dependency and the recurse
+ // now recurse with info's dependencies
+ for(cmDependInformation::DependencySet::const_iterator d =
+ info->m_DependencySet.begin();
+ d != info->m_DependencySet.end(); ++d)
+ {
+ if (visited.find(*d) == visited.end())
+ {
+ if((*d)->m_FullPath != "")
+ {
+ depends.push_back((*d)->m_FullPath);
+ }
+ this->AddDependencies(*d,depends,visited);
+ }
+ }
+}
+
// cmITKWrapTclCommand
bool cmITKWrapTclCommand::InitialPass(std::vector<std::string> const& argsIn)
{
@@ -154,17 +185,8 @@ bool cmITKWrapTclCommand::CreateCableRule(const char* configFile)
m_MakeDepend->FindDependencies(inFile.c_str());
if (info)
{
- for(cmDependInformation::DependencySet::const_iterator d =
- info->m_DependencySet.begin();
- d != info->m_DependencySet.end(); ++d)
- {
- // Make sure the full path is given. If not, the dependency was
- // not found.
- if((*d)->m_FullPath != "")
- {
- depends.push_back((*d)->m_FullPath);
- }
- }
+ std::set<cmDependInformation const*> visited;
+ this->AddDependencies(info, depends, visited);
}
std::vector<std::string> outputs;
diff --git a/Source/cmITKWrapTclCommand.h b/Source/cmITKWrapTclCommand.h
index 43af787952..c294acd53d 100644
--- a/Source/cmITKWrapTclCommand.h
+++ b/Source/cmITKWrapTclCommand.h
@@ -19,7 +19,7 @@
#include "cmStandardIncludes.h"
#include "cmCommand.h"
-
+class cmDependInformation;
class cmMakeDepend;
/** \class cmITKWrapTclCommand
@@ -58,7 +58,10 @@ public:
}
cmTypeMacro(cmITKWrapTclCommand, cmCommand);
-protected:
+protected:
+ void AddDependencies(cmDependInformation const*info,
+ std::vector<std::string>& depends,
+ std::set<cmDependInformation const*>& visited);
cmStdString m_TargetName;
cmTarget* m_Target;