Now adds dependency if the file doesn't exist but will be created during the compilation

This commit is contained in:
Franck Bettinger 2001-11-16 09:03:31 -05:00
parent 9f9db7dad5
commit 8c7b9cbf10

View File

@ -121,7 +121,6 @@ void cmMakeDepend::GenerateDependInformation(cmDependInformation* info)
// Make sure we don't visit the same file more than once.
info->m_DependDone = true;
}
const char* path = info->m_FullPath.c_str();
if(!path)
{
@ -130,7 +129,7 @@ void cmMakeDepend::GenerateDependInformation(cmDependInformation* info)
}
bool found = false;
// If the file exists, use it to find dependency information.
if(cmSystemTools::FileExists(path))
{
@ -138,11 +137,13 @@ void cmMakeDepend::GenerateDependInformation(cmDependInformation* info)
this->DependWalk(info);
found = true;
}
// See if the cmSourceFile for it has any files specified as
// dependency hints.
if(info->m_cmSourceFile != 0)
{
// Get the cmSourceFile corresponding to this.
const cmSourceFile& cFile = *(info->m_cmSourceFile);
// See if there are any hints for finding dependencies for the missing
@ -162,7 +163,43 @@ void cmMakeDepend::GenerateDependInformation(cmDependInformation* info)
found = true;
}
}
if(!found)
{
// Try to find the file amongst the sources
cmMakefile::SourceMap srcmap = m_Makefile->GetSources();
cmMakefile::SourceMap::iterator l;
for (l= srcmap.begin() ; l!=srcmap.end() ; l++)
{
for(std::vector<cmSourceFile>::iterator i = l->second.begin();
i != l->second.end(); i++)
{
if (i->GetFullPath() == path)
{
found=true;
}
else
{
//try to guess which include path to use
for(std::vector<std::string>::iterator t =
m_IncludeDirectories.begin();
t != m_IncludeDirectories.end(); ++t)
{
std::string incpath = *t;
incpath = incpath + "/";
incpath = incpath + path;
if (i->GetFullPath() == incpath)
{
// set the path to the guessed path
info->m_FullPath = incpath;
found=true;
}
}
}
}
}
}
if(!found)
{
// Couldn't find any dependency information.