Capitalize "Meson" consistently as it is a proper name. [skip ci]

pull/8284/head
Jussi Pakkanen 4 years ago
parent 4bde7f31ae
commit 474f4813c4
  1. 2
      docs/markdown/Builtin-options.md
  2. 16
      docs/markdown/CMake-module.md
  3. 18
      docs/markdown/Commands.md
  4. 2
      docs/markdown/Compiler-properties.md
  5. 2
      docs/markdown/Configuration.md
  6. 2
      docs/markdown/Configuring-a-build-directory.md
  7. 2
      docs/markdown/Continuous-Integration.md
  8. 8
      docs/markdown/Contributing.md
  9. 2
      docs/markdown/Creating-Linux-binaries.md
  10. 2
      docs/markdown/Creating-releases.md
  11. 4
      docs/markdown/Cross-compilation.md
  12. 20
      docs/markdown/Dependencies.md
  13. 2
      docs/markdown/Dlang-module.md
  14. 2
      docs/markdown/External-Project-module.md
  15. 2
      docs/markdown/FAQ.md
  16. 4
      docs/markdown/Generating-sources.md
  17. 4
      docs/markdown/Getting-meson.md
  18. 16
      docs/markdown/IDE-integration.md
  19. 2
      docs/markdown/Installing.md
  20. 2
      docs/markdown/Keyval-module.md
  21. 4
      docs/markdown/Localisation.md
  22. 16
      docs/markdown/Machine-files.md
  23. 2
      docs/markdown/MesonCI.md
  24. 4
      docs/markdown/Pkgconfig-module.md
  25. 4
      docs/markdown/Porting-from-autotools.md
  26. 2
      docs/markdown/Precompiled-headers.md
  27. 8
      docs/markdown/Python-module.md
  28. 12
      docs/markdown/Reference-manual.md
  29. 8
      docs/markdown/Reference-tables.md
  30. 6
      docs/markdown/Release-notes-for-0.40.0.md
  31. 2
      docs/markdown/Release-notes-for-0.44.0.md
  32. 6
      docs/markdown/Release-notes-for-0.46.0.md
  33. 4
      docs/markdown/Release-notes-for-0.47.0.md
  34. 14
      docs/markdown/Release-notes-for-0.50.0.md
  35. 8
      docs/markdown/Release-notes-for-0.51.0.md
  36. 2
      docs/markdown/Release-notes-for-0.52.0.md
  37. 8
      docs/markdown/Release-notes-for-0.53.0.md
  38. 14
      docs/markdown/Release-notes-for-0.54.0.md
  39. 18
      docs/markdown/Release-notes-for-0.55.0.md
  40. 6
      docs/markdown/Release-notes-for-0.56.0.md
  41. 12
      docs/markdown/Rewriter.md
  42. 10
      docs/markdown/Running-Meson.md
  43. 8
      docs/markdown/Rust-module.md
  44. 26
      docs/markdown/SourceSet-module.md
  45. 6
      docs/markdown/Subprojects.md
  46. 8
      docs/markdown/Unit-tests.md
  47. 2
      docs/markdown/Users.md
  48. 8
      docs/markdown/Using-with-Visual-Studio.md
  49. 2
      docs/markdown/Wrap-dependency-system-manual.md
  50. 2
      docs/markdown/howtox.md
  51. 2
      docs/markdown/snippets/unstable-rust-module.md

@ -54,7 +54,7 @@ should always override this value.
`libdir` is automatically detected based on your platform, it should `libdir` is automatically detected based on your platform, it should
be correct when doing "native" (build machine == host machine) be correct when doing "native" (build machine == host machine)
compilation. For cross compiles meson will try to guess the correct compilation. For cross compiles Meson will try to guess the correct
libdir, but it may not be accurate, especially on Linux where libdir, but it may not be accurate, especially on Linux where
different distributions have different defaults. Using a [cross different distributions have different defaults. Using a [cross
file](Cross-compilation.md#defining-the-environment), particularly the file](Cross-compilation.md#defining-the-environment), particularly the

@ -5,7 +5,7 @@
This module provides helper tools for generating cmake package files. This module provides helper tools for generating cmake package files.
It also supports the usage of CMake based subprojects, similar to It also supports the usage of CMake based subprojects, similar to
the normal [meson subprojects](Subprojects.md). the normal [Meson subprojects](Subprojects.md).
## Usage ## Usage
@ -22,7 +22,7 @@ lead to unexpected issues in rare cases.
## CMake subprojects ## CMake subprojects
Using CMake subprojects is similar to using the "normal" meson Using CMake subprojects is similar to using the "normal" Meson
subprojects. They also have to be located in the `subprojects` subprojects. They also have to be located in the `subprojects`
directory. directory.
@ -44,9 +44,9 @@ cm_lib = sub_proj.dependency('cm_lib')
executable(exe1, ['sources'], dependencies: [cm_lib]) executable(exe1, ['sources'], dependencies: [cm_lib])
``` ```
The `subproject` method is almost identical to the normal meson The `subproject` method is almost identical to the normal Meson
`subproject` function. The only difference is that a CMake project `subproject` function. The only difference is that a CMake project
instead of a meson project is configured. instead of a Meson project is configured.
The returned `sub_proj` supports the same options as a "normal" The returned `sub_proj` supports the same options as a "normal"
subproject. Meson automatically detects CMake build targets, which can subproject. Meson automatically detects CMake build targets, which can
@ -54,7 +54,7 @@ be accessed with the methods listed [below](#subproject-object).
It is usually enough to just use the dependency object returned by the It is usually enough to just use the dependency object returned by the
`dependency()` method in the build targets. This is almost identical `dependency()` method in the build targets. This is almost identical
to using `declare_dependency()` object from a normal meson subproject. to using `declare_dependency()` object from a normal Meson subproject.
It is also possible to use executables defined in the CMake project as code It is also possible to use executables defined in the CMake project as code
generators with the `target()` method: generators with the `target()` method:
@ -125,7 +125,7 @@ configured and must be passed to the `subproject` method via the
`options` key. Altering the configuration object won't have any effect `options` key. Altering the configuration object won't have any effect
on previous `cmake.subproject` calls. on previous `cmake.subproject` calls.
In earlier meson versions CMake command-line parameters could be set In earlier Meson versions CMake command-line parameters could be set
with the `cmake_options` kwarg. However, this feature is deprecated with the `cmake_options` kwarg. However, this feature is deprecated
since 0.55.0 and only kept for compatibility. It will not work since 0.55.0 and only kept for compatibility. It will not work
together with the `options` kwarg. together with the `options` kwarg.
@ -139,7 +139,7 @@ and supports the following methods:
`include_type` kwarg *(new in 0.56.0)* controls the include type of the `include_type` kwarg *(new in 0.56.0)* controls the include type of the
returned dependency object similar to the same kwarg in the returned dependency object similar to the same kwarg in the
[`dependency()`](Reference-manual.md#dependency) function. [`dependency()`](Reference-manual.md#dependency) function.
- `include_directories(target)` returns a meson `include_directories()` - `include_directories(target)` returns a Meson `include_directories()`
object for the specified target. Using this function is not necessary object for the specified target. Using this function is not necessary
if the dependency object is used. if the dependency object is used.
- `target(target)` returns the raw build target. - `target(target)` returns the raw build target.
@ -149,7 +149,7 @@ and supports the following methods:
the subproject. Usually `dependency()` or `target()` should be the subproject. Usually `dependency()` or `target()` should be
preferred to extract build targets. preferred to extract build targets.
- `found` returns true if the subproject is available, otherwise false - `found` returns true if the subproject is available, otherwise false
*new in meson 0.53.2* *new in Meson 0.53.2*
### `cmake options` object ### `cmake options` object

@ -48,7 +48,7 @@ meson configure builddir -Doption=new_value
{{ compile_usage.inc }} {{ compile_usage.inc }}
Builds a default or a specified target of a configured meson project. Builds a default or a specified target of a configured Meson project.
{{ compile_arguments.inc }} {{ compile_arguments.inc }}
@ -154,7 +154,7 @@ meson init -C sourcedir
{{ introspect_usage.inc }} {{ introspect_usage.inc }}
Displays information about a configured meson project. Displays information about a configured Meson project.
{{ introspect_arguments.inc }} {{ introspect_arguments.inc }}
@ -196,23 +196,23 @@ DESTDIR=/path/to/staging/area meson install -C builddir
{{ rewrite_usage.inc }} {{ rewrite_usage.inc }}
Modifies the meson project. Modifies the Meson project.
{{ rewrite_arguments.inc }} {{ rewrite_arguments.inc }}
See [the meson file rewriter documentation](Rewriter.md) for more info. See [the Meson file rewriter documentation](Rewriter.md) for more info.
### setup ### setup
{{ setup_usage.inc }} {{ setup_usage.inc }}
Configures a build directory for the meson project. Configures a build directory for the Meson project.
This is the default meson command (invoked if there was no COMMAND supplied). This is the default Meson command (invoked if there was no COMMAND supplied).
{{ setup_arguments.inc }} {{ setup_arguments.inc }}
See [meson introduction See [Meson introduction
page](Running-Meson.md#configuring-the-build-directory) for more info. page](Running-Meson.md#configuring-the-build-directory) for more info.
#### Examples: #### Examples:
@ -228,7 +228,7 @@ meson setup builddir
{{ subprojects_usage.inc }} {{ subprojects_usage.inc }}
Manages subprojects of the meson project. Manages subprojects of the Meson project.
{{ subprojects_arguments.inc }} {{ subprojects_arguments.inc }}
@ -236,7 +236,7 @@ Manages subprojects of the meson project.
{{ test_usage.inc }} {{ test_usage.inc }}
Run tests for the configure meson project. Run tests for the configure Meson project.
{{ test_arguments.inc }} {{ test_arguments.inc }}

@ -161,7 +161,7 @@ specified its contents is put at the top of the source file. This
argument is typically used for setting `#include` directives in argument is typically used for setting `#include` directives in
configuration files. configuration files.
In older versions (<= 0.30) meson would error out if the size could In older versions (<= 0.30) Meson would error out if the size could
not be determined. Since version 0.31 it returns -1 if the size could not be determined. Since version 0.31 it returns -1 if the size could
not be determined. not be determined.

@ -115,7 +115,7 @@ Will produce:
## Dealing with file encodings ## Dealing with file encodings
The default meson file encoding to configure files is utf-8. If you The default Meson file encoding to configure files is utf-8. If you
need to configure a file that is not utf-8 encoded the encoding need to configure a file that is not utf-8 encoded the encoding
keyword will allow you to specify which file encoding to use. It is keyword will allow you to specify which file encoding to use. It is
however strongly advised to convert your non utf-8 file to utf-8 however strongly advised to convert your non utf-8 file to utf-8

@ -116,5 +116,5 @@ all the work required to bring your build tree up to date.
Since 0.50.0, it is also possible to get a list of all build options Since 0.50.0, it is also possible to get a list of all build options
by invoking [`meson configure`](Commands.md#configure) with the by invoking [`meson configure`](Commands.md#configure) with the
project source directory or the path to the root `meson.build`. In project source directory or the path to the root `meson.build`. In
this case, meson will print the default values of all options similar this case, Meson will print the default values of all options similar
to the example output from above. to the example output from above.

@ -164,7 +164,7 @@ the AppVeyor docs for more details.
### Boost ### Boost
The following statement is sufficient for meson to find Boost: The following statement is sufficient for Meson to find Boost:
```yaml ```yaml
- cmd: set BOOST_ROOT=C:\Libraries\boost_1_67_0 - cmd: set BOOST_ROOT=C:\Libraries\boost_1_67_0

@ -39,7 +39,7 @@ Every new feature requires some extra steps, namely:
- Must be registered with the [FeatureChecks - Must be registered with the [FeatureChecks
framework](Release-notes-for-0.47.0.md#feature-detection-based-on-meson_version-in-project) framework](Release-notes-for-0.47.0.md#feature-detection-based-on-meson_version-in-project)
that will warn the user if they try to use a new feature while that will warn the user if they try to use a new feature while
targeting an older meson version. targeting an older Meson version.
- Needs a release note snippet inside `docs/markdown/snippets/` with - Needs a release note snippet inside `docs/markdown/snippets/` with
a heading and a brief paragraph explaining what the feature does a heading and a brief paragraph explaining what the feature does
with an example. with an example.
@ -171,7 +171,7 @@ Additionally:
* `crossfile.ini` and `nativefile.ini` are passed to the configure step with * `crossfile.ini` and `nativefile.ini` are passed to the configure step with
`--cross-file` and `--native-file` options, respectively. `--cross-file` and `--native-file` options, respectively.
* `mlog.cmd_ci_include()` can be called from anywhere inside meson to * `mlog.cmd_ci_include()` can be called from anywhere inside Meson to
capture the contents of an additional file into the CI log on failure. capture the contents of an additional file into the CI log on failure.
Projects needed by unit tests are in the `test cases/unit` Projects needed by unit tests are in the `test cases/unit`
@ -301,10 +301,10 @@ considered if the platform matches. The following values for
#### matrix #### matrix
The `matrix` section can be used to define a test matrix to run The `matrix` section can be used to define a test matrix to run
project tests with different meson options. project tests with different Meson options.
In the `options` dict, all possible options and their values are In the `options` dict, all possible options and their values are
specified. Each key in the `options` dict is a meson option. It stores specified. Each key in the `options` dict is a Meson option. It stores
a list of all potential values in a dict format, which allows to skip a list of all potential values in a dict format, which allows to skip
specific values based on the current environment. specific values based on the current environment.

@ -84,7 +84,7 @@ things to note. First, you must tell GCC to link the C++ standard
library statically. If you don't then your app is guaranteed to break library statically. If you don't then your app is guaranteed to break
as different distros have binary-incompatible C++ libraries. The as different distros have binary-incompatible C++ libraries. The
second thing is that you need to point your install prefix to some second thing is that you need to point your install prefix to some
empty staging area. Here's the meson command to do that: empty staging area. Here's the Meson command to do that:
```console ```console
$ LDFLAGS=-static-libstdc++ meson --prefix=/tmp/myapp <other args> $ LDFLAGS=-static-libstdc++ meson --prefix=/tmp/myapp <other args>

@ -17,7 +17,7 @@ single command *(available since 0.52.0)*:
meson dist meson dist
``` ```
or alternatively (on older meson versions with `ninja` backend): or alternatively (on older Meson versions with `ninja` backend):
```sh ```sh
ninja dist ninja dist

@ -201,7 +201,7 @@ matter of calling `host_machine.system()`.
There are two different values for the CPU. The first one is There are two different values for the CPU. The first one is
`cpu_family`. It is a general type of the CPU. This should have a `cpu_family`. It is a general type of the CPU. This should have a
value from [the CPU Family table](Reference-tables.md#cpu-families). value from [the CPU Family table](Reference-tables.md#cpu-families).
*Note* that meson does not add `el` to end cpu_family value for little *Note* that Meson does not add `el` to end cpu_family value for little
endian systems. Big endian and little endian mips are both just endian systems. Big endian and little endian mips are both just
`mips`, with the `endian` field set approriately. `mips`, with the `endian` field set approriately.
@ -321,7 +321,7 @@ myvar = meson.get_cross_property('somekey')
## Cross file locations ## Cross file locations
As of version 0.44.0 meson supports loading cross files from system As of version 0.44.0 Meson supports loading cross files from system
locations (except on Windows). This will be locations (except on Windows). This will be
$XDG_DATA_DIRS/meson/cross, or if XDG_DATA_DIRS is undefined, then $XDG_DATA_DIRS/meson/cross, or if XDG_DATA_DIRS is undefined, then
/usr/local/share/meson/cross and /usr/share/meson/cross will be tried /usr/local/share/meson/cross and /usr/share/meson/cross will be tried

@ -138,7 +138,7 @@ of all the work behind the scenes to make this work.
# Dependency method # Dependency method
You can use the keyword `method` to let meson know what method to use You can use the keyword `method` to let Meson know what method to use
when searching for the dependency. The default value is `auto`. when searching for the dependency. The default value is `auto`.
Additional dependencies methods are `pkg-config`, `config-tool`, `cmake`, Additional dependencies methods are `pkg-config`, `config-tool`, `cmake`,
`system`, `sysconfig`, `qmake`, `extraframework` and `dub`. `system`, `sysconfig`, `qmake`, `extraframework` and `dub`.
@ -163,11 +163,11 @@ imported targets.
It is possible to manually specify a list of CMake targets that should It is possible to manually specify a list of CMake targets that should
be used with the `modules` property. However, this step is optional be used with the `modules` property. However, this step is optional
since meson tries to automatically guess the correct target based on since Meson tries to automatically guess the correct target based on
the name of the dependency. the name of the dependency.
Depending on the dependency it may be necessary to explicitly specify Depending on the dependency it may be necessary to explicitly specify
a CMake target with the `modules` property if meson is unable to guess a CMake target with the `modules` property if Meson is unable to guess
it automatically. it automatically.
```meson ```meson
@ -196,7 +196,7 @@ property.
## Dub ## Dub
Please understand that meson is only able to find dependencies that Please understand that Meson is only able to find dependencies that
exist in the local Dub repository. You need to manually fetch and exist in the local Dub repository. You need to manually fetch and
build the target dependencies. build the target dependencies.
@ -206,10 +206,10 @@ dub fetch urld
dub build urld dub build urld
``` ```
Other thing you need to keep in mind is that both meson and Dub need Other thing you need to keep in mind is that both Meson and Dub need
to be using the same compiler. This can be achieved using Dub's to be using the same compiler. This can be achieved using Dub's
`-compiler` argument and/or manually setting the `DC` environment `-compiler` argument and/or manually setting the `DC` environment
variable when running meson. variable when running Meson.
``` ```
dub build urld --compiler=dmd dub build urld --compiler=dmd
DC="dmd" meson builddir DC="dmd" meson builddir
@ -225,7 +225,7 @@ recommended style is to write them in all lower-case.
In some cases, more than one detection method exists, and the `method` In some cases, more than one detection method exists, and the `method`
keyword may be used to select a detection method to use. The `auto` keyword may be used to select a detection method to use. The `auto`
method uses any checking mechanisms in whatever order meson thinks is method uses any checking mechanisms in whatever order Meson thinks is
best. best.
e.g. libwmf and CUPS provide both pkg-config and config-tool support. e.g. libwmf and CUPS provide both pkg-config and config-tool support.
@ -404,7 +404,7 @@ versions would statically link, due to a quirk in `llvm-config`.
### Modules, a.k.a. Components ### Modules, a.k.a. Components
Meson wraps LLVM's concept of components in it's own modules concept. Meson wraps LLVM's concept of components in it's own modules concept.
When you need specific components you add them as modules as meson When you need specific components you add them as modules as Meson
will do the right thing: will do the right thing:
```meson ```meson
@ -501,9 +501,9 @@ The `language` keyword may used.
## Python3 ## Python3
Python3 is handled specially by meson: Python3 is handled specially by Meson:
1. Meson tries to use `pkg-config`. 1. Meson tries to use `pkg-config`.
2. If `pkg-config` fails meson uses a fallback: 2. If `pkg-config` fails Meson uses a fallback:
- On Windows the fallback is the current `python3` interpreter. - On Windows the fallback is the current `python3` interpreter.
- On OSX the fallback is a framework dependency from `/Library/Frameworks`. - On OSX the fallback is a framework dependency from `/Library/Frameworks`.

@ -35,7 +35,7 @@ dlang.generate_dub_file(meson.project_name().to_lower(), meson.source_root(),
) )
``` ```
You can manually edit a meson generated `dub.json` file or provide a You can manually edit a Meson generated `dub.json` file or provide a
initial one. The module will only update the values specified in initial one. The module will only update the values specified in
`generate_dub_file()`. `generate_dub_file()`.

@ -42,7 +42,7 @@ Known limitations:
yet supported. yet supported.
- When cross compiling, if `PKG_CONFIG_SYSROOT_DIR` is set in environment or - When cross compiling, if `PKG_CONFIG_SYSROOT_DIR` is set in environment or
`sys_root` in the cross file properties, the external subproject will not be `sys_root` in the cross file properties, the external subproject will not be
able to find dependencies built by meson using pkg-config. The reason is able to find dependencies built by Meson using pkg-config. The reason is
pkg-config and pkgconf both prepend the sysroot path to `-I` and `-L` arguments pkg-config and pkgconf both prepend the sysroot path to `-I` and `-L` arguments
from `-uninstalled.pc` files. This is arguably a bug that could be fixed in from `-uninstalled.pc` files. This is arguably a bug that could be fixed in
future version of pkg-config/pkgconf. future version of pkg-config/pkgconf.

@ -290,7 +290,7 @@ downloads altogether with `--wrap-mode=nodownload`. You can also
disable dependency fallbacks altogether with `--wrap-mode=nofallback`, disable dependency fallbacks altogether with `--wrap-mode=nofallback`,
which also implies the `nodownload` option. which also implies the `nodownload` option.
If on the other hand, you want meson to always use the fallback If on the other hand, you want Meson to always use the fallback
for dependencies, even when an external dependency exists and could for dependencies, even when an external dependency exists and could
satisfy the version requirements, for example in order to make satisfy the version requirements, for example in order to make
sure your project builds when fallbacks are used, you can use sure your project builds when fallbacks are used, you can use

@ -76,14 +76,14 @@ executable('myexe', ['main.c', foo_h], link_with : libfoo)
Each target that depends on a generated header should add that header Each target that depends on a generated header should add that header
to it's sources, as seen above with `libfoo` and `myexe`. This is to it's sources, as seen above with `libfoo` and `myexe`. This is
because there is no way for meson or the backend to know that `myexe` because there is no way for Meson or the backend to know that `myexe`
depends on `foo.h` just because `libfoo` does, it could be a private depends on `foo.h` just because `libfoo` does, it could be a private
header. header.
### Generating multiple files at a time ### Generating multiple files at a time
Sometimes it makes sense for a single generator to create two or more Sometimes it makes sense for a single generator to create two or more
files at a time, (perhaps a header and source file), meson has this files at a time, (perhaps a header and source file), Meson has this
case covered as well. `custom_target`s can be indexed like a list to case covered as well. `custom_target`s can be indexed like a list to
get each output file separately. The order is the same as the order of get each output file separately. The order is the same as the order of
the output argument to `custom_target` the output argument to `custom_target`

@ -27,7 +27,7 @@ Meson is available in the [Python Package Index] and can be installed
with `sudo pip3 install meson` which requires root and will install it with `sudo pip3 install meson` which requires root and will install it
system-wide. system-wide.
If you have downloaded a copy of the meson sources already, you can If you have downloaded a copy of the Meson sources already, you can
install it with `sudo pip3 install path/to/source/root/`. install it with `sudo pip3 install path/to/source/root/`.
Alternatively, you can use `pip3 install --user meson` which will Alternatively, you can use `pip3 install --user meson` which will
@ -35,7 +35,7 @@ install it for your user and does not require any special
privileges. This will install the package in `~/.local/`, so you will privileges. This will install the package in `~/.local/`, so you will
have to add `~/.local/bin` to your `PATH`, and `sudo meson install` have to add `~/.local/bin` to your `PATH`, and `sudo meson install`
will be completely broken since the program will not be available to will be completely broken since the program will not be available to
root. Only use a user copy of meson if you do not care about root. Only use a user copy of Meson if you do not care about
installing projects as root. installing projects as root.
## Installing Meson and Ninja with the MSI installer ## Installing Meson and Ninja with the MSI installer

@ -22,10 +22,10 @@ following command in the source directory.
meson builddir meson builddir
With this command meson will configure the project and also generate With this command Meson will configure the project and also generate
introspection information that is stored in `intro-*.json` files in introspection information that is stored in `intro-*.json` files in
the `meson-info` directory. The introspection dump will be the `meson-info` directory. The introspection dump will be
automatically updated when meson is (re)configured, or the build automatically updated when Meson is (re)configured, or the build
options change. Thus, an IDE can watch for changes in this directory options change. Thus, an IDE can watch for changes in this directory
to know when something changed. Note that `meson-info.json` guaranteed to know when something changed. Note that `meson-info.json` guaranteed
to be the last file written. to be the last file written.
@ -35,8 +35,8 @@ The `meson-info` directory should contain the following files:
| File | Description | | File | Description |
| ------------------------------ | ------------------------------------------------------------------- | | ------------------------------ | ------------------------------------------------------------------- |
| `intro-benchmarks.json` | Lists all benchmarks | | `intro-benchmarks.json` | Lists all benchmarks |
| `intro-buildoptions.json` | Contains a full list of meson configuration options for the project | | `intro-buildoptions.json` | Contains a full list of Meson configuration options for the project |
| `intro-buildsystem_files.json` | Full list of all meson build files | | `intro-buildsystem_files.json` | Full list of all Meson build files |
| `intro-dependencies.json` | Lists all dependencies used in the project | | `intro-dependencies.json` | Lists all dependencies used in the project |
| `intro-installed.json` | Contains mapping of files to their installed location | | `intro-installed.json` | Contains mapping of files to their installed location |
| `intro-projectinfo.json` | Stores basic information about the project (name, version, etc.) | | `intro-projectinfo.json` | Stores basic information about the project (name, version, etc.) |
@ -140,7 +140,7 @@ There is no guarantee that the sources list in `target_sources` is
correct. There might be differences, due to internal limitations. It correct. There might be differences, due to internal limitations. It
is also not guaranteed that all targets will be listed in the output. is also not guaranteed that all targets will be listed in the output.
It might even be possible that targets are listed, which won't exist It might even be possible that targets are listed, which won't exist
when meson is run normally. This can happen if a target is defined when Meson is run normally. This can happen if a target is defined
inside an if statement. Use this feature with care. inside an if statement. Use this feature with care.
## Build Options ## Build Options
@ -199,7 +199,7 @@ output as running it with a freshly configured build directory.
However, this behavior is not guaranteed if subprojects are present. However, this behavior is not guaranteed if subprojects are present.
Due to internal limitations all subprojects are processed even if they Due to internal limitations all subprojects are processed even if they
are never used in a real meson run. Because of this options for the are never used in a real Meson run. Because of this options for the
subprojects can differ. subprojects can differ.
## The dependencies section ## The dependencies section
@ -231,7 +231,7 @@ The output format is as follows:
The `required` keyword specifies whether the dependency is marked as The `required` keyword specifies whether the dependency is marked as
required in the `meson.build` (all dependencies are required by required in the `meson.build` (all dependencies are required by
default). The `conditional` key indicates whether the `dependency()` default). The `conditional` key indicates whether the `dependency()`
function was called inside a conditional block. In a real meson run function was called inside a conditional block. In a real Meson run
these dependencies might not be used, thus they _may_ not be required, these dependencies might not be used, thus they _may_ not be required,
even if the `required` key is set. The `has_fallback` key just even if the `required` key is set. The `has_fallback` key just
indicates whether a fallback was directly set in the `dependency()` indicates whether a fallback was directly set in the `dependency()`
@ -302,7 +302,7 @@ This API can also work without a build directory for the
# AST of a `meson.build` # AST of a `meson.build`
Since meson *0.55.0* it is possible to dump the AST of a `meson.build` Since Meson *0.55.0* it is possible to dump the AST of a `meson.build`
as a JSON object. The interface for this is `meson introspect --ast as a JSON object. The interface for this is `meson introspect --ast
/path/to/meson.build`. /path/to/meson.build`.

@ -11,7 +11,7 @@ since 0.47.0)*:
meson install meson install
``` ```
or alternatively (on older meson versions with `ninja` backend): or alternatively (on older Meson versions with `ninja` backend):
```sh ```sh
ninja install ninja install

@ -9,7 +9,7 @@ authors:
# keyval module # keyval module
This module parses files consisting of a series of `key=value` lines. This module parses files consisting of a series of `key=value` lines.
One use of this module is to load kconfig configurations in meson One use of this module is to load kconfig configurations in Meson
projects. projects.
**Note**: this does not provide kconfig frontend tooling to generate a **Note**: this does not provide kconfig frontend tooling to generate a

@ -17,7 +17,7 @@ In your main meson.build file include the `po` subdirectory in the build process
In this `po` subdirectory we need: In this `po` subdirectory we need:
- `LINGUAS`: Space separated list of languages - `LINGUAS`: Space separated list of languages
- `POTFILES`: List of source files to scan for translatable strings. - `POTFILES`: List of source files to scan for translatable strings.
- `meson.build`: Localization specific meson file - `meson.build`: Localization specific Meson file
### LINGUAS ### LINGUAS
@ -39,7 +39,7 @@ root. A sample POTFILES might look like this.
### meson.build ### meson.build
Localization specific meson file. It imports and uses the `i18n` Localization specific Meson file. It imports and uses the `i18n`
module. If not defined before it needs to define the `GETTEXT_PACKAGE` module. If not defined before it needs to define the `GETTEXT_PACKAGE`
global. global.

@ -131,7 +131,7 @@ a = 'Hello'
### Binaries ### Binaries
The binaries section contains a list of binaries. These can be used The binaries section contains a list of binaries. These can be used
internally by meson, or by the `find_program` function. internally by Meson, or by the `find_program` function.
These values must be either strings or an array of strings These values must be either strings or an array of strings
@ -140,7 +140,7 @@ Compilers and linkers are defined here using `<lang>` and `<lang>_ld`.
like gcc and clang which are used to invoke the linker this is a value like gcc and clang which are used to invoke the linker this is a value
to pass to their "choose the linker" argument (-fuse-ld= in this to pass to their "choose the linker" argument (-fuse-ld= in this
case). For compilers like MSVC and Clang-Cl, this is the path to a case). For compilers like MSVC and Clang-Cl, this is the path to a
linker for meson to invoke, such as `link.exe` or `lld-link.exe`. linker for Meson to invoke, such as `link.exe` or `lld-link.exe`.
Support for `ld` is *new in 0.53.0* Support for `ld` is *new in 0.53.0*
*changed in 0.53.1* the `ld` variable was replaced by `<lang>_ld`, *changed in 0.53.1* the `ld` variable was replaced by `<lang>_ld`,
@ -221,13 +221,13 @@ section.
- `cmake_toolchain_file` specifies an absolute path to an already existing - `cmake_toolchain_file` specifies an absolute path to an already existing
CMake toolchain file that will be loaded with `include()` as the last CMake toolchain file that will be loaded with `include()` as the last
instruction of the automatically generated CMake toolchain file from meson. instruction of the automatically generated CMake toolchain file from Meson.
(*new in 0.56.0*) (*new in 0.56.0*)
- `cmake_defaults` is a boolean that specifies whether meson should automatically - `cmake_defaults` is a boolean that specifies whether Meson should automatically
generate default toolchain variables from other sections (`binaries`, generate default toolchain variables from other sections (`binaries`,
`host_machine`, etc.) in the machine file. Defaults are always overwritten `host_machine`, etc.) in the machine file. Defaults are always overwritten
by variables set in the `[cmake]` section. The default is `true`. (*new in 0.56.0*) by variables set in the `[cmake]` section. The default is `true`. (*new in 0.56.0*)
- `cmake_skip_compiler_test` is an enum that specifies when meson should - `cmake_skip_compiler_test` is an enum that specifies when Meson should
automatically generate toolchain variables to skip the CMake compiler automatically generate toolchain variables to skip the CMake compiler
sanity checks. This only has an effect if `cmake_defaults` is `true`. sanity checks. This only has an effect if `cmake_defaults` is `true`.
Supported values are `always`, `never`, `dep_only`. The default is `dep_only`. Supported values are `always`, `never`, `dep_only`. The default is `dep_only`.
@ -303,7 +303,7 @@ Meson built-in options can be set the same way:
c_std = 'c99' c_std = 'c99'
``` ```
You can set some meson built-in options on a per-subproject basis, You can set some Meson built-in options on a per-subproject basis,
such as `default_library` and `werror`. The order of precedence is: such as `default_library` and `werror`. The order of precedence is:
1) Command line 1) Command line
@ -318,7 +318,7 @@ werror = false
Options set on a per-subproject basis will inherit the option from the Options set on a per-subproject basis will inherit the option from the
parent if the parent has a setting but the subproject doesn't, even parent if the parent has a setting but the subproject doesn't, even
when there is a default set meson language. when there is a default set Meson language.
```ini ```ini
[built-in options] [built-in options]
@ -338,7 +338,7 @@ An incomplete list of options is:
## Loading multiple machine files ## Loading multiple machine files
Native files allow layering (cross files can be layered since meson Native files allow layering (cross files can be layered since Meson
0.52.0). More than one file can be loaded, with values from a previous 0.52.0). More than one file can be loaded, with values from a previous
file being overridden by the next. The intention of this is not file being overridden by the next. The intention of this is not
overriding, but to allow composing files. This composition is done by overriding, but to allow composing files. This composition is done by

@ -40,4 +40,4 @@ image can be tested with `build.py -t test <image>`.
### Common image setup ### Common image setup
Each docker image has a `/ci` directory with an `env_vars.sh` script. Each docker image has a `/ci` directory with an `env_vars.sh` script.
This script has to be sourced before running the meson test suite. This script has to be sourced before running the Meson test suite.

@ -71,11 +71,11 @@ value will be provided for all required fields of the pc file:
Since 0.54.0 uninstalled pkg-config files are generated as well. They Since 0.54.0 uninstalled pkg-config files are generated as well. They
are located in `<build dir>/meson-uninstalled/`. It is sometimes are located in `<build dir>/meson-uninstalled/`. It is sometimes
useful to build projects against libraries built by meson without useful to build projects against libraries built by Meson without
having to install them into a prefix. In order to do so, just set having to install them into a prefix. In order to do so, just set
`PKG_CONFIG_PATH=<builddir>/meson-uninstalled` before building your `PKG_CONFIG_PATH=<builddir>/meson-uninstalled` before building your
application. That will cause pkg-config to prefer those application. That will cause pkg-config to prefer those
`-uninstalled.pc` files and find libraries and headers from the meson `-uninstalled.pc` files and find libraries and headers from the Meson
builddir. This is an experimental feature provided on a best-effort builddir. This is an experimental feature provided on a best-effort
basis, it might not work in all use-cases. basis, it might not work in all use-cases.

@ -158,7 +158,7 @@ option('enable-dep11', type : 'boolean', value : true, description : 'enable DEP
## Makefile.am ## Makefile.am
Next step is `Makefile.am`. In meson you don't need to have other Next step is `Makefile.am`. In Meson you don't need to have other
file, you still use `meson.build`. file, you still use `meson.build`.
### Sub directories ### Sub directories
@ -204,7 +204,7 @@ EXTRA_DIST = \
config.h config.h
``` ```
In Meson you don't need have `*CLEANFILES`, because in meson you are In Meson you don't need have `*CLEANFILES`, because in Meson you are
building in temporary directory (usually called `build`), you manually building in temporary directory (usually called `build`), you manually
removing it. You also not need to use `EXTRA_DIST`, because you will removing it. You also not need to use `EXTRA_DIST`, because you will
make tarballs via `git archive` or something like this. make tarballs via `git archive` or something like this.

@ -62,7 +62,7 @@ Let's say the source files of the binary use the system headers
#include <string.h> #include <string.h>
``` ```
And add this to meson: And add this to Meson:
```meson ```meson
executable('myexe', sources : sourcelist, c_pch : 'pch/myexe_pch.h') executable('myexe', sources : sourcelist, c_pch : 'pch/myexe_pch.h')

@ -25,11 +25,11 @@ pymod.find_installation(name_or_path, ...)
Find a python installation matching `name_or_path`. Find a python installation matching `name_or_path`.
That argument is optional, if not provided then the returned python That argument is optional, if not provided then the returned python
installation will be the one used to run meson. installation will be the one used to run Meson.
If provided, it can be: If provided, it can be:
- A simple name, eg `python-2.7`, meson will look for an external program - A simple name, eg `python-2.7`, Meson will look for an external program
named that way, using [find_program] named that way, using [find_program]
- A path, eg `/usr/local/bin/python3.4m` - A path, eg `/usr/local/bin/python3.4m`
@ -87,7 +87,7 @@ All positional and keyword arguments are the same as for
[shared_module], excluding `name_suffix` and `name_prefix`, and with [shared_module], excluding `name_suffix` and `name_prefix`, and with
the addition of the following: the addition of the following:
- `subdir`: By default, meson will install the extension module in - `subdir`: By default, Meson will install the extension module in
the relevant top-level location for the python installation, eg the relevant top-level location for the python installation, eg
`/usr/lib/site-packages`. When subdir is passed to this method, `/usr/lib/site-packages`. When subdir is passed to this method,
it will be appended to that location. This keyword argument is it will be appended to that location. This keyword argument is
@ -109,7 +109,7 @@ This method accepts no positional arguments, and the same keyword
arguments as the standard [dependency] function. It also supports the arguments as the standard [dependency] function. It also supports the
following keyword argument: following keyword argument:
- `embed`: *(since 0.53.0)* If true, meson will try to find a python - `embed`: *(since 0.53.0)* If true, Meson will try to find a python
dependency that can be used for embedding python into an dependency that can be used for embedding python into an
application. application.

@ -83,7 +83,7 @@ If `native` is omitted, the languages may be used for either build or host
machine, but are never required for the build machine. (i.e. it is equivalent machine, but are never required for the build machine. (i.e. it is equivalent
to `add_languages(*langs*, native: false, required: *required*) and to `add_languages(*langs*, native: false, required: *required*) and
add_languages(*langs*, native: true, required: false)`. This default behaviour add_languages(*langs*, native: true, required: false)`. This default behaviour
may change to `native: false` in a future meson version. may change to `native: false` in a future Meson version.
### add_project_arguments() ### add_project_arguments()
@ -647,9 +647,9 @@ be passed to [shared and static libraries](#library).
when this file changes. when this file changes.
- `link_language` *(since 0.51.0)* *(broken until 0.55.0)*: makes the linker for this - `link_language` *(since 0.51.0)* *(broken until 0.55.0)*: makes the linker for this
target be for the specified language. It is generally unnecessary to set target be for the specified language. It is generally unnecessary to set
this, as meson will detect the right linker to use in most cases. There are this, as Meson will detect the right linker to use in most cases. There are
only two cases where this is needed. One, your main function in an only two cases where this is needed. One, your main function in an
executable is not in the language meson picked, or second you want to force executable is not in the language Meson picked, or second you want to force
a library to use only one ABI. a library to use only one ABI.
- `link_whole` *(since 0.40.0)*: links all contents of the given static libraries - `link_whole` *(since 0.40.0)*: links all contents of the given static libraries
whether they are used by not, equivalent to the `-Wl,--whole-archive` argument flag of GCC. whether they are used by not, equivalent to the `-Wl,--whole-archive` argument flag of GCC.
@ -1629,14 +1629,14 @@ This function has one keyword argument.
subdir_done() subdir_done()
``` ```
Stops further interpretation of the meson script file from the point Stops further interpretation of the Meson script file from the point
of the invocation. All steps executed up to this point are valid and of the invocation. All steps executed up to this point are valid and
will be executed by meson. This means that all targets defined before will be executed by Meson. This means that all targets defined before
the call of `subdir_done` will be build. the call of `subdir_done` will be build.
If the current script was called by `subdir` the execution returns to If the current script was called by `subdir` the execution returns to
the calling directory and continues as if the script had reached the the calling directory and continues as if the script had reached the
end. If the current script is the top level script meson configures end. If the current script is the top level script Meson configures
the project as defined up to this point. the project as defined up to this point.
Example: Example:

@ -114,9 +114,9 @@ set in the cross file.
Any cpu family not listed in the above list is not guaranteed to Any cpu family not listed in the above list is not guaranteed to
remain stable in future releases. remain stable in future releases.
Those porting from autotools should note that meson does not add Those porting from autotools should note that Meson does not add
endianness to the name of the cpu_family. For example, autotools endianness to the name of the cpu_family. For example, autotools
will call little endian PPC64 "ppc64le", meson will not, you must will call little endian PPC64 "ppc64le", Meson will not, you must
also check the `.endian()` value of the machine for this information. also check the `.endian()` value of the machine for this information.
## Operating system names ## Operating system names
@ -300,7 +300,7 @@ machine](#Environment-variables-per-machine) section for details.
| C# | CSC | CSC | The linker is the compiler | | C# | CSC | CSC | The linker is the compiler |
*The old environment variales are still supported, but are deprecated *The old environment variales are still supported, but are deprecated
and will be removed in a future version of meson.* and will be removed in a future version of Meson.*
## Environment variables per machine ## Environment variables per machine
@ -317,7 +317,7 @@ configuration. For example:
- `PKG_CONFIG_PATH` controls the paths pkg-config will search for just - `PKG_CONFIG_PATH` controls the paths pkg-config will search for just
`native: false` dependencies (host machine). `native: false` dependencies (host machine).
This mirrors the `build.` prefix used for (built-in) meson options, This mirrors the `build.` prefix used for (built-in) Meson options,
which has the same meaning. which has the same meaning.
This is useful for cross builds. In the native builds, build = host, This is useful for cross builds. In the native builds, build = host,

@ -29,7 +29,7 @@ active VS version.
## Automatic initialization of subprojects that are git submodules ## Automatic initialization of subprojects that are git submodules
If you have a directory inside your subprojects directory (usually If you have a directory inside your subprojects directory (usually
`subprojects/`) that is a git submodule, meson will automatically `subprojects/`) that is a git submodule, Meson will automatically
initialize it if your build files refer to it. This will be done initialize it if your build files refer to it. This will be done
without needing a wrap file since git contains all the information without needing a wrap file since git contains all the information
needed. needed.
@ -144,9 +144,9 @@ which changes a lot. This is enabled by setting the `unity` option to
Meson now sets the `MESONINTROSPECT` environment variable in addition Meson now sets the `MESONINTROSPECT` environment variable in addition
to `MESON_SOURCE_ROOT` and other variables when running scripts. It is to `MESON_SOURCE_ROOT` and other variables when running scripts. It is
guaranteed to point to the correct `mesonintrospect` script, which is guaranteed to point to the correct `mesonintrospect` script, which is
important when running meson uninstalled from git or when your `PATH`s important when running Meson uninstalled from git or when your `PATH`s
may not be set up correctly. may not be set up correctly.
Specifically, the following meson functions will set it: Specifically, the following Meson functions will set it:
`meson.add_install_script()`, `meson.add_postconf_script()`, `meson.add_install_script()`, `meson.add_postconf_script()`,
`run_command()`, `run_target()`. `run_command()`, `run_target()`.

@ -39,7 +39,7 @@ If prefix is `/usr/local` (the default), default localstatedir to
Previously to have an option that took more than one value a string Previously to have an option that took more than one value a string
value would have to be created and split, but validating this was value would have to be created and split, but validating this was
difficult. A new array type has been added to the meson_options.txt difficult. A new array type has been added to the `meson_options.txt`
for this case. It works like a 'combo', but allows more than one for this case. It works like a 'combo', but allows more than one
option to be passed. The values can optionally be validated against a option to be passed. The values can optionally be validated against a
list of valid values. When used on the command line (with -D), values list of valid values. When used on the command line (with -D), values

@ -73,7 +73,7 @@ main `meson` binary.
## Meson and meson configure now accept the same arguments ## Meson and meson configure now accept the same arguments
Previously meson required that builtin arguments (like prefix) be Previously Meson required that builtin arguments (like prefix) be
passed as `--prefix` to `meson` and `-Dprefix` to `meson configure`. passed as `--prefix` to `meson` and `-Dprefix` to `meson configure`.
`meson` now accepts -D form like `meson configure` has. `meson `meson` now accepts -D form like `meson configure` has. `meson
configure` also accepts the `--prefix` form, like `meson` has. configure` also accepts the `--prefix` form, like `meson` has.
@ -205,11 +205,11 @@ Major differences as of version 1.21.22:
* some backend messages are produced in ru_RU.KOI8-R even if LANG=C; * some backend messages are produced in ru_RU.KOI8-R even if LANG=C;
* its preprocessor treats some characters differently. * its preprocessor treats some characters differently.
So every noted difference is properly handled now in meson. So every noted difference is properly handled now in Meson.
## String escape character sequence update ## String escape character sequence update
Single-quoted strings in meson have been taught the same set of escape Single-quoted strings in Meson have been taught the same set of escape
sequences as in Python. It is therefore now possible to use arbitrary sequences as in Python. It is therefore now possible to use arbitrary
bytes in strings, like for example `NUL` (`\0`) and other ASCII bytes in strings, like for example `NUL` (`\0`) and other ASCII
control characters. See the chapter about [*Strings* in control characters. See the chapter about [*Strings* in

@ -166,7 +166,7 @@ the same as `-Dopt=[]`, an empty list.
## Feature detection based on `meson_version:` in `project()` ## Feature detection based on `meson_version:` in `project()`
Meson will now print a `WARNING:` message during configuration if you Meson will now print a `WARNING:` message during configuration if you
use a function or a keyword argument that was added in a meson version use a function or a keyword argument that was added in a Meson version
that's newer than the version specified inside `project()`. For that's newer than the version specified inside `project()`. For
example: example:
@ -257,7 +257,7 @@ directories created in the install tree. Files will preserve their
executable mode, but the exact permissions will obey the executable mode, but the exact permissions will obey the
`install_umask`. `install_umask`.
The `install_umask` can be overridden in the meson command-line: The `install_umask` can be overridden in the Meson command-line:
```console ```console
$ meson --install-umask=027 builddir/ $ meson --install-umask=027 builddir/

@ -81,7 +81,7 @@ output as running it with a freshly configured build directory.
However, this behavior is not guaranteed if subprojects are However, this behavior is not guaranteed if subprojects are
present. Due to internal limitations all subprojects are processed present. Due to internal limitations all subprojects are processed
even if they are never used in a real meson run. Because of this even if they are never used in a real Meson run. Because of this
options for the subprojects can differ. options for the subprojects can differ.
## `include_directories` accepts a string ## `include_directories` accepts a string
@ -219,7 +219,7 @@ what to extract. Previously, file paths could only be passed as strings.
## Changed the JSON format of the introspection ## Changed the JSON format of the introspection
All paths used in the meson introspection JSON format are now All paths used in the Meson introspection JSON format are now
absolute. This affects the `filename` key in the targets introspection absolute. This affects the `filename` key in the targets introspection
and the output of `--buildsystem-files`. and the output of `--buildsystem-files`.
@ -270,7 +270,7 @@ The output format is as follows:
The `required` keyword specifies whether the dependency is marked as The `required` keyword specifies whether the dependency is marked as
required in the `meson.build` (all dependencies are required by required in the `meson.build` (all dependencies are required by
default). The `conditional` key indicates whether the `dependency()` default). The `conditional` key indicates whether the `dependency()`
function was called inside a conditional block. In a real meson run function was called inside a conditional block. In a real Meson run
these dependencies might not be used, thus they _may_ not be required, these dependencies might not be used, thus they _may_ not be required,
even if the `required` key is set. The `has_fallback` key just even if the `required` key is set. The `has_fallback` key just
indicates whether a fallback was directly set in the `dependency()` indicates whether a fallback was directly set in the `dependency()`
@ -295,7 +295,7 @@ There is no guarantee that the sources list in `target_sources` is
correct. There might be differences, due to internal limitations. It correct. There might be differences, due to internal limitations. It
is also not guaranteed that all targets will be listed in the output. is also not guaranteed that all targets will be listed in the output.
It might even be possible that targets are listed, which won't exist It might even be possible that targets are listed, which won't exist
when meson is run normally. This can happen if a target is defined when Meson is run normally. This can happen if a target is defined
inside an if statement. Use this feature with care. inside an if statement. Use this feature with care.
## Added option to introspect multiple parameters at once ## Added option to introspect multiple parameters at once
@ -320,7 +320,7 @@ configuration of the build directory.
Additionlly the format of `meson introspect target` was changed: Additionlly the format of `meson introspect target` was changed:
- New: the `sources` key. It stores the source files of a target and their compiler parameters. - New: the `sources` key. It stores the source files of a target and their compiler parameters.
- New: the `defined_in` key. It stores the meson file where a target is defined - New: the `defined_in` key. It stores the Meson file where a target is defined
- New: the `subproject` key. It stores the name of the subproject where a target is defined. - New: the `subproject` key. It stores the name of the subproject where a target is defined.
- Added new target types (`jar`, `shared module`). - Added new target types (`jar`, `shared module`).
@ -328,7 +328,7 @@ Additionlly the format of `meson introspect target` was changed:
With this release, it is also possible to get a list of all build With this release, it is also possible to get a list of all build
options by invoking `meson configure` with the project source options by invoking `meson configure` with the project source
directory or the path to the root `meson.build`. In this case, meson directory or the path to the root `meson.build`. In this case, Meson
will print the default values of all options. will print the default values of all options.
## HDF5 ## HDF5
@ -338,7 +338,7 @@ HDF5 support is added via pkg-config.
## Added the `meson-info.json` introspection file ## Added the `meson-info.json` introspection file
Meson now generates a `meson-info.json` file in the `meson-info` Meson now generates a `meson-info.json` file in the `meson-info`
directory to provide introspection information about the latest meson directory to provide introspection information about the latest Meson
run. This file is updated when the build configuration is changed and run. This file is updated when the build configuration is changed and
the build files are (re)generated. the build files are (re)generated.

@ -24,7 +24,7 @@ listed.
Sanity checks previously only used user-specified flags for cross Sanity checks previously only used user-specified flags for cross
compilers, but now do in all cases. compilers, but now do in all cases.
All compilers meson might decide to use for the build are "sanity All compilers Meson might decide to use for the build are "sanity
checked" before other tests are run. This usually involves building checked" before other tests are run. This usually involves building
simple executable and trying to run it. Previously user flags simple executable and trying to run it. Previously user flags
(compilation and/or linking flags) were used for sanity checking cross (compilation and/or linking flags) were used for sanity checking cross
@ -98,7 +98,7 @@ endif
## Added basic support for the Xtensa CPU toolchain ## Added basic support for the Xtensa CPU toolchain
You can now use `xt-xcc`, `xt-xc++`, `xt-nm`, etc... on your cross You can now use `xt-xcc`, `xt-xc++`, `xt-nm`, etc... on your cross
compilation file and meson won't complain about an unknown toolchain. compilation file and Meson won't complain about an unknown toolchain.
## Dependency objects now have a get_variable method ## Dependency objects now have a get_variable method
@ -136,7 +136,7 @@ If you have installed something to `/tmp/dep`, which has a layout like:
/tmp/dep/bin /tmp/dep/bin
``` ```
then invoke meson as `meson builddir/ -Dcmake_prefix_path=/tmp/dep` then invoke Meson as `meson builddir/ -Dcmake_prefix_path=/tmp/dep`
## Tests that should fail but did not are now errors ## Tests that should fail but did not are now errors
@ -306,7 +306,7 @@ only interface to Fortran by `include biglib.h` or similar.
Meson can now directly consume CMake based subprojects with the Meson can now directly consume CMake based subprojects with the
CMake module. CMake module.
Using CMake subprojects is similar to using the "normal" meson Using CMake subprojects is similar to using the "normal" Meson
subprojects. They also have to be located in the `subprojects` subprojects. They also have to be located in the `subprojects`
directory. directory.

@ -42,7 +42,7 @@ Setting sys_root in the [properties] section of your cross file will
now set PKG_CONFIG_SYSROOT_DIR automatically for host system now set PKG_CONFIG_SYSROOT_DIR automatically for host system
dependencies when cross compiling. dependencies when cross compiling.
## The meson test program now accepts an additional "--gdb-path" argument to specify the GDB binary ## The Meson test program now accepts an additional "--gdb-path" argument to specify the GDB binary
`meson test --gdb testname` invokes GDB with the specific test case. However, sometimes GDB is not in the path or a GDB replacement is wanted. `meson test --gdb testname` invokes GDB with the specific test case. However, sometimes GDB is not in the path or a GDB replacement is wanted.
Therefore, a `--gdb-path` argument was added to specify which binary is executed (per default `gdb`): Therefore, a `--gdb-path` argument was added to specify which binary is executed (per default `gdb`):

@ -71,16 +71,16 @@ My Project 1.0
## Generic Overrider for Dynamic Linker selection ## Generic Overrider for Dynamic Linker selection
Previous to meson 0.52.0 you set the dynamic linker using compiler Previous to Meson 0.52.0 you set the dynamic linker using compiler
specific flags passed via language flags and hoped things worked out. specific flags passed via language flags and hoped things worked out.
In meson 0.52.0 meson started detecting the linker and making In version 0.52.0 Meson started detecting the linker and making
intelligent decisions about using it. Unfortunately this broke intelligent decisions about using it. Unfortunately this broke
choosing a non-default linker. choosing a non-default linker.
Now there is a generic mechanism for doing this. In 0.53.0, you can Now there is a generic mechanism for doing this. In 0.53.0, you can
use the `LD` environment variable. **In 0.53.1** this was changed to use the `LD` environment variable. **In 0.53.1** this was changed to
`<compiler_variable>_LD`, such as `CC_LD`, `CXX_LD`, `D_LD`, etc due `<compiler_variable>_LD`, such as `CC_LD`, `CXX_LD`, `D_LD`, etc due
to regressions. The usual meson [environment variable to regressions. The usual Meson [environment variable
rules](https://mesonbuild.com/Running-Meson.html#environment-variables) rules](https://mesonbuild.com/Running-Meson.html#environment-variables)
apply. Alternatively, you can add the following to a cross or native apply. Alternatively, you can add the following to a cross or native
file: file:
@ -106,7 +106,7 @@ c = 'clang'
c_ld = 'lld' c_ld = 'lld'
``` ```
And meson will select the linker if possible. And Meson will select the linker if possible.
## `fortran_std` option ## `fortran_std` option

@ -8,7 +8,7 @@ short-description: Release notes for 0.54.0
## Emscripten (emcc) now supports threads ## Emscripten (emcc) now supports threads
In addition to properly setting the compile and linker arguments, a In addition to properly setting the compile and linker arguments, a
new meson builtin has been added to control the PTHREAD_POOL_SIZE new Meson builtin has been added to control the PTHREAD_POOL_SIZE
option, `-D<lang>_thread_count`, which may be set to any integer value option, `-D<lang>_thread_count`, which may be set to any integer value
greater than 0. If it set to 0 then the PTHREAD_POOL_SIZE option will greater than 0. If it set to 0 then the PTHREAD_POOL_SIZE option will
not be passed. not be passed.
@ -146,7 +146,7 @@ compiler is available after `add_languages()`, if the `native:`
keyword is absent the languages may be used for either the build or keyword is absent the languages may be used for either the build or
host machine, but are never required for the build machine. host machine, but are never required for the build machine.
This changes the behaviour of the following meson fragment (when This changes the behaviour of the following Meson fragment (when
cross-compiling but a native compiler is not available) from reporting cross-compiling but a native compiler is not available) from reporting
an error at `add_language` to reporting an error at `executable`. an error at `add_language` to reporting an error at `executable`.
@ -182,7 +182,7 @@ have a name() method.
## New option `--quiet` to `meson install` ## New option `--quiet` to `meson install`
Now you can run `meson install --quiet` and meson will not verbosely Now you can run `meson install --quiet` and Meson will not verbosely
print every file as it is being installed. As before, the full log is print every file as it is being installed. As before, the full log is
always available inside the builddir in `meson-logs/install-log.txt`. always available inside the builddir in `meson-logs/install-log.txt`.
@ -196,7 +196,7 @@ your workload.
## Property support emscripten's wasm-ld ## Property support emscripten's wasm-ld
Before 0.54.0 we treated emscripten as both compiler and linker, which Before 0.54.0 we treated emscripten as both compiler and linker, which
isn't really true. It does have a linker, called wasm-ld (meson's name isn't really true. It does have a linker, called wasm-ld (Meson's name
is ld.wasm). This is a special version of clang's lld. This will now is ld.wasm). This is a special version of clang's lld. This will now
be detected properly. be detected properly.
@ -285,7 +285,7 @@ cross builds.
This old behavior is inconsistent with the way Autotools works, which This old behavior is inconsistent with the way Autotools works, which
undermines the purpose of distro-integration that is the only reason undermines the purpose of distro-integration that is the only reason
environment variables are supported at all in Meson. The new behavior environment variables are supported at all in Meson. The new behavior
is not quite the same, but doesn't conflict: meson doesn't always is not quite the same, but doesn't conflict: Meson doesn't always
repond to an environment when Autoconf would, but when it does it repond to an environment when Autoconf would, but when it does it
interprets it as Autotools would. interprets it as Autotools would.
@ -316,7 +316,7 @@ https://github.com/ninja-build/ninja/releases
## Added `-C` argument to `meson init` command ## Added `-C` argument to `meson init` command
The meson init assumes that it is run inside the project root The Meson init assumes that it is run inside the project root
directory. If this isn't the case, you can now use `-C` to specify the directory. If this isn't the case, you can now use `-C` to specify the
actual project source directory. actual project source directory.
@ -352,7 +352,7 @@ repository.
The `pkgconfig` module now generates uninstalled pc files as well. For The `pkgconfig` module now generates uninstalled pc files as well. For
any generated `foo.pc` file, an extra `foo-uninstalled.pc` file is any generated `foo.pc` file, an extra `foo-uninstalled.pc` file is
placed into `<builddir>/meson-uninstalled`. They can be used to build placed into `<builddir>/meson-uninstalled`. They can be used to build
applications against libraries built by meson without installing them, applications against libraries built by Meson without installing them,
by pointing `PKG_CONFIG_PATH` to that directory. This is an by pointing `PKG_CONFIG_PATH` to that directory. This is an
experimental feature provided on a best-effort basis, it might not experimental feature provided on a best-effort basis, it might not
work in all use-cases. work in all use-cases.

@ -7,7 +7,7 @@ short-description: Release notes for 0.55.0
## rpath removal now more careful ## rpath removal now more careful
On Linux-like systems, meson adds rpath entries to allow running apps On Linux-like systems, Meson adds rpath entries to allow running apps
in the build tree, and then removes those build-time-only rpath in the build tree, and then removes those build-time-only rpath
entries when installing. Rpath entries may also come in via LDFLAGS entries when installing. Rpath entries may also come in via LDFLAGS
and via .pc files. Meson used to remove those latter rpath entries by and via .pc files. Meson used to remove those latter rpath entries by
@ -37,8 +37,8 @@ can be invoked with `meson compile foo:shared_library foo:static_library bar`.
## Test protocol for gtest ## Test protocol for gtest
Due to the popularity of Gtest (google test) among C and C++ Due to the popularity of Gtest (google test) among C and C++
developers meson now supports a special protocol for gtest. With this developers Meson now supports a special protocol for gtest. With this
protocol meson injects arguments to gtests to output JUnit, reads that protocol Meson injects arguments to gtests to output JUnit, reads that
JUnit, and adds the output to the JUnit it generates. JUnit, and adds the output to the JUnit it generates.
## meson.add_*_script methods accept new types ## meson.add_*_script methods accept new types
@ -87,7 +87,7 @@ cpp_args = c_args + ['-DSOMETHING_ELSE']
c = toolchain + '/gcc' c = toolchain + '/gcc'
``` ```
## Configure CMake subprojects with meson.subproject_options ## Configure CMake subprojects with Meson.subproject_options
Meson now supports passing configuration options to CMake and Meson now supports passing configuration options to CMake and
overriding certain build details extracted from the CMake subproject. overriding certain build details extracted from the CMake subproject.
@ -117,10 +117,10 @@ exe = executable('foo', ...)
meson.override_find_program('foo', exe) meson.override_find_program('foo', exe)
# In main project: # In main project:
# The version check was crashing meson. # The version check was crashing Meson.
prog = find_program('foo', version : '>=1.0') prog = find_program('foo', version : '>=1.0')
# This was crashing meson. # This was crashing Meson.
message(prog.path()) message(prog.path())
# New method to be consistent with built objects. # New method to be consistent with built objects.
@ -156,8 +156,8 @@ the compiler) when the b_ndebug flag is set.
## Meson test now produces JUnit xml from results ## Meson test now produces JUnit xml from results
Meson will now generate a JUnit compatible XML file from test results. Meson will now generate a JUnit compatible XML file from test results.
it will be in the meson-logs directory and is called it will be in the `meson-logs` directory and is called
testlog.junit.xml. `testlog.junit.xml`.
## Config tool based dependencies no longer search PATH for cross compiling ## Config tool based dependencies no longer search PATH for cross compiling
@ -176,7 +176,7 @@ changed), but is now deprecated.
## String concatenation in meson_options.txt ## String concatenation in meson_options.txt
It is now possible to use string concatenation (with the `+` It is now possible to use string concatenation (with the `+`
opperator) in the meson_options.txt file. This allows splitting long opperator) in the `meson_options.txt` file. This allows splitting long
option descriptions. option descriptions.
```meson ```meson

@ -69,7 +69,7 @@ advanced features (eg. link\_whole) are not supported yet.
## Wraps from subprojects are automatically promoted ## Wraps from subprojects are automatically promoted
It is not required to promote wrap files for subprojects into the main It is not required to promote wrap files for subprojects into the main
project any more. When configuring a subproject, meson will look for project any more. When configuring a subproject, Meson will look for
any wrap file or directory in the subproject's `subprojects/` any wrap file or directory in the subproject's `subprojects/`
directory and add them into the global list of available subprojects, directory and add them into the global list of available subprojects,
to be used by any future `subproject()` call or `dependency()` to be used by any future `subproject()` call or `dependency()`
@ -173,7 +173,7 @@ Subproject options are assigned like this:
foo = 'some val' foo = 'some val'
``` ```
Additionally meson level options can be set in the same way, using the Additionally Meson level options can be set in the same way, using the
`[built-in options]` section. `[built-in options]` section.
```ini ```ini
@ -333,7 +333,7 @@ The `update` subcommand has been reworked:
- In the case the URL of `origin` is different as the `url` set in wrap file, - In the case the URL of `origin` is different as the `url` set in wrap file,
the subproject will not be updated unless `--reset` is specified (see below). the subproject will not be updated unless `--reset` is specified (see below).
- In the case a subproject directory exists and is not a git repository but has - In the case a subproject directory exists and is not a git repository but has
a `[wrap-git]`, meson used to run git commands that would wrongly apply to the a `[wrap-git]`, Meson used to run git commands that would wrongly apply to the
main project. It now skip the subproject unless `--reset` is specified (see below). main project. It now skip the subproject unless `--reset` is specified (see below).
- The `--rebase` behaviour is now the default for consistency: it was - The `--rebase` behaviour is now the default for consistency: it was
already rebasing when current branch and revision are the same, it is already rebasing when current branch and revision are the same, it is

@ -4,7 +4,7 @@ short-description: Automatic modification of the build system files
# Meson file rewriter # Meson file rewriter
Since version 0.50.0, meson has the functionality to perform some Since version 0.50.0, Meson has the functionality to perform some
basic modification on the `meson.build` files from the command line. basic modification on the `meson.build` files from the command line.
The currently supported operations are: The currently supported operations are:
@ -32,7 +32,7 @@ We are also open to suggestions for API improvements.
## Using the rewriter ## Using the rewriter
All rewriter functions are accessed via `meson rewrite`. The meson All rewriter functions are accessed via `meson rewrite`. The Meson
rewriter assumes that it is run inside the project root directory. If rewriter assumes that it is run inside the project root directory. If
this isn't the case, use `--sourcedir` to specify the actual project this isn't the case, use `--sourcedir` to specify the actual project
source directory. source directory.
@ -70,8 +70,8 @@ exe1 = executable('testExe', src)
In this case, `exe1` could also have been used for the target name. In this case, `exe1` could also have been used for the target name.
This is possible because the rewriter also searches for assignments This is possible because the rewriter also searches for assignments
and unique meson IDs, which can be acquired with introspection. If and unique Meson IDs, which can be acquired with introspection. If
there are multiple targets with the same name, meson will do nothing there are multiple targets with the same name, Meson will do nothing
and print an error message. and print an error message.
For more information see the help output of the rewriter target For more information see the help output of the rewriter target
@ -115,7 +115,7 @@ meson rewrite default-options {set/delete} <opt1> <value1> <opt2> <value2> ...
## Limitations ## Limitations
Rewriting a meson file is not guaranteed to keep the indentation of Rewriting a Meson file is not guaranteed to keep the indentation of
the modified functions. Additionally, comments inside a modified the modified functions. Additionally, comments inside a modified
statement will be removed. Furthermore, all source files will be statement will be removed. Furthermore, all source files will be
sorted alphabetically. sorted alphabetically.
@ -240,7 +240,7 @@ For operation `delete`, the values of the `options` can be anything
## Extracting information ## Extracting information
The rewriter also offers operation `info` for the types `target` and The rewriter also offers operation `info` for the types `target` and
`kwargs`. When this operation is used, meson will print a JSON dump to `kwargs`. When this operation is used, Meson will print a JSON dump to
stderr, containing all available information to the rewriter about the stderr, containing all available information to the rewriter about the
build target / function kwargs in question. build target / function kwargs in question.

@ -15,7 +15,7 @@ available. This means that Meson must be invoked using the terminal.
If you wish to use the MSVC compiler, you need to run Meson under If you wish to use the MSVC compiler, you need to run Meson under
"Visual Studio command prompt". "Visual Studio command prompt".
All available meson commands are listed on the [commands reference All available Meson commands are listed on the [commands reference
page](Commands.md). page](Commands.md).
## Configuring the build directory ## Configuring the build directory
@ -33,7 +33,7 @@ We invoke Meson with the `setup` command, giving it the location of the build
directory. Meson uses [out of source directory. Meson uses [out of source
builds](http://voices.canonical.com/jussi.pakkanen/2013/04/16/why-you-should-consider-using-separate-build-directories/). builds](http://voices.canonical.com/jussi.pakkanen/2013/04/16/why-you-should-consider-using-separate-build-directories/).
Hint: The syntax of meson is `meson [command] [arguments] [options]`. Hint: The syntax of Meson is `meson [command] [arguments] [options]`.
The `setup` command takes a `builddir` and a `srcdir` argument. If no The `setup` command takes a `builddir` and a `srcdir` argument. If no
`srcdir` is given Meson will deduce the `srcdir` based on `pwd` and `srcdir` is given Meson will deduce the `srcdir` based on `pwd` and
the location of `meson.build`. the location of `meson.build`.
@ -43,7 +43,7 @@ corresponding build backend in the build directory. By default Meson
generates a *debug build*, which turns on basic warnings and debug generates a *debug build*, which turns on basic warnings and debug
information and disables compiler optimizations. information and disables compiler optimizations.
Additionally, the invocation can pass options to meson. The list of Additionally, the invocation can pass options to Meson. The list of
options is documented [here](Builtin-options.md). options is documented [here](Builtin-options.md).
You can specify a different type of build with the `--buildtype` command line You can specify a different type of build with the `--buildtype` command line
@ -100,7 +100,7 @@ compile it in the usual way. A list of backends can be obtained with
## Environment variables ## Environment variables
Sometimes you want to add extra compiler flags, this can be done by Sometimes you want to add extra compiler flags, this can be done by
passing them in environment variables when calling meson. See [the passing them in environment variables when calling Meson. See [the
reference reference
tables](Reference-tables.md#compiler-and-linker-flag-environment-variables) tables](Reference-tables.md#compiler-and-linker-flag-environment-variables)
for a list of all the environment variables. Be aware however these for a list of all the environment variables. Be aware however these
@ -108,7 +108,7 @@ environment variables are only used for the native compiler and will
not affect the compiler used for cross-compiling, where the flags not affect the compiler used for cross-compiling, where the flags
specified in the cross file will be used. specified in the cross file will be used.
Furthermore it is possible to stop meson from adding flags itself by Furthermore it is possible to stop Meson from adding flags itself by
using the `--buildtype=plain` option, in this case you must provide using the `--buildtype=plain` option, in this case you must provide
the full compiler and linker arguments needed. the full compiler and linker arguments needed.

@ -12,10 +12,10 @@ authors:
**Note** Unstable modules make no backwards compatible API guarantees. **Note** Unstable modules make no backwards compatible API guarantees.
The rust module provides helper to integrate rust code into meson. The The rust module provides helper to integrate rust code into Meson. The
goal is to make using rust in meson more pleasant, while still goal is to make using rust in Meson more pleasant, while still
remaining mesonic, this means that it attempts to make rust work more remaining mesonic, this means that it attempts to make Rust work more
like meson, rather than meson work more like rust. like Meson, rather than Meson work more like rust.
## Functions ## Functions

@ -13,13 +13,13 @@ single set of files; the choice of which files to include in each
target depends on the contents of a dictionary or a target depends on the contents of a dictionary or a
`configuration_data` object. The module can be loaded with: `configuration_data` object. The module can be loaded with:
``` meson ```meson
ssmod = import('sourceset') ssmod = import('sourceset')
``` ```
A simple example of using the module looks like this: A simple example of using the module looks like this:
``` meson ```meson
ss = ssmod.source_set() ss = ssmod.source_set()
# Include main.c unconditionally # Include main.c unconditionally
ss.add(files('main.c')) ss.add(files('main.c'))
@ -36,7 +36,7 @@ executable('exe', sources: ssconfig.sources(),
and it would be equivalent to and it would be equivalent to
``` meson ```meson
sources = files('main.c') sources = files('main.c')
dependencies = [] dependencies = []
if config['FEATURE1'] then if config['FEATURE1'] then
@ -61,7 +61,7 @@ different configurations.
### `source_set()` ### `source_set()`
``` meson ```meson
ssmod.source_set() ssmod.source_set()
``` ```
@ -79,7 +79,7 @@ and to query it. The source set becomes immutable after any method but
#### `add()` #### `add()`
``` meson ```meson
source_set.add([when: varnames_and_deps], source_set.add([when: varnames_and_deps],
[if_true: sources_and_deps], [if_true: sources_and_deps],
[if_false: list_of_alt_sources]) [if_false: list_of_alt_sources])
@ -114,7 +114,7 @@ account anymore.
#### `add_all()` #### `add_all()`
``` meson ```meson
source_set.add_all(when: varnames_and_deps, source_set.add_all(when: varnames_and_deps,
if_true: [source_set1, source_set2, ...]) if_true: [source_set1, source_set2, ...])
source_set.add_all(source_set1, source_set2, ...) source_set.add_all(source_set1, source_set2, ...)
@ -126,7 +126,7 @@ For each source set listed in the arguments, `apply()` will consider
their rules only if the conditions in `varnames_and_deps` are their rules only if the conditions in `varnames_and_deps` are
evaluated positively. For example, the following: evaluated positively. For example, the following:
``` meson ```meson
sources_b = ssmod.source_set() sources_b = ssmod.source_set()
sources_b.add(when: 'HAVE_A', if_true: 'file.c') sources_b.add(when: 'HAVE_A', if_true: 'file.c')
sources = ssmod.source_set() sources = ssmod.source_set()
@ -135,14 +135,14 @@ sources.add_all(when: 'HAVE_B', if_true: sources_b)
is equivalent to: is equivalent to:
``` meson ```meson
sources = ssmod.source_set() sources = ssmod.source_set()
sources.add(when: ['HAVE_A', 'HAVE_B'], if_true: 'file.c') sources.add(when: ['HAVE_A', 'HAVE_B'], if_true: 'file.c')
``` ```
#### `all_sources()` #### `all_sources()`
``` meson ```meson
list source_set.all_sources(...) list source_set.all_sources(...)
``` ```
@ -155,7 +155,7 @@ sources are included (if any).
#### `all_dependencies()` *(since 0.52.0)* #### `all_dependencies()` *(since 0.52.0)*
``` meson ```meson
list source_set.all_dependencies(...) list source_set.all_dependencies(...)
``` ```
@ -166,7 +166,7 @@ using `add` (including nested source sets) and that were found.
#### `apply()` #### `apply()`
``` meson ```meson
source_files source_set.apply(conf_data[, strict: false]) source_files source_set.apply(conf_data[, strict: false])
``` ```
@ -193,7 +193,7 @@ The `source_configuration` object provides methods to query the result of an
#### `sources()` #### `sources()`
``` meson ```meson
source_config.sources() source_config.sources()
``` ```
@ -203,7 +203,7 @@ Return the source files corresponding to the applied configuration.
#### `dependencies()` #### `dependencies()`
``` meson ```meson
source_config.dependencies() source_config.dependencies()
``` ```

@ -1,5 +1,5 @@
--- ---
short-description: Using meson projects as subprojects within other meson projects short-description: Using Meson projects as subprojects within other Meson projects
... ...
# Subprojects # Subprojects
@ -19,7 +19,7 @@ becomes a transparent part of the project.
It should be noted that this is only guaranteed to work for subprojects It should be noted that this is only guaranteed to work for subprojects
that are built with Meson. The reason is the simple fact that there is that are built with Meson. The reason is the simple fact that there is
no possible way to do this reliably with mixed build systems. Because of no possible way to do this reliably with mixed build systems. Because of
this, only meson subprojects are described here. this, only Meson subprojects are described here.
[CMake based subprojects](CMake-module.md#cmake-subprojects) are also [CMake based subprojects](CMake-module.md#cmake-subprojects) are also
supported but not guaranteed to work. supported but not guaranteed to work.
@ -293,7 +293,7 @@ is returned at the end instead of retuning success.
Meson will automatically download needed subprojects during configure, Meson will automatically download needed subprojects during configure,
unless **--wrap-mode=nodownload** option is passed. It is sometimes unless **--wrap-mode=nodownload** option is passed. It is sometimes
preferable to download all subprojects in advance, so the meson preferable to download all subprojects in advance, so the Meson
configure can be performed offline. The command-line `meson configure can be performed offline. The command-line `meson
subprojects download` can be used for that, it will download all subprojects download` can be used for that, it will download all
missing subprojects, but will not update already fetched subprojects. missing subprojects, but will not update already fetched subprojects.

@ -88,7 +88,7 @@ $ MESON_TESTTHREADS=5 meson test
Tests can be assigned a priority that determines when a test is Tests can be assigned a priority that determines when a test is
*started*. Tests with higher priority are started first, tests with *started*. Tests with higher priority are started first, tests with
lower priority started later. The default priority is 0, meson makes lower priority started later. The default priority is 0, Meson makes
no guarantee on the ordering of tests with identical priority. no guarantee on the ordering of tests with identical priority.
```meson ```meson
@ -123,7 +123,7 @@ detect this and report these tests as `ERROR`, ignoring the setting of
## Testing tool ## Testing tool
The goal of the meson test tool is to provide a simple way to run The goal of the Meson test tool is to provide a simple way to run
tests in a variety of different ways. The tool is designed to be run tests in a variety of different ways. The tool is designed to be run
in the build directory. in the build directory.
@ -263,8 +263,8 @@ streamed out, and is written only once all tests complete running.
When tests use the `tap` protocol each test will be recorded as a When tests use the `tap` protocol each test will be recorded as a
testsuite container, with each case named by the number of the result. testsuite container, with each case named by the number of the result.
When tests use the `gtest` protocol meson will inject arguments to the When tests use the `gtest` protocol Meson will inject arguments to the
test to generate it's own JUnit XML, which meson will include as part test to generate it's own JUnit XML, which Meson will include as part
of this XML file. of this XML file.
*New in 0.55.0* *New in 0.55.0*

@ -105,7 +105,7 @@ format files
- [OpenTitan](https://github.com/lowRISC/opentitan), an open source silicon Root of Trust (RoT) project. - [OpenTitan](https://github.com/lowRISC/opentitan), an open source silicon Root of Trust (RoT) project.
- [Orc](https://gitlab.freedesktop.org/gstreamer/orc), the Optimized Inner Loop Runtime Compiler - [Orc](https://gitlab.freedesktop.org/gstreamer/orc), the Optimized Inner Loop Runtime Compiler
- [OTS](https://github.com/khaledhosny/ots), the OpenType Sanitizer, parses and serializes OpenType files (OTF, TTF) and WOFF and WOFF2 font files, validating and sanitizing them as it goes. Used by Chromium and Firefox - [OTS](https://github.com/khaledhosny/ots), the OpenType Sanitizer, parses and serializes OpenType files (OTF, TTF) and WOFF and WOFF2 font files, validating and sanitizing them as it goes. Used by Chromium and Firefox
- [Outlier](https://github.com/kerolasa/outlier), a small Hello World style meson example project - [Outlier](https://github.com/kerolasa/outlier), a small Hello World style Meson example project
- [p11-kit](https://github.com/p11-glue/p11-kit), PKCS#11 module aggregator - [p11-kit](https://github.com/p11-glue/p11-kit), PKCS#11 module aggregator
- [Pacman](https://git.archlinux.org/pacman.git/tree/), a package manager for Arch Linux - [Pacman](https://git.archlinux.org/pacman.git/tree/), a package manager for Arch Linux
- [Pango](https://git.gnome.org/browse/pango/), an Internationalized text layout and rendering library - [Pango](https://git.gnome.org/browse/pango/), an Internationalized text layout and rendering library

@ -1,5 +1,5 @@
--- ---
short-description: How to use meson in Visual Studio short-description: How to use Meson in Visual Studio
... ...
# Using with Visual Studio # Using with Visual Studio
@ -32,16 +32,16 @@ are available from a number of sources, including the llvm website. Then you
will need the [llvm toolset extension for visual will need the [llvm toolset extension for visual
studio](https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain). studio](https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain).
You then need to either use a [native file](Native-environments.md#binaries) You then need to either use a [native file](Native-environments.md#binaries)
or `set CC=clang-cl`, and `set CXX=clang-cl` to use those compilers, meson or `set CC=clang-cl`, and `set CXX=clang-cl` to use those compilers, Meson
will do the rest. will do the rest.
This only works with visual studio 2017 and 2019. This only works with visual studio 2017 and 2019.
There is currently no support in meson for clang/c2. There is currently no support in Meson for clang/c2.
# Using Intel-CL (ICL) with Visual Studio # Using Intel-CL (ICL) with Visual Studio
*(new in 0.52.0)* *(new in 0.52.0)*
To use ICL you need only have ICL installed and launch an ICL development To use ICL you need only have ICL installed and launch an ICL development
shell like you would for the ninja backend and meson will take care of it. shell like you would for the ninja backend and Meson will take care of it.

@ -131,7 +131,7 @@ Meson. Because of this Meson allows you to specify a patch URL.
For historic reasons this is called a "patch", however, it serves as an For historic reasons this is called a "patch", however, it serves as an
overlay to add or replace files rather than modifying them. The file overlay to add or replace files rather than modifying them. The file
must be an archive; it is downloaded and automatically extracted into must be an archive; it is downloaded and automatically extracted into
the subproject. The extracted files will include a meson build the subproject. The extracted files will include a Meson build
definition for the given subproject. definition for the given subproject.
This approach makes it extremely simple to embed dependencies that This approach makes it extremely simple to embed dependencies that

@ -43,7 +43,7 @@ pass to the compiler's special argument (such as `-fuse-ld` with clang
and gcc), with the latter it should be an executable, such as and gcc), with the latter it should be an executable, such as
`lld-link.exe`. `lld-link.exe`.
*NOTE* In meson 0.53.0 the `ld` entry in the cross/native file and the *NOTE* In Meson 0.53.0 the `ld` entry in the cross/native file and the
`LD` environment variable were used, this resulted in a large number `LD` environment variable were used, this resulted in a large number
of regressions and was changed in 0.53.1 to `<lang>_ld` and `<comp of regressions and was changed in 0.53.1 to `<lang>_ld` and `<comp
variable>_LD`. variable>_LD`.

@ -1,4 +1,4 @@
## Untable Rust module ## Untable Rust module
A new unstable module has been added to make using Rust with meson easier. A new unstable module has been added to make using Rust with Meson easier.
Currently it adds a single function to ease defining Rust tests. Currently it adds a single function to ease defining Rust tests.

Loading…
Cancel
Save