| --- |
| 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. |