diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2024-11-18 11:38:44 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2024-11-18 11:38:44 +0200 |
commit | bbf670d03ee587b0794f77a39db801bad6459ca5 (patch) | |
tree | f7e144fc5a1ca83c4ee6d7a1f21039c657ef3718 /libbuild2/bin/rule.hxx | |
parent | 462afa615e9f2fdff12a0ee7a36eb431ee07e141 (diff) |
Only install runtime part of static library prerequisites of share libraries (GH issue #448)
Diffstat (limited to 'libbuild2/bin/rule.hxx')
-rw-r--r-- | libbuild2/bin/rule.hxx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libbuild2/bin/rule.hxx b/libbuild2/bin/rule.hxx index 9dd1d14..74f4301 100644 --- a/libbuild2/bin/rule.hxx +++ b/libbuild2/bin/rule.hxx @@ -10,6 +10,7 @@ #include <libbuild2/rule.hxx> #include <libbuild2/dist/rule.hxx> +#include <libbuild2/install/rule.hxx> #include <libbuild2/bin/export.hxx> @@ -78,6 +79,26 @@ namespace build2 static target_state perform (action, const target&); }; + + // Install rule for lib{} group. + // + // The only difference compared to the standard install::group_rule is + // that it ignores the lib{} prerequisites, instead expecting the correct + // things to be installed via the liba{}/libs{} members. This is important + // due to the presence of match options (see lib{} target for details). + // + class LIBBUILD2_BIN_SYMEXPORT install_lib_rule: public install::group_rule + { + public: + install_lib_rule () {} + + virtual pair<const target*, uint64_t> + filter (const scope*, + action, const target&, const prerequisite&, + match_extra&) const override; + + using install::group_rule::filter; // "Unhide" to make Clang happy. + }; } } |