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.
125 lines
3.6 KiB
125 lines
3.6 KiB
--- |
|
title: Release 0.43 |
|
short-description: Release notes for 0.43 |
|
... |
|
|
|
## Portability improvements to Boost Dependency |
|
|
|
The Boost dependency has been improved to better detect the various |
|
ways to install boost on multiple platforms. At the same time the |
|
`modules` semantics for the dependency has been changed. Previously it |
|
was allowed to specify header directories as `modules` but it wasn't |
|
required. Now, modules are only used to specify libraries that require |
|
linking. |
|
|
|
This is a breaking change and the fix is to remove all modules that aren't |
|
found. |
|
|
|
## Generator learned capture |
|
|
|
Generators can now be configured to capture the standard output. See |
|
`test cases/common/98 gen extra/meson.build` for an example. |
|
|
|
## Can index CustomTarget objects |
|
|
|
The `CustomTarget` object can now be indexed like an array. The |
|
resulting object can be used as a source file for other Targets, this |
|
will create a dependency on the original `CustomTarget`, but will only |
|
insert the generated file corresponding to the index value of the |
|
`CustomTarget`'s `output` keyword. |
|
|
|
```meson |
|
c = custom_target( |
|
... |
|
output : ['out.h', 'out.c'], |
|
) |
|
lib1 = static_library( |
|
'lib1', |
|
[lib1_sources, c[0]], |
|
... |
|
) |
|
exec = executable( |
|
'executable', |
|
c[1], |
|
link_with : lib1, |
|
) |
|
``` |
|
|
|
## Can override executables in the cross file |
|
|
|
The cross file can now be used for overriding the result of |
|
`find_program`. As an example if you want to find the `objdump` |
|
command and have the following definition in your cross file: |
|
|
|
```ini |
|
[binaries] |
|
... |
|
objdump = '/usr/bin/arm-linux-gnueabihf-objdump-6' |
|
``` |
|
|
|
Then issuing the command `find_program('objdump')` will return the |
|
version specified in the cross file. If you need the build machine's |
|
objdump, you can specify the `native` keyword like this: |
|
|
|
```meson |
|
native_objdump = find_program('objdump', native : true) |
|
``` |
|
|
|
## Easier handling of supported compiler arguments |
|
|
|
A common pattern for handling multiple desired compiler arguments, was |
|
to test their presence and add them to an array one-by-one, e.g.: |
|
|
|
```meson |
|
warning_flags_maybe = [ |
|
'-Wsomething', |
|
'-Wanother-thing', |
|
'-Wno-the-other-thing', |
|
] |
|
warning_flags = [] |
|
foreach flag : warning_flags_maybe |
|
if cc.has_argument(flag) |
|
warning_flags += flag |
|
endif |
|
endforeach |
|
cc.add_project_argument(warning_flags) |
|
``` |
|
|
|
A helper has been added for the foreach/has_argument pattern, so you |
|
can now simply do: |
|
|
|
```meson |
|
warning_flags = [ ... ] |
|
flags = cc.get_supported_arguments(warning_flags) |
|
``` |
|
|
|
## Better support for shared libraries in non-system paths |
|
|
|
Meson has support for prebuilt object files and static libraries. This |
|
release adds feature parity to shared libraries that are either in |
|
non-standard system paths or shipped as part of your project. On |
|
systems that support rpath, Meson automatically adds rpath entries to |
|
built targets using manually found external libraries. |
|
|
|
This means that e.g. supporting prebuilt libraries shipped with your |
|
source or provided by subprojects or wrap definitions by writing a |
|
build file like this: |
|
|
|
```meson |
|
project('myprebuiltlibrary', 'c') |
|
|
|
cc = meson.get_compiler('c') |
|
prebuilt = cc.find_library('mylib', dirs : meson.current_source_dir()) |
|
mydep = declare_dependency(include_directories : include_directories('.'), |
|
dependencies : prebuilt) |
|
``` |
|
|
|
Then you can use the dependency object in the same way as any other. |
|
|
|
## wrap-svn |
|
|
|
The [Wrap dependency system](Wrap-dependency-system-manual.md) now |
|
supports [Subversion](https://subversion.apache.org/) (svn). This |
|
support is rudimentary. The repository url has to point to a specific |
|
(sub)directory containing the `meson.build` file (typically `trunk/`). |
|
However, providing a `revision` is supported.
|
|
|