Skip to content

Commit f99ec0d

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

File tree

1 file changed

+94
-1
lines changed

1 file changed

+94
-1
lines changed

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

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

0 commit comments

Comments
 (0)