diff options
Diffstat (limited to 'meson/docs/markdown/Release-notes-for-0.37.0.md')
-rw-r--r-- | meson/docs/markdown/Release-notes-for-0.37.0.md | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/meson/docs/markdown/Release-notes-for-0.37.0.md b/meson/docs/markdown/Release-notes-for-0.37.0.md new file mode 100644 index 000000000..930c1d1f4 --- /dev/null +++ b/meson/docs/markdown/Release-notes-for-0.37.0.md @@ -0,0 +1,173 @@ +--- +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. |