diff options
30 files changed, 359 insertions, 324 deletions
diff --git a/docs/markdown/Release-notes-for-0.56.0.md b/docs/markdown/Release-notes-for-0.56.0.md new file mode 100644 index 0000000..6fca70a --- /dev/null +++ b/docs/markdown/Release-notes-for-0.56.0.md @@ -0,0 +1,357 @@ +--- +title: Release 0.56.0 +short-description: Release notes for 0.56.0 +... + +# New features + +## Python 3.5 support will be dropped in the next release + +The final [Python 3.5 release was 3.5.10 in September](https://www.python.org/dev/peps/pep-0478/#id4). +This release series is now End-of-Life (EOL). The only LTS distribution that +still only ships Python 3.5 is Ubuntu 16.04, which will be +[EOL in April 2021](https://ubuntu.com/about/release-cycle). + +Python 3.6 has numerous features that we find useful such as improved support +for the `typing` module, f-string support, and better integration with the +`pathlib` module. + +As a result, we will begin requiring Python 3.6 or newer in Meson 0.57, which +is the next release. Starting with Meson 0.56, we now print a `NOTICE:` when +a `meson` command is run on Python 3.5 to inform users about this. This notice +has also been backported into the 0.55.2 stable release. + +## `meson test` can now filter tests by subproject + +You could always specify a list of tests to run by passing the names as +arguments to `meson test`. If there were multiple tests with that name (in the +same project or different subprojects), all of them would be run. Now you can: + +1. Run all tests with the specified name from a specific subproject: `meson test subprojname:testname` +1. Run all tests defined in a specific subproject: `meson test subprojectname:` + +As before, these can all be specified multiple times and mixed: + +```sh +# Run: +# * All tests called 'name1' or 'name2' and +# * All tests called 'name3' in subproject 'bar' and +# * All tests in subproject 'foo' +$ meson test name1 name2 bar:name3 foo: +``` + +## Native (build machine) compilers not always required by `project()` + +When cross-compiling, native (build machine) compilers for the languages +specified in `project()` are not required, if no targets use them. + +## New `extra_files` key in target introspection + +The target introspection (`meson introspect --targets`, `intro-targets.json`) +now has the new `extra_files` key which lists all files specified via the +`extra_files` kwarg of a build target (see `executable()`, etc.) + + +## Preliminary AIX support + +AIX is now supported when compiling with gcc. A number of features are not +supported yet. For example, only gcc is supported (not xlC). Archives with both +32-bit and 64-bit dynamic libraries are not generated automatically. The rpath +includes both the build and install rpath, no attempt is made to change the +rpath at install time. Most advanced features (eg. link\_whole) are not +supported yet. + +## Wraps from subprojects are automatically promoted + +It is not required to promote wrap files for subprojects into the main project +any more. When configuring a subproject, meson will look for any wrap file or +directory in the subproject's `subprojects/` directory and add them into the +global list of available subprojects, to be used by any future `subproject()` +call or `dependency()` fallback. If a subproject with the same name already exists, +the new wrap file or directory is ignored. That means that the main project can +always override any subproject's wrap files by providing their own, it also means +the ordering in which subprojects are configured matters, if 2 subprojects provide +foo.wrap only the one from the first subproject to be configured will be used. + +This new behavior can be disabled by passing `--wrap-mode=nopromote`. + +## `meson.build_root()` and `meson.source_root()` are deprecated + +Those function are common source of issue when used in a subproject because they +point to the parent project root which is rarely what is expected and is a +violation of subproject isolation. + +`meson.current_source_dir()` and `meson.current_build_dir()` should be used instead +and have been available in all Meson versions. New functions `meson.project_source_root()` +and `meson.project_build_root()` have been added in Meson 0.56.0 to get the root +of the current (sub)project. + +## `dep.as_link_whole()` + +Dependencies created with `declare_dependency()` now has new method `as_link_whole()`. +It returns a copy of the dependency object with all link_with arguments changed +to link_whole. This is useful for example for fallback dependency from a +subproject built with `default_library=static`. + +```meson +somelib = static_library('somelib', ...) +dep = declare_dependency(..., link_with: somelib) +library('someotherlib', ..., dependencies: dep.as_link_whole()) +``` + +## Add support for all Windows subsystem types + +It is now possible to build things like Windows kernel drivers with +the new `win_subsystem` keyword argument. This replaces the old +`gui_app` keyword argument, which is now deprecated. You should update +your project to use the new style like this: + +```meson +# Old way +executable(..., gui_app: 'true') +# New way +executable(..., win_subsystem: 'windows') +``` + +The argument supports versioning [as described on MSDN +documentation](https://docs.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem). +Thus to build a Windows kernel driver with a specific version you'd +write something like this: + +```meson +executable(..., win_subsystem: 'native,6.02') +``` + +## Added NVidia HPC SDK compilers + +Added support for `nvidia_hpc` NVidia HPC SDK compilers, which are currently in public beta testing. + +## Project and built-in options can be set in native or cross files + +A new set of sections has been added to the cross and native files, `[project +options]` and `[<subproject_name>:project options]`, where `subproject_name` +is the name of a subproject. Any options that are allowed in the project can +be set from this section. They have the lowest precedent, and will be +overwritten by command line arguments. + + +```meson +option('foo', type : 'string', value : 'foo') +``` + +```ini +[project options] +foo = 'other val' +``` + +```console +meson build --native-file my.ini +``` + +Will result in the option foo having the value `other val`, + +```console +meson build --native-file my.ini -Dfoo='different val' +``` + +Will result in the option foo having the value `different val`, + + +Subproject options are assigned like this: + +```ini +[zlib:project options] +foo = 'some val' +``` + +Additionally meson level options can be set in the same way, using the +`[built-in options]` section. + +```ini +[built-in options] +c_std = 'c99' +``` + +These options can also be set on a per-subproject basis, although only +`default_library` and `werror` can currently be set: +```ini +[zlib:built-in options] +default_library = 'static' +``` + +## `unstable-keyval` is now stable `keyval` + +The `unstable-keyval` has been renamed to `keyval` and now promises stability +guarantees. + +Meson will print a warning when you load an `unstable-` module that has been +stabilised (so `unstable-keyval` is still accepted for example). + +## CMake subproject cross compilation support + +Meson now supports cross compilation for CMake subprojects. Meson will try to +automatically guess most of the required CMake toolchain variables from existing +entries in the cross and native files. These variables will be stored in an +automatically generate CMake toolchain file in the build directory. The +remaining variables that can't be guessed can be added by the user in the +new `[cmake]` cross/native file section. + +## Machine file keys are stored case sensitive + +Previous the keys were always lowered, which worked fine for the values that +were allowed in the machine files. With the addition of per-project options +we need to make these sensitive to case, as the options in meson_options.txt +are sensitive to case already. + +## Consistency between `declare_dependency()` and `pkgconfig.generate()` variables + +The `variables` keyword argument in `declare_dependency()` used to only support +dictionary and `pkgconfig.generate()` only list of strings. They now both support +dictionary and list of strings in the format `'name=value'`. This makes easier +to share a common set of variables for both: + +```meson +vars = {'foo': 'bar'} +dep = declare_dependency(..., variables: vars) +pkg.generate(..., variables: vars) +``` + +## Qt5 compile_translations now supports qresource preprocessing + +When using qtmod.preprocess() in combination with qtmod.compile_translations() +to embed translations using rcc, it is no longer required to do this: + +```meson +ts_files = ['list', 'of', 'files'] +qtmod.compile_translations(ts_files) +# lang.qrc also contains the duplicated list of files +lang_cpp = qtmod.preprocess(qresources: 'lang.qrc') +``` + +Instead, use: +```meson +lang_cpp = qtmod.compile_translations(qresource: 'lang.qrc') +``` + +which will automatically detect and generate the needed compile_translations +targets. + +## Controlling subproject dependencies with `dependency(allow_fallback: ...)` + +As an alternative to the `fallback` keyword argument to `dependency`, +you may use `allow_fallback`, which accepts a boolean value. If `true` +and the dependency is not found on the system, Meson will fallback +to a subproject that provides this dependency, even if the dependency +is optional. If `false`, Meson will not fallback even if a subproject +provides this dependency. + +## Custom standard library + +- It is not limited to cross builds any more, `<lang>_stdlib` property can be + set in native files. +- The variable name parameter is no longer required as long as the subproject + calls `meson.override_dependency('c_stdlib', mylibc_dep)`. + +## Improvements for the builtin curses dependency + +This method has been extended to use config-tools, and a fallback to +find_library for lookup as well as pkg-config. + +## HDF5 dependency improvements + +HDF5 has been improved so that the internal representations have been split. +This allows selecting pkg-config and config-tool dependencies separately. +Both work as proper dependencies of their type, so `get_variable` and similar +now work correctly. + +It has also been fixed to use the selected compiler for the build instead of +the default compiler. + +## External projects + +A new experimental module `unstable_external_project` has been added to build +code using other build systems than Meson. Currently only supporting projects +with a configure script that generates Makefiles. + +```meson +project('My Autotools Project', 'c', + meson_version : '>=0.56.0', +) + +mod = import('unstable_external_project') + +p = mod.add_project('configure', + configure_options : ['--prefix=@PREFIX@', + '--libdir=@LIBDIR@', + '--incdir=@INCLUDEDIR@', + '--enable-foo', + ], +) + +mylib_dep = p.dependency('mylib') +``` + + +## Per subproject `warning_level` option + +`warning_level` can now be defined per subproject, in the same way as +`default_library` and `werror`. + +## `meson subprojects` command + +A new `--types` argument has been added to all subcommands to run the command only +on wraps with the specified types. For example this command will only print `Hello` +for each git subproject: `meson subprojects foreach --types git echo "Hello"`. +Multiple types can be set as comma separated list e.g. `--types git,file`. + +Subprojects with no wrap file are now taken into account as well. This happens +for example for subprojects configured as git submodule, or downloaded manually +by the user and placed into the `subprojects/` directory. + +The `checkout` subcommand now always stash any pending changes before switching +branch. Note that `update` subcommand was already stashing changes before updating +the branch. + +If the command fails on any subproject the execution continues with other +subprojects, but at the end an error code is now returned. + +The `update` subcommand has been reworked: +- In the case the URL of `origin` is different as the `url` set in wrap file, + the subproject will not be updated unless `--reset` is specified (see below). +- In the case a subproject directory exists and is not a git repository but has + a `[wrap-git]`, meson used to run git commands that would wrongly apply to the + main project. It now skip the subproject unless `--reset` is specified (see below). +- The `--rebase` behaviour is now the default for consistency: it was + already rebasing when current branch and revision are the same, it is + less confusing to rebase when they are different too. +- Add `--reset` mode that checkout the new branch and hard reset that + branch to remote commit. This new mode guarantees that every + subproject are exactly at the wrap's revision. In addition the URL of `origin` + is updated in case it changed in the wrap file. If the subproject directory is + not a git repository but has a `[wrap-git]` the directory is deleted and the + new repository is cloned. +- Local changes are always stashed first to avoid any data loss. In the + worst case scenario the user can always check reflog and stash list to + rollback. + +## Added CompCert C compiler + +Added experimental support for the [CompCert formally-verified C compiler](https://github.com/AbsInt/CompCert). The current state of the implementation is good enough to build the [picolibc project](https://github.com/picolibc/picolibc) with CompCert, but might still need additional adjustments for other projects. + +## Dependencies listed in test and benchmark introspection + +The introspection data for tests and benchmarks now includes the target +ids for executables and built files that are needed by the test. IDEs can +use this feature to update the build more quickly before running a test. + +## `include_type` support for the CMake subproject object dependency method + +The `dependency()` method of the CMake subproject object now also supports the +`include_type` kwarg which is similar to the sane kwarg in the `dependency()` +function. + +## Deprecate Dependency.get_pkgconfig_variable and Dependency.get_configtool_variable + +These have been replaced with the more versatile `get_variable()` method +already, and shouldn't be used anymore. + diff --git a/docs/markdown/snippets/add_compcert_compiler.md b/docs/markdown/snippets/add_compcert_compiler.md deleted file mode 100644 index b8e45f8..0000000 --- a/docs/markdown/snippets/add_compcert_compiler.md +++ /dev/null @@ -1,3 +0,0 @@ -## Added CompCert C compiler - -Added experimental support for the [CompCert formally-verified C compiler](https://github.com/AbsInt/CompCert). The current state of the implementation is good enough to build the [picolibc project](https://github.com/picolibc/picolibc) with CompCert, but might still need additional adjustments for other projects. diff --git a/docs/markdown/snippets/add_nvidia_hpc_sdk_compilers.md b/docs/markdown/snippets/add_nvidia_hpc_sdk_compilers.md deleted file mode 100644 index 1d9acf9..0000000 --- a/docs/markdown/snippets/add_nvidia_hpc_sdk_compilers.md +++ /dev/null @@ -1,3 +0,0 @@ -## Added NVidia HPC SDK compilers - -Added support for `nvidia_hpc` NVidia HPC SDK compilers, which are currently in public beta testing. diff --git a/docs/markdown/snippets/aix.md b/docs/markdown/snippets/aix.md deleted file mode 100644 index 1249888..0000000 --- a/docs/markdown/snippets/aix.md +++ /dev/null @@ -1,8 +0,0 @@ -## Preliminary AIX support - -AIX is now supported when compiling with gcc. A number of features are not -supported yet. For example, only gcc is supported (not xlC). Archives with both -32-bit and 64-bit dynamic libraries are not generated automatically. The rpath -includes both the build and install rpath, no attempt is made to change the -rpath at install time. Most advanced features (eg. link\_whole) are not -supported yet. diff --git a/docs/markdown/snippets/as_link_whole.md b/docs/markdown/snippets/as_link_whole.md deleted file mode 100644 index 39f1289..0000000 --- a/docs/markdown/snippets/as_link_whole.md +++ /dev/null @@ -1,12 +0,0 @@ -## `dep.as_link_whole()` - -Dependencies created with `declare_dependency()` now has new method `as_link_whole()`. -It returns a copy of the dependency object with all link_with arguments changed -to link_whole. This is useful for example for fallback dependency from a -subproject built with `default_library=static`. - -```meson -somelib = static_library('somelib', ...) -dep = declare_dependency(..., link_with: somelib) -library('someotherlib', ..., dependencies: dep.as_link_whole()) -``` diff --git a/docs/markdown/snippets/cmake_cross.md b/docs/markdown/snippets/cmake_cross.md deleted file mode 100644 index 249c95f..0000000 --- a/docs/markdown/snippets/cmake_cross.md +++ /dev/null @@ -1,8 +0,0 @@ -## CMake subproject cross compilation support - -Meson now supports cross compilation for CMake subprojects. Meson will try to -automatically guess most of the required CMake toolchain variables from existing -entries in the cross and native files. These variables will be stored in an -automatically generate CMake toolchain file in the build directory. The -remaining variables that can't be guessed can be added by the user in the -new `[cmake]` cross/native file section. diff --git a/docs/markdown/snippets/cmake_include_type.md b/docs/markdown/snippets/cmake_include_type.md deleted file mode 100644 index f8637c0..0000000 --- a/docs/markdown/snippets/cmake_include_type.md +++ /dev/null @@ -1,5 +0,0 @@ -## `include_type` support for the CMake subproject object dependency method - -The `dependency()` method of the CMake subproject object now also supports the -`include_type` kwarg which is similar to the sane kwarg in the `dependency()` -function. diff --git a/docs/markdown/snippets/curses-dependency-improvements.md b/docs/markdown/snippets/curses-dependency-improvements.md deleted file mode 100644 index 237da4c..0000000 --- a/docs/markdown/snippets/curses-dependency-improvements.md +++ /dev/null @@ -1,4 +0,0 @@ -## Improvements for the builtin curses dependency - -This method has been extended to use config-tools, and a fallback to -find_library for lookup as well as pkg-config. diff --git a/docs/markdown/snippets/deprecate_old_variable_methods.md b/docs/markdown/snippets/deprecate_old_variable_methods.md deleted file mode 100644 index 3f41689..0000000 --- a/docs/markdown/snippets/deprecate_old_variable_methods.md +++ /dev/null @@ -1,4 +0,0 @@ -## Deprecate Dependency.get_pkgconfig_variable and Dependency.get_configtool_variable - -These have been replaced with the more versatile `get_variable()` method -already, and shouldn't be used anymore. diff --git a/docs/markdown/snippets/deprecate_source_build_root.md b/docs/markdown/snippets/deprecate_source_build_root.md deleted file mode 100644 index 1cebef4..0000000 --- a/docs/markdown/snippets/deprecate_source_build_root.md +++ /dev/null @@ -1,10 +0,0 @@ -## `meson.build_root()` and `meson.source_root()` are deprecated - -Those function are common source of issue when used in a subproject because they -point to the parent project root which is rarely what is expected and is a -violation of subproject isolation. - -`meson.current_source_dir()` and `meson.current_build_dir()` should be used instead -and have been available in all Meson versions. New functions `meson.project_source_root()` -and `meson.project_build_root()` have been added in Meson 0.56.0 to get the root -of the current (sub)project. diff --git a/docs/markdown/snippets/external_project.md b/docs/markdown/snippets/external_project.md deleted file mode 100644 index 0ecaac8..0000000 --- a/docs/markdown/snippets/external_project.md +++ /dev/null @@ -1,24 +0,0 @@ -## External projects - -A new experimental module `unstable_external_project` has been added to build -code using other build systems than Meson. Currently only supporting projects -with a configure script that generates Makefiles. - -```meson -project('My Autotools Project', 'c', - meson_version : '>=0.56.0', -) - -mod = import('unstable_external_project') - -p = mod.add_project('configure', - configure_options : ['--prefix=@PREFIX@', - '--libdir=@LIBDIR@', - '--incdir=@INCLUDEDIR@', - '--enable-foo', - ], -) - -mylib_dep = p.dependency('mylib') -``` - diff --git a/docs/markdown/snippets/fallback_bool.md b/docs/markdown/snippets/fallback_bool.md deleted file mode 100644 index 14bef50..0000000 --- a/docs/markdown/snippets/fallback_bool.md +++ /dev/null @@ -1,8 +0,0 @@ -## Controlling subproject dependencies with `dependency(allow_fallback: ...)` - -As an alternative to the `fallback` keyword argument to `dependency`, -you may use `allow_fallback`, which accepts a boolean value. If `true` -and the dependency is not found on the system, Meson will fallback -to a subproject that provides this dependency, even if the dependency -is optional. If `false`, Meson will not fallback even if a subproject -provides this dependency. diff --git a/docs/markdown/snippets/hdf5_dependnecy_improvements.md b/docs/markdown/snippets/hdf5_dependnecy_improvements.md deleted file mode 100644 index 857eb90..0000000 --- a/docs/markdown/snippets/hdf5_dependnecy_improvements.md +++ /dev/null @@ -1,9 +0,0 @@ -## HDF5 dependency improvements - -HDF5 has been improved so that the internal representations have been split. -This allows selecting pkg-config and config-tool dependencies separately. -Both work as proper dependencies of their type, so `get_variable` and similar -now work correctly. - -It has also been fixed to use the selected compiler for the build instead of -the default compiler. diff --git a/docs/markdown/snippets/intro_extra_files.md b/docs/markdown/snippets/intro_extra_files.md deleted file mode 100644 index 43475cd..0000000 --- a/docs/markdown/snippets/intro_extra_files.md +++ /dev/null @@ -1,6 +0,0 @@ -## New `extra_files` key in target introspection - -The target introspection (`meson introspect --targets`, `intro-targets.json`) -now has the new `extra_files` key which lists all files specified via the -`extra_files` kwarg of a build target (see `executable()`, etc.) - diff --git a/docs/markdown/snippets/introspect_test_deps.md b/docs/markdown/snippets/introspect_test_deps.md deleted file mode 100644 index a29ea09..0000000 --- a/docs/markdown/snippets/introspect_test_deps.md +++ /dev/null @@ -1,5 +0,0 @@ -## Dependencies listed in test and benchmark introspection - -The introspection data for tests and benchmarks now includes the target -ids for executables and built files that are needed by the test. IDEs can -use this feature to update the build more quickly before running a test. diff --git a/docs/markdown/snippets/keyval.md b/docs/markdown/snippets/keyval.md deleted file mode 100644 index 895de9b..0000000 --- a/docs/markdown/snippets/keyval.md +++ /dev/null @@ -1,7 +0,0 @@ -## `unstable-keyval` is now stable `keyval` - -The `unstable-keyval` has been renamed to `keyval` and now promises stability -guarantees. - -Meson will print a warning when you load an `unstable-` module that has been -stabilised (so `unstable-keyval` is still accepted for example). diff --git a/docs/markdown/snippets/machine-files-case-insensitve.md b/docs/markdown/snippets/machine-files-case-insensitve.md deleted file mode 100644 index cacd37c..0000000 --- a/docs/markdown/snippets/machine-files-case-insensitve.md +++ /dev/null @@ -1,6 +0,0 @@ -## Machine file keys are stored case sensitive - -Previous the keys were always lowered, which worked fine for the values that -were allowed in the machine files. With the addition of per-project options -we need to make these sensitive to case, as the options in meson_options.txt -are sensitive to case already. diff --git a/docs/markdown/snippets/mtest_test_list_subprojects.md b/docs/markdown/snippets/mtest_test_list_subprojects.md deleted file mode 100644 index a8dbf4c..0000000 --- a/docs/markdown/snippets/mtest_test_list_subprojects.md +++ /dev/null @@ -1,18 +0,0 @@ -## `meson test` can now filter tests by subproject - -You could always specify a list of tests to run by passing the names as -arguments to `meson test`. If there were multiple tests with that name (in the -same project or different subprojects), all of them would be run. Now you can: - -1. Run all tests with the specified name from a specific subproject: `meson test subprojname:testname` -1. Run all tests defined in a specific subproject: `meson test subprojectname:` - -As before, these can all be specified multiple times and mixed: - -```sh -# Run: -# * All tests called 'name1' or 'name2' and -# * All tests called 'name3' in subproject 'bar' and -# * All tests in subproject 'foo' -$ meson test name1 name2 bar:name3 foo: -``` diff --git a/docs/markdown/snippets/native_compiler_not_required.md b/docs/markdown/snippets/native_compiler_not_required.md deleted file mode 100644 index ee51ef8..0000000 --- a/docs/markdown/snippets/native_compiler_not_required.md +++ /dev/null @@ -1,4 +0,0 @@ -## Native (build machine) compilers not always required by `project()` - -When cross-compiling, native (build machine) compilers for the languages -specified in `project()` are not required, if no targets use them. diff --git a/docs/markdown/snippets/per_subproject.md b/docs/markdown/snippets/per_subproject.md deleted file mode 100644 index 6de6068..0000000 --- a/docs/markdown/snippets/per_subproject.md +++ /dev/null @@ -1,4 +0,0 @@ -## Per subproject `warning_level` option - -`warning_level` can now be defined per subproject, in the same way as -`default_library` and `werror`. diff --git a/docs/markdown/snippets/pkg_idep_variables.md b/docs/markdown/snippets/pkg_idep_variables.md deleted file mode 100644 index 4e69b18..0000000 --- a/docs/markdown/snippets/pkg_idep_variables.md +++ /dev/null @@ -1,12 +0,0 @@ -## Consistency between `declare_dependency()` and `pkgconfig.generate()` variables - -The `variables` keyword argument in `declare_dependency()` used to only support -dictionary and `pkgconfig.generate()` only list of strings. They now both support -dictionary and list of strings in the format `'name=value'`. This makes easier -to share a common set of variables for both: - -```meson -vars = {'foo': 'bar'} -dep = declare_dependency(..., variables: vars) -pkg.generate(..., variables: vars) -``` diff --git a/docs/markdown/snippets/project_options_in_machine_files.md b/docs/markdown/snippets/project_options_in_machine_files.md deleted file mode 100644 index 8dab951..0000000 --- a/docs/markdown/snippets/project_options_in_machine_files.md +++ /dev/null @@ -1,52 +0,0 @@ -## Project and built-in options can be set in native or cross files - -A new set of sections has been added to the cross and native files, `[project -options]` and `[<subproject_name>:project options]`, where `subproject_name` -is the name of a subproject. Any options that are allowed in the project can -be set from this section. They have the lowest precedent, and will be -overwritten by command line arguments. - - -```meson -option('foo', type : 'string', value : 'foo') -``` - -```ini -[project options] -foo = 'other val' -``` - -```console -meson build --native-file my.ini -``` - -Will result in the option foo having the value `other val`, - -```console -meson build --native-file my.ini -Dfoo='different val' -``` - -Will result in the option foo having the value `different val`, - - -Subproject options are assigned like this: - -```ini -[zlib:project options] -foo = 'some val' -``` - -Additionally meson level options can be set in the same way, using the -`[built-in options]` section. - -```ini -[built-in options] -c_std = 'c99' -``` - -These options can also be set on a per-subproject basis, although only -`default_library` and `werror` can currently be set: -```ini -[zlib:built-in options] -default_library = 'static' -``` diff --git a/docs/markdown/snippets/python35-eol.md b/docs/markdown/snippets/python35-eol.md deleted file mode 100644 index bd9a074..0000000 --- a/docs/markdown/snippets/python35-eol.md +++ /dev/null @@ -1,15 +0,0 @@ -## Python 3.5 support will be dropped in the next release - -The final [Python 3.5 release was 3.5.10 in September](https://www.python.org/dev/peps/pep-0478/#id4). -This release series is now End-of-Life (EOL). The only LTS distribution that -still only ships Python 3.5 is Ubuntu 16.04, which will be -[EOL in April 2021](https://ubuntu.com/about/release-cycle). - -Python 3.6 has numerous features that we find useful such as improved support -for the `typing` module, f-string support, and better integration with the -`pathlib` module. - -As a result, we will begin requiring Python 3.6 or newer in Meson 0.57, which -is the next release. Starting with Meson 0.56, we now print a `NOTICE:` when -a `meson` command is run on Python 3.5 to inform users about this. This notice -has also been backported into the 0.55.2 stable release. diff --git a/docs/markdown/snippets/qt_compile_translations_from_qrc.md b/docs/markdown/snippets/qt_compile_translations_from_qrc.md deleted file mode 100644 index bfa8619..0000000 --- a/docs/markdown/snippets/qt_compile_translations_from_qrc.md +++ /dev/null @@ -1,19 +0,0 @@ -## Qt5 compile_translations now supports qresource preprocessing - -When using qtmod.preprocess() in combination with qtmod.compile_translations() -to embed translations using rcc, it is no longer required to do this: - -```meson -ts_files = ['list', 'of', 'files'] -qtmod.compile_translations(ts_files) -# lang.qrc also contains the duplicated list of files -lang_cpp = qtmod.preprocess(qresources: 'lang.qrc') -``` - -Instead, use: -```meson -lang_cpp = qtmod.compile_translations(qresource: 'lang.qrc') -``` - -which will automatically detect and generate the needed compile_translations -targets. diff --git a/docs/markdown/snippets/stdlib.md b/docs/markdown/snippets/stdlib.md deleted file mode 100644 index 5e80dd5..0000000 --- a/docs/markdown/snippets/stdlib.md +++ /dev/null @@ -1,6 +0,0 @@ -## Custom standard library - -- It is not limited to cross builds any more, `<lang>_stdlib` property can be - set in native files. -- The variable name parameter is no longer required as long as the subproject - calls `meson.override_dependency('c_stdlib', mylibc_dep)`. diff --git a/docs/markdown/snippets/subprojects_update.md b/docs/markdown/snippets/subprojects_update.md deleted file mode 100644 index b5aa17c..0000000 --- a/docs/markdown/snippets/subprojects_update.md +++ /dev/null @@ -1,36 +0,0 @@ -## `meson subprojects` command - -A new `--types` argument has been added to all subcommands to run the command only -on wraps with the specified types. For example this command will only print `Hello` -for each git subproject: `meson subprojects foreach --types git echo "Hello"`. -Multiple types can be set as comma separated list e.g. `--types git,file`. - -Subprojects with no wrap file are now taken into account as well. This happens -for example for subprojects configured as git submodule, or downloaded manually -by the user and placed into the `subprojects/` directory. - -The `checkout` subcommand now always stash any pending changes before switching -branch. Note that `update` subcommand was already stashing changes before updating -the branch. - -If the command fails on any subproject the execution continues with other -subprojects, but at the end an error code is now returned. - -The `update` subcommand has been reworked: -- In the case the URL of `origin` is different as the `url` set in wrap file, - the subproject will not be updated unless `--reset` is specified (see below). -- In the case a subproject directory exists and is not a git repository but has - a `[wrap-git]`, meson used to run git commands that would wrongly apply to the - main project. It now skip the subproject unless `--reset` is specified (see below). -- The `--rebase` behaviour is now the default for consistency: it was - already rebasing when current branch and revision are the same, it is - less confusing to rebase when they are different too. -- Add `--reset` mode that checkout the new branch and hard reset that - branch to remote commit. This new mode guarantees that every - subproject are exactly at the wrap's revision. In addition the URL of `origin` - is updated in case it changed in the wrap file. If the subproject directory is - not a git repository but has a `[wrap-git]` the directory is deleted and the - new repository is cloned. -- Local changes are always stashed first to avoid any data loss. In the - worst case scenario the user can always check reflog and stash list to - rollback. diff --git a/docs/markdown/snippets/subsubproject.md b/docs/markdown/snippets/subsubproject.md deleted file mode 100644 index 77f4a0d..0000000 --- a/docs/markdown/snippets/subsubproject.md +++ /dev/null @@ -1,13 +0,0 @@ -## Wraps from subprojects are automatically promoted - -It is not required to promote wrap files for subprojects into the main project -any more. When configuring a subproject, meson will look for any wrap file or -directory in the subproject's `subprojects/` directory and add them into the -global list of available subprojects, to be used by any future `subproject()` -call or `dependency()` fallback. If a subproject with the same name already exists, -the new wrap file or directory is ignored. That means that the main project can -always override any subproject's wrap files by providing their own, it also means -the ordering in which subprojects are configured matters, if 2 subprojects provide -foo.wrap only the one from the first subproject to be configured will be used. - -This new behavior can be disabled by passing `--wrap-mode=nopromote`. diff --git a/docs/markdown/snippets/winsubsystem.md b/docs/markdown/snippets/winsubsystem.md deleted file mode 100644 index a7d589f..0000000 --- a/docs/markdown/snippets/winsubsystem.md +++ /dev/null @@ -1,22 +0,0 @@ -## Add support for all Windows subsystem types - -It is now possible to build things like Windows kernel drivers with -the new `win_subsystem` keyword argument. This replaces the old -`gui_app` keyword argument, which is now deprecated. You should update -your project to use the new style like this: - -```meson -# Old way -executable(..., gui_app: 'true') -# New way -executable(..., win_subsystem: 'windows') -``` - -The argument supports versioning [as described on MSDN -documentation](https://docs.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem). -Thus to build a Windows kernel driver with a specific version you'd -write something like this: - -```meson -executable(..., win_subsystem: 'native,6.02') -``` diff --git a/docs/sitemap.txt b/docs/sitemap.txt index 246ee3e..27f6638 100644 --- a/docs/sitemap.txt +++ b/docs/sitemap.txt @@ -79,6 +79,7 @@ index.md Shipping-prebuilt-binaries-as-wraps.md fallback-wraptool.md Release-notes.md + Release-notes-for-0.56.0.md Release-notes-for-0.55.0.md Release-notes-for-0.54.0.md Release-notes-for-0.53.0.md diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 7d24568..252b1a7 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -39,7 +39,7 @@ if T.TYPE_CHECKING: OptionDictType = T.Union[T.Dict[str, 'UserOption[T.Any]'], OptionOverrideProxy] CompilerCheckCacheKey = T.Tuple[T.Tuple[str, ...], str, str, T.Tuple[str, ...], str] -version = '0.56.0.rc2' +version = '0.56.0' backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'vs2019', 'xcode'] default_yielding = False |