The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
6.5 KiB
187 lines
6.5 KiB
--- |
|
title: Release 1.2.0 |
|
short-description: Release notes for 1.2.0 |
|
... |
|
|
|
# New features |
|
|
|
Meson 1.2.0 was released on 17 July 2023 |
|
## Added Metrowerks C/C++ toolchains |
|
|
|
Added support for the Metrowerks Embedded ARM and Metrowerks Embedded PowerPC toolchains (https://www.nxp.com/docs/en/reference-manual/CWMCUKINCMPREF.pdf). |
|
|
|
The implementation is somewhat experimental. It has been tested on a few projects and works fairly well, but may have issues. |
|
|
|
## Added str.splitlines method |
|
|
|
[[str.splitlines]] can now be used to split a string into an array of lines. |
|
|
|
## `generator.process(generator.process(...))` |
|
|
|
Added support for code like this: |
|
```meson |
|
gen1 = generator(...) |
|
gen2 = generator(...) |
|
gen2.process(gen1.process('input.txt')) |
|
``` |
|
|
|
## Extra files keyword in `declare_dependency` |
|
|
|
`declare_dependency` have a new `extra_files` keyword, |
|
to add extra files to a target. It is used mostly for IDE integration. |
|
|
|
## Added a new '--genvslite' option for use with 'meson setup ...' |
|
|
|
To facilitate a more usual visual studio work-flow of supporting and switching between |
|
multiple build configurations (buildtypes) within the same solution, among other |
|
[reasons](https://github.com/mesonbuild/meson/pull/11049), use of this new option |
|
has the effect of setting up multiple ninja back-end-configured build directories, |
|
named with their respective buildtype suffix. E.g. 'somebuilddir_debug', |
|
'somebuilddir_release', etc. as well as a '_vs'-suffixed directory that contains the |
|
generated multi-buildtype solution. Building/cleaning/rebuilding in the solution |
|
now launches the meson build (compile) of the corresponding buildtype-suffixed build |
|
directory, instead of using Visual Studio's native engine. |
|
|
|
## `gnome.generate_gir()` now supports `env` kwarg |
|
|
|
`gnome.generate_gir()` now accepts the `env` kwarg which lets you set environment variables. |
|
|
|
## More data in introspection files |
|
|
|
- Used compilers are listed in `intro-compilers.json` |
|
- Information about `host`, `build` and `target` machines |
|
are lister in `intro-machines.json` |
|
- `intro-dependencies.json` now includes internal dependencies, |
|
and relations between dependencies. |
|
- `intro-targets.json` now includes dependencies, `vs_module_defs`, |
|
`win_subsystem`, and linker parameters. |
|
|
|
## Machine objects get `kernel` and `subsystem` properties |
|
|
|
Meson has traditionally provided a `system` property to detect the |
|
system being run on. However this is not enough to reliably |
|
differentiate between e.g. an iOS platform from a watchOS one. Two new |
|
properties, namely `kernel` and `subsystem` have been added so these |
|
setups can be reliably detected. |
|
|
|
These new properties are not necessary in cross files for now, but if |
|
they are not defined and a build file tries to access them, Meson will |
|
exit with a hard error. It is expected that at some point in the |
|
future defining the new properties will become mandatory. |
|
|
|
## default_options and override_options may now be dictionaries |
|
|
|
Instead of passing them as `default_options : ['key=value']`, they can now be |
|
passed as `default_options : {'key': 'value'}`, and the same for |
|
`override_options`. |
|
|
|
## New override of `find_program('meson')` |
|
|
|
In some cases, it has been useful for build scripts to access the Meson command |
|
used to invoke the build script. This has led to various ad-hoc solutions that |
|
can be very brittle and project-specific. |
|
|
|
```meson |
|
meson_prog = find_program('meson') |
|
``` |
|
|
|
This call will supply the build script with an external program pointing at the |
|
invoked Meson. |
|
|
|
Because Meson also uses `find_program` for program lookups internally, this |
|
override will also be handled in cases similar to the following: |
|
|
|
```meson |
|
custom_target( |
|
# ... |
|
command: [ |
|
'meson', |
|
], |
|
# ... |
|
) |
|
|
|
run_command( |
|
'meson', |
|
# ... |
|
) |
|
|
|
run_target( |
|
'tgt', |
|
command: [ |
|
'meson', |
|
# ... |
|
] |
|
) |
|
``` |
|
|
|
## Find more specific python version on Windows |
|
|
|
You can now use `python3.x`, where `x` is the minor version, |
|
to find a more specific version of python on Windows, when |
|
using the python module. On other platforms, it was already |
|
working as `python3.x` is the executable name. |
|
|
|
## Python module can now compile bytecode |
|
|
|
A new builtin option is available: `-Dpython.bytecompile=2`. It can be used to |
|
compile bytecode for all pure python files installed via the python module. |
|
|
|
## rust.bindgen allows passing extra arguments to rustc |
|
|
|
This may be necessary to pass extra `cfg`s or to change warning levels. |
|
|
|
## Support for defining crate names of Rust dependencies in Rust targets |
|
|
|
Rust supports defining a different crate name for a dependency than what the |
|
actual crate name during compilation of that dependency was. |
|
|
|
This allows using multiple versions of the same crate at once, or simply using |
|
a shorter name of the crate for convenience. |
|
|
|
```meson |
|
a_dep = dependency('some-very-long-name') |
|
|
|
my_executable = executable('my-executable', 'src/main.rs', |
|
rust_dependency_map : { |
|
'some_very_long_name' : 'a', |
|
}, |
|
dependencies : [a_dep], |
|
) |
|
``` |
|
|
|
## A machine file may be used to pass extra arguments to clang in a bindgen call |
|
|
|
Because of the way that bindgen proxies arguments to clang the only choice to |
|
add extra arguments currently is to wrap bindgen in a script, since the |
|
arguments must come after a `--`. This is inelegant, and not very portable. Now |
|
a `bindgen_clang_arguments` field may be placed in the machine file for the host |
|
machine, and these arguments will be added to every bindgen call for clang. This |
|
is intended to be useful for things like injecting `--target` arguments. |
|
|
|
## Add a `link_with` keyword to `rust.test()` |
|
|
|
This can already be be worked around by creating `declare_dependency()` objects |
|
to pass to the `dependencies` keyword, but this cuts out the middle man. |
|
|
|
## Rust now supports the b_ndebug option |
|
|
|
Which controls the `debug_assertions` cfg, which in turn controls |
|
`debug_assert!()` macro. This macro is roughly equivalent to C's `assert()`, as |
|
it can be toggled with command line options, unlike Rust's `assert!()`, which |
|
cannot be turned off, and is not designed to be. |
|
|
|
## Wildcards in list of tests to run |
|
|
|
The `meson test` command now accepts wildcards in the list of test names. |
|
For example `meson test basic*` will run all tests whose name begins |
|
with "basic". |
|
|
|
meson will report an error if the given test name does not match any |
|
existing test. meson will log a warning if two redundant test names |
|
are given (for example if you give both "proj:basic" and "proj:"). |
|
|
|
## New for the generation of Visual Studio vcxproj projects |
|
|
|
When vcxproj is generated, another file vcxproj.filters is generated in parallel. |
|
It enables to set a hierarchy of the files inside the solution following their place on filesystem. |
|
|
|
|