aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/markdown/Builtin-options.md4
-rw-r--r--docs/markdown/snippets/dir_options_outside_prefix.md12
-rw-r--r--docs/yaml/functions/_build_target_base.yaml8
-rw-r--r--docs/yaml/functions/get_option.yaml18
4 files changed, 27 insertions, 15 deletions
diff --git a/docs/markdown/Builtin-options.md b/docs/markdown/Builtin-options.md
index 613b8b8..db3c3e8 100644
--- a/docs/markdown/Builtin-options.md
+++ b/docs/markdown/Builtin-options.md
@@ -23,13 +23,15 @@ For legacy reasons `--warnlevel` is the cli argument for the
They can also be edited after setup using `meson configure
-Doption=value`.
-Installation options are all relative to the prefix, except:
+Installation options are usually relative to the prefix but it should
+not be relied on, since they can be absolute paths in the following cases:
* When the prefix is `/usr`: `sysconfdir` defaults to `/etc`,
`localstatedir` defaults to `/var`, and `sharedstatedir` defaults to
`/var/lib`
* When the prefix is `/usr/local`: `localstatedir` defaults
to `/var/local`, and `sharedstatedir` defaults to `/var/local/lib`
+* When an absolute path outside of prefix is provided by the user/distributor.
### Directories
diff --git a/docs/markdown/snippets/dir_options_outside_prefix.md b/docs/markdown/snippets/dir_options_outside_prefix.md
new file mode 100644
index 0000000..ceb5e50
--- /dev/null
+++ b/docs/markdown/snippets/dir_options_outside_prefix.md
@@ -0,0 +1,12 @@
+## All directory options now support paths outside of prefix
+
+Previously, Meson only allowed most directory options to be relative to prefix.
+This restriction has been now lifted, bringing us in line with Autotools and
+CMake. It is also useful for platforms like Nix, which install projects into
+multiple independent prefixes.
+
+As a consequence, `get_option` might return absolute paths for any
+directory option, if a directory outside of prefix is passed. This
+is technically a backwards incompatible change but its effect
+should be minimal, thanks to widespread use of `join_paths`/
+`/` operator and pkg-config generator module.
diff --git a/docs/yaml/functions/_build_target_base.yaml b/docs/yaml/functions/_build_target_base.yaml
index 62424b6..68df5d8 100644
--- a/docs/yaml/functions/_build_target_base.yaml
+++ b/docs/yaml/functions/_build_target_base.yaml
@@ -161,10 +161,10 @@ kwargs:
install_dir:
type: str
description: |
- override install directory for this file. The value is
- relative to the `prefix` specified. F.ex, if you want to install
- plugins into a subdir, you'd use something like this: `install_dir :
- get_option('libdir') / 'projectname-1.0'`.
+ override install directory for this file. If the value is a relative path,
+ it will be considered relative the `prefix` option.
+ For example, if you want to install plugins into a subdir, you'd use
+ something like this: `install_dir : get_option('libdir') / 'projectname-1.0'`.
install_mode:
type: list[str | int]
diff --git a/docs/yaml/functions/get_option.yaml b/docs/yaml/functions/get_option.yaml
index 0bf0042..7f7982e 100644
--- a/docs/yaml/functions/get_option.yaml
+++ b/docs/yaml/functions/get_option.yaml
@@ -5,16 +5,14 @@ description: |
specified in the positional argument.
Note that the value returned for built-in options that end in `dir`
- such as `bindir` and `libdir` is always a path relative to (and
- inside) the `prefix`.
-
- The only exceptions are: `sysconfdir`, `localstatedir`, and
- `sharedstatedir` which will return the value passed during
- configuration as-is, which may be absolute, or relative to `prefix`.
- [`install_dir` arguments](Installing.md) handles that as expected, but
- if you need the absolute path to one of these e.g. to use in a define
- etc., you should use `get_option('prefix') /
- get_option('localstatedir')`
+ such as `bindir` and `libdir` is usually a path relative to (and
+ inside) the `prefix` but you should not rely on that, as it can also
+ be an absolute path [in some cases](Builtin-options.md#Universal options).
+ [`install_dir` arguments](Installing.md) handle that as expected
+ but if you need an absolute path, e.g. to use in a define etc.,
+ you should use the path concatenation operator like this:
+ `get_option('prefix') / get_option('localstatedir')`.
+ Never manually join paths as if they were strings.
For options of type `feature` a
[[@feature]] option object