diff options
Diffstat (limited to 'Source/cmMakeDepend.cxx')
-rw-r--r-- | Source/cmMakeDepend.cxx | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/Source/cmMakeDepend.cxx b/Source/cmMakeDepend.cxx index 5da8828..43af5a5 100644 --- a/Source/cmMakeDepend.cxx +++ b/Source/cmMakeDepend.cxx @@ -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. |