From 8c7b9cbf10ce634b287184912d99ae69451ccb2e Mon Sep 17 00:00:00 2001 From: Franck Bettinger Date: Fri, 16 Nov 2001 09:03:31 -0500 Subject: [PATCH] Now adds dependency if the file doesn't exist but will be created during the compilation --- Source/cmMakeDepend.cxx | 45 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/Source/cmMakeDepend.cxx b/Source/cmMakeDepend.cxx index 5da88286c..43af5a578 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::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::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.