The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.8 KiB
123 lines
3.8 KiB
--- |
|
title: Release 0.38 |
|
short-description: Release notes for 0.38 |
|
... |
|
|
|
## Uninstall target |
|
|
|
Meson allows you to uninstall an install step by invoking the |
|
uninstall target. This will remove all files installed as part of |
|
install. Note that this does not restore the original files. This also |
|
does not undo changes done by custom install scripts (because they can |
|
do arbitrary install operations). |
|
|
|
## Support for arbitrary test setups |
|
|
|
Sometimes you need to run unit tests with special settings. For |
|
example under Valgrind. Usually this requires extra command line |
|
options for the tool. This is supported with the new *test setup* |
|
feature. For example to set up a test run with Valgrind, you'd write |
|
this in a `meson.build` file: |
|
|
|
```meson |
|
add_test_setup('valgrind', |
|
exe_wrapper : [vg, '--error-exitcode=1', '--leak-check=full'], |
|
timeout_multiplier : 100) |
|
``` |
|
|
|
This tells Meson to run tests with Valgrind using the given options |
|
and multiplying the test timeout values by 100. To run this test setup |
|
simply issue the following command: |
|
|
|
```console |
|
$ mesontest --setup=valgrind |
|
``` |
|
|
|
## Intel C/C++ compiler support |
|
|
|
As usual, just set `CC=icc CXX=icpc` and Meson will use it as the |
|
C/C++ compiler. Currently only Linux is supported. |
|
|
|
## Get values from configuration data objects |
|
|
|
Now it is possible to query values stored in configuration data |
|
objects. |
|
|
|
```meson |
|
cdata.set('key', 'value') |
|
cdata.get('key') # returns 'value' |
|
cdata.get('nokey', 'default') # returns 'default' |
|
cdata.get('nokey') # halts with an error |
|
``` |
|
|
|
## Python 3 module support |
|
|
|
Building Python 3 extension modules has always been possible, but it |
|
is now even easier: |
|
|
|
```meson |
|
py3_mod = import('python3') |
|
pylib = py3_mod.extension_module('modname', |
|
'modsource.c', |
|
dependencies : py3_dep) |
|
``` |
|
|
|
## Default options to subprojects |
|
|
|
Projects can specify overriding values for subprojects' |
|
`default_options` when invoking a subproject: |
|
|
|
```meson |
|
subproject('foo', default_options : ['optname=overridevalue']) |
|
dependency('some-dep', fallback : ['some_subproject', 'some_dep'], default_options : ['optname=overridevalue']) |
|
``` |
|
|
|
The effect is the same as if the default options were written in the |
|
subproject's `project` call. |
|
|
|
## Set targets to be built (or not) by default |
|
|
|
Build targets got a new keyword `build_by_default` which tells whether |
|
the target should be built by default when running e.g. `ninja`. |
|
Custom targets are not built by default but other targets are. Any |
|
target that is tagged as installed or to be built always is also built |
|
by default, regardless of the value of this keyword. |
|
|
|
## Add option to mesonconf to wipe cached data. |
|
|
|
Meson caches the results of dependency lookups. Sometimes these may |
|
get out of sync with the system state. Mesonconf now has a |
|
`--clearcache` option to clear these values so they will be |
|
re-searched from the system upon next compile. |
|
|
|
## Can specify file permissions and owner when installing data |
|
|
|
The new `install_mode` keyword argument can be used to specify file |
|
permissions and uid/gid of files when doing the install. This allows |
|
you to, for example, install suid root scripts. |
|
|
|
## `has_header()` checks are now faster |
|
|
|
When using compilers that implement the [`__has_include()` |
|
preprocessor |
|
macro](https://clang.llvm.org/docs/LanguageExtensions.html#include-file-checking-macros), |
|
the check is now ~40% faster. |
|
|
|
## Array indexing now supports fallback values |
|
|
|
The second argument to the array |
|
[`.get()`](Reference-manual.md#array-object) function is now returned |
|
if the specified index could not be found |
|
|
|
```meson |
|
array = [10, 11, 12, 13] |
|
array.get(0) # this will return `10` |
|
array.get(4) # this will give an error about invalid index |
|
array.get(4, 0) # this will return `0` |
|
``` |
|
|
|
## Silent mode for Mesontest |
|
|
|
The Meson test executor got a new argument `-q` (and `--quiet`) that |
|
suppresses all output of successful tests. This makes interactive |
|
usage nicer because only errors are printed.
|
|
|