aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/bin/rule.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2024-11-18 11:38:44 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2024-11-18 11:38:44 +0200
commitbbf670d03ee587b0794f77a39db801bad6459ca5 (patch)
treef7e144fc5a1ca83c4ee6d7a1f21039c657ef3718 /libbuild2/bin/rule.hxx
parent462afa615e9f2fdff12a0ee7a36eb431ee07e141 (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.hxx21
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.
+ };
}
}