diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2021-09-13 17:00:08 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2021-09-14 09:48:59 +0200 |
commit | d552de5d028e1dfb108f343810604d0dfd74c2e6 (patch) | |
tree | 3ed1a320b0c3788001a1c61ff468f3392630f789 /libbuild2/install/init.cxx | |
parent | b9ea935ac2e31144db8ebdc2a98ebfc3f94357cc (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.cxx | 31 |
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. |