| --- |
| 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. |