BUG: fix bug in depends

This commit is contained in:
Bill Hoffman 2002-12-10 09:28:05 -05:00
parent ad3478cd1d
commit 5a676508c4
3 changed files with 34 additions and 18 deletions

View File

@ -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);
}
}
}

View File

@ -19,6 +19,7 @@
#include "cmLocalGenerator.h"
class cmDependInformation;
class cmMakeDepend;
class cmTarget;
class cmSourceFile;
@ -77,6 +78,9 @@ public:
void SetMakefileVariableSize(int s) { m_MakefileVariableSize = s; }
protected:
void AddDependenciesToSourceFile(cmDependInformation const*info,
cmSourceFile *i,
std::set<cmDependInformation const*> *visited);
virtual const char* GetSafeDefinition(const char*);
virtual void ProcessDepends(const cmMakeDepend &md);
virtual void OutputMakefile(const char* file, bool withDepends);

View File

@ -24,12 +24,6 @@ void cmDependInformation::AddDependencies(cmDependInformation* info)
if(this != info)
{
m_DependencySet.insert(info);
for (cmDependInformation::DependencySet::const_iterator
d = info->m_DependencySet.begin();
d != info->m_DependencySet.end(); ++d)
{
m_DependencySet.insert(*d);
}
}
}