diff options
Diffstat (limited to 'Source/cmLocalUnixMakefileGenerator3.cxx')
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.cxx | 73 |
1 files changed, 38 insertions, 35 deletions
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 19a0034..bdddd9b 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1644,52 +1644,37 @@ void cmLocalUnixMakefileGenerator3::CheckDependencies(cmMakefile* mf, void cmLocalUnixMakefileGenerator3 ::WriteDependLanguageInfo(std::ostream& cmakefileStream, cmTarget &target) { - // now write all the language stuff - // Set the set of files to check for dependency integrity. - std::set<cmStdString> checkSetLangs; - std::map<cmStdString,cmLocalUnixMakefileGenerator3::IntegrityCheckSet>& - checkSet = this->GetIntegrityCheckSet()[target.GetName()]; - for(std::map<cmStdString, - cmLocalUnixMakefileGenerator3::IntegrityCheckSet>::const_iterator - l = checkSet.begin(); l != checkSet.end(); ++l) - { - checkSetLangs.insert(l->first); - } - + ImplicitDependLanguageMap const& implicitLangs = + this->GetImplicitDepends(target); + // list the languages cmakefileStream - << "# The set of files whose dependency integrity should be checked:\n"; + << "# The set of languages for which implicit dependencies are needed:\n"; cmakefileStream << "SET(CMAKE_DEPENDS_LANGUAGES\n"; - for(std::set<cmStdString>::iterator - l = checkSetLangs.begin(); l != checkSetLangs.end(); ++l) + for(ImplicitDependLanguageMap::const_iterator + l = implicitLangs.begin(); l != implicitLangs.end(); ++l) { - cmakefileStream << " \"" << l->c_str() << "\"\n"; + cmakefileStream << " \"" << l->first.c_str() << "\"\n"; } cmakefileStream << " )\n"; - + // now list the files for each language - for(std::set<cmStdString>::iterator - l = checkSetLangs.begin(); l != checkSetLangs.end(); ++l) + cmakefileStream + << "# The set of files for implicit dependencies of each language:\n"; + for(ImplicitDependLanguageMap::const_iterator + l = implicitLangs.begin(); l != implicitLangs.end(); ++l) { cmakefileStream - << "SET(CMAKE_DEPENDS_CHECK_" << l->c_str() << "\n"; - // get the check set for this local gen and language - cmLocalUnixMakefileGenerator3::IntegrityCheckSet iCheckSet = - checkSet[*l]; - // for each file - for(cmLocalUnixMakefileGenerator3::IntegrityCheckSet::const_iterator - csIter = iCheckSet.begin(); - csIter != iCheckSet.end(); ++csIter) + << "SET(CMAKE_DEPENDS_CHECK_" << l->first.c_str() << "\n"; + ImplicitDependFileMap const& implicitPairs = l->second; + + // for each file pair + for(ImplicitDependFileMap::const_iterator pi = implicitPairs.begin(); + pi != implicitPairs.end(); ++pi) { - cmakefileStream << " \"" << (*csIter)->GetFullPath() << "\"\n"; - // Get the full path name of the object file. - std::string obj = this->Makefile->GetStartOutputDirectory(); - obj += "/"; - obj += this->GetObjectFileName(target, **csIter); - cmakefileStream << " \"" << - this->Convert(obj.c_str(), - cmLocalGenerator::FULL).c_str() << "\"\n"; + cmakefileStream << " \"" << pi->second << "\" "; + cmakefileStream << "\"" << pi->first << "\"\n"; } cmakefileStream << " )\n"; } @@ -1926,6 +1911,24 @@ cmLocalUnixMakefileGenerator3 return dir; } +//---------------------------------------------------------------------------- +cmLocalUnixMakefileGenerator3::ImplicitDependLanguageMap const& +cmLocalUnixMakefileGenerator3::GetImplicitDepends(cmTarget const& tgt) +{ + return this->ImplicitDepends[tgt.GetName()]; +} + +//---------------------------------------------------------------------------- +void +cmLocalUnixMakefileGenerator3::AddImplicitDepends(cmTarget const& tgt, + const char* lang, + const char* obj, + const char* src) +{ + this->ImplicitDepends[tgt.GetName()][lang][obj] = src; +} + +//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::CreateCDCommand(std::vector<std::string>& commands, const char *tgtDir, const char *retDir) |