Add option to optimize link dependencies for static libraries

Add an `OPTIMIZE_DEPENDENCIES` target property and supporting
`CMAKE_OPTIMIZE_DEPENDENCIES` variable to optionally enable pruning and
flattening of outgoing dependencies from static libraries.  Since they
do not actually link, they only depend on side effects of their
dependencies.  Therefore we can drop dependencies that contribute no
side effects.
This commit is contained in:
Kyle Edwards
2020-07-29 14:19:56 -04:00
committed by Brad King
parent 0cd3b5d0ca
commit 2e42651dff
47 changed files with 560 additions and 9 deletions

View File

@@ -55,6 +55,12 @@ public:
std::vector<cmCustomCommand> const& GetPreLinkCommands() const;
std::vector<cmCustomCommand> const& GetPostBuildCommands() const;
void AppendCustomCommandSideEffects(
std::set<cmGeneratorTarget const*>& sideEffects) const;
void AppendLanguageSideEffects(
std::map<std::string, std::set<cmGeneratorTarget const*>>& sideEffects)
const;
#define DECLARE_TARGET_POLICY(POLICY) \
cmPolicies::PolicyStatus GetPolicyStatus##POLICY() const \
{ \