parent
d1f3f1d023
commit
0cf4a6ab3a
21 changed files with 316 additions and 288 deletions
@ -1,17 +1,308 @@ |
|||||||
--- |
--- |
||||||
title: Release 0.48 |
title: Release 0.48 |
||||||
short-description: Release notes for 0.48 (preliminary) |
short-description: Release notes for 0.48 |
||||||
... |
... |
||||||
|
|
||||||
# New features |
# New features |
||||||
|
|
||||||
This page is a placeholder for the eventual release notes. |
## Toggles for build type, optimization and vcrt type |
||||||
|
|
||||||
Notable new features should come with release note updates. This is |
Since the very beginning Meson has provided different project types to |
||||||
done by creating a file snippet called `snippets/featurename.md` and |
use, such as *debug* and *minsize*. There is also a *plain* type that |
||||||
whose contents should look like this: |
adds nothing by default but instead makes it the user's responsibility |
||||||
|
to add everything by hand. This works but is a bit tedious. |
||||||
|
|
||||||
## Feature name |
In this release we have added new new options to manually toggle |
||||||
|
e.g. optimization levels and debug info so those can be changed |
||||||
|
independently of other options. For example by default the debug |
||||||
|
buildtype has no optmization enabled at all. If you wish to use GCC's |
||||||
|
`-Og` instead, you could set it with the following command: |
||||||
|
|
||||||
A short description explaining the new feature and how it should be used. |
``` |
||||||
|
meson configure -Doptimization=g |
||||||
|
``` |
||||||
|
|
||||||
|
Similarly we have added a toggle option to select the version of |
||||||
|
Visual Studio C runtime to use. By default it uses the debug runtime |
||||||
|
DLL debug builds and release DLL for release builds but this can be |
||||||
|
manually changed with the new base option `b_vscrt`. |
||||||
|
|
||||||
|
## Meson warns if two calls to configure_file() write to the same file |
||||||
|
|
||||||
|
If two calls to [`configure_file()`](#Reference-manual.md#configure_file) |
||||||
|
write to the same file Meson will print a `WARNING:` message during |
||||||
|
configuration. For example: |
||||||
|
```meson |
||||||
|
project('configure_file', 'cpp') |
||||||
|
|
||||||
|
configure_file( |
||||||
|
input: 'a.in', |
||||||
|
output: 'out', |
||||||
|
command: ['./foo.sh'] |
||||||
|
) |
||||||
|
configure_file( |
||||||
|
input: 'a.in', |
||||||
|
output: 'out', |
||||||
|
command: ['./foo.sh'] |
||||||
|
) |
||||||
|
|
||||||
|
``` |
||||||
|
|
||||||
|
This will output: |
||||||
|
|
||||||
|
``` |
||||||
|
The Meson build system |
||||||
|
Version: 0.47.0.dev1 |
||||||
|
Source dir: /path/to/srctree |
||||||
|
Build dir: /path/to/buildtree |
||||||
|
Build type: native build |
||||||
|
Project name: configure_file |
||||||
|
Project version: undefined |
||||||
|
Build machine cpu family: x86_64 |
||||||
|
Build machine cpu: x86_64 |
||||||
|
Configuring out with command |
||||||
|
WARNING: Output file out for configure_file overwritten. First time written in line 3 now in line 8 |
||||||
|
Configuring out with command |
||||||
|
Build targets in project: 0 |
||||||
|
Found ninja-1.8.2 at /usr/bin/ninja |
||||||
|
``` |
||||||
|
|
||||||
|
## New kwarg `console` for `custom_target()` |
||||||
|
|
||||||
|
This keyword argument conflicts with `capture`, and is meant for |
||||||
|
commands that are resource-intensive and take a long time to |
||||||
|
finish. With the Ninja backend, setting this will add this target to |
||||||
|
[Ninja's `console` |
||||||
|
pool](https://ninja-build.org/manual.html#_the_literal_console_literal_pool), |
||||||
|
which has special properties such as not buffering stdout and |
||||||
|
serializing all targets in this pool. |
||||||
|
|
||||||
|
The primary use-case for this is to be able to run external commands |
||||||
|
that take a long time to exeute. Without setting this, the user does |
||||||
|
not receive any feedback about what the program is doing. |
||||||
|
|
||||||
|
## `dependency(version:)` now applies to all dependency types |
||||||
|
|
||||||
|
Previously, version constraints were only enforced for dependencies found using |
||||||
|
the pkg-config dependency provider. These constraints now apply to dependencies |
||||||
|
found using any dependency provider. |
||||||
|
|
||||||
|
Some combinations of dependency, host and method do not currently support |
||||||
|
discovery of the version. In these cases, the dependency will not be found if a |
||||||
|
version constraint is applied, otherwise the `version()` method for the |
||||||
|
dependency object will return `'unknown'`. |
||||||
|
|
||||||
|
(If discovering the version in one of these combinations is important to you, |
||||||
|
and a method exists to determine the version in that case, please file an issue |
||||||
|
with as much information as possible.) |
||||||
|
|
||||||
|
## python3 module is deprecated |
||||||
|
|
||||||
|
A generic module `python` has been added in Meson `0.46.0` and has a superset of |
||||||
|
the features implemented by the previous `python3` module. |
||||||
|
|
||||||
|
In most cases, it is a simple matter of renaming: |
||||||
|
```meson |
||||||
|
py3mod = import('python3') |
||||||
|
python = py3mod.find_python() |
||||||
|
``` |
||||||
|
|
||||||
|
becomes |
||||||
|
|
||||||
|
```meson |
||||||
|
pymod = import('python') |
||||||
|
python = pymod.find_installation() |
||||||
|
``` |
||||||
|
|
||||||
|
## Dictionary addition |
||||||
|
|
||||||
|
Dictionaries can now be added, values from the second dictionary overrides values |
||||||
|
from the first |
||||||
|
|
||||||
|
```meson |
||||||
|
d1 = {'a' : 'b'} |
||||||
|
d3 = d1 + {'a' : 'c'} |
||||||
|
d3 += {'d' : 'e'} |
||||||
|
``` |
||||||
|
|
||||||
|
## Dist scripts |
||||||
|
|
||||||
|
You can now specify scripts that are run as part of the `dist` |
||||||
|
target. An example usage would go like this: |
||||||
|
|
||||||
|
```meson |
||||||
|
project('foo', 'c') |
||||||
|
|
||||||
|
# other stuff here |
||||||
|
|
||||||
|
meson.add_dist_script('dist_cleanup.py') |
||||||
|
``` |
||||||
|
|
||||||
|
## Fatal warnings |
||||||
|
|
||||||
|
A new command line option has been added: `--fatal-meson-warnings`. When enabled, any |
||||||
|
warning message printed by Meson will be fatal and raise an exception. It is |
||||||
|
intended to be used by developers and CIs to easily catch deprecation warnings, |
||||||
|
or any other potential issues. |
||||||
|
|
||||||
|
## Helper methods added for checking GNU style attributes: __attribute__(...) |
||||||
|
|
||||||
|
A set of new helpers have been added to the C and C++ compiler objects for |
||||||
|
checking GNU style function attributes. These are not just simpler to use, they |
||||||
|
may be optimized to return fast on compilers that don't support these |
||||||
|
attributes. Currently this is true for MSVC. |
||||||
|
|
||||||
|
```meson |
||||||
|
cc = meson.get_compiler('c') |
||||||
|
if cc.has_function_attribute('aligned') |
||||||
|
add_project_arguments('-DHAVE_ALIGNED', language : 'c') |
||||||
|
endif |
||||||
|
``` |
||||||
|
|
||||||
|
Would replace code like: |
||||||
|
|
||||||
|
```meson |
||||||
|
if cc.compiles('''into foo(void) __attribute__((aligned(32)))''') |
||||||
|
add_project_arguments('-DHAVE_ALIGNED', language : 'c') |
||||||
|
endif |
||||||
|
``` |
||||||
|
|
||||||
|
Additionally, a multi argument version has been added: |
||||||
|
|
||||||
|
```meson |
||||||
|
foreach s : cc.get_supported_function_attributes(['hidden', 'alias']) |
||||||
|
add_project_arguments('-DHAVE_@0@'.format(s.to_upper()), language : 'c') |
||||||
|
endforeach |
||||||
|
``` |
||||||
|
|
||||||
|
## gnome.generate_gir() now optionally accepts multiple libraries |
||||||
|
|
||||||
|
The GNOME module can now generate a single gir for multiple libraries, which |
||||||
|
is something `g-ir-scanner` supported, but had not been exposed yet. |
||||||
|
|
||||||
|
gnome.generate_gir() will now accept multiple positional arguments, if none |
||||||
|
of these arguments are an `Executable` instance. |
||||||
|
|
||||||
|
## Hotdoc module |
||||||
|
|
||||||
|
A new module has been written to ease generation of |
||||||
|
[hotdoc](https://hotdoc.github.io/) based documentation. It supports |
||||||
|
complex use cases such as hotdoc subprojects (to create documentation |
||||||
|
portals) and makes it straight forward to leverage full capabilities |
||||||
|
of hotdoc. |
||||||
|
|
||||||
|
Simple usage: |
||||||
|
|
||||||
|
``` meson |
||||||
|
hotdoc = import('hotdoc') |
||||||
|
|
||||||
|
hotdoc.generate_doc( |
||||||
|
'foobar', |
||||||
|
c_smart_index: true, |
||||||
|
project_version: '0.1', |
||||||
|
sitemap: 'sitemap.txt', |
||||||
|
index: 'index.md', |
||||||
|
c_sources: ['path/to/file.c'], |
||||||
|
languages: ['c'], |
||||||
|
install: true, |
||||||
|
) |
||||||
|
``` |
||||||
|
|
||||||
|
## i18n.merge_file() now fully supports variable substitutions defined in custom_target() |
||||||
|
|
||||||
|
Filename substitutions like @BASENAME@ and @PLAINNAME@ were previously |
||||||
|
accepted but the name of the build target wasn't altered leading to |
||||||
|
colliding target names when using the substitution twice. |
||||||
|
i18n.merge_file() now behaves as custom_target() in this regard. |
||||||
|
|
||||||
|
## Projects args can be set separately for cross and native builds (potentially breaking change) |
||||||
|
|
||||||
|
It has been a longstanding bug (or let's call it a "delayed bug fix") |
||||||
|
that if yo do this: |
||||||
|
|
||||||
|
```meson |
||||||
|
add_project_arguments('-DFOO', language : 'c') |
||||||
|
``` |
||||||
|
|
||||||
|
Then the flag is used both in native and cross compilations. This is |
||||||
|
very confusing and almost never what you want. To fix this a new |
||||||
|
keyword `native` has been added to all functions that add arguments, |
||||||
|
namely `add_global_arguments`, `add_global_link_arguments`, |
||||||
|
`add_project_arguments` and `add_project_link_arguments` that behaves |
||||||
|
like the following: |
||||||
|
|
||||||
|
``` |
||||||
|
## Added to native builds when compiling natively and to cross |
||||||
|
## compilations when doing cross compiles. |
||||||
|
add_project_arguments(...) |
||||||
|
|
||||||
|
## Added only to native compilations, not used in cross compilations. |
||||||
|
add_project_arguments(..., native : true) |
||||||
|
|
||||||
|
## Added only to cross compilations, not used in native compilations. |
||||||
|
add_project_arguments(..., native : false) |
||||||
|
``` |
||||||
|
|
||||||
|
Also remember that cross compilation is a property of each |
||||||
|
target. There can be target that are compiled with the native compiler |
||||||
|
and some which are compiled with the cross compiler. |
||||||
|
|
||||||
|
Unfortunately this change is backwards incompatible and may cause some |
||||||
|
projects to fail building. However this should be very rare in practice. |
||||||
|
|
||||||
|
## More flexible `override_find_program()`. |
||||||
|
|
||||||
|
It is now possible to pass an `executable` to |
||||||
|
`override_find_program()` if the overridden program is not used during |
||||||
|
configure. |
||||||
|
|
||||||
|
This is particularly useful for fallback dependencies like Protobuf |
||||||
|
that also provide a tool like protoc. |
||||||
|
|
||||||
|
## `shared_library()` now supports setting dylib compatibility and current version |
||||||
|
|
||||||
|
Now, by default `shared_library()` sets `-compatibility_version` and |
||||||
|
`-current_version` of a macOS dylib using the `soversion`. |
||||||
|
|
||||||
|
This can be overriden by using the `darwin_versions:` kwarg to |
||||||
|
[`shared_library()`](Reference-manual.md#shared_library). As usual, you can |
||||||
|
also pass this kwarg to `library()` or `build_target()` and it will be used in |
||||||
|
the appropriate circumstances. |
||||||
|
|
||||||
|
## Version comparison |
||||||
|
|
||||||
|
`dependency(version:)` and other version constraints now handle versions |
||||||
|
containing non-numeric characters better, comparing versions using the rpmvercmp |
||||||
|
algorithm (as using the `pkg-config` autoconf macro `PKG_CHECK_MODULES` does). |
||||||
|
|
||||||
|
This is a breaking change for exact comparison constraints which rely on the |
||||||
|
previous comparison behaviour of extending the compared versions with `'0'` |
||||||
|
elements, up to the same length of `'.'`-separated elements. |
||||||
|
|
||||||
|
For example, a version of `'0.11.0'` would previously match a version constraint |
||||||
|
of `'==0.11'`, but no longer does, being instead considered strictly greater. |
||||||
|
|
||||||
|
Instead, use a version constraint which exactly compares with the precise |
||||||
|
version required, e.g. `'==0.11.0'`. |
||||||
|
|
||||||
|
## Keyword argument for GNU symbol visibility |
||||||
|
|
||||||
|
Build targets got a new keyword, `gnu_symbol_visibility` that controls |
||||||
|
how symbols are exported from shared libraries. This is most commonly |
||||||
|
used to hide implementation symbols like this: |
||||||
|
|
||||||
|
```meson |
||||||
|
shared_library('mylib', ... |
||||||
|
gnu_symbol_visibility: 'hidden') |
||||||
|
``` |
||||||
|
|
||||||
|
In this case only symbols explicitly marked as visible in the source |
||||||
|
files get exported. |
||||||
|
|
||||||
|
## Git wraps can now clone submodules automatically |
||||||
|
|
||||||
|
To enable this, the following needs to be added to the `.wrap` file: |
||||||
|
|
||||||
|
```ini |
||||||
|
clone-recursive=true |
||||||
|
``` |
@ -0,0 +1,17 @@ |
|||||||
|
--- |
||||||
|
title: Release 0.49 |
||||||
|
short-description: Release notes for 0.49 (preliminary) |
||||||
|
... |
||||||
|
|
||||||
|
# New features |
||||||
|
|
||||||
|
This page is a placeholder for the eventual release notes. |
||||||
|
|
||||||
|
Notable new features should come with release note updates. This is |
||||||
|
done by creating a file snippet called `snippets/featurename.md` and |
||||||
|
whose contents should look like this: |
||||||
|
|
||||||
|
## Feature name |
||||||
|
|
||||||
|
A short description explaining the new feature and how it should be used. |
||||||
|
|
@ -1,21 +0,0 @@ |
|||||||
## Toggles for build type, optimization and vcrt type |
|
||||||
|
|
||||||
Since the very beginning Meson has provided different project types to |
|
||||||
use, such as *debug* and *minsize*. There is also a *plain* type that |
|
||||||
adds nothing by default but instead makes it the user's responsibility |
|
||||||
to add everything by hand. This works but is a bit tedious. |
|
||||||
|
|
||||||
In this release we have added new new options to manually toggle |
|
||||||
e.g. optimization levels and debug info so those can be changed |
|
||||||
independently of other options. For example by default the debug |
|
||||||
buildtype has no optmization enabled at all. If you wish to use GCC's |
|
||||||
`-Og` instead, you could set it with the following command: |
|
||||||
|
|
||||||
``` |
|
||||||
meson configure -Doptimization=g |
|
||||||
``` |
|
||||||
|
|
||||||
Similarly we have added a toggle option to select the version of |
|
||||||
Visual Studio C runtime to use. By default it uses the debug runtime |
|
||||||
DLL debug builds and release DLL for release builds but this can be |
|
||||||
manually changed with the new base option `b_vscrt`. |
|
@ -1,39 +0,0 @@ |
|||||||
## Meson warns if two calls to configure_file() write to the same file |
|
||||||
|
|
||||||
If two calls to [`configure_file()`](#Reference-manual.md#configure_file) |
|
||||||
write to the same file Meson will print a `WARNING:` message during |
|
||||||
configuration. For example: |
|
||||||
```meson |
|
||||||
project('configure_file', 'cpp') |
|
||||||
|
|
||||||
configure_file( |
|
||||||
input: 'a.in', |
|
||||||
output: 'out', |
|
||||||
command: ['./foo.sh'] |
|
||||||
) |
|
||||||
configure_file( |
|
||||||
input: 'a.in', |
|
||||||
output: 'out', |
|
||||||
command: ['./foo.sh'] |
|
||||||
) |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
This will output: |
|
||||||
|
|
||||||
``` |
|
||||||
The Meson build system |
|
||||||
Version: 0.47.0.dev1 |
|
||||||
Source dir: /path/to/srctree |
|
||||||
Build dir: /path/to/buildtree |
|
||||||
Build type: native build |
|
||||||
Project name: configure_file |
|
||||||
Project version: undefined |
|
||||||
Build machine cpu family: x86_64 |
|
||||||
Build machine cpu: x86_64 |
|
||||||
Configuring out with command |
|
||||||
WARNING: Output file out for configure_file overwritten. First time written in line 3 now in line 8 |
|
||||||
Configuring out with command |
|
||||||
Build targets in project: 0 |
|
||||||
Found ninja-1.8.2 at /usr/bin/ninja |
|
||||||
``` |
|
@ -1,13 +0,0 @@ |
|||||||
## New kwarg `console` for `custom_target()` |
|
||||||
|
|
||||||
This keyword argument conflicts with `capture`, and is meant for |
|
||||||
commands that are resource-intensive and take a long time to |
|
||||||
finish. With the Ninja backend, setting this will add this target to |
|
||||||
[Ninja's `console` |
|
||||||
pool](https://ninja-build.org/manual.html#_the_literal_console_literal_pool), |
|
||||||
which has special properties such as not buffering stdout and |
|
||||||
serializing all targets in this pool. |
|
||||||
|
|
||||||
The primary use-case for this is to be able to run external commands |
|
||||||
that take a long time to exeute. Without setting this, the user does |
|
||||||
not receive any feedback about what the program is doing. |
|
@ -1,14 +0,0 @@ |
|||||||
## `dependency(version:)` now applies to all dependency types |
|
||||||
|
|
||||||
Previously, version constraints were only enforced for dependencies found using |
|
||||||
the pkg-config dependency provider. These constraints now apply to dependencies |
|
||||||
found using any dependency provider. |
|
||||||
|
|
||||||
Some combinations of dependency, host and method do not currently support |
|
||||||
discovery of the version. In these cases, the dependency will not be found if a |
|
||||||
version constraint is applied, otherwise the `version()` method for the |
|
||||||
dependency object will return `'unknown'`. |
|
||||||
|
|
||||||
(If discovering the version in one of these combinations is important to you, |
|
||||||
and a method exists to determine the version in that case, please file an issue |
|
||||||
with as much information as possible.) |
|
@ -1,18 +0,0 @@ |
|||||||
## python3 module is deprecated |
|
||||||
|
|
||||||
A generic module `python` has been added in Meson `0.46.0` and has a superset of |
|
||||||
the features implemented by the previous `python3` module. |
|
||||||
|
|
||||||
In most cases, it is a simple matter of renaming: |
|
||||||
```meson |
|
||||||
py3mod = import('python3') |
|
||||||
python = py3mod.find_python() |
|
||||||
``` |
|
||||||
|
|
||||||
becomes |
|
||||||
|
|
||||||
```meson |
|
||||||
pymod = import('python') |
|
||||||
python = pymod.find_installation() |
|
||||||
``` |
|
||||||
|
|
@ -1,10 +0,0 @@ |
|||||||
## Dictionary addition |
|
||||||
|
|
||||||
Dictionaries can now be added, values from the second dictionary overrides values |
|
||||||
from the first |
|
||||||
|
|
||||||
```meson |
|
||||||
d1 = {'a' : 'b'} |
|
||||||
d3 = d1 + {'a' : 'c'} |
|
||||||
d3 += {'d' : 'e'} |
|
||||||
``` |
|
@ -1,12 +0,0 @@ |
|||||||
## Dist scripts |
|
||||||
|
|
||||||
You can now specify scripts that are run as part of the `dist` |
|
||||||
target. An example usage would go like this: |
|
||||||
|
|
||||||
```meson |
|
||||||
project('foo', 'c') |
|
||||||
|
|
||||||
# other stuff here |
|
||||||
|
|
||||||
meson.add_dist_script('dist_cleanup.py') |
|
||||||
``` |
|
@ -1,6 +0,0 @@ |
|||||||
## Fatal warnings |
|
||||||
|
|
||||||
A new command line option has been added: `--fatal-meson-warnings`. When enabled, any |
|
||||||
warning message printed by Meson will be fatal and raise an exception. It is |
|
||||||
intended to be used by developers and CIs to easily catch deprecation warnings, |
|
||||||
or any other potential issues. |
|
@ -1,29 +0,0 @@ |
|||||||
## Helper methods added for checking GNU style attributes: __attribute__(...) |
|
||||||
|
|
||||||
A set of new helpers have been added to the C and C++ compiler objects for |
|
||||||
checking GNU style function attributes. These are not just simpler to use, they |
|
||||||
may be optimized to return fast on compilers that don't support these |
|
||||||
attributes. Currently this is true for MSVC. |
|
||||||
|
|
||||||
```meson |
|
||||||
cc = meson.get_compiler('c') |
|
||||||
if cc.has_function_attribute('aligned') |
|
||||||
add_project_arguments('-DHAVE_ALIGNED', language : 'c') |
|
||||||
endif |
|
||||||
``` |
|
||||||
|
|
||||||
Would replace code like: |
|
||||||
|
|
||||||
```meson |
|
||||||
if cc.compiles('''into foo(void) __attribute__((aligned(32)))''') |
|
||||||
add_project_arguments('-DHAVE_ALIGNED', language : 'c') |
|
||||||
endif |
|
||||||
``` |
|
||||||
|
|
||||||
Additionally, a multi argument version has been added: |
|
||||||
|
|
||||||
```meson |
|
||||||
foreach s : cc.get_supported_function_attributes(['hidden', 'alias']) |
|
||||||
add_project_arguments('-DHAVE_@0@'.format(s.to_upper()), language : 'c') |
|
||||||
endforeach |
|
||||||
``` |
|
@ -1,7 +0,0 @@ |
|||||||
## gnome.generate_gir() now optionally accepts multiple libraries |
|
||||||
|
|
||||||
The GNOME module can now generate a single gir for multiple libraries, which |
|
||||||
is something `g-ir-scanner` supported, but had not been exposed yet. |
|
||||||
|
|
||||||
gnome.generate_gir() will now accept multiple positional arguments, if none |
|
||||||
of these arguments are an `Executable` instance. |
|
@ -1,22 +0,0 @@ |
|||||||
## Hotdoc module |
|
||||||
|
|
||||||
A new module has been written to ease generation of [hotdoc](https://hotdoc.github.io/) based |
|
||||||
documentation. It supports complex use cases such as hotdoc subprojects (to create documentation |
|
||||||
portals) and makes it straight forward to leverage full capabilities of hotdoc. |
|
||||||
|
|
||||||
Simple usage: |
|
||||||
|
|
||||||
``` meson |
|
||||||
hotdoc = import('hotdoc') |
|
||||||
|
|
||||||
hotdoc.generate_doc( |
|
||||||
'foobar', |
|
||||||
c_smart_index: true, |
|
||||||
project_version: '0.1', |
|
||||||
sitemap: 'sitemap.txt', |
|
||||||
index: 'index.md', |
|
||||||
c_sources: ['path/to/file.c'], |
|
||||||
languages: ['c'], |
|
||||||
install: true, |
|
||||||
) |
|
||||||
``` |
|
@ -1,4 +0,0 @@ |
|||||||
## i18n.merge_file() now fully supports variable substitutions defined in custom_target() |
|
||||||
|
|
||||||
Filename substitutions like @BASENAME@ and @PLAINNAME@ were previously accepted but the name of the build target wasn't altered leading to colliding target names when using the substitution twice. |
|
||||||
i18n.merge_file() now behaves as custom_target() in this regard. |
|
@ -1,34 +0,0 @@ |
|||||||
## Projects args can be set separately for cross and native builds (potentially breaking change) |
|
||||||
|
|
||||||
It has been a longstanding bug (or let's call it a "delayed bug fix") |
|
||||||
that if yo do this: |
|
||||||
|
|
||||||
```meson |
|
||||||
add_project_arguments('-DFOO', language : 'c') |
|
||||||
``` |
|
||||||
|
|
||||||
Then the flag is used both in native and cross compilations. This is |
|
||||||
very confusing and almost never what you want. To fix this a new |
|
||||||
keyword `native` has been added to all functions that add arguments, |
|
||||||
namely `add_global_arguments`, `add_global_link_arguments`, |
|
||||||
`add_project_arguments` and `add_project_link_arguments` that behaves |
|
||||||
like the following: |
|
||||||
|
|
||||||
``` |
|
||||||
## Added to native builds when compiling natively and to cross |
|
||||||
## compilations when doing cross compiles. |
|
||||||
add_project_arguments(...) |
|
||||||
|
|
||||||
## Added only to native compilations, not used in cross compilations. |
|
||||||
add_project_arguments(..., native : true) |
|
||||||
|
|
||||||
## Added only to cross compilations, not used in native compilations. |
|
||||||
add_project_arguments(..., native : false) |
|
||||||
``` |
|
||||||
|
|
||||||
Also remember that cross compilation is a property of each |
|
||||||
target. There can be target that are compiled with the native compiler |
|
||||||
and some which are compiled with the cross compiler. |
|
||||||
|
|
||||||
Unfortunately this change is backwards incompatible and may cause some |
|
||||||
projects to fail building. However this should be very rare in practice. |
|
@ -1,8 +0,0 @@ |
|||||||
## More flexible `override_find_program()`. |
|
||||||
|
|
||||||
It is now possible to pass an `executable` to |
|
||||||
`override_find_program()` if the overridden program is not used during |
|
||||||
configure. |
|
||||||
|
|
||||||
This is particularly useful for fallback dependencies like Protobuf |
|
||||||
that also provide a tool like protoc. |
|
@ -1,9 +0,0 @@ |
|||||||
## `shared_library()` now supports setting dylib compatibility and current version |
|
||||||
|
|
||||||
Now, by default `shared_library()` sets `-compatibility_version` and |
|
||||||
`-current_version` of a macOS dylib using the `soversion`. |
|
||||||
|
|
||||||
This can be overriden by using the `darwin_versions:` kwarg to |
|
||||||
[`shared_library()`](Reference-manual.md#shared_library). As usual, you can |
|
||||||
also pass this kwarg to `library()` or `build_target()` and it will be used in |
|
||||||
the appropriate circumstances. |
|
@ -1,15 +0,0 @@ |
|||||||
## Version comparison |
|
||||||
|
|
||||||
`dependency(version:)` and other version constraints now handle versions |
|
||||||
containing non-numeric characters better, comparing versions using the rpmvercmp |
|
||||||
algorithm (as using the `pkg-config` autoconf macro `PKG_CHECK_MODULES` does). |
|
||||||
|
|
||||||
This is a breaking change for exact comparison constraints which rely on the |
|
||||||
previous comparison behaviour of extending the compared versions with `'0'` |
|
||||||
elements, up to the same length of `'.'`-separated elements. |
|
||||||
|
|
||||||
For example, a version of `'0.11.0'` would previously match a version constraint |
|
||||||
of `'==0.11'`, but no longer does, being instead considered strictly greater. |
|
||||||
|
|
||||||
Instead, use a version constraint which exactly compares with the precise |
|
||||||
version required, e.g. `'==0.11.0'`. |
|
@ -1,13 +0,0 @@ |
|||||||
## Keyword argument for GNU symbol visibility |
|
||||||
|
|
||||||
Build targets got a new keyword, `gnu_symbol_visibility` that controls |
|
||||||
how symbols are exported from shared libraries. This is most commonly |
|
||||||
used to hide implementation symbols like this: |
|
||||||
|
|
||||||
```meson |
|
||||||
shared_library('mylib', ... |
|
||||||
gnu_symbol_visibility: 'hidden') |
|
||||||
``` |
|
||||||
|
|
||||||
In this case only symbols explicitly marked as visible in the source |
|
||||||
files get exported. |
|
@ -1,7 +0,0 @@ |
|||||||
## Git wraps can now clone submodules automatically |
|
||||||
|
|
||||||
To enable this, the following needs to be added to the `.wrap` file: |
|
||||||
|
|
||||||
```ini |
|
||||||
clone-recursive=true |
|
||||||
``` |
|
Loading…
Reference in new issue