diff --git a/docs/markdown/Release-notes-for-0.62.0.md b/docs/markdown/Release-notes-for-0.62.0.md new file mode 100644 index 000000000..83cd9b6e8 --- /dev/null +++ b/docs/markdown/Release-notes-for-0.62.0.md @@ -0,0 +1,409 @@ +--- +title: Release 0.62.0 +short-description: Release notes for 0.62.0 +... + +# New features + +## Bash completion scripts sourced in `meson devenv` + +If bash-completion scripts are being installed and the shell is bash, they will +be automatically sourced. + +## Setup GDB auto-load for `meson devenv` + +When GDB helper scripts (*-gdb.py, *-gdb.gdb, and *-gdb.csm) are installed with +a library name that matches one being built, Meson adds the needed auto-load +commands into `/.gdbinit` file. When running gdb from top build +directory, that file is loaded by gdb automatically. + +## Print modified environment variables with `meson devenv --dump` + +With `--dump` option, all envorinment variables that have been modified are +printed instead of starting an interactive shell. It can be used by shell +scripts that wish to setup their environment themself. + +## New `method` and `separator` kwargs on `environment()` and `meson.add_devenv()` + +It simplifies this common pattern: +```meson +env = environment() +env.prepend('FOO', ['a', 'b'], separator: ',') +meson.add_devenv(env) +``` + +becomes one line: +```meson +meson.add_devenv({'FOO': ['a', 'b']}, method: 'prepend', separator: ',') +``` + +or two lines: +```meson +env = environment({'FOO': ['a', 'b']}, method: 'prepend', separator: ',') +meson.add_devenv(env) +``` + +## New custom dependency for libdl + +``` +dependency('dl') +``` + +will now check for the functionality of libdl.so, but first check if it is +provided in the libc (for example in libc on OpenBSD or in musl libc on linux). + +## pkgconfig.generate will now include variables for builtin directories when referenced + +When using the `variables:` family of kwargs to `pkgconfig.generate` to refer +to installed paths, traditionally only `prefix`, `includedir`, and `libdir` +were available by default, and generating a correct (relocatable) pkg-config +file required manually constructing variables for e.g. `datadir`. + +Meson now checks each variable to see if it begins with a reference to a +standard directory, and if so, adds it to the list of directories for which a +builtin variable is created. + +For example, before it was necessary to do this: +```meson +pkgconfig.generate( + name: 'bash-completion', + description: 'programmable completion for the bash shell', + dataonly: true, + variables: { + 'prefix': get_option('prefix'), + 'datadir': join_paths('${prefix}', get_option('datadir')), + 'sysconfdir': join_paths('${prefix}', get_option('sysconfdir')), + + 'compatdir': '${sysconfdir}/bash_completion.d', + 'completionsdir': '${datadir}/bash-completion/completions', + 'helpersdir': '${datadir}/bash-completion/helpers', + }, + install_dir: join_paths(get_option('datadir'), 'pkgconfig'), +) +``` + +Now the first three variables are not needed. + +## New keyword argument `verbose` for tests and benchmarks + +The new keyword argument `verbose` can be used to mark tests and benchmarks +that must always be logged verbosely on the console. This is particularly +useful for long-running tests, or when a single Meson test() is wrapping +an external test harness. + +## CMake support for versions <3.17.0 is deprecated + +Support for CMake versions below 3.17.0 is now deprecated for *both* CMake +dependencies and subprojects. + +## Removal of the RPM module + +Due to lack of interest, lack of maintainership, and lack of a clear purpose, +the RPM module has been removed. + +Users interested in one-shot tools to generate an RPM spec file template for +distro packaging, are encouraged develop an external tool that reads the +introspection data. + +For more details, see https://github.com/mesonbuild/meson/issues/9764 + +## CMake server API support is removed + +Support for the +[deprecated (since CMake 3.15)](https://cmake.org/cmake/help/latest/release/3.15.html#deprecated-and-removed-features) +and now +[removed (since CMake 3.20)](https://cmake.org/cmake/help/latest/release/3.20.html#deprecated-and-removed-features) +CMake server API is dropped from Meson. + +The new CMake minimum version for CMake subprojects is now CMake 3.14. + +## Rust proc-macro crates + +Rust has these handy things called proc-macro crates, which are a bit like a +compiler plugin. We can now support them, simply build a [[shared_library]] with +the `rust_crate_type` set to `proc-macro`. + +```meson +proc = shared_library( + 'proc', + 'proc.rs', + rust_crate_type : 'proc-macro', + install : false, +) + +user = executable('user, 'user.rs', link_with : proc) +``` + +## found programs now have a version method + +The return value of [[find_program]] can now check the exact version of the +found program, independent of the minimum version requirement. This can be used +e.g. to perform different actions depending on the exact version detected. + +## Minimum required Python version updated to 3.7 + +Meson now requires at least Python version 3.7 to run as Python 3.6 reached EOL +on December 2021. In practice this should only affect people developing on +Ubuntu Bionic, who will need to manually install python3.8 from the official +repositories. + + +## Added support for XML translations using itstool + +XML files can now be translated easier by using `itstool` via +`i18n.itstool_join()`. This ensures the XML is translated correctly +based on the defined ITS rules for the specific XML layout. + +## JNI System Dependency Modules + +The JNI system dependency now supports a `modules` keyword argument which is a +list containing any of the following: `jvm`, `awt`. + +```meson +jni_dep = dependency('jni', version: '>= 1.8.0', modules: ['jvm', 'awt']) +``` + +This will add appropriate linker arguments to your target. + +## New unstable wayland module + +This module can search for protocol xml files from the wayland-protocols +package, and generate .c and .h files using wayland-scanner. + +## Experimental command to convert environments to cross files + +Meson has a new command `env2mfile` that can be used to convert +"environment variable based" cross and native compilation environments +to Meson machine files. This is especially convenient for e.g. distro +packagers so they can easily generate unambiguous configuration files +for packge building. + +As an example here's how you would generate a cross file that takes +its settings from the `CC`, `CXX`, `CFLAGS` etc environment variables. + + meson env2mfile --cross --system=baremetal --cpu=armv7 --cpu-family=arm -o armcross.txt + +The command also has support for generating Debian build files using +system introspection: + + meson env2mfile --cross --debarch armhf -o debarmhf_cross.txt + +Note how you don't need to specify any system details, the command +gets them transparently via `dpkg-architecture`. + +Creating a native file is done in the same way: + + meson env2mfile --native -o current_system.txt + +This system will detect if the `_FOR_BUILD` environment variables are +enabled and then uses them as needed. + +With this you should be able to convert any envvar-based cross build +setup to cross and native files and then use those. This means, among +other things, that you can then run your compilations from any shell, +not just the special one that has all the environment variables set. + +As this functionality is still a bit in flux, the specific behaviour +and command line arguments to use are subject to change. Because of +this the main documentation has not yet been updated. + +Please try this for your use cases and report to us if it is working. +Patches to make the autodetection work on other distros and platforms +are also welcome. + +## Added optional '--allow-dirty' flag for the 'dist' command + +An optional `--allow-dirty` flag has been added to the `dist` command. + +Previously, if uncommitted changes were present, Meson would warn about +this but continue with the dist process. It now errors out instead. The +error can be suppressed by using the `--allow-dirty` option. + +## ldconfig is no longer run on install + +Due to various issues of fragility and concern that it doesn't predictably do +the right thing, meson no longer runs ldconfig during `meson install`, and +users who need it run should run it themselves, instead. + +## Added support for Texas Instruments MSP430 and ARM compilers + +Meson now supports the TI [MSP430](https://www.ti.com/tool/MSP-CGT) and +[ARM](https://www.ti.com/tool/ARM-CGT) toolchains. The compiler and linker are +identified as `ti` and `ti-ar`, respectively. To maintain backwards +compatibility with existing build definitions, the [C2000 +toolchain](https://www.ti.com/tool/C2000-CGT) is still identified as `c2000` and +`ar2000`. + +## cmake.configure_package_config_file can now take a dict + +The `configuration` kwarg of the `configure_package_config_file()` function +from the `cmake` module can now take a dict object, just like the regular +`configure_file()` function. + +## Deprecated `java.generate_native_header()` in favor of the new `java.generate_native_headers()` + +`java.generate_native_header()` was only useful for the most basic of +situations. It didn't take into account that in order to generate native +headers, you had to have all the referenced Java files. It also didn't take +into account inner classes. Do not use this function from `0.62.0` onward. + +`java.generate_native_headers()` has been added as a replacement which should account for the previous function's shortcomings. + +```java +// Outer.java + +package com.mesonbuild; + +public class Outer { + private static native void outer(); + + public static class Inner { + private static native void inner(); + } +} +``` + +With the above file, an invocation would look like the following: + +```meson +java = import('java') + +native_headers = java.generate_native_headers( + 'Outer.java', + package: 'com.mesonbuild', + classes: ['Outer', 'Outer.Inner'] +) +``` + +## New option to choose python installation environment + +It is now possible to specify `-Dpython.install_env` and choose how python modules are installed. + +- `venv`: assume that a virtualenv is active and install to that +- `system`: install to the global site-packages of the selected interpreter + (the one that the venv module calls --system-site-packages) +- `prefix`: preserve existing behavior +- `auto`: autodetect whether to use venv or system + +## JDK System Dependency Renamed from `jdk` to `jni` + +The JDK system dependency is useful for creating native Java modules using the +JNI. Since the purpose is to find the JNI, it has been decided that a better +name is in fact "jni". Use of `dependency('jdk')` should be replaced with +`dependency('jni')`. + +## i18n.merge_file no longer arbitrarily leaves your project half-built + +The i18n module partially accounts for builds with NLS disabled, by disabling +gettext compiled translation catalogs if it cannot build them. Due to +implementation details, this also disabled important data files created via +merge_file, leading to important desktop files etc. not being installed. + +This overreaction has been fixed. It is no longer possible to have NLS-disabled +builds which break the project by not installing important files which have +nothing to do with NLS (other than including some). + +If you were depending on not having the Gettext tools installed and +successfully mis-building your project, you may need to make your project +actually work with NLS disabled, for example by providing some version of your +files which is still installed even when merge_file cannot be run. + +## All directory options now support paths outside of prefix + +Previously, Meson only allowed most directory options to be relative to prefix. +This restriction has been now lifted, bringing us in line with Autotools and +CMake. It is also useful for platforms like Nix, which install projects into +multiple independent prefixes. + +As a consequence, `get_option` might return absolute paths for any +directory option, if a directory outside of prefix is passed. This +is technically a backwards incompatible change but its effect +should be minimal, thanks to widespread use of `join_paths`/ +`/` operator and pkg-config generator module. + +## `meson install --strip` + +It is now possible to strip targets using `meson install --strip` even if +`-Dstrip=true` option was not set during configuration. This allows doing +stripped and not stripped installations without reconfiguring the build. + +## Support for ARM Ltd. Clang toolchain + +Support for the `armltdclang` compiler has been added. This differs from the +existing `armclang` toolchain in that it is a fork of Clang by ARM Ltd. and +supports native compilation. The Keil `armclang` toolchain only supports +cross-compilation to embedded devices. + +## structured_sources() + +A new function, `structured_sources()` has been added. This function allows +languages like Rust which depend on the filesystem layout at compile time to mix +generated and static sources. + +```meson +executable( + 'main', + structured_sources( + 'main.rs, + {'mod' : generated_mod_rs}, + ) +) +``` + +Meson will then at build time copy the files into the build directory (if +necessary), so that the desired file structure is laid out, and compile that. In +this case: + +``` +root/ + main.rs + mod/ + mod.rs +``` + +## New custom dependency for OpenSSL + +Detecting an OpenSSL installation in a cross-platform manner can be +complicated. Officially, pkg-config is supported by upstream. Unofficially, +cmake includes a FindOpenSSL using a different name and which requires +specifying modules. + +Meson will now allow the pkg-config name to work in all cases using the following lookup order: +- prefer pkg-config if at all possible +- attempt to probe the system for the standard library naming, and retrieve the version from the headers +- if all else fails, check if cmake can find it + +## D features in `declare_dependency` + +`declare_dependency`accepts parameters for D specific features. +Accepted new parameters are `d_module_features` and `d_import_dirs`. + +This can be useful to propagate conditional compilation versions. E.g.: + +```meson +my_lua_dep = declare_dependency( + # ... + d_module_features: ['LUA_53'], + d_import_dirs: include_directories('my_lua_folder'), +) +``` + +## arch_independent kwarg in cmake.write_basic_package_version_file + +The `write_basic_package_version_file()` function from the `cmake` module +now supports an `arch_independent` kwarg, so that architecture checks in +the generated Package Version file are skipped, reproducing the behaviour of +CMake's [ARCH_INDEPENDENT](https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html#command:write_basic_package_version_file) +option. + +## `dataonly` Pkgconfig Default Install Path + +The default install path for `dataonly` pkgconfig files has changed from +`${libdir}/pkgconfig` to `${datadir}/pkgconfig`. + +## JAR default install dir + +The previous default for `jar()` was `libdir`. With this release, it has been +changed to `datadir/java`. Please open an issue if this is not a sane default +for your system. + diff --git a/docs/markdown/snippets/about_minimum_python_version.md b/docs/markdown/snippets/about_minimum_python_version.md deleted file mode 100644 index fa44a75de..000000000 --- a/docs/markdown/snippets/about_minimum_python_version.md +++ /dev/null @@ -1,7 +0,0 @@ -## Minimum required Python version updated to 3.7 - -Meson now requires at least Python version 3.7 to run as Python 3.6 reached EOL -on December 2021. In practice this should only affect people developing on -Ubuntu Bionic, who will need to manually install python3.8 from the official -repositories. - diff --git a/docs/markdown/snippets/armclang-support.md b/docs/markdown/snippets/armclang-support.md deleted file mode 100644 index 80e7af23c..000000000 --- a/docs/markdown/snippets/armclang-support.md +++ /dev/null @@ -1,6 +0,0 @@ -## Support for ARM Ltd. Clang toolchain - -Support for the `armltdclang` compiler has been added. This differs from the -existing `armclang` toolchain in that it is a fork of Clang by ARM Ltd. and -supports native compilation. The Keil `armclang` toolchain only supports -cross-compilation to embedded devices. diff --git a/docs/markdown/snippets/cmake_configure_package_config_dict.md b/docs/markdown/snippets/cmake_configure_package_config_dict.md deleted file mode 100644 index 253a88741..000000000 --- a/docs/markdown/snippets/cmake_configure_package_config_dict.md +++ /dev/null @@ -1,5 +0,0 @@ -## cmake.configure_package_config_file can now take a dict - -The `configuration` kwarg of the `configure_package_config_file()` function -from the `cmake` module can now take a dict object, just like the regular -`configure_file()` function. diff --git a/docs/markdown/snippets/cmake_deprecation.md b/docs/markdown/snippets/cmake_deprecation.md deleted file mode 100644 index 4a6730c61..000000000 --- a/docs/markdown/snippets/cmake_deprecation.md +++ /dev/null @@ -1,4 +0,0 @@ -## CMake support for versions <3.17.0 is deprecated - -Support for CMake versions below 3.17.0 is now deprecated for *both* CMake -dependencies and subprojects. diff --git a/docs/markdown/snippets/cmake_remove_server_api.md b/docs/markdown/snippets/cmake_remove_server_api.md deleted file mode 100644 index 2b3e60565..000000000 --- a/docs/markdown/snippets/cmake_remove_server_api.md +++ /dev/null @@ -1,9 +0,0 @@ -## CMake server API support is removed - -Support for the -[deprecated (since CMake 3.15)](https://cmake.org/cmake/help/latest/release/3.15.html#deprecated-and-removed-features) -and now -[removed (since CMake 3.20)](https://cmake.org/cmake/help/latest/release/3.20.html#deprecated-and-removed-features) -CMake server API is dropped from Meson. - -The new CMake minimum version for CMake subprojects is now CMake 3.14. diff --git a/docs/markdown/snippets/cmake_version_file_arch.md b/docs/markdown/snippets/cmake_version_file_arch.md deleted file mode 100644 index b85798e9a..000000000 --- a/docs/markdown/snippets/cmake_version_file_arch.md +++ /dev/null @@ -1,7 +0,0 @@ -## arch_independent kwarg in cmake.write_basic_package_version_file - -The `write_basic_package_version_file()` function from the `cmake` module -now supports an `arch_independent` kwarg, so that architecture checks in -the generated Package Version file are skipped, reproducing the behaviour of -CMake's [ARCH_INDEPENDENT](https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html#command:write_basic_package_version_file) -option. diff --git a/docs/markdown/snippets/dataonly-pkgconfig-default-install-path.md b/docs/markdown/snippets/dataonly-pkgconfig-default-install-path.md deleted file mode 100644 index d968158df..000000000 --- a/docs/markdown/snippets/dataonly-pkgconfig-default-install-path.md +++ /dev/null @@ -1,4 +0,0 @@ -## `dataonly` Pkgconfig Default Install Path - -The default install path for `dataonly` pkgconfig files has changed from -`${libdir}/pkgconfig` to `${datadir}/pkgconfig`. diff --git a/docs/markdown/snippets/declare_dependency-d-features.md b/docs/markdown/snippets/declare_dependency-d-features.md deleted file mode 100644 index f1731017f..000000000 --- a/docs/markdown/snippets/declare_dependency-d-features.md +++ /dev/null @@ -1,14 +0,0 @@ -## D features in `declare_dependency` - -`declare_dependency`accepts parameters for D specific features. -Accepted new parameters are `d_module_features` and `d_import_dirs`. - -This can be useful to propagate conditional compilation versions. E.g.: - -```meson -my_lua_dep = declare_dependency( - # ... - d_module_features: ['LUA_53'], - d_import_dirs: include_directories('my_lua_folder'), -) -``` diff --git a/docs/markdown/snippets/devenv.md b/docs/markdown/snippets/devenv.md deleted file mode 100644 index bffa5faff..000000000 --- a/docs/markdown/snippets/devenv.md +++ /dev/null @@ -1,37 +0,0 @@ -## Bash completion scripts sourced in `meson devenv` - -If bash-completion scripts are being installed and the shell is bash, they will -be automatically sourced. - -## Setup GDB auto-load for `meson devenv` - -When GDB helper scripts (*-gdb.py, *-gdb.gdb, and *-gdb.csm) are installed with -a library name that matches one being built, Meson adds the needed auto-load -commands into `/.gdbinit` file. When running gdb from top build -directory, that file is loaded by gdb automatically. - -## Print modified environment variables with `meson devenv --dump` - -With `--dump` option, all envorinment variables that have been modified are -printed instead of starting an interactive shell. It can be used by shell -scripts that wish to setup their environment themself. - -## New `method` and `separator` kwargs on `environment()` and `meson.add_devenv()` - -It simplifies this common pattern: -```meson -env = environment() -env.prepend('FOO', ['a', 'b'], separator: ',') -meson.add_devenv(env) -``` - -becomes one line: -```meson -meson.add_devenv({'FOO': ['a', 'b']}, method: 'prepend', separator: ',') -``` - -or two lines: -```meson -env = environment({'FOO': ['a', 'b']}, method: 'prepend', separator: ',') -meson.add_devenv(env) -``` diff --git a/docs/markdown/snippets/dir_options_outside_prefix.md b/docs/markdown/snippets/dir_options_outside_prefix.md deleted file mode 100644 index ceb5e5062..000000000 --- a/docs/markdown/snippets/dir_options_outside_prefix.md +++ /dev/null @@ -1,12 +0,0 @@ -## All directory options now support paths outside of prefix - -Previously, Meson only allowed most directory options to be relative to prefix. -This restriction has been now lifted, bringing us in line with Autotools and -CMake. It is also useful for platforms like Nix, which install projects into -multiple independent prefixes. - -As a consequence, `get_option` might return absolute paths for any -directory option, if a directory outside of prefix is passed. This -is technically a backwards incompatible change but its effect -should be minimal, thanks to widespread use of `join_paths`/ -`/` operator and pkg-config generator module. diff --git a/docs/markdown/snippets/dist-allow-dirty-flag.md b/docs/markdown/snippets/dist-allow-dirty-flag.md deleted file mode 100644 index 63ca3a0b5..000000000 --- a/docs/markdown/snippets/dist-allow-dirty-flag.md +++ /dev/null @@ -1,7 +0,0 @@ -## Added optional '--allow-dirty' flag for the 'dist' command - -An optional `--allow-dirty` flag has been added to the `dist` command. - -Previously, if uncommitted changes were present, Meson would warn about -this but continue with the dist process. It now errors out instead. The -error can be suppressed by using the `--allow-dirty` option. diff --git a/docs/markdown/snippets/env2mfile.md b/docs/markdown/snippets/env2mfile.md deleted file mode 100644 index a57561865..000000000 --- a/docs/markdown/snippets/env2mfile.md +++ /dev/null @@ -1,40 +0,0 @@ -## Experimental command to convert environments to cross files - -Meson has a new command `env2mfile` that can be used to convert -"environment variable based" cross and native compilation environments -to Meson machine files. This is especially convenient for e.g. distro -packagers so they can easily generate unambiguous configuration files -for packge building. - -As an example here's how you would generate a cross file that takes -its settings from the `CC`, `CXX`, `CFLAGS` etc environment variables. - - meson env2mfile --cross --system=baremetal --cpu=armv7 --cpu-family=arm -o armcross.txt - -The command also has support for generating Debian build files using -system introspection: - - meson env2mfile --cross --debarch armhf -o debarmhf_cross.txt - -Note how you don't need to specify any system details, the command -gets them transparently via `dpkg-architecture`. - -Creating a native file is done in the same way: - - meson env2mfile --native -o current_system.txt - -This system will detect if the `_FOR_BUILD` environment variables are -enabled and then uses them as needed. - -With this you should be able to convert any envvar-based cross build -setup to cross and native files and then use those. This means, among -other things, that you can then run your compilations from any shell, -not just the special one that has all the environment variables set. - -As this functionality is still a bit in flux, the specific behaviour -and command line arguments to use are subject to change. Because of -this the main documentation has not yet been updated. - -Please try this for your use cases and report to us if it is working. -Patches to make the autodetection work on other distros and platforms -are also welcome. diff --git a/docs/markdown/snippets/find_program-version.md b/docs/markdown/snippets/find_program-version.md deleted file mode 100644 index fe3a9a6cf..000000000 --- a/docs/markdown/snippets/find_program-version.md +++ /dev/null @@ -1,5 +0,0 @@ -## found programs now have a version method - -The return value of [[find_program]] can now check the exact version of the -found program, independent of the minimum version requirement. This can be used -e.g. to perform different actions depending on the exact version detected. diff --git a/docs/markdown/snippets/i18n-itstool_join-added.md b/docs/markdown/snippets/i18n-itstool_join-added.md deleted file mode 100644 index 53e8d61c8..000000000 --- a/docs/markdown/snippets/i18n-itstool_join-added.md +++ /dev/null @@ -1,5 +0,0 @@ -## Added support for XML translations using itstool - -XML files can now be translated easier by using `itstool` via -`i18n.itstool_join()`. This ensures the XML is translated correctly -based on the defined ITS rules for the specific XML layout. diff --git a/docs/markdown/snippets/jar_default_install_dir.md b/docs/markdown/snippets/jar_default_install_dir.md deleted file mode 100644 index 780cfa24e..000000000 --- a/docs/markdown/snippets/jar_default_install_dir.md +++ /dev/null @@ -1,5 +0,0 @@ -## JAR default install dir - -The previous default for `jar()` was `libdir`. With this release, it has been -changed to `datadir/java`. Please open an issue if this is not a sane default -for your system. diff --git a/docs/markdown/snippets/java_generate_native_headers.md b/docs/markdown/snippets/java_generate_native_headers.md deleted file mode 100644 index 2a2a89e3d..000000000 --- a/docs/markdown/snippets/java_generate_native_headers.md +++ /dev/null @@ -1,34 +0,0 @@ -## Deprecated `java.generate_native_header()` in favor of the new `java.generate_native_headers()` - -`java.generate_native_header()` was only useful for the most basic of -situations. It didn't take into account that in order to generate native -headers, you had to have all the referenced Java files. It also didn't take -into account inner classes. Do not use this function from `0.62.0` onward. - -`java.generate_native_headers()` has been added as a replacement which should account for the previous function's shortcomings. - -```java -// Outer.java - -package com.mesonbuild; - -public class Outer { - private static native void outer(); - - public static class Inner { - private static native void inner(); - } -} -``` - -With the above file, an invocation would look like the following: - -```meson -java = import('java') - -native_headers = java.generate_native_headers( - 'Outer.java', - package: 'com.mesonbuild', - classes: ['Outer', 'Outer.Inner'] -) -``` diff --git a/docs/markdown/snippets/jdk-renamed-to-jni.md b/docs/markdown/snippets/jdk-renamed-to-jni.md deleted file mode 100644 index d1e7f9d46..000000000 --- a/docs/markdown/snippets/jdk-renamed-to-jni.md +++ /dev/null @@ -1,6 +0,0 @@ -## JDK System Dependency Renamed from `jdk` to `jni` - -The JDK system dependency is useful for creating native Java modules using the -JNI. Since the purpose is to find the JNI, it has been decided that a better -name is in fact "jni". Use of `dependency('jdk')` should be replaced with -`dependency('jni')`. diff --git a/docs/markdown/snippets/jni-system-dep-modules.md b/docs/markdown/snippets/jni-system-dep-modules.md deleted file mode 100644 index 1f2c567ca..000000000 --- a/docs/markdown/snippets/jni-system-dep-modules.md +++ /dev/null @@ -1,10 +0,0 @@ -## JNI System Dependency Modules - -The JNI system dependency now supports a `modules` keyword argument which is a -list containing any of the following: `jvm`, `awt`. - -```meson -jni_dep = dependency('jni', version: '>= 1.8.0', modules: ['jvm', 'awt']) -``` - -This will add appropriate linker arguments to your target. diff --git a/docs/markdown/snippets/libdl-dependency.md b/docs/markdown/snippets/libdl-dependency.md deleted file mode 100644 index fee780ca9..000000000 --- a/docs/markdown/snippets/libdl-dependency.md +++ /dev/null @@ -1,8 +0,0 @@ -## New custom dependency for libdl - -``` -dependency('dl') -``` - -will now check for the functionality of libdl.so, but first check if it is -provided in the libc (for example in libc on OpenBSD or in musl libc on linux). diff --git a/docs/markdown/snippets/merge_file_sanity.md b/docs/markdown/snippets/merge_file_sanity.md deleted file mode 100644 index ff59c513d..000000000 --- a/docs/markdown/snippets/merge_file_sanity.md +++ /dev/null @@ -1,15 +0,0 @@ -## i18n.merge_file no longer arbitrarily leaves your project half-built - -The i18n module partially accounts for builds with NLS disabled, by disabling -gettext compiled translation catalogs if it cannot build them. Due to -implementation details, this also disabled important data files created via -merge_file, leading to important desktop files etc. not being installed. - -This overreaction has been fixed. It is no longer possible to have NLS-disabled -builds which break the project by not installing important files which have -nothing to do with NLS (other than including some). - -If you were depending on not having the Gettext tools installed and -successfully mis-building your project, you may need to make your project -actually work with NLS disabled, for example by providing some version of your -files which is still installed even when merge_file cannot be run. diff --git a/docs/markdown/snippets/no_ldconfig.md b/docs/markdown/snippets/no_ldconfig.md deleted file mode 100644 index 73ac81adc..000000000 --- a/docs/markdown/snippets/no_ldconfig.md +++ /dev/null @@ -1,5 +0,0 @@ -## ldconfig is no longer run on install - -Due to various issues of fragility and concern that it doesn't predictably do -the right thing, meson no longer runs ldconfig during `meson install`, and -users who need it run should run it themselves, instead. diff --git a/docs/markdown/snippets/openssl_dependency.md b/docs/markdown/snippets/openssl_dependency.md deleted file mode 100644 index f6f9b6385..000000000 --- a/docs/markdown/snippets/openssl_dependency.md +++ /dev/null @@ -1,11 +0,0 @@ -## New custom dependency for OpenSSL - -Detecting an OpenSSL installation in a cross-platform manner can be -complicated. Officially, pkg-config is supported by upstream. Unofficially, -cmake includes a FindOpenSSL using a different name and which requires -specifying modules. - -Meson will now allow the pkg-config name to work in all cases using the following lookup order: -- prefer pkg-config if at all possible -- attempt to probe the system for the standard library naming, and retrieve the version from the headers -- if all else fails, check if cmake can find it diff --git a/docs/markdown/snippets/pkgconfig_directory_variables.md b/docs/markdown/snippets/pkgconfig_directory_variables.md deleted file mode 100644 index 27a406900..000000000 --- a/docs/markdown/snippets/pkgconfig_directory_variables.md +++ /dev/null @@ -1,31 +0,0 @@ -## pkgconfig.generate will now include variables for builtin directories when referenced - -When using the `variables:` family of kwargs to `pkgconfig.generate` to refer -to installed paths, traditionally only `prefix`, `includedir`, and `libdir` -were available by default, and generating a correct (relocatable) pkg-config -file required manually constructing variables for e.g. `datadir`. - -Meson now checks each variable to see if it begins with a reference to a -standard directory, and if so, adds it to the list of directories for which a -builtin variable is created. - -For example, before it was necessary to do this: -```meson -pkgconfig.generate( - name: 'bash-completion', - description: 'programmable completion for the bash shell', - dataonly: true, - variables: { - 'prefix': get_option('prefix'), - 'datadir': join_paths('${prefix}', get_option('datadir')), - 'sysconfdir': join_paths('${prefix}', get_option('sysconfdir')), - - 'compatdir': '${sysconfdir}/bash_completion.d', - 'completionsdir': '${datadir}/bash-completion/completions', - 'helpersdir': '${datadir}/bash-completion/helpers', - }, - install_dir: join_paths(get_option('datadir'), 'pkgconfig'), -) -``` - -Now the first three variables are not needed. diff --git a/docs/markdown/snippets/python_module_env.md b/docs/markdown/snippets/python_module_env.md deleted file mode 100644 index 87a156d3b..000000000 --- a/docs/markdown/snippets/python_module_env.md +++ /dev/null @@ -1,9 +0,0 @@ -## New option to choose python installation environment - -It is now possible to specify `-Dpython.install_env` and choose how python modules are installed. - -- `venv`: assume that a virtualenv is active and install to that -- `system`: install to the global site-packages of the selected interpreter - (the one that the venv module calls --system-site-packages) -- `prefix`: preserve existing behavior -- `auto`: autodetect whether to use venv or system diff --git a/docs/markdown/snippets/removing_rpm_module.md b/docs/markdown/snippets/removing_rpm_module.md deleted file mode 100644 index c492d5116..000000000 --- a/docs/markdown/snippets/removing_rpm_module.md +++ /dev/null @@ -1,10 +0,0 @@ -## Removal of the RPM module - -Due to lack of interest, lack of maintainership, and lack of a clear purpose, -the RPM module has been removed. - -Users interested in one-shot tools to generate an RPM spec file template for -distro packaging, are encouraged develop an external tool that reads the -introspection data. - -For more details, see https://github.com/mesonbuild/meson/issues/9764 diff --git a/docs/markdown/snippets/rust_proc_macro_crates.md b/docs/markdown/snippets/rust_proc_macro_crates.md deleted file mode 100644 index 780a5b3e4..000000000 --- a/docs/markdown/snippets/rust_proc_macro_crates.md +++ /dev/null @@ -1,16 +0,0 @@ -## Rust proc-macro crates - -Rust has these handy things called proc-macro crates, which are a bit like a -compiler plugin. We can now support them, simply build a [[shared_library]] with -the `rust_crate_type` set to `proc-macro`. - -```meson -proc = shared_library( - 'proc', - 'proc.rs', - rust_crate_type : 'proc-macro', - install : false, -) - -user = executable('user, 'user.rs', link_with : proc) -``` diff --git a/docs/markdown/snippets/strip.md b/docs/markdown/snippets/strip.md deleted file mode 100644 index e971df699..000000000 --- a/docs/markdown/snippets/strip.md +++ /dev/null @@ -1,5 +0,0 @@ -## `meson install --strip` - -It is now possible to strip targets using `meson install --strip` even if -`-Dstrip=true` option was not set during configuration. This allows doing -stripped and not stripped installations without reconfiguring the build. diff --git a/docs/markdown/snippets/structured_sources.md b/docs/markdown/snippets/structured_sources.md deleted file mode 100644 index 19fdc86f2..000000000 --- a/docs/markdown/snippets/structured_sources.md +++ /dev/null @@ -1,26 +0,0 @@ -## structured_sources() - -A new function, `structured_sources()` has been added. This function allows -languages like Rust which depend on the filesystem layout at compile time to mix -generated and static sources. - -```meson -executable( - 'main', - structured_sources( - 'main.rs, - {'mod' : generated_mod_rs}, - ) -) -``` - -Meson will then at build time copy the files into the build directory (if -necessary), so that the desired file structure is laid out, and compile that. In -this case: - -``` -root/ - main.rs - mod/ - mod.rs -``` diff --git a/docs/markdown/snippets/test-verbose.md b/docs/markdown/snippets/test-verbose.md deleted file mode 100644 index 6d9aa0f98..000000000 --- a/docs/markdown/snippets/test-verbose.md +++ /dev/null @@ -1,6 +0,0 @@ -## New keyword argument `verbose` for tests and benchmarks - -The new keyword argument `verbose` can be used to mark tests and benchmarks -that must always be logged verbosely on the console. This is particularly -useful for long-running tests, or when a single Meson test() is wrapping -an external test harness. diff --git a/docs/markdown/snippets/ti_compilers.md b/docs/markdown/snippets/ti_compilers.md deleted file mode 100644 index 76833313a..000000000 --- a/docs/markdown/snippets/ti_compilers.md +++ /dev/null @@ -1,8 +0,0 @@ -## Added support for Texas Instruments MSP430 and ARM compilers - -Meson now supports the TI [MSP430](https://www.ti.com/tool/MSP-CGT) and -[ARM](https://www.ti.com/tool/ARM-CGT) toolchains. The compiler and linker are -identified as `ti` and `ti-ar`, respectively. To maintain backwards -compatibility with existing build definitions, the [C2000 -toolchain](https://www.ti.com/tool/C2000-CGT) is still identified as `c2000` and -`ar2000`. diff --git a/docs/markdown/snippets/wayland-module.md b/docs/markdown/snippets/wayland-module.md deleted file mode 100644 index cd5e5dce7..000000000 --- a/docs/markdown/snippets/wayland-module.md +++ /dev/null @@ -1,4 +0,0 @@ -## New unstable wayland module - -This module can search for protocol xml files from the wayland-protocols -package, and generate .c and .h files using wayland-scanner. diff --git a/docs/sitemap.txt b/docs/sitemap.txt index e562ac79d..c7b722748 100644 --- a/docs/sitemap.txt +++ b/docs/sitemap.txt @@ -88,6 +88,7 @@ index.md Wrap-best-practices-and-tips.md Shipping-prebuilt-binaries-as-wraps.md Release-notes.md + Release-notes-for-0.62.0.md Release-notes-for-0.61.0.md Release-notes-for-0.60.0.md Release-notes-for-0.59.0.md diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index f063e4e65..aff678ad3 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -1,4 +1,4 @@ -# Copyright 2012-2021 The Meson development team +# Copyright 2012-2022 The Meson development team # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ if T.TYPE_CHECKING: # # Pip requires that RCs are named like this: '0.1.0.rc1' # But the corresponding Git tag needs to be '0.1.0rc1' -version = '0.62.0.rc2' +version = '0.62.0' backendlist = ['ninja', 'vs', 'vs2010', 'vs2012', 'vs2013', 'vs2015', 'vs2017', 'vs2019', 'vs2022', 'xcode']