parent
a1d2444e4a
commit
8d576eba91
20 changed files with 196 additions and 172 deletions
@ -0,0 +1,193 @@ |
|||||||
|
--- |
||||||
|
title: Release 0.53.0 |
||||||
|
short-description: Release notes for 0.53.0 |
||||||
|
... |
||||||
|
|
||||||
|
# New features |
||||||
|
|
||||||
|
## A new module for filesystem operations |
||||||
|
|
||||||
|
The new `fs` module can be used to examine the contents of the current |
||||||
|
file system. |
||||||
|
|
||||||
|
```meson |
||||||
|
fs = import('fs') |
||||||
|
assert(fs.exists('important_file'), |
||||||
|
'The important file is missing.') |
||||||
|
``` |
||||||
|
|
||||||
|
## meson dist --include-subprojects |
||||||
|
|
||||||
|
`meson dist` command line now gained `--include-subprojects` command line option. |
||||||
|
When enabled, the source tree of all subprojects used by the current build will |
||||||
|
also be included in the final tarball. This is useful to distribute self contained |
||||||
|
tarball that can be built offline (i.e. `--wrap-mode=nodownload`). |
||||||
|
|
||||||
|
## Added new Meson templates for `Dlang`, `Rust`, `Objective-C` |
||||||
|
|
||||||
|
Meson now ships with predefined project templates for `Dlang`, |
||||||
|
`Fortran`, `Rust`, `Objective-C`, and by passing the associated flags `d`, |
||||||
|
`fortran`, `rust`, `objc` to `meson init --language`. |
||||||
|
|
||||||
|
## Add a new summary() function |
||||||
|
|
||||||
|
A new function [`summary()`](Reference-manual.md#summary) has been added to |
||||||
|
summarize build configuration at the end of the build process. |
||||||
|
|
||||||
|
Example: |
||||||
|
```meson |
||||||
|
project('My Project', version : '1.0') |
||||||
|
summary({'bindir': get_option('bindir'), |
||||||
|
'libdir': get_option('libdir'), |
||||||
|
'datadir': get_option('datadir'), |
||||||
|
}, section: 'Directories') |
||||||
|
summary({'Some boolean': false, |
||||||
|
'Another boolean': true, |
||||||
|
'Some string': 'Hello World', |
||||||
|
'A list': ['string', 1, true], |
||||||
|
}, section: 'Configuration') |
||||||
|
``` |
||||||
|
|
||||||
|
Output: |
||||||
|
``` |
||||||
|
My Project 1.0 |
||||||
|
|
||||||
|
Directories |
||||||
|
prefix: /opt/gnome |
||||||
|
bindir: bin |
||||||
|
libdir: lib/x86_64-linux-gnu |
||||||
|
datadir: share |
||||||
|
|
||||||
|
Configuration |
||||||
|
Some boolean: False |
||||||
|
Another boolean: True |
||||||
|
Some string: Hello World |
||||||
|
A list: string |
||||||
|
1 |
||||||
|
True |
||||||
|
``` |
||||||
|
|
||||||
|
## Generic Overrider for Dynamic Linker selection |
||||||
|
|
||||||
|
Previous to meson 0.52.0 you set the dynamic linker using compiler specific |
||||||
|
flags passed via language flags and hoped things worked out. In meson 0.52.0 |
||||||
|
meson started detecting the linker and making intelligent decisions about |
||||||
|
using it. Unfortunately this broke choosing a non-default linker. |
||||||
|
|
||||||
|
Now there is a generic mechanism for doing this, you may use the LD |
||||||
|
environment variable (with normal meson environment variable rules), or add |
||||||
|
the following to a cross or native file: |
||||||
|
|
||||||
|
```ini |
||||||
|
[binaries] |
||||||
|
ld = 'gold' |
||||||
|
``` |
||||||
|
|
||||||
|
And meson will select the linker if possible. |
||||||
|
|
||||||
|
## `fortran_std` option |
||||||
|
|
||||||
|
**new in 0.53.0** |
||||||
|
Akin to the `c_std` and `cpp_std` options, the `fortran_std` option sets Fortran compilers to warn or error on non-Fortran standard code. |
||||||
|
Only the Gfortran and Intel Fortran compilers have support for this option. |
||||||
|
Other Fortran compilers ignore the `fortran_std` option. |
||||||
|
|
||||||
|
Supported values for `fortran_std` include: |
||||||
|
|
||||||
|
* `legacy` for non-conforming code--this is especially important for Gfortran, which by default errors on old non-compliant Fortran code |
||||||
|
* `f95` for Fortran 95 compliant code. |
||||||
|
* `f2003` for Fortran 2003 compliant code. |
||||||
|
* `f2008` for Fortran 2008 compliant code. |
||||||
|
* `f2018` for Fortran 2018 compliant code. |
||||||
|
|
||||||
|
## python.dependency() embed kwarg |
||||||
|
|
||||||
|
Added the `embed` kwarg to the python module dependency function to select |
||||||
|
the python library that can be used to embed python into an application. |
||||||
|
|
||||||
|
## Scalapack |
||||||
|
|
||||||
|
added in **0.53.0**: |
||||||
|
|
||||||
|
```meson |
||||||
|
scalapack = dependency('scalapack') |
||||||
|
``` |
||||||
|
|
||||||
|
Historically and through today, typical Scalapack setups have broken and incomplete pkg-config or |
||||||
|
FindScalapack.cmake. Meson handles finding Scalapack on setups including: |
||||||
|
|
||||||
|
* Linux: Intel MKL or OpenMPI + Netlib |
||||||
|
* MacOS: Intel MKL or OpenMPI + Netlib |
||||||
|
* Windows: Intel MKL (OpenMPI not available on Windows) |
||||||
|
|
||||||
|
## Search directories for `find_program()` |
||||||
|
|
||||||
|
It is now possible to give a list of absolute paths where `find_program()` should |
||||||
|
also search, using the `dirs` keyword argument. |
||||||
|
|
||||||
|
For example on Linux `/sbin` and `/usr/sbin` are not always in the `$PATH`: |
||||||
|
```meson |
||||||
|
prog = find_program('mytool', dirs : ['/usr/sbin', '/sbin']) |
||||||
|
``` |
||||||
|
|
||||||
|
## Source tags targets |
||||||
|
|
||||||
|
When the respective tools are available, 'ctags', 'TAGS' and 'cscope' |
||||||
|
targets will be generated by Meson, unless you have defined your own. |
||||||
|
|
||||||
|
## Dictionary entry using string variable as key |
||||||
|
|
||||||
|
Keys can now be any expression evaluating to a string value, not limited |
||||||
|
to string literals any more. |
||||||
|
```meson |
||||||
|
d = {'a' + 'b' : 42} |
||||||
|
k = 'cd' |
||||||
|
d += {k : 43} |
||||||
|
``` |
||||||
|
|
||||||
|
## Improved CMake subprojects support |
||||||
|
|
||||||
|
With this release even more CMake projects are supported via |
||||||
|
[CMake subprojects](CMake-module.md#cmake-subprojects) due to these internal |
||||||
|
improvements: |
||||||
|
|
||||||
|
- Use the CMake file API for CMake >=3.14 |
||||||
|
- Handle the explicit dependencies via `add_dependency` |
||||||
|
- Basic support for `add_custom_target` |
||||||
|
- Improved `add_custom_command` support |
||||||
|
- Object library support on Windows |
||||||
|
|
||||||
|
## compiler.get_linker_id() |
||||||
|
|
||||||
|
since 0.53.0, `compiler.get_linker_id()` allows retrieving a lowercase name for the linker. |
||||||
|
Since each compiler family can typically use a variety of linkers depending on operating system, |
||||||
|
this helps users define logic for corner cases not otherwise easily handled. |
||||||
|
|
||||||
|
## CUDA dependency |
||||||
|
|
||||||
|
Native support for compiling and linking against the CUDA Toolkit using |
||||||
|
the `dependency` function: |
||||||
|
|
||||||
|
```meson |
||||||
|
project('CUDA test', 'cpp', meson_version: '>= 0.53.0') |
||||||
|
exe = executable('prog', 'prog.cc', dependencies: dependency('cuda')) |
||||||
|
``` |
||||||
|
|
||||||
|
See [the CUDA dependency](Dependencies.md#cuda) for more information. |
||||||
|
|
||||||
|
## Added global option to disable C++ RTTI |
||||||
|
|
||||||
|
The new boolean option is called `cpp_rtti`. |
||||||
|
|
||||||
|
## Introspection API changes |
||||||
|
|
||||||
|
dependencies (--dependencies, intro-dependencies.json): |
||||||
|
- added the `version` key |
||||||
|
|
||||||
|
scanning dependencies (--scan-dependencies): |
||||||
|
- added the `version` key containing the required dependency version |
||||||
|
|
||||||
|
tests and benchmarks (--tests, --benchmarks, intro-tests.json, |
||||||
|
intro-benchmarks.json): |
||||||
|
- added the `protocol` key |
||||||
|
|
@ -1,9 +0,0 @@ |
|||||||
## Dictionary entry using string variable as key |
|
||||||
|
|
||||||
Keys can now be any expression evaluating to a string value, not limited |
|
||||||
to string literals any more. |
|
||||||
```meson |
|
||||||
d = {'a' + 'b' : 42} |
|
||||||
k = 'cd' |
|
||||||
d += {k : 43} |
|
||||||
``` |
|
@ -1,11 +0,0 @@ |
|||||||
## Improved CMake subprojects support |
|
||||||
|
|
||||||
With this release even more CMake projects are supported via |
|
||||||
[CMake subprojects](CMake-module.md#cmake-subprojects) due to these internal |
|
||||||
improvements: |
|
||||||
|
|
||||||
- Use the CMake file API for CMake >=3.14 |
|
||||||
- Handle the explicit dependencies via `add_dependency` |
|
||||||
- Basic support for `add_custom_target` |
|
||||||
- Improved `add_custom_command` support |
|
||||||
- Object library support on Windows |
|
@ -1,11 +0,0 @@ |
|||||||
## CUDA dependency |
|
||||||
|
|
||||||
Native support for compiling and linking against the CUDA Toolkit using |
|
||||||
the `dependency` function: |
|
||||||
|
|
||||||
```meson |
|
||||||
project('CUDA test', 'cpp', meson_version: '>= 0.53.0') |
|
||||||
exe = executable('prog', 'prog.cc', dependencies: dependency('cuda')) |
|
||||||
``` |
|
||||||
|
|
||||||
See [the CUDA dependency](Dependencies.md#cuda) for more information. |
|
@ -1,6 +0,0 @@ |
|||||||
## meson dist --include-subprojects |
|
||||||
|
|
||||||
`meson dist` command line now gained `--include-subprojects` command line option. |
|
||||||
When enabled, the source tree of all subprojects used by the current build will |
|
||||||
also be included in the final tarball. This is useful to distribute self contained |
|
||||||
tarball that can be built offline (i.e. `--wrap-mode=nodownload`). |
|
@ -1,9 +0,0 @@ |
|||||||
## Search directories for `find_program()` |
|
||||||
|
|
||||||
It is now possible to give a list of absolute paths where `find_program()` should |
|
||||||
also search, using the `dirs` keyword argument. |
|
||||||
|
|
||||||
For example on Linux `/sbin` and `/usr/sbin` are not always in the `$PATH`: |
|
||||||
```meson |
|
||||||
prog = find_program('mytool', dirs : ['/usr/sbin', '/sbin']) |
|
||||||
``` |
|
@ -1,14 +0,0 @@ |
|||||||
## `fortran_std` option |
|
||||||
|
|
||||||
**new in 0.53.0** |
|
||||||
Akin to the `c_std` and `cpp_std` options, the `fortran_std` option sets Fortran compilers to warn or error on non-Fortran standard code. |
|
||||||
Only the Gfortran and Intel Fortran compilers have support for this option. |
|
||||||
Other Fortran compilers ignore the `fortran_std` option. |
|
||||||
|
|
||||||
Supported values for `fortran_std` include: |
|
||||||
|
|
||||||
* `legacy` for non-conforming code--this is especially important for Gfortran, which by default errors on old non-compliant Fortran code |
|
||||||
* `f95` for Fortran 95 compliant code. |
|
||||||
* `f2003` for Fortran 2003 compliant code. |
|
||||||
* `f2008` for Fortran 2008 compliant code. |
|
||||||
* `f2018` for Fortran 2018 compliant code. |
|
@ -1,10 +0,0 @@ |
|||||||
## A new module for filesystem operations |
|
||||||
|
|
||||||
The new `fs` module can be used to examine the contents of the current |
|
||||||
file system. |
|
||||||
|
|
||||||
```meson |
|
||||||
fs = import('fs') |
|
||||||
assert(fs.exists('important_file'), |
|
||||||
'The important file is missing.') |
|
||||||
``` |
|
@ -1,5 +0,0 @@ |
|||||||
## compiler.get_linker_id() |
|
||||||
|
|
||||||
since 0.53.0, `compiler.get_linker_id()` allows retrieving a lowercase name for the linker. |
|
||||||
Since each compiler family can typically use a variety of linkers depending on operating system, |
|
||||||
this helps users define logic for corner cases not otherwise easily handled. |
|
@ -1,11 +0,0 @@ |
|||||||
## Introspection API changes |
|
||||||
|
|
||||||
dependencies (--dependencies, intro-dependencies.json): |
|
||||||
- added the `version` key |
|
||||||
|
|
||||||
scanning dependencies (--scan-dependencies): |
|
||||||
- added the `version` key containing the required dependency version |
|
||||||
|
|
||||||
tests and benchmarks (--tests, --benchmarks, intro-tests.json, |
|
||||||
intro-benchmarks.json): |
|
||||||
- added the `protocol` key |
|
@ -1,17 +0,0 @@ |
|||||||
## Generic Overrider for Dynamic Linker selection |
|
||||||
|
|
||||||
Previous to meson 0.52.0 you set the dynamic linker using compiler specific |
|
||||||
flags passed via language flags and hoped things worked out. In meson 0.52.0 |
|
||||||
meson started detecting the linker and making intelligent decisions about |
|
||||||
using it. Unfortunately this broke choosing a non-default linker. |
|
||||||
|
|
||||||
Now there is a generic mechanism for doing this, you may use the LD |
|
||||||
environment variable (with normal meson environment variable rules), or add |
|
||||||
the following to a cross or native file: |
|
||||||
|
|
||||||
```ini |
|
||||||
[binaries] |
|
||||||
ld = 'gold' |
|
||||||
``` |
|
||||||
|
|
||||||
And meson will select the linker if possible. |
|
@ -1,5 +0,0 @@ |
|||||||
## Added new Meson templates for `Dlang`, `Rust`, `Objective-C` |
|
||||||
|
|
||||||
Meson now ships with predefined project templates for `Dlang`, |
|
||||||
`Fortran`, `Rust`, `Objective-C`, and by passing the associated flags `d`, |
|
||||||
`fortran`, `rust`, `objc` to `meson init --language`. |
|
@ -1,3 +0,0 @@ |
|||||||
## Added global option to disable C++ RTTI |
|
||||||
|
|
||||||
The new boolean option is called `cpp_rtti`. |
|
@ -1,4 +0,0 @@ |
|||||||
## python.dependency() embed kwarg |
|
||||||
|
|
||||||
Added the `embed` kwarg to the python module dependency function to select |
|
||||||
the python library that can be used to embed python into an application. |
|
@ -1,14 +0,0 @@ |
|||||||
## Scalapack |
|
||||||
|
|
||||||
added in **0.53.0**: |
|
||||||
|
|
||||||
```meson |
|
||||||
scalapack = dependency('scalapack') |
|
||||||
``` |
|
||||||
|
|
||||||
Historically and through today, typical Scalapack setups have broken and incomplete pkg-config or |
|
||||||
FindScalapack.cmake. Meson handles finding Scalapack on setups including: |
|
||||||
|
|
||||||
* Linux: Intel MKL or OpenMPI + Netlib |
|
||||||
* MacOS: Intel MKL or OpenMPI + Netlib |
|
||||||
* Windows: Intel MKL (OpenMPI not available on Windows) |
|
@ -1,37 +0,0 @@ |
|||||||
## Add a new summary() function |
|
||||||
|
|
||||||
A new function [`summary()`](Reference-manual.md#summary) has been added to |
|
||||||
summarize build configuration at the end of the build process. |
|
||||||
|
|
||||||
Example: |
|
||||||
```meson |
|
||||||
project('My Project', version : '1.0') |
|
||||||
summary({'bindir': get_option('bindir'), |
|
||||||
'libdir': get_option('libdir'), |
|
||||||
'datadir': get_option('datadir'), |
|
||||||
}, section: 'Directories') |
|
||||||
summary({'Some boolean': false, |
|
||||||
'Another boolean': true, |
|
||||||
'Some string': 'Hello World', |
|
||||||
'A list': ['string', 1, true], |
|
||||||
}, section: 'Configuration') |
|
||||||
``` |
|
||||||
|
|
||||||
Output: |
|
||||||
``` |
|
||||||
My Project 1.0 |
|
||||||
|
|
||||||
Directories |
|
||||||
prefix: /opt/gnome |
|
||||||
bindir: bin |
|
||||||
libdir: lib/x86_64-linux-gnu |
|
||||||
datadir: share |
|
||||||
|
|
||||||
Configuration |
|
||||||
Some boolean: False |
|
||||||
Another boolean: True |
|
||||||
Some string: Hello World |
|
||||||
A list: string |
|
||||||
1 |
|
||||||
True |
|
||||||
``` |
|
@ -1,4 +0,0 @@ |
|||||||
## Source tags targets |
|
||||||
|
|
||||||
When the respective tools are available, 'ctags', 'TAGS' and 'cscope' |
|
||||||
targets will be generated by Meson, unless you have defined your own. |
|
Loading…
Reference in new issue