Skip to content

Commit ecc4a45

Browse files
committed
DOC: draft for meson-args.rst
This is a draft for the (how to) meson-args documentation
1 parent 722cef9 commit ecc4a45

File tree

1 file changed

+93
-1
lines changed

1 file changed

+93
-1
lines changed

docs/how-to-guides/meson-args.rst

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
Passing arguments to Meson_
99
***************************
1010

11-
1211
.. todo::
1312

1413
- Explain how you can add extra Meson arguments via ``pyproject.toml``
@@ -17,5 +16,98 @@ Passing arguments to Meson_
1716
- Mention the order in which Meson arguments are added, and how it affect
1817
Meson
1918

19+
Advanced meson options can be accessed by specifying extra arguments to the individual meson comands:
20+
21+
- meson dist: https://mesonbuild.com/Commands.html#dist
22+
- meson setup: https://mesonbuild.com/Commands.html#setup
23+
- meson compile: https://mesonbuild.com/Commands.html#compile
24+
- meson install: https://mesonbuild.com/Commands.html#install
25+
26+
These arguments can be added to the project via the project's ``pyproject.toml``:
27+
28+
.. code-block:: console
29+
30+
[tool.meson-python.args]
31+
dist = ['dist-argument_1','dist-argument_2', '...']]
32+
setup = ['setup-argument_1','setup-argument_2', '...']]
33+
compile = ['compile-argument_1','compile-argument_2', '...']]
34+
install = ['install-argument_1','install-argument_2', '...']]
35+
36+
.. admonition:: All four categories must exist
37+
:class: attention
38+
39+
Currently all four option categories (dist, setup, compile and install) must be present in the [tool.meson-python.args] section, even if no arguments are supplied (empty list: [])
40+
41+
Or using the build config settings:
42+
43+
.. code-block:: console
44+
45+
# with pypa/build
46+
python -m build -Cdist-args="args" \
47+
-Csetup-args="args" \
48+
-Ccompile-args="args" \
49+
-Cinstall-args="args" .
50+
51+
# with pip
52+
python -m pip --config-settings=dist-args="args" \
53+
--config-settings=setup-args="args" \
54+
--config-settings=compile-args="args" \
55+
--config-settings=install-args="args" .
56+
57+
58+
Example 1: set the default libraries to "static"
59+
================================================
60+
61+
Set the target default libraries to "static" in the pyproject.toml
62+
63+
.. code-block:: console
64+
65+
[tool.meson-python.args]
66+
dist = []
67+
setup = ["--default-library=static"]
68+
compile = []
69+
install = []
70+
71+
Or using build config settings:
72+
73+
.. code-block:: console
74+
75+
# with pypa/build
76+
python -m build -Csetup-args="--default-library=static" .
77+
78+
# with pip
79+
python -m pip --config-settings=setup-args="--default-library=static" .
80+
81+
82+
Example 2: use meson install_tags for selective installs
83+
========================================================
84+
85+
It is now (meson-python >= 0.13) possible to use meson install_tags to select which targets are installed into the binary wheels.
86+
87+
.. admonition:: Meson installation tags
88+
:class: seealso
89+
90+
Each meson target has a default install_tag (e.g. 'runtime' for shared libraries and 'devel' for headers.). Using "meson install --tags=tag1,tag2,..." will cause meson to only install the targets tagges with any of the specified tags. The default tag of each target can be overwritten using the target's "install_tag" option. Ffor more information refer mesons documentation in installation-tags: https://mesonbuild.com/Installing.html#installation-tags
91+
92+
The following code (in pyproject.toml) causes meson-python to only install targets tagged with 'runtime' or 'python-runtime') into the binary wheel (ignoring e.g. c++ headers):
93+
94+
.. code-block:: console
95+
96+
[tool.meson-python.args]
97+
dist = []
98+
setup = []
99+
compile = []
100+
install = ['--tags=runtime,python-runtime']
101+
102+
Or using build config settings:
103+
104+
.. code-block:: console
105+
106+
# with pypa/build
107+
python -m build -install-args="--tags=runtime,python-runtime" .
108+
109+
# with pip
110+
python -m pip --config-settings=install-args="--tags=runtime,python-runtime" .
111+
20112
21113
.. _Meson: https://github.com/mesonbuild/meson

0 commit comments

Comments
 (0)