Skip to content

Commit 5e7f0f5

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

File tree

1 file changed

+99
-1
lines changed

1 file changed

+99
-1
lines changed

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

Lines changed: 99 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,104 @@ 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::
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+
Using the build config settings (with pypa/build):
42+
43+
.. code-block:: console
44+
45+
$ python -m build -Cdist-args="args" \
46+
-Csetup-args="args" \
47+
-Ccompile-args="args" \
48+
-Cinstall-args="args" .
49+
50+
Or using pip:
51+
52+
.. code-block:: console
53+
54+
$ python -m pip --config-settings=dist-args="args" \
55+
--config-settings=setup-args="args" \
56+
--config-settings=compile-args="args" \
57+
--config-settings=install-args="args" .
58+
59+
60+
Example 1: set the default libraries to *static*
61+
================================================
62+
63+
Set the target default libraries to "static" in the pyproject.toml
64+
65+
.. code-block:: console
66+
67+
[tool.meson-python.args]
68+
dist = []
69+
setup = ['--default-library=static']
70+
compile = []
71+
install = []
72+
73+
Using the build config settings (with pypa/build):
74+
75+
.. code-block:: console
76+
77+
python -m build -Csetup-args="--default-library=static" .
78+
79+
Or using pip:
80+
81+
.. code-block:: console
82+
83+
python -m pip --config-settings=setup-args="--default-library=static" .
84+
85+
86+
Example 2: use meson install_tags for selective installs
87+
========================================================
88+
89+
It is now (``meson-python`` >= 0.13) possible to use meson install_tags to select which targets are installed into the binary wheels.
90+
91+
.. admonition:: Meson installation tags
92+
:class: seealso
93+
94+
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. For more information refer mesons documentation in installation-tags: https://mesonbuild.com/Installing.html#installation-tags
95+
96+
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):
97+
98+
.. code-block:: console
99+
100+
[tool.meson-python.args]
101+
dist = []
102+
setup = []
103+
compile = []
104+
install = ['--tags=runtime,python-runtime']
105+
106+
Using the build config settings (with pypa/build):
107+
108+
.. code-block:: console
109+
110+
$ python -m build -install-args="--tags=runtime,python-runtime" .
111+
112+
Or using pip:
113+
114+
.. code-block:: console
115+
116+
$ python -m pip --config-settings=install-args="--tags=runtime,python-runtime" .
117+
20118
21119
.. _Meson: https://github.com/mesonbuild/meson

0 commit comments

Comments
 (0)