|
|
|
---
|
|
|
|
title: Release 0.44
|
|
|
|
short-description: Release notes for 0.44
|
|
|
|
...
|
|
|
|
|
|
|
|
# New features
|
|
|
|
|
|
|
|
## Added warning function
|
|
|
|
|
|
|
|
This function prints its argument to the console prefixed by "WARNING:" in
|
|
|
|
yellow color. A simple example:
|
|
|
|
|
|
|
|
warning('foo is deprecated, please use bar instead')
|
|
|
|
|
|
|
|
|
|
|
|
## Adds support for additional Qt5-Module keyword `moc_extra_arguments`
|
|
|
|
|
|
|
|
When `moc`-ing sources, the `moc` tool does not know about any
|
|
|
|
preprocessor macros. The generated code might not match the input
|
|
|
|
files when the linking with the moc input sources happens.
|
|
|
|
|
|
|
|
This amendment allows to specify a a list of additional arguments
|
|
|
|
passed to the `moc` tool. They are called `moc_extra_arguments`.
|
|
|
|
|
|
|
|
|
|
|
|
## Prefix-dependent defaults for sysconfdir, localstatedir and sharedstatedir
|
|
|
|
|
|
|
|
These options now default in a way consistent with
|
|
|
|
[FHS](http://refspecs.linuxfoundation.org/fhs.shtml) and common usage.
|
|
|
|
|
|
|
|
If prefix is `/usr`, default sysconfdir to `/etc`, localstatedir to `/var` and
|
|
|
|
sharedstatedir to `/var/lib`.
|
|
|
|
|
|
|
|
If prefix is `/usr/local` (the default), default localstatedir to `/var/local`
|
|
|
|
and sharedstatedir to `/var/local/lib`.
|
|
|
|
|
|
|
|
|
|
|
|
## An array type for user options
|
|
|
|
|
|
|
|
Previously to have an option that took more than one value a string
|
|
|
|
value would have to be created and split, but validating this was
|
|
|
|
difficult. A new array type has been added to the meson_options.txt
|
|
|
|
for this case. It works like a 'combo', but allows more than one
|
|
|
|
option to be passed. The values can optionally be validated against a
|
|
|
|
list of valid values. When used on the command line (with -D), values
|
|
|
|
are passed as a comma separated list.
|
|
|
|
|
|
|
|
```meson
|
|
|
|
option('array_opt', type : 'array', choices : ['one', 'two', 'three'], value : ['one'])
|
|
|
|
```
|
|
|
|
|
|
|
|
These can be overwritten on the command line,
|
|
|
|
|
|
|
|
```meson
|
|
|
|
meson _build -Darray_opt=two,three
|
|
|
|
```
|
|
|
|
|
|
|
|
## LLVM dependency supports both dynamic and static linking
|
|
|
|
|
|
|
|
The LLVM dependency has been improved to consistently use dynamic linking.
|
|
|
|
Previously recent version (>= 3.9) would link dynamically while older versions
|
|
|
|
would link statically.
|
|
|
|
|
|
|
|
Now LLVM also accepts the `static` keyword to enable statically linking to LLVM
|
|
|
|
modules instead of dynamically linking.
|
|
|
|
|
|
|
|
|
|
|
|
## Added `if_found` to subdir
|
|
|
|
|
|
|
|
Added a new keyword argument to the `subdir` command. It is given a
|
|
|
|
list of dependency objects and the function will only recurse in the
|
|
|
|
subdirectory if they are all found. Typical usage goes like this.
|
|
|
|
|
|
|
|
```meson
|
|
|
|
d1 = dependency('foo') # This is found
|
|
|
|
d2 = dependency('bar') # This is not found
|
|
|
|
|
|
|
|
subdir('somedir', if_found : [d1, d2])
|
|
|
|
```
|
|
|
|
|
|
|
|
In this case the subdirectory would not be entered since `d2` could
|
|
|
|
not be found.
|
|
|
|
|
|
|
|
## `get_unquoted()` method for the `configuration` data object
|
|
|
|
|
|
|
|
New convenience method that allows reusing a variable value
|
|
|
|
defined quoted. Useful in C for config.h strings for example.
|
|
|
|
|
|
|
|
|
|
|
|
## Added disabler object
|
|
|
|
|
|
|
|
A disabler object is a new kind of object that has very specific
|
|
|
|
semantics. If it is used as part of any other operation such as an
|
|
|
|
argument to a function call, logical operations etc, it will cause the
|
|
|
|
operation to not be evaluated. Instead the return value of said
|
|
|
|
operation will also be the disabler object.
|
|
|
|
|
|
|
|
For example if you have an setup like this:
|
|
|
|
|
|
|
|
```meson
|
|
|
|
dep = dependency('foo')
|
|
|
|
lib = shared_library('mylib', 'mylib.c',
|
|
|
|
dependencies : dep)
|
|
|
|
exe = executable('mytest', 'mytest.c',
|
|
|
|
link_with : lib)
|
|
|
|
test('mytest', exe)
|
|
|
|
```
|
|
|
|
|
|
|
|
If you replace the dependency with a disabler object like this:
|
|
|
|
|
|
|
|
```meson
|
|
|
|
dep = disabler()
|
|
|
|
lib = shared_library('mylib', 'mylib.c',
|
|
|
|
dependencies : dep)
|
|
|
|
exe = executable('mytest', 'mytest.c',
|
|
|
|
link_with : lib)
|
|
|
|
test('mytest', exe)
|
|
|
|
```
|
|
|
|
|
|
|
|
Then the shared library, executable and unit test are not
|
|
|
|
created. This is a handy mechanism to cut down on the number of `if`
|
|
|
|
statements.
|
|
|
|
|
|
|
|
|
|
|
|
## Config-Tool based dependencies gained a method to get arbitrary options
|
|
|
|
|
|
|
|
A number of dependencies (CUPS, LLVM, pcap, WxWidgets, GnuStep) use a config
|
|
|
|
tool instead of pkg-config. As of this version they now have a
|
|
|
|
`get_configtool_variable` method, which is analogous to the
|
|
|
|
`get_pkgconfig_variable` for pkg config.
|
|
|
|
|
|
|
|
```meson
|
|
|
|
dep_llvm = dependency('LLVM')
|
|
|
|
llvm_inc_dir = dep_llvm.get_configtool_variable('includedir')
|
|
|
|
```
|
|
|
|
|
|
|
|
## Embedded Python in Windows MSI packages
|
|
|
|
|
|
|
|
Meson now ships an internal version of Python in the MSI installer packages.
|
|
|
|
This means that it can run Python scripts that are part of your build
|
|
|
|
transparently. That is, if you do the following:
|
|
|
|
|
|
|
|
```meson
|
|
|
|
myprog = find_program('myscript.py')
|
|
|
|
```
|
|
|
|
|
|
|
|
Then Meson will run the script with its internal Python version if necessary.
|