summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalUnixMakefileGenerator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmLocalUnixMakefileGenerator.cxx')
-rw-r--r--Source/cmLocalUnixMakefileGenerator.cxx42
1 files changed, 30 insertions, 12 deletions
diff --git a/Source/cmLocalUnixMakefileGenerator.cxx b/Source/cmLocalUnixMakefileGenerator.cxx
index 55d87eb..f71a464 100644
--- a/Source/cmLocalUnixMakefileGenerator.cxx
+++ b/Source/cmLocalUnixMakefileGenerator.cxx
@@ -91,6 +91,31 @@ void cmLocalUnixMakefileGenerator::Generate(bool fromTheTop)
this->OutputMakefile(dest.c_str(), !fromTheTop);
}
+void
+cmLocalUnixMakefileGenerator::AddDependenciesToSourceFile(cmDependInformation const *info,
+ cmSourceFile *i,
+ std::set<cmDependInformation const*> *visited)
+{
+ // add info to the visited set
+ visited->insert(info);
+
+ // add this dependency and the recurse
+ if(info->m_FullPath != "")
+ {
+ // 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())
+ {
+ i->GetDepends().push_back((*d)->m_FullPath);
+ this->AddDependenciesToSourceFile(*d,i,visited);
+ }
+ }
+ }
+}
+
void cmLocalUnixMakefileGenerator::ProcessDepends(const cmMakeDepend &md)
{
// Now create cmDependInformation objects for files in the directory
@@ -109,21 +134,14 @@ void cmLocalUnixMakefileGenerator::ProcessDepends(const cmMakeDepend &md)
// Delete any hints from the source file's dependencies.
(*i)->GetDepends().erase((*i)->GetDepends().begin(), (*i)->GetDepends().end());
-
+ std::cerr << "get depends for " << (*i)->GetFullPath() << "\n";
+
// Now add the real dependencies for the file.
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 != "")
- {
- (*i)->GetDepends().push_back((*d)->m_FullPath);
- }
- }
+ // create visited set
+ std::set<cmDependInformation const*> visited;
+ this->AddDependenciesToSourceFile(info,*i, &visited);
}
}
}