summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmMakefileTargetGenerator.cxx31
1 files changed, 31 insertions, 0 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index d4c61cc..e780219 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -792,6 +792,37 @@ void cmMakefileTargetGenerator::WriteTargetDependRules()
*this->InfoFileStream << " )\n\n";
}
+ // Store list of targets linked directly or transitively.
+ {
+ *this->InfoFileStream
+ << "\n"
+ << "# Targets to which this target links.\n"
+ << "SET(CMAKE_TARGET_LINKED_INFO_FILES\n";
+ cmGlobalGenerator* gg = this->GlobalGenerator;
+ std::set<cmTarget const*> emitted;
+ cmTarget::LinkLibraryVectorType const& libs =
+ this->Target->GetLinkLibraries();
+ for(cmTarget::LinkLibraryVectorType::const_iterator j = libs.begin();
+ j != libs.end(); ++j)
+ {
+ if(cmTarget const* linkee = gg->FindTarget(0, j->first.c_str(), false))
+ {
+ if(emitted.insert(linkee).second)
+ {
+ cmMakefile* mf = linkee->GetMakefile();
+ cmLocalGenerator* lg = mf->GetLocalGenerator();
+ std::string di = mf->GetStartOutputDirectory();
+ di += "/";
+ di += lg->GetTargetDirectory(*linkee);
+ di += "/DependInfo.cmake";
+ *this->InfoFileStream << " \"" << di << "\"\n";
+ }
+ }
+ }
+ *this->InfoFileStream
+ << " )\n";
+ }
+
// and now write the rule to use it
std::vector<std::string> depends;
std::vector<std::string> commands;