ENH: fix static build of vtk with cmake by having custom targets chain depend information

This commit is contained in:
Bill Hoffman 2005-07-15 11:38:19 -04:00
parent 95e2b6070f
commit fe9714e2f0
2 changed files with 20 additions and 4 deletions

View File

@ -889,7 +889,7 @@ cmGlobalUnixMakefileGenerator3
if(emitted.insert(lib->first).second) if(emitted.insert(lib->first).second)
{ {
// Add this dependency. // Add this dependency.
this->AppendAnyGlobalDepend(depends, lib->first.c_str()); this->AppendAnyGlobalDepend(depends, lib->first.c_str(), emitted);
} }
} }
} }
@ -903,7 +903,7 @@ cmGlobalUnixMakefileGenerator3
if(emitted.insert(*util).second) if(emitted.insert(*util).second)
{ {
// Add this dependency. // Add this dependency.
this->AppendAnyGlobalDepend(depends, util->c_str()); this->AppendAnyGlobalDepend(depends, util->c_str(), emitted);
} }
} }
} }
@ -912,7 +912,8 @@ cmGlobalUnixMakefileGenerator3
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void void
cmGlobalUnixMakefileGenerator3 cmGlobalUnixMakefileGenerator3
::AppendAnyGlobalDepend(std::vector<std::string>& depends, const char* name) ::AppendAnyGlobalDepend(std::vector<std::string>& depends, const char* name,
std::set<cmStdString>& emitted)
{ {
cmTarget *result; cmTarget *result;
@ -930,6 +931,21 @@ cmGlobalUnixMakefileGenerator3
std::string tgtName = lg3->GetRelativeTargetDirectory(*result); std::string tgtName = lg3->GetRelativeTargetDirectory(*result);
tgtName += "/all"; tgtName += "/all";
depends.push_back(tgtName); depends.push_back(tgtName);
if(result->GetType() == cmTarget::STATIC_LIBRARY)
{
const cmTarget::LinkLibraries& tlibs = result->GetLinkLibraries();
for(cmTarget::LinkLibraries::const_iterator lib = tlibs.begin();
lib != tlibs.end(); ++lib)
{
// Don't emit the same library twice for this target.
if(emitted.insert(lib->first).second)
{
// Add this dependency.
this->AppendAnyGlobalDepend(depends, lib->first.c_str(),
emitted);
}
}
}
return; return;
} }
} }

View File

@ -108,7 +108,7 @@ protected:
void AppendGlobalTargetDepends(std::vector<std::string>& depends, void AppendGlobalTargetDepends(std::vector<std::string>& depends,
cmTarget& target); cmTarget& target);
void AppendAnyGlobalDepend(std::vector<std::string>& depends, void AppendAnyGlobalDepend(std::vector<std::string>& depends,
const char* name); const char* name, std::set<cmStdString>& emitted);
// does this generator need a requires step for any of its targets // does this generator need a requires step for any of its targets
bool NeedRequiresStep(cmLocalUnixMakefileGenerator3 *lg); bool NeedRequiresStep(cmLocalUnixMakefileGenerator3 *lg);