diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2005-07-15 15:38:19 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2005-07-15 15:38:19 (GMT) |
commit | fe9714e2f0feebc21e485676fcb779b610e59451 (patch) | |
tree | 969ef57f7db2af78af7eed4fa9bc79903f89cedb | |
parent | 95e2b6070f6e5fed061071b7a00a2cdd706cdf50 (diff) | |
download | CMake-fe9714e2f0feebc21e485676fcb779b610e59451.zip CMake-fe9714e2f0feebc21e485676fcb779b610e59451.tar.gz CMake-fe9714e2f0feebc21e485676fcb779b610e59451.tar.bz2 |
ENH: fix static build of vtk with cmake by having custom targets chain depend information
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator3.cxx | 22 | ||||
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator3.h | 2 |
2 files changed, 20 insertions, 4 deletions
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 848ffa5..2627afd 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -889,7 +889,7 @@ cmGlobalUnixMakefileGenerator3 if(emitted.insert(lib->first).second) { // 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) { // Add this dependency. - this->AppendAnyGlobalDepend(depends, util->c_str()); + this->AppendAnyGlobalDepend(depends, util->c_str(), emitted); } } } @@ -912,7 +912,8 @@ cmGlobalUnixMakefileGenerator3 //---------------------------------------------------------------------------- void 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; @@ -930,6 +931,21 @@ cmGlobalUnixMakefileGenerator3 std::string tgtName = lg3->GetRelativeTargetDirectory(*result); tgtName += "/all"; 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; } } diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 6fc4f5f..a17c389 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -108,7 +108,7 @@ protected: void AppendGlobalTargetDepends(std::vector<std::string>& depends, cmTarget& target); 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 bool NeedRequiresStep(cmLocalUnixMakefileGenerator3 *lg); |