| --- |
| title: Release 0.37 |
| short-description: Release notes for 0.37 |
| ... |
| |
| # New features |
| |
| ## Mesontest |
| |
| Mesontest is a new testing tool that allows you to run your tests in |
| many different ways. As an example you can run tests multiple times: |
| |
| mesontest --repeat=1000 a_test |
| |
| or with an arbitrary wrapper executable: |
| |
| mesontest --wrap='valgrind --tool=helgrind' a_test |
| |
| or under `gdb`, 1000 times in a row. This is handy for tests that fail |
| spuriously, as when the crash happens you are given the full GDB |
| command line: |
| |
| mesontest --repeat=1000 --gdb a_test |
| |
| ## Mesonrewriter |
| |
| Mesonrewriter is an experimental tool to manipulate your build |
| definitions programmatically. It is not installed by default yet but |
| those interested can run it from the source repository. |
| |
| As an example, here is how you would add a source file to a build target: |
| |
| mesonrewriter add --target=program --filename=new_source.c |
| |
| ## Shared modules |
| |
| The new `shared_module` function allows the creation of shared |
| modules, that is, extension modules such as plugins that are meant to |
| be used solely with `dlopen` rather than linking them to targets. |
| |
| ## Gnome module |
| |
| - Detect required programs and print useful errors if missing |
| |
| ### gtkdoc |
| |
| - Allow passing a list of directories to `src_dir` keyword argument |
| - Add `namespace` keyword argument |
| - Add `mode` keyword argument |
| - Fix `gtkdoc-scangobj` finding local libraries |
| |
| ### compile_resources |
| |
| - Add `gresource_bundle` keyword argument to output `.gresource` files |
| - Add `export` and `install_header` keyword arguments |
| - Use depfile support available in GLib >= 2.52.0 |
| |
| ## i18n module |
| |
| - Add `merge_file()` function for creating translated files |
| - Add `preset` keyword argument to included common gettext flags |
| - Read languages from `LINGUAS` file |
| |
| ## LLVM IR compilation |
| |
| Meson has long had support for compiling assembler (GAS) files. In |
| this release we add support for compiling LLVM IR files in a similar |
| way when building with the Clang compiler. Just add it to the list of |
| files when creating a `library` or `executable` target like any other |
| source file. No special handling is required: |
| |
| ```meson |
| executable('some-exe', 'main.c', 'asm-file.S', 'ir-file.ll') |
| ``` |
| |
| As always, you can also mix LLVM IR files with C++, C, and Assembly |
| (GAS) sources. |
| |
| ## ViM indent and syntax files |
| |
| We now include filetype, indent, and syntax files for ViM [with the |
| source |
| tree](https://github.com/mesonbuild/meson/tree/master/data/syntax-highlighting/vim). |
| Please file issues (or pull requests!) for enhancements or if you face |
| any problems using them. |
| |
| ## Push URLs in .wrap files |
| |
| [.wrap files](Using-the-WrapDB.md) for subprojects can now include a |
| separate push URL to allow developers to push changes directly from a |
| subproject git checkout. |
| |
| ## pkg-config dependencies |
| |
| Meson now supports multiple version restrictions while searching for pkg-config dependencies. |
| |
| ```meson |
| # Just want a lower limit |
| dependency('zlib', version : '>1.2.1') |
| # Want both a lower and an upper limit |
| dependency('opencv', version : ['>=2.3.0', '<=3.1.0']) |
| # Want to exclude one specific broken version |
| dependency('foolite', version : ['>=3.12.1', '!=3.13.99']) |
| ``` |
| |
| ## Overriding more binaries with environment variables |
| |
| You can now specify the binary to be used for the following tools by |
| setting the corresponding environment variable |
| |
| | Name | Environment variable | |
| | ---- | -------------------- | |
| | pkg-config | PKG_CONFIG | |
| | readelf | READELF | |
| | nm | NM | |
| |
| ## Support for `localstatedir` |
| |
| Similar to other options such as `bindir` and `datadir`, you can now |
| specify the `localstatedir` for a project by passing |
| `--localstatedir=dir` to `meson` or `-Dlocalstatedir=dir` to |
| `mesonconf` after configuration. You can also access it from inside |
| the `meson.build` file with `get_option('localstatedir')`. |
| |
| ## New compiler function `symbols_have_underscore_prefix` |
| |
| Checks if the compiler prefixes an underscore to C global symbols with |
| the default calling convention. This is useful when linking to |
| compiled assembly code, or other code that does not have its C symbol |
| mangling handled transparently by the compiler. |
| |
| ```meson |
| cc = meson.get_compiler('c') |
| conf = configuration_data() |
| if cc.symbols_have_underscore_prefix() |
| conf.set('SYMBOLS_HAVE_UNDERSCORE', true) |
| endif |
| ``` |
| |
| C symbol mangling is platform and architecture dependent, and a helper |
| function is needed to detect it. For example, Windows 32-bit prefixes |
| underscore, but 64-bit does not. Linux does not prefix an underscore |
| but OS X does. |
| |
| ## Vala |
| |
| GLib Resources compiled with |
| [`gnome.compile_resources`](Gnome-module.md#compile_resources) that |
| are added to the sources of a Vala build target will now cause the |
| appropriate `--gresources` flag to be passed to the Vala compiler so |
| you don't need to add that yourself to `vala_args:`. |
| |
| ## Improvements to install scripts |
| |
| You can now pass arguments to install scripts added with |
| [`meson.add_install_script()`](Reference-manual.md#meson-object). All |
| arguments after the script name will be passed to the script. |
| |
| The `MESON_INSTALL_DESTDIR_PREFIX` environment variable is now set |
| when install scripts are called. This contains the values of the |
| `DESTDIR` environment variable and the `prefix` option passed to Meson |
| joined together. This is useful because both those are usually |
| absolute paths, and joining absolute paths in a cross-platform way is |
| tricky. [`os.path.join` in |
| Python](https://docs.python.org/3/library/os.path.html#os.path.join) |
| will discard all previous path segments when it encounters an absolute |
| path, and simply concatenating them will not work on Windows where |
| absolute paths begin with the drive letter. |
| |
| ## More install directories |
| |
| Added new options `sbindir` and `infodir` that can be used for |
| installation. |