New features
Dependency Handler for LLVM
Native support for linking against LLVM using the dependency
function.
vcs_tag keyword fallback is now optional
The fallback
keyword in vcs_tag()
is now optional. If not given,
its value defaults to the return value of meson.project_version()
.
Better quoting of special characters in ninja command invocations
The ninja backend now quotes special characters that may be interpreted by ninja itself, providing better interoperability with custom commands. This support may not be perfect; please report any issues found with special characters to the issue tracker.
Pkgconfig support for custom variables
The Pkgconfig module object can add arbitrary variables to the generated .pc
file with the new variables
keyword:
pkg.generate(libraries : libs,
subdirs : h,
version : '1.0',
name : 'libsimple',
filebase : 'simple',
description : 'A simple demo library.',
variables : ['datadir=${prefix}/data'])
A target for creating tarballs
Creating distribution tarballs is simple:
ninja dist
This will create a .tar.xz
archive of the source code including
submodules without any revision control information. This command also
verifies that the resulting archive can be built, tested and
installed. This is roughly equivalent to the distcheck
target in
other build systems. Currently this only works for projects using Git
and only with the Ninja backend.
Support for passing arguments to Rust compiler
Targets for building rust now take a rust_args
keyword.
Code coverage export for tests
Code coverage can be generated for tests by passing the --cov
argument to
the run_tests.py
test runner. Note, since multiple processes are used,
coverage must be combined before producing a report (coverage3 combine
).
Reproducible builds
All known issues have been fixed and Meson can now build reproducible Debian packages out of the box.
Extended template substitution in configure_file
The output argument of configure_file()
is parsed for @BASENAME@ and
@PLAINNAME@ substitutions.
Cross-config property for overriding whether an exe wrapper is needed
The new needs_exe_wrapper
property allows overriding auto-detection for
cases where build_machine
appears to be compatible with host_machine
,
but actually isn't. For example when:
-
build_machine
is macOS andhost_machine
is the iOS Simulator - the
build_machine
's libc is glibc but thehost_machine
libc is uClibc - code relies on kernel features not available on the
build_machine
Support for capturing stdout of a command in configure_file
configure_file()
now supports a new keyword - capture
. When this argument
is set to true, Meson captures stdout
of the command
and writes it to
the target file specified as output
.
The results of the search are