aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/install/init.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-09-13 17:00:08 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-09-14 09:48:59 +0200
commitd552de5d028e1dfb108f343810604d0dfd74c2e6 (patch)
tree3ed1a320b0c3788001a1c61ff468f3392630f789 /libbuild2/install/init.cxx
parentb9ea935ac2e31144db8ebdc2a98ebfc3f94357cc (diff)
Consistently install prerequisites from any scope by default
It is also now possible to adjust this behavior with global config.install.scope override. Valid values for this variable are: project -- only from project strong -- from strong amalgamation weak -- from weak amalgamation global -- from all projects (default)
Diffstat (limited to 'libbuild2/install/init.cxx')
-rw-r--r--libbuild2/install/init.cxx31
1 files changed, 31 insertions, 0 deletions
diff --git a/libbuild2/install/init.cxx b/libbuild2/install/init.cxx
index 677ee07..5b5d1e2 100644
--- a/libbuild2/install/init.cxx
+++ b/libbuild2/install/init.cxx
@@ -392,6 +392,37 @@ namespace build2
// Configuration.
//
+
+ // config.install.scope
+ //
+ // We do not install prerequisites (for example, shared libraries) of
+ // targets (for example, executables) that belong to projects outside of
+ // this scope. Valid values are:
+ //
+ // project -- project scope
+ // strong -- strong amalgamation
+ // weak -- weak amalgamation
+ // global -- all projects (default)
+ //
+ // Note: can only be specified as a global override.
+ //
+ {
+ auto& v (vp.insert<string> ("config.install.scope"));
+
+ // If specified, verify it is a global override.
+ //
+ if (lookup l = rs[v])
+ {
+ if (!l.belongs (rs.global_scope ()))
+ fail << "config.install.scope must be a global override" <<
+ info << "specify !config.install.scope=...";
+ }
+
+ config::unsave_variable (rs, v);
+ }
+
+ // Installation directories.
+ //
// Note that we don't use any defaults for root -- the location
// must be explicitly specified or the installer will complain
// if and when we try to install.