10f35ff05d
Meson now comes with its own set of commands for building, testing, installing etc., that by default wrap around Ninja. The reason to prefer using the Meson commands is that they take additional options (e.g. setting custom timeouts for tests — my motivation for this change). Here, I've modified the Meson setup hook so that Meson's test and install commands will be used instead of Ninja's when Meson's configurePhase is used. This restriction is to avoid starting to run Meson directly when dealing with custom build systems that wrap around Meson, like QEMU's. We don't use meson's compile command, as it just runs ninja, and that's handled fine by the existing Ninja setup hook. Naturally the Meson commands don't support entirely the same set of options that the Ninja ones did, but I checked through Nixpkgs to find any packages using Meson that used any options that wouldn't be picked up by this new system. I only found one, and it was just setting checkTarget = "test", which is the default value for Ninja and has no Meson equivalent (because we directly tell Meson to run the tests rather than going through a generic job system like Ninja). Link: https://github.com/NixOS/nixpkgs/issues/113829 Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
46 lines
1.6 KiB
Markdown
46 lines
1.6 KiB
Markdown
# Meson {#meson}
|
||
|
||
Overrides the configure, check, and install phases to run `meson setup`, `meson test`, and `meson install`.
|
||
|
||
Meson is a meta-build system so you will need a secondary build system to run the generated build files in build phase. In Nixpkgs context, you will want to accompany Meson with ninja, which provides a [setup hook](#ninja) registering a ninja-based build phase.
|
||
|
||
By default, `enableParallelBuilding` is enabled as Meson supports parallel building almost everywhere.
|
||
|
||
## Variables controlling Meson {#variables-controlling-meson}
|
||
|
||
### `mesonFlags` {#mesonflags}
|
||
|
||
Controls the flags passed to `meson setup`.
|
||
|
||
##### `mesonCheckFlags` {#mesoncheckflags}
|
||
|
||
Controls the flags passed to `meson test`.
|
||
|
||
##### `mesonInstallFlags` {#mesoninstallflags}
|
||
|
||
Controls the flags passed to `meson install`.
|
||
|
||
### `mesonBuildType` {#mesonbuildtype}
|
||
|
||
Which [`--buildtype`](https://mesonbuild.com/Builtin-options.html#core-options) to pass to `meson setup`. We default to `plain`.
|
||
|
||
### `mesonAutoFeatures` {#mesonautofeatures}
|
||
|
||
What value to set [`-Dauto_features=`](https://mesonbuild.com/Builtin-options.html#core-options) to. We default to `enabled`.
|
||
|
||
### `mesonWrapMode` {#mesonwrapmode}
|
||
|
||
What value to set [`-Dwrap_mode=`](https://mesonbuild.com/Builtin-options.html#core-options) to. We default to `nodownload` as we disallow network access.
|
||
|
||
### `dontUseMesonConfigure` {#dontusemesonconfigure}
|
||
|
||
Disables using Meson’s `configurePhase`.
|
||
|
||
##### `dontUseMesonCheck` {#dontusemesoncheck}
|
||
|
||
Disables using Meson’s `checkPhase`.
|
||
|
||
##### `dontUseMesonInstall` {#dontusemesoninstall}
|
||
|
||
Disables using Meson’s `installPhase`.
|