aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/install/rule.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-10-07 16:02:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-10-07 16:02:38 +0200
commitf745d8ba2b7d6fd6a725af5c58cd5f057fca8191 (patch)
tree7f702750799e463a6bef132df89dc432ebd3eb59 /libbuild2/install/rule.cxx
parent7ee735c0a99b29979594920262db13b4939b3c2c (diff)
Allow forcing installation of exe{} prerequisites of file targets
This can be achieved with prerequisite-specific install=true, for example: exe{foo}: exe{bar}: install = true # foo runs bar
Diffstat (limited to 'libbuild2/install/rule.cxx')
-rw-r--r--libbuild2/install/rule.cxx9
1 files changed, 8 insertions, 1 deletions
diff --git a/libbuild2/install/rule.cxx b/libbuild2/install/rule.cxx
index b4b4a01..2d81067 100644
--- a/libbuild2/install/rule.cxx
+++ b/libbuild2/install/rule.cxx
@@ -289,7 +289,14 @@ namespace build2
action, const target& t, const prerequisite& p) const
{
if (p.is_a<exe> ())
- return nullptr;
+ {
+ // Feels like one day this should be unified with include (see
+ // context::var_include).
+ //
+ if (p.vars.empty () ||
+ cast_empty<path> (p.vars["install"]).string () != "true")
+ return nullptr;
+ }
const target& pt (search (t, p));
return is == nullptr || pt.in (*is) ? &pt : nullptr;