diff options
| author | Kyle Edwards <kyle.edwards@kitware.com> | 2020-08-13 18:16:18 (GMT) |
|---|---|---|
| committer | Kitware Robot <kwrobot@kitware.com> | 2020-08-13 18:16:25 (GMT) |
| commit | 8b5aa9051b0df7bead47deb25d8cfa33679f747d (patch) | |
| tree | 39d8bee86aec32930c93ccfc725414261fcc84d8 /Source/cmComputeTargetDepends.h | |
| parent | 5748e76639822bf330986b0b77da6fd70f3de301 (diff) | |
| parent | 2e42651dff43c4e962f03fc24281cbf446880ded (diff) | |
| download | CMake-8b5aa9051b0df7bead47deb25d8cfa33679f747d.zip CMake-8b5aa9051b0df7bead47deb25d8cfa33679f747d.tar.gz CMake-8b5aa9051b0df7bead47deb25d8cfa33679f747d.tar.bz2 | |
Merge topic 'optimize-static-library-deps'
2e42651dff Add option to optimize link dependencies for static libraries
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5103
Diffstat (limited to 'Source/cmComputeTargetDepends.h')
| -rw-r--r-- | Source/cmComputeTargetDepends.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/Source/cmComputeTargetDepends.h b/Source/cmComputeTargetDepends.h index e0d625f..277521d 100644 --- a/Source/cmComputeTargetDepends.h +++ b/Source/cmComputeTargetDepends.h @@ -42,6 +42,13 @@ public: cmTargetDependSet& deps); private: + struct TargetSideEffects + { + std::set<cmGeneratorTarget const*> CustomCommandSideEffects; + std::map<std::string, std::set<cmGeneratorTarget const*>> + LanguageSideEffects; + }; + void CollectTargets(); void CollectDepends(); void CollectTargetDepends(int depender_index); @@ -50,6 +57,12 @@ private: void AddTargetDepend(int depender_index, cmGeneratorTarget const* dependee, cmListFileBacktrace const& dependee_backtrace, bool linking, bool cross); + void CollectSideEffects(); + void CollectSideEffectsForTarget(std::set<int>& visited, int depender_index); + void ComputeIntermediateGraph(); + void OptimizeLinkDependencies(cmGeneratorTarget const* gt, + cmGraphEdgeList& outputEdges, + cmGraphEdgeList const& inputEdges); bool ComputeFinalDepends(cmComputeComponentGraph const& ccg); void AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, const std::string& config, @@ -74,11 +87,15 @@ private: using EdgeList = cmGraphEdgeList; using Graph = cmGraphAdjacencyList; Graph InitialGraph; + Graph IntermediateGraph; Graph FinalGraph; + std::vector<TargetSideEffects> SideEffects; void DisplayGraph(Graph const& graph, const std::string& name); + void DisplaySideEffects(); // Deal with connected components. - void DisplayComponents(cmComputeComponentGraph const& ccg); + void DisplayComponents(cmComputeComponentGraph const& ccg, + const std::string& name); bool CheckComponents(cmComputeComponentGraph const& ccg); void ComplainAboutBadComponent(cmComputeComponentGraph const& ccg, int c, bool strong = false); |
