diff --git a/docs/markdown/Release-notes-for-1.3.0.md b/docs/markdown/Release-notes-for-1.3.0.md new file mode 100644 index 000000000000..cf6ad46ae064 --- /dev/null +++ b/docs/markdown/Release-notes-for-1.3.0.md @@ -0,0 +1,338 @@ +--- +title: Release 1.3.0 +short-description: Release notes for 1.3.0 +... + +# New features + +Meson 1.3.0 was released on 19 November 2023 +## Clarify of implicitly-included headers in C-like compiler checks + +Compiler check methods `compiler.compute_int()`, `compiler.alignment()` +and `compiler.sizeof()` now have their implicitly-included headers +corrected and documented. + +`` was included unintentionally when cross-compiling, which +is less than ideal because there is no guarantee that a standard library +is available for the target platform. Only `` is included instead. + +For projects that depend on the old behavior, the compiler check methods +have an optional argument `prefix`, which can be used to specify additional +`#include` directives. + +## Treat warnings as error in compiler checks + +Compiler check methods `compiler.compiles()`, `compiler.links()` and `compiler.run()` +now have a new `werror: true` keyword argument to treat compiler warnings as error. +This can be used to check if code compiles without warnings. + +## Compilers now have a `has_define` method + +This method returns true if the given preprocessor symbol is +defined, else false is returned. This is useful is cases where +an empty define has to be distinguished from a non-set one, which +is not possible using `get_define`. + +Additionally it makes intent clearer for code that only needs +to check if a specific define is set at all and does not care +about its value. + +## [[configure_file]] now has a `macro_name` parameter. + +This new paramater, `macro_name` allows C macro-style include guards to be added +to [[configure_file]]'s output when a template file is not given. This change +simplifies the creation of configure files that define macros with dynamic names +and want the C-style include guards. + +## `c_std` and `cpp_std` options now accepts a list of values + +Projects that prefer GNU C, but can fallback to ISO C, can now set, for +example, `default_options: 'c_std=gnu11,c11'`, and it will use `gnu11` when +available, but fallback to `c11` otherwise. It is an error only if none of the +values are supported by the current compiler. + +Likewise, a project that can take benefit of `c++17` but can still build with +`c++11` can set `default_options: 'cpp_std=c++17,c++11'`. + +This allows us to deprecate `gnuXX` values from the MSVC compiler. That means +that `default_options: 'c_std=gnu11'` will now print a warning with MSVC +but fallback to `c11`. No warning is printed if at least one +of the values is valid, i.e. `default_options: 'c_std=gnu11,c11'`. + +In the future that deprecation warning will become an hard error because +`c_std=gnu11` should mean GNU is required, for projects that cannot be +built with MSVC for example. + +## More meaningful description of many generative tasks + +When a module uses a `CustomTarget` to process files, it now has the possibility +to customize the message displayed by ninja. + +Many modules were updated to take advantage of this new feature. + +## Deprecate 'jar' as a build_target type + +The point of `build_target()` is that what is produced can be conditionally +changed. However, `jar()` has a significant number of non-overlapping arguments +from other build_targets, including the kinds of sources it can include. Because +of this crafting a `build_target` that can be used as a Jar and as something +else is incredibly hard to do. As such, it has been deprecated, and using +`jar()` directly is recommended. + +## generator.process() gains 'env' keyword argument + +Like the kwarg of the same name in `custom_target()`, `env` allows +you to set the environment in which the generator will process inputs. + +## Target names for executables now take into account suffixes. + +In previous versions of meson, a `meson.build` file like this: + +``` +exectuable('foo', 'main.c') +exectuable('foo', 'main.c', name_suffix: 'bar') +``` + +would result in a configure error because meson internally used +the same id for both executables. This build file is now allowed +since meson takes into account the `bar` suffix when generating the +second executable. This allows for executables with the same basename +but different suffixes to be built in the same subdirectory. + +## Executable gains vs_module_defs keyword + +This allows using a .def file to control which functions an [[executable]] will +expose to a [[shared_module]]. + +## find_program() now supports the 'default_options' argument + +In a similar fashion as dependency(), find_program() now also allows you to set default +options for the subproject that gets built in case of a fallback. + +## `fs.relative_to()` + +The `fs` module now has a `relative_to` method. The method will return the +relative path from argument one to argument two, if one exists. Otherwise, the +absolute path to argument one is returned. + +```meson +assert(fs.relative_to('c:\\prefix\\lib', 'c:\\prefix\\bin') == '..\\lib') +assert(fs.relative_to('c:\\proj1\\foo', 'd:\\proj1\\bar') == 'c:\\proj1\\foo') +assert(fs.relative_to('prefix\\lib\\foo', 'prefix') == 'lib\\foo') + +assert(fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib') +assert(fs.relative_to('prefix/lib/foo', 'prefix') == 'lib/foo') +``` + +In addition to strings, it can handle files, custom targets, custom target +indices, and build targets. + +## Added follow_symlinks arg to install_data, install_header, and install_subdir + +The [[install_data]], [[install_headers]], [[install_subdir]] functions now +have an optional argument `follow_symlinks` that, if set to `true`, makes it so +symbolic links in the source are followed, rather than copied into the +destination tree, to match the old behavior. The default, which is currently +to follow links, is subject to change in the future. + +## Added 'fill' kwarg to int.to_string() + +int.to_string() now accepts a `fill` argument. This allows you to pad the +string representation of the integer with leading zeroes: + +```meson +n = 4 +message(n.to_string()) +message(n.to_string(fill: 3)) + +n = -4 +message(n.to_string(fill: 3)) +``` + +OUTPUT: +```meson +4 +004 +-04 +``` + +## Added 'json' output_format to configure_file() + +When no input file is specified, [[configure_file]] can now +generate a `json` file from given [[@cfg_data]]. +Field descriptions are not preserved in the json file. + +## `@GLOBAL_SOURCE_ROOT@` and `@DIRNAME@` in machine files + +Some tokens are now replaced in the machine file before parsing it: +- `@GLOBAL_SOURCE_ROOT@`: the absolute path to the project's source tree +- `@DIRNAME@`: the absolute path to the machine file's parent directory. + +It can be used, for example, to have paths relative to the source directory, or +relative to toolchain's installation directory. +```ini +[binaries] +c = '@DIRNAME@/toolchain/gcc' +exe_wrapper = '@GLOBAL_SOURCE_ROOT@' / 'build-aux' / 'my-exe-wrapper.sh' +``` + +## clang-tidy-fix target + +If `clang-tidy` is installed and the project's source root contains a +`.clang-tidy` (or `_clang-tidy`) file, Meson will automatically define +a `clang-tidy-fix` target that runs `run-clang-tidy` tool with `-fix` +option to apply the changes found by clang-tidy to the source code. + +If you have defined your own `clang-tidy-fix` target, Meson will not +generate its own target. + +## Meson compile command now accepts suffixes for TARGET + +The syntax for specifying a target for meson compile is now +`[PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]` where +`TARGET_SUFFIX` is the suffix argument given in the build target +within meson.build. It is optional and `TARGET_NAME` remains +sufficient if it uniquely resolves to one single target. + +## New environment variable `MESON_PACKAGE_CACHE_DIR` + +If the `MESON_PACKAGE_CACHE_DIR` environment variable is set, it is used instead of the +project's `subprojects/packagecache`. This allows sharing the cache across multiple +projects. In addition it can contain an already extracted source tree as long as it +has the same directory name as the `directory` field in the wrap file. In that +case, the directory will be copied into `subprojects/` before applying patches. + +## Update options with `meson setup -Dopt=value` + +If the build directory already exists, options are updated with their new value +given on the command line (`-Dopt=value`). Unless `--reconfigure` is also specified, +this won't reconfigure immediately. This has the same behaviour as +`meson configure -Dopt=value`. + +Previous Meson versions were simply a no-op. + +## Clear persistent cache with `meson setup --clearcache` + +Just like `meson configure --clearcache`, it is now possible to clear the cache +and reconfigure in a single command with `meson setup --clearcache --reconfigure `. + +## pkg-config dependencies can now get a variable with multiple replacements + +When using [[dep.get_variable]] and defining a `pkgconfig_define`, it is +sometimes useful to remap multiple dependency variables. For example, if the +upstream project changed the variable name that is interpolated and it is +desirable to support both versions. + +It is now possible to pass multiple pairs of variable/value. + +The same applies to the compatibility [[dep.get_pkgconfig_variable]] method. + +## Machine files: `pkgconfig` field deprecated and replaced by `pkg-config` + +Meson used to allow both `pkgconfig` and `pkg-config` entries in machine files, +the former was used for `dependency()` lookup and the latter was used as return +value for `find_program('pkg-config')`. + +This inconsistency is now fixed by deprecating `pkgconfig` in favor of +`pkg-config` which matches the name of the binary. For backward compatibility +it is still allowed to define both with the same value, in that case no +deprecation warning is printed. + +## Support targeting Python's limited C API + +The Python module's `extension_module` function has gained the ability +to build extensions which target Python's limited C API via a new keyword +argument: `limited_api`. + +## All compiler `has_*` methods support the `required` keyword + +Now instead of + +```meson +assert(cc.has_function('some_function')) +assert(cc.has_type('some_type')) +assert(cc.has_member('struct some_type', 'x')) +assert(cc.has_members('struct some_type', ['x', 'y'])) +``` + +we can use + +```meson +cc.has_function('some_function', required: true) +cc.has_type('some_type', required: true) +cc.has_member('struct some_type', 'x', required: true) +cc.has_members('struct some_type', ['x', 'y'], required: true) +``` + +## Deprecated `rust_crate_type` and replaced by `rust_abi` + +The new `rust_abi` keyword argument is accepted by [[shared_library]], +[[static_library]], [[library]] and [[shared_module]] functions. It can be either +`'rust'` (the default) or `'c'` strings. + +`rust_crate_type` is now deprecated because Meson already knows if it's a shared +or static library, user only need to specify the ABI (Rust or C). + +`proc_macro` crates are now handled by the [`rust.proc_macro()`](Rust-module.md#proc_macro) +method. + +## Tests now abort on errors by default under sanitizers + +Sanitizers like AddressSanitizer and UndefinedBehaviorSanitizer do not abort +by default on detected violations. Meson now exports `ASAN_OPTIONS` and `UBSAN_OPTIONS` +when unset in the environment to provide sensible abort-by-default behavior. + +## `_(shared|static)_args` for both_library, library, and build_target + +We now allow passing arguments like `c_static_args` and `c_shared_args`. This +allows a [[both_libraries]] to have arguments specific to either the shared or +static library, as well as common arguments to both. + +There is a drawback to this, since Meson now cannot re-use object files between +the static and shared targets. This could lead to much higher compilation time +when using a [[both_libraries]] if there are many sources. + +## `-j` shorthand for `--num-processes` + +`-j` now means the same thing as `--num-processes`. It was inconsistently +supported only in some subcommands. Now you may use it everywhere + +## Unified message(), str.format() and f-string formatting + +They now all support the same set of values: strings, integers, bools, options, +dictionaries and lists thereof. + +- Feature options (i.e. enabled, disabled, auto) were not previously supported + by any of those functions. +- Lists and dictionaries were not previously supported by f-string. +- str.format() allowed any type and often resulted in printing the internal + representation which is now deprecated. + +## Subprojects excluded from scan-build reports + +The `scan-build` target, created when using the `ninja` backend with `scan-build` +present, now excludes bugs found in subprojects from its final report. + +## vs_module_defs keyword now supports indexes of custom_target + +This means you can do something like: +```meson +defs = custom_target('generate_module_defs', ...) +shared_library('lib1', vs_module_defs : defs[0]) +shared_library('lib2', vs_module_defs : defs[2]) +``` + +## Automatic fallback to `cmake` and `cargo` subproject + +CMake subprojects have been supported for a while using the `cmake.subproject()` +module method. However until now it was not possible to use a CMake subproject +as fallback in a `dependency()` call. + +A wrap file can now specify the method used to build it by setting the `method` +key in the wrap file's first section. The method defaults to `meson`. + +Supported methods: +- `meson` requires `meson.build` file. +- `cmake` requires `CMakeLists.txt` file. [See details](Wrap-dependency-system-manual.md#cmake-wraps). +- `cargo` requires `Cargo.toml` file. [See details](Wrap-dependency-system-manual.md#cargo-wraps). + diff --git a/docs/markdown/snippets/clike_compilers_implicit_includes.md b/docs/markdown/snippets/clike_compilers_implicit_includes.md deleted file mode 100644 index a26ec0312a7c..000000000000 --- a/docs/markdown/snippets/clike_compilers_implicit_includes.md +++ /dev/null @@ -1,13 +0,0 @@ -## Clarify of implicitly-included headers in C-like compiler checks - -Compiler check methods `compiler.compute_int()`, `compiler.alignment()` -and `compiler.sizeof()` now have their implicitly-included headers -corrected and documented. - -`` was included unintentionally when cross-compiling, which -is less than ideal because there is no guarantee that a standard library -is available for the target platform. Only `` is included instead. - -For projects that depend on the old behavior, the compiler check methods -have an optional argument `prefix`, which can be used to specify additional -`#include` directives. diff --git a/docs/markdown/snippets/compile_werror.md b/docs/markdown/snippets/compile_werror.md deleted file mode 100644 index e81abb8558c9..000000000000 --- a/docs/markdown/snippets/compile_werror.md +++ /dev/null @@ -1,5 +0,0 @@ -## Treat warnings as error in compiler checks - -Compiler check methods `compiler.compiles()`, `compiler.links()` and `compiler.run()` -now have a new `werror: true` keyword argument to treat compiler warnings as error. -This can be used to check if code compiles without warnings. diff --git a/docs/markdown/snippets/compiler_has_define.md b/docs/markdown/snippets/compiler_has_define.md deleted file mode 100644 index 64de26b391ae..000000000000 --- a/docs/markdown/snippets/compiler_has_define.md +++ /dev/null @@ -1,10 +0,0 @@ -## Compilers now have a `has_define` method - -This method returns true if the given preprocessor symbol is -defined, else false is returned. This is useful is cases where -an empty define has to be distinguished from a non-set one, which -is not possible using `get_define`. - -Additionally it makes intent clearer for code that only needs -to check if a specific define is set at all and does not care -about its value. \ No newline at end of file diff --git a/docs/markdown/snippets/configure_file_macro_guard.md b/docs/markdown/snippets/configure_file_macro_guard.md deleted file mode 100644 index ebb4fc554936..000000000000 --- a/docs/markdown/snippets/configure_file_macro_guard.md +++ /dev/null @@ -1,6 +0,0 @@ -## [[configure_file]] now has a `macro_name` parameter. - -This new paramater, `macro_name` allows C macro-style include guards to be added -to [[configure_file]]'s output when a template file is not given. This change -simplifies the creation of configure files that define macros with dynamic names -and want the C-style include guards. diff --git a/docs/markdown/snippets/cstd.md b/docs/markdown/snippets/cstd.md deleted file mode 100644 index cc1f08318745..000000000000 --- a/docs/markdown/snippets/cstd.md +++ /dev/null @@ -1,18 +0,0 @@ -## `c_std` and `cpp_std` options now accepts a list of values - -Projects that prefer GNU C, but can fallback to ISO C, can now set, for -example, `default_options: 'c_std=gnu11,c11'`, and it will use `gnu11` when -available, but fallback to `c11` otherwise. It is an error only if none of the -values are supported by the current compiler. - -Likewise, a project that can take benefit of `c++17` but can still build with -`c++11` can set `default_options: 'cpp_std=c++17,c++11'`. - -This allows us to deprecate `gnuXX` values from the MSVC compiler. That means -that `default_options: 'c_std=gnu11'` will now print a warning with MSVC -but fallback to `c11`. No warning is printed if at least one -of the values is valid, i.e. `default_options: 'c_std=gnu11,c11'`. - -In the future that deprecation warning will become an hard error because -`c_std=gnu11` should mean GNU is required, for projects that cannot be -built with MSVC for example. diff --git a/docs/markdown/snippets/custom_target_description.md b/docs/markdown/snippets/custom_target_description.md deleted file mode 100644 index fd8820eb23a3..000000000000 --- a/docs/markdown/snippets/custom_target_description.md +++ /dev/null @@ -1,6 +0,0 @@ -## More meaningful description of many generative tasks - -When a module uses a `CustomTarget` to process files, it now has the possibility -to customize the message displayed by ninja. - -Many modules were updated to take advantage of this new feature. diff --git a/docs/markdown/snippets/deprecate_build_target_jar.md b/docs/markdown/snippets/deprecate_build_target_jar.md deleted file mode 100644 index 1aa5a81dd2cb..000000000000 --- a/docs/markdown/snippets/deprecate_build_target_jar.md +++ /dev/null @@ -1,8 +0,0 @@ -## Deprecate 'jar' as a build_target type - -The point of `build_target()` is that what is produced can be conditionally -changed. However, `jar()` has a significant number of non-overlapping arguments -from other build_targets, including the kinds of sources it can include. Because -of this crafting a `build_target` that can be used as a Jar and as something -else is incredibly hard to do. As such, it has been deprecated, and using -`jar()` directly is recommended. diff --git a/docs/markdown/snippets/env_kwarg_generator_process.md b/docs/markdown/snippets/env_kwarg_generator_process.md deleted file mode 100644 index cdf73a302ae1..000000000000 --- a/docs/markdown/snippets/env_kwarg_generator_process.md +++ /dev/null @@ -1,4 +0,0 @@ -## generator.process() gains 'env' keyword argument - -Like the kwarg of the same name in `custom_target()`, `env` allows -you to set the environment in which the generator will process inputs. diff --git a/docs/markdown/snippets/executable-suffixes.md b/docs/markdown/snippets/executable-suffixes.md deleted file mode 100644 index 44471e9dd4c6..000000000000 --- a/docs/markdown/snippets/executable-suffixes.md +++ /dev/null @@ -1,14 +0,0 @@ -## Target names for executables now take into account suffixes. - -In previous versions of meson, a `meson.build` file like this: - -``` -exectuable('foo', 'main.c') -exectuable('foo', 'main.c', name_suffix: 'bar') -``` - -would result in a configure error because meson internally used -the same id for both executables. This build file is now allowed -since meson takes into account the `bar` suffix when generating the -second executable. This allows for executables with the same basename -but different suffixes to be built in the same subdirectory. diff --git a/docs/markdown/snippets/executable_vs_module_defs.md b/docs/markdown/snippets/executable_vs_module_defs.md deleted file mode 100644 index 79017488d09f..000000000000 --- a/docs/markdown/snippets/executable_vs_module_defs.md +++ /dev/null @@ -1,4 +0,0 @@ -## Executable gains vs_module_defs keyword - -This allows using a .def file to control which functions an [[executable]] will -expose to a [[shared_module]]. diff --git a/docs/markdown/snippets/find_program_default_options.md b/docs/markdown/snippets/find_program_default_options.md deleted file mode 100644 index 2cf9822d2f87..000000000000 --- a/docs/markdown/snippets/find_program_default_options.md +++ /dev/null @@ -1,4 +0,0 @@ -## find_program() now supports the 'default_options' argument - -In a similar fashion as dependency(), find_program() now also allows you to set default -options for the subproject that gets built in case of a fallback. diff --git a/docs/markdown/snippets/fs_relative_to.md b/docs/markdown/snippets/fs_relative_to.md deleted file mode 100644 index 82e6a4268bb8..000000000000 --- a/docs/markdown/snippets/fs_relative_to.md +++ /dev/null @@ -1,17 +0,0 @@ -## `fs.relative_to()` - -The `fs` module now has a `relative_to` method. The method will return the -relative path from argument one to argument two, if one exists. Otherwise, the -absolute path to argument one is returned. - -```meson -assert(fs.relative_to('c:\\prefix\\lib', 'c:\\prefix\\bin') == '..\\lib') -assert(fs.relative_to('c:\\proj1\\foo', 'd:\\proj1\\bar') == 'c:\\proj1\\foo') -assert(fs.relative_to('prefix\\lib\\foo', 'prefix') == 'lib\\foo') - -assert(fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib') -assert(fs.relative_to('prefix/lib/foo', 'prefix') == 'lib/foo') -``` - -In addition to strings, it can handle files, custom targets, custom target -indices, and build targets. diff --git a/docs/markdown/snippets/install_follow_symlink_arg.md b/docs/markdown/snippets/install_follow_symlink_arg.md deleted file mode 100644 index ce971d7ff722..000000000000 --- a/docs/markdown/snippets/install_follow_symlink_arg.md +++ /dev/null @@ -1,7 +0,0 @@ -## Added follow_symlinks arg to install_data, install_header, and install_subdir - -The [[install_data]], [[install_headers]], [[install_subdir]] functions now -have an optional argument `follow_symlinks` that, if set to `true`, makes it so -symbolic links in the source are followed, rather than copied into the -destination tree, to match the old behavior. The default, which is currently -to follow links, is subject to change in the future. diff --git a/docs/markdown/snippets/int_to_string_fill.md b/docs/markdown/snippets/int_to_string_fill.md deleted file mode 100644 index 44885ff66d1d..000000000000 --- a/docs/markdown/snippets/int_to_string_fill.md +++ /dev/null @@ -1,20 +0,0 @@ -## Added 'fill' kwarg to int.to_string() - -int.to_string() now accepts a `fill` argument. This allows you to pad the -string representation of the integer with leading zeroes: - -```meson -n = 4 -message(n.to_string()) -message(n.to_string(fill: 3)) - -n = -4 -message(n.to_string(fill: 3)) -``` - -OUTPUT: -```meson -4 -004 --04 -``` diff --git a/docs/markdown/snippets/json_output_format.md b/docs/markdown/snippets/json_output_format.md deleted file mode 100644 index 626840f76b52..000000000000 --- a/docs/markdown/snippets/json_output_format.md +++ /dev/null @@ -1,5 +0,0 @@ -## Added 'json' output_format to configure_file() - -When no input file is specified, [[configure_file]] can now -generate a `json` file from given [[@cfg_data]]. -Field descriptions are not preserved in the json file. diff --git a/docs/markdown/snippets/machine_file_source_dir.md b/docs/markdown/snippets/machine_file_source_dir.md deleted file mode 100644 index 5af344e40ca9..000000000000 --- a/docs/markdown/snippets/machine_file_source_dir.md +++ /dev/null @@ -1,13 +0,0 @@ -## `@GLOBAL_SOURCE_ROOT@` and `@DIRNAME@` in machine files - -Some tokens are now replaced in the machine file before parsing it: -- `@GLOBAL_SOURCE_ROOT@`: the absolute path to the project's source tree -- `@DIRNAME@`: the absolute path to the machine file's parent directory. - -It can be used, for example, to have paths relative to the source directory, or -relative to toolchain's installation directory. -```ini -[binaries] -c = '@DIRNAME@/toolchain/gcc' -exe_wrapper = '@GLOBAL_SOURCE_ROOT@' / 'build-aux' / 'my-exe-wrapper.sh' -``` diff --git a/docs/markdown/snippets/meson_clang_tidy_fix.md b/docs/markdown/snippets/meson_clang_tidy_fix.md deleted file mode 100644 index 3a8c772f3f63..000000000000 --- a/docs/markdown/snippets/meson_clang_tidy_fix.md +++ /dev/null @@ -1,9 +0,0 @@ -## clang-tidy-fix target - -If `clang-tidy` is installed and the project's source root contains a -`.clang-tidy` (or `_clang-tidy`) file, Meson will automatically define -a `clang-tidy-fix` target that runs `run-clang-tidy` tool with `-fix` -option to apply the changes found by clang-tidy to the source code. - -If you have defined your own `clang-tidy-fix` target, Meson will not -generate its own target. diff --git a/docs/markdown/snippets/meson_compile_suffixes.md b/docs/markdown/snippets/meson_compile_suffixes.md deleted file mode 100644 index 481e8adf4b92..000000000000 --- a/docs/markdown/snippets/meson_compile_suffixes.md +++ /dev/null @@ -1,7 +0,0 @@ -## Meson compile command now accepts suffixes for TARGET - -The syntax for specifying a target for meson compile is now -`[PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]` where -`TARGET_SUFFIX` is the suffix argument given in the build target -within meson.build. It is optional and `TARGET_NAME` remains -sufficient if it uniquely resolves to one single target. diff --git a/docs/markdown/snippets/meson_home.md b/docs/markdown/snippets/meson_home.md deleted file mode 100644 index 2d656fc1e28b..000000000000 --- a/docs/markdown/snippets/meson_home.md +++ /dev/null @@ -1,7 +0,0 @@ -## New environment variable `MESON_PACKAGE_CACHE_DIR` - -If the `MESON_PACKAGE_CACHE_DIR` environment variable is set, it is used instead of the -project's `subprojects/packagecache`. This allows sharing the cache across multiple -projects. In addition it can contain an already extracted source tree as long as it -has the same directory name as the `directory` field in the wrap file. In that -case, the directory will be copied into `subprojects/` before applying patches. diff --git a/docs/markdown/snippets/msetup.md b/docs/markdown/snippets/msetup.md deleted file mode 100644 index f68313d67477..000000000000 --- a/docs/markdown/snippets/msetup.md +++ /dev/null @@ -1,13 +0,0 @@ -## Update options with `meson setup -Dopt=value` - -If the build directory already exists, options are updated with their new value -given on the command line (`-Dopt=value`). Unless `--reconfigure` is also specified, -this won't reconfigure immediately. This has the same behaviour as -`meson configure -Dopt=value`. - -Previous Meson versions were simply a no-op. - -## Clear persistent cache with `meson setup --clearcache` - -Just like `meson configure --clearcache`, it is now possible to clear the cache -and reconfigure in a single command with `meson setup --clearcache --reconfigure `. diff --git a/docs/markdown/snippets/pkgconfig_define_variable.md b/docs/markdown/snippets/pkgconfig_define_variable.md deleted file mode 100644 index 0f7082b0d094..000000000000 --- a/docs/markdown/snippets/pkgconfig_define_variable.md +++ /dev/null @@ -1,10 +0,0 @@ -## pkg-config dependencies can now get a variable with multiple replacements - -When using [[dep.get_variable]] and defining a `pkgconfig_define`, it is -sometimes useful to remap multiple dependency variables. For example, if the -upstream project changed the variable name that is interpolated and it is -desirable to support both versions. - -It is now possible to pass multiple pairs of variable/value. - -The same applies to the compatibility [[dep.get_pkgconfig_variable]] method. diff --git a/docs/markdown/snippets/pkgconfig_deprecated_machine_file.md b/docs/markdown/snippets/pkgconfig_deprecated_machine_file.md deleted file mode 100644 index 36647e90e844..000000000000 --- a/docs/markdown/snippets/pkgconfig_deprecated_machine_file.md +++ /dev/null @@ -1,10 +0,0 @@ -## Machine files: `pkgconfig` field deprecated and replaced by `pkg-config` - -Meson used to allow both `pkgconfig` and `pkg-config` entries in machine files, -the former was used for `dependency()` lookup and the latter was used as return -value for `find_program('pkg-config')`. - -This inconsistency is now fixed by deprecating `pkgconfig` in favor of -`pkg-config` which matches the name of the binary. For backward compatibility -it is still allowed to define both with the same value, in that case no -deprecation warning is printed. diff --git a/docs/markdown/snippets/python_extension_module_limited_api.md b/docs/markdown/snippets/python_extension_module_limited_api.md deleted file mode 100644 index f5da9699d9ce..000000000000 --- a/docs/markdown/snippets/python_extension_module_limited_api.md +++ /dev/null @@ -1,5 +0,0 @@ -## Support targeting Python's limited C API - -The Python module's `extension_module` function has gained the ability -to build extensions which target Python's limited C API via a new keyword -argument: `limited_api`. diff --git a/docs/markdown/snippets/required_keyword_for_has_functions.md b/docs/markdown/snippets/required_keyword_for_has_functions.md deleted file mode 100644 index 0752ac7fe11b..000000000000 --- a/docs/markdown/snippets/required_keyword_for_has_functions.md +++ /dev/null @@ -1,19 +0,0 @@ -## All compiler `has_*` methods support the `required` keyword - -Now instead of - -```meson -assert(cc.has_function('some_function')) -assert(cc.has_type('some_type')) -assert(cc.has_member('struct some_type', 'x')) -assert(cc.has_members('struct some_type', ['x', 'y'])) -``` - -we can use - -```meson -cc.has_function('some_function', required: true) -cc.has_type('some_type', required: true) -cc.has_member('struct some_type', 'x', required: true) -cc.has_members('struct some_type', ['x', 'y'], required: true) -``` diff --git a/docs/markdown/snippets/rust_crate_type.md b/docs/markdown/snippets/rust_crate_type.md deleted file mode 100644 index 9b32f0ee86f2..000000000000 --- a/docs/markdown/snippets/rust_crate_type.md +++ /dev/null @@ -1,11 +0,0 @@ -## Deprecated `rust_crate_type` and replaced by `rust_abi` - -The new `rust_abi` keyword argument is accepted by [[shared_library]], -[[static_library]], [[library]] and [[shared_module]] functions. It can be either -`'rust'` (the default) or `'c'` strings. - -`rust_crate_type` is now deprecated because Meson already knows if it's a shared -or static library, user only need to specify the ABI (Rust or C). - -`proc_macro` crates are now handled by the [`rust.proc_macro()`](Rust-module.md#proc_macro) -method. diff --git a/docs/markdown/snippets/sanitizers_test.md b/docs/markdown/snippets/sanitizers_test.md deleted file mode 100644 index 24929114beab..000000000000 --- a/docs/markdown/snippets/sanitizers_test.md +++ /dev/null @@ -1,5 +0,0 @@ -## Tests now abort on errors by default under sanitizers - -Sanitizers like AddressSanitizer and UndefinedBehaviorSanitizer do not abort -by default on detected violations. Meson now exports `ASAN_OPTIONS` and `UBSAN_OPTIONS` -when unset in the environment to provide sensible abort-by-default behavior. diff --git a/docs/markdown/snippets/shared_static_only_args.md b/docs/markdown/snippets/shared_static_only_args.md deleted file mode 100644 index 0963c714bdf3..000000000000 --- a/docs/markdown/snippets/shared_static_only_args.md +++ /dev/null @@ -1,9 +0,0 @@ -## `_(shared|static)_args` for both_library, library, and build_target - -We now allow passing arguments like `c_static_args` and `c_shared_args`. This -allows a [[both_libraries]] to have arguments specific to either the shared or -static library, as well as common arguments to both. - -There is a drawback to this, since Meson now cannot re-use object files between -the static and shared targets. This could lead to much higher compilation time -when using a [[both_libraries]] if there are many sources. diff --git a/docs/markdown/snippets/shorthand_argument_for_mtest_num_processes.md b/docs/markdown/snippets/shorthand_argument_for_mtest_num_processes.md deleted file mode 100644 index 7ff661b1363b..000000000000 --- a/docs/markdown/snippets/shorthand_argument_for_mtest_num_processes.md +++ /dev/null @@ -1,4 +0,0 @@ -## `-j` shorthand for `--num-processes` - -`-j` now means the same thing as `--num-processes`. It was inconsistently -supported only in some subcommands. Now you may use it everywhere diff --git a/docs/markdown/snippets/string_format.md b/docs/markdown/snippets/string_format.md deleted file mode 100644 index fa3361750e8e..000000000000 --- a/docs/markdown/snippets/string_format.md +++ /dev/null @@ -1,10 +0,0 @@ -## Unified message(), str.format() and f-string formatting - -They now all support the same set of values: strings, integers, bools, options, -dictionaries and lists thereof. - -- Feature options (i.e. enabled, disabled, auto) were not previously supported - by any of those functions. -- Lists and dictionaries were not previously supported by f-string. -- str.format() allowed any type and often resulted in printing the internal - representation which is now deprecated. diff --git a/docs/markdown/snippets/subprojects_excluded_from_scanbuild.md b/docs/markdown/snippets/subprojects_excluded_from_scanbuild.md deleted file mode 100644 index d740006be248..000000000000 --- a/docs/markdown/snippets/subprojects_excluded_from_scanbuild.md +++ /dev/null @@ -1,4 +0,0 @@ -## Subprojects excluded from scan-build reports - -The `scan-build` target, created when using the `ninja` backend with `scan-build` -present, now excludes bugs found in subprojects from its final report. diff --git a/docs/markdown/snippets/vs_module_defs_customtargetindex.md b/docs/markdown/snippets/vs_module_defs_customtargetindex.md deleted file mode 100644 index d50d04ecb516..000000000000 --- a/docs/markdown/snippets/vs_module_defs_customtargetindex.md +++ /dev/null @@ -1,8 +0,0 @@ -## vs_module_defs keyword now supports indexes of custom_target - -This means you can do something like: -```meson -defs = custom_target('generate_module_defs', ...) -shared_library('lib1', vs_module_defs : defs[0]) -shared_library('lib2', vs_module_defs : defs[2]) -``` diff --git a/docs/markdown/snippets/wrap.md b/docs/markdown/snippets/wrap.md deleted file mode 100644 index 3a5521efcdb1..000000000000 --- a/docs/markdown/snippets/wrap.md +++ /dev/null @@ -1,13 +0,0 @@ -## Automatic fallback to `cmake` and `cargo` subproject - -CMake subprojects have been supported for a while using the `cmake.subproject()` -module method. However until now it was not possible to use a CMake subproject -as fallback in a `dependency()` call. - -A wrap file can now specify the method used to build it by setting the `method` -key in the wrap file's first section. The method defaults to `meson`. - -Supported methods: -- `meson` requires `meson.build` file. -- `cmake` requires `CMakeLists.txt` file. [See details](Wrap-dependency-system-manual.md#cmake-wraps). -- `cargo` requires `Cargo.toml` file. [See details](Wrap-dependency-system-manual.md#cargo-wraps). diff --git a/docs/sitemap.txt b/docs/sitemap.txt index b6d57a493acc..5eb2284eb3ce 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-1.3.0.md Release-notes-for-1.2.0.md Release-notes-for-1.1.0.md Release-notes-for-1.0.0.md