parent
06dadfc45f
commit
daaae647d7
27 changed files with 200 additions and 176 deletions
@ -1,16 +1,186 @@ |
||||
--- |
||||
title: Release 0.45 |
||||
short-description: Release notes for 0.45 (preliminary) |
||||
short-description: Release notes for 0.45 |
||||
... |
||||
|
||||
# New features |
||||
|
||||
This page is a placeholder for the eventual release notes. |
||||
## Config-Tool based dependencies can be specified in a cross file |
||||
|
||||
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: |
||||
Tools like LLVM and pcap use a config tool for dependencies, this is a script |
||||
or binary that is run to get configuration information (cflags, ldflags, etc) |
||||
from. |
||||
|
||||
## Feature name |
||||
These binaries may now be specified in the `binaries` section of a cross file. |
||||
|
||||
A short description explaining the new feature and how it should be used. |
||||
```dosini |
||||
[binaries] |
||||
cc = ... |
||||
llvm-config = '/usr/bin/llvm-config32' |
||||
``` |
||||
|
||||
## Visual Studio C# compiler support |
||||
|
||||
In addition to the Mono C# compiler we also support Visual Studio's C# |
||||
compiler. Currently this is only supported on the Ninja backend. |
||||
|
||||
## Removed two deprecated features |
||||
|
||||
The standalone `find_library` function has been a no-op for a long |
||||
time. Starting with this version it becomes a hard error. |
||||
|
||||
There used to be a keywordless version of `run_target` which looked |
||||
like this: |
||||
|
||||
run_target('targetname', 'command', 'arg1', 'arg2') |
||||
|
||||
This is now an error. The correct format for this is now: |
||||
|
||||
run_target('targetname', |
||||
command : ['command', 'arg1', 'arg2']) |
||||
|
||||
## Experimental FPGA support |
||||
|
||||
This version adds support for generating, analysing and uploading FPGA |
||||
programs using the [IceStorm |
||||
toolchain](http://www.clifford.at/icestorm/). This support is |
||||
experimental and is currently limited to the `iCE 40` series of FPGA |
||||
chips. |
||||
|
||||
FPGA generation integrates with other parts of Meson seamlessly. As an |
||||
example, [here](https://github.com/jpakkane/lm32) is an example |
||||
project that compiles a simple firmware into Verilog and combines that |
||||
with an lm32 softcore processor. |
||||
|
||||
## Generator outputs can preserve directory structure |
||||
|
||||
Normally when generating files with a generator, Meson flattens the |
||||
input files so they all go in the same directory. Some code |
||||
generators, such as Protocol Buffers, require that the generated files |
||||
have the same directory layout as the input files used to generate |
||||
them. This can now be achieved like this: |
||||
|
||||
```meson |
||||
g = generator(...) # Compiles protobuf sources |
||||
generated = gen.process('com/mesonbuild/one.proto', |
||||
'com/mesonbuild/two.proto', |
||||
preserve_path_from : meson.current_source_dir()) |
||||
|
||||
This would cause the following files to be generated inside the target |
||||
private directory: |
||||
|
||||
com/mesonbuild/one.pb.h |
||||
com/mesonbuild/one.pb.cc |
||||
com/mesonbuild/two.pb.h |
||||
com/mesonbuild/two.pb.cc |
||||
|
||||
## Hexadecimal string literals |
||||
|
||||
Hexadecimal integer literals can now be used in build and option files. |
||||
|
||||
int_255 = 0xFF |
||||
|
||||
## b_ndebug : if-release |
||||
|
||||
The value `if-release` can be given for the `b_ndebug` project option. |
||||
|
||||
This will make the `NDEBUG` pre-compiler macro to be defined for release |
||||
type builds as if the `b_ndebug` project option had had the value `true` |
||||
defined for it. |
||||
|
||||
## `install_data()` defaults to `{datadir}/{projectname}` |
||||
|
||||
If `install_data()` is not given an `install_dir` keyword argument, the |
||||
target directory defaults to `{datadir}/{projectname}` (e.g. |
||||
`/usr/share/myproj`). |
||||
|
||||
## install_subdir() supports strip_directory |
||||
|
||||
If strip_directory=true install_subdir() installs directory contents |
||||
instead of directory itself, stripping basename of the source directory. |
||||
|
||||
## Integer options |
||||
|
||||
There is a new integer option type with optional minimum and maximum |
||||
values. It can be specified like this in the `meson_options.txt` file: |
||||
|
||||
option('integer_option', type : 'integer', min : 0, max : 5, value : 3) |
||||
|
||||
## New method meson.project_license() |
||||
|
||||
The `meson` builtin object now has a `project_license()` method that returns a |
||||
list of all licenses for the project. |
||||
|
||||
## Rust cross-compilation |
||||
|
||||
Cross-compilation is now supported for Rust targets. Like other |
||||
cross-compilers, the Rust binary must be specified in your cross |
||||
file. It should specify a `--target` (as installed by `rustup target`) |
||||
and a custom linker pointing to your C cross-compiler. For example: |
||||
|
||||
``` |
||||
[binaries] |
||||
c = '/usr/bin/arm-linux-gnueabihf-gcc-7' |
||||
rust = [ |
||||
'rustc', |
||||
'--target', 'arm-unknown-linux-gnueabihf', |
||||
'-C', 'linker=/usr/bin/arm-linux-gnueabihf-gcc-7', |
||||
] |
||||
``` |
||||
|
||||
## Rust compiler-private library disambiguation |
||||
|
||||
When building a Rust target with Rust library dependencies, an |
||||
`--extern` argument is now specified to avoid ambiguity between the |
||||
dependency library, and any crates of the same name in `rustc`'s |
||||
private sysroot. |
||||
|
||||
## Project templates |
||||
|
||||
Meson ships with predefined project templates. To start a new project from |
||||
scratch, simply go to an empty directory and type: |
||||
|
||||
```meson |
||||
meson init --name=myproject --type=executable --language=c |
||||
``` |
||||
|
||||
## Improve test setup selection |
||||
|
||||
Test setups are now identified (also) by the project they belong to and it |
||||
is possible to select the used test setup from a specific project. E.g. |
||||
to use a test setup `some_setup` from project `some_project` for all |
||||
executed tests one can use |
||||
|
||||
meson test --setup some_project:some_setup |
||||
|
||||
Should one rather want test setups to be used from the same project as |
||||
where the current test itself has been defined, one can use just |
||||
|
||||
meson test --setup some_setup |
||||
|
||||
In the latter case every (sub)project must have a test setup `some_setup` |
||||
defined in it. |
||||
|
||||
## Can use custom targets as Windows resource files |
||||
|
||||
The `compile_resources()` function of the `windows` module can now be used on custom targets as well as regular files. |
||||
# Can promote dependencies with wrap command |
||||
|
||||
The `promote` command makes it easy to copy nested dependencies to the top level. |
||||
|
||||
meson wrap promote scommon |
||||
|
||||
This will search the project tree for a subproject called `scommon` and copy it to the top level. |
||||
|
||||
If there are many embedded subprojects with the same name, you have to specify which one to promote manually like this: |
||||
|
||||
meson wrap promote subprojects/s1/subprojects/scommon |
||||
|
||||
## Yielding subproject option to superproject |
||||
|
||||
Normally project options are specific to the current project. However |
||||
sometimes you want to have an option whose value is the same over all |
||||
projects. This can be achieved with the new `yield` keyword for |
||||
options. When set to `true`, getting the value of this option in |
||||
`meson.build` files gets the value from the option with the same name |
||||
in the master project (if such an option exists). |
||||
|
@ -0,0 +1,16 @@ |
||||
--- |
||||
title: Release 0.46 |
||||
short-description: Release notes for 0.46 (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,13 +0,0 @@ |
||||
# Config-Tool based dependencies can be specified in a cross file |
||||
|
||||
Tools like LLVM and pcap use a config tool for dependencies, this is a script |
||||
or binary that is run to get configuration information (cflags, ldflags, etc) |
||||
from. |
||||
|
||||
These binaries may now be specified in the `binaries` section of a cross file. |
||||
|
||||
```dosini |
||||
[binaries] |
||||
cc = ... |
||||
llvm-config = '/usr/bin/llvm-config32' |
||||
``` |
@ -1,4 +0,0 @@ |
||||
## Visual Studio C# compiler support |
||||
|
||||
In addition to the Mono C# compiler we also support Visual Studio's C# |
||||
compiler. Currently this is only supported on the Ninja backend. |
@ -1,14 +0,0 @@ |
||||
## Removed two deprecated features |
||||
|
||||
The standalone `find_library` function has been a no-op for a long |
||||
time. Starting with this version it becomes a hard error. |
||||
|
||||
There used to be a keywordless version of `run_target` which looked |
||||
like this: |
||||
|
||||
run_target('targetname', 'command', 'arg1', 'arg2') |
||||
|
||||
This is now an error. The correct format for this is now: |
||||
|
||||
run_target('targetname', |
||||
command : ['command', 'arg1', 'arg2']) |
@ -1,12 +0,0 @@ |
||||
## Experimental FPGA support |
||||
|
||||
This version adds support for generating, analysing and uploading FPGA |
||||
programs using the [IceStorm |
||||
toolchain](http://www.clifford.at/icestorm/). This support is |
||||
experimental and is currently limited to the `iCE 40` series of FPGA |
||||
chips. |
||||
|
||||
FPGA generation integrates with other parts of Meson seamlessly. As an |
||||
example, [here](https://github.com/jpakkane/lm32) is an example |
||||
project that compiles a simple firmware into Verilog and combines that |
||||
with an lm32 softcore processor. |
@ -1,21 +0,0 @@ |
||||
## Generator outputs can preserve directory structure |
||||
|
||||
Normally when generating files with a generator, Meson flattens the |
||||
input files so they all go in the same directory. Some code |
||||
generators, such as Protocol Buffers, require that the generated files |
||||
have the same directory layout as the input files used to generate |
||||
them. This can now be achieved like this: |
||||
|
||||
```meson |
||||
g = generator(...) # Compiles protobuf sources |
||||
generated = gen.process('com/mesonbuild/one.proto', |
||||
'com/mesonbuild/two.proto', |
||||
preserve_path_from : meson.current_source_dir()) |
||||
|
||||
This would cause the following files to be generated inside the target |
||||
private directory: |
||||
|
||||
com/mesonbuild/one.pb.h |
||||
com/mesonbuild/one.pb.cc |
||||
com/mesonbuild/two.pb.h |
||||
com/mesonbuild/two.pb.cc |
@ -1,5 +0,0 @@ |
||||
## Hexadecimal string literals |
||||
|
||||
Hexadecimal integer literals can now be used in build and option files. |
||||
|
||||
int_255 = 0xFF |
@ -1,7 +0,0 @@ |
||||
## b_ndebug : if-release |
||||
|
||||
The value `if-release` can be given for the `b_ndebug` project option. |
||||
|
||||
This will make the `NDEBUG` pre-compiler macro to be defined for release |
||||
type builds as if the `b_ndebug` project option had had the value `true` |
||||
defined for it. |
@ -1,4 +0,0 @@ |
||||
## install_subdir() supports strip_directory |
||||
|
||||
If strip_directory=true install_subdir() installs directory contents |
||||
instead of directory itself, stripping basename of the source directory. |
@ -1,5 +0,0 @@ |
||||
## `install_data()` defaults to `{datadir}/{projectname}` |
||||
|
||||
If `install_data()` is not given an `install_dir` keyword argument, the |
||||
target directory defaults to `{datadir}/{projectname}` (e.g. |
||||
`/usr/share/myproj`). |
@ -1,6 +0,0 @@ |
||||
## Integer options |
||||
|
||||
There is a new integer option type with optional minimum and maximum |
||||
values. It can be specified like this in the `meson_options.txt` file: |
||||
|
||||
option('integer_option', type : 'integer', min : 0, max : 5, value : 3) |
@ -1,4 +0,0 @@ |
||||
## New method meson.project_license() |
||||
|
||||
The `meson` builtin object now has a `project_license()` method that returns a |
||||
list of all licenses for the project. |
@ -1,16 +0,0 @@ |
||||
## Rust cross-compilation |
||||
|
||||
Cross-compilation is now supported for Rust targets. Like other |
||||
cross-compilers, the Rust binary must be specified in your cross |
||||
file. It should specify a `--target` (as installed by `rustup target`) |
||||
and a custom linker pointing to your C cross-compiler. For example: |
||||
|
||||
``` |
||||
[binaries] |
||||
c = '/usr/bin/arm-linux-gnueabihf-gcc-7' |
||||
rust = [ |
||||
'rustc', |
||||
'--target', 'arm-unknown-linux-gnueabihf', |
||||
'-C', 'linker=/usr/bin/arm-linux-gnueabihf-gcc-7', |
||||
] |
||||
``` |
@ -1,6 +0,0 @@ |
||||
## Rust compiler-private library disambiguation |
||||
|
||||
When building a Rust target with Rust library dependencies, an |
||||
`--extern` argument is now specified to avoid ambiguity between the |
||||
dependency library, and any crates of the same name in `rustc`'s |
||||
private sysroot. |
@ -1,8 +0,0 @@ |
||||
## Project templates |
||||
|
||||
Meson ships with predefined project templates. To start a new project from |
||||
scratch, simply go to an empty directory and type: |
||||
|
||||
```meson |
||||
meson init --name=myproject --type=executable --language=c |
||||
``` |
@ -1,16 +0,0 @@ |
||||
## Improve test setup selection |
||||
|
||||
Test setups are now identified (also) by the project they belong to and it |
||||
is possible to select the used test setup from a specific project. E.g. |
||||
to use a test setup `some_setup` from project `some_project` for all |
||||
executed tests one can use |
||||
|
||||
meson test --setup some_project:some_setup |
||||
|
||||
Should one rather want test setups to be used from the same project as |
||||
where the current test itself has been defined, one can use just |
||||
|
||||
meson test --setup some_setup |
||||
|
||||
In the latter case every (sub)project must have a test setup `some_setup` |
||||
defined in it. |
@ -1,3 +0,0 @@ |
||||
## Can use custom targets as Windows resource files |
||||
|
||||
The `compile_resources()` function of the `windows` module can now be used on custom targets as well as regular files. |
@ -1,11 +0,0 @@ |
||||
# Can promote dependencies with wrap command |
||||
|
||||
The `promote` command makes it easy to copy nested dependencies to the top level. |
||||
|
||||
meson wrap promote scommon |
||||
|
||||
This will search the project tree for a subproject called `scommon` and copy it to the top level. |
||||
|
||||
If there are many embedded subprojects with the same name, you have to specify which one to promote manually like this: |
||||
|
||||
meson wrap promote subprojects/s1/subprojects/scommon |
@ -1,8 +0,0 @@ |
||||
## Yielding subproject option to superproject |
||||
|
||||
Normally project options are specific to the current project. However |
||||
sometimes you want to have an option whose value is the same over all |
||||
projects. This can be achieved with the new `yield` keyword for |
||||
options. When set to `true`, getting the value of this option in |
||||
`meson.build` files gets the value from the option with the same name |
||||
in the master project (if such an option exists). |
Loading…
Reference in new issue