diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2019-10-06 20:05:19 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-10-06 20:05:19 +0300 |
commit | 2779603c689c6347809255a5aa3bd59b46b18b81 (patch) | |
tree | d87ac4c736c4be397d3dde535fa62fa6fb6d97b9 | |
parent | 0b4d1e8afd5428a495f8624ee061f63977b4c268 (diff) | |
download | meson-2779603c689c6347809255a5aa3bd59b46b18b81.zip meson-2779603c689c6347809255a5aa3bd59b46b18b81.tar.gz meson-2779603c689c6347809255a5aa3bd59b46b18b81.tar.bz2 |
Updated version numbers for 0.52.0 release.0.52.0
28 files changed, 245 insertions, 219 deletions
diff --git a/docs/markdown/Release-notes-for-0.52.0.md b/docs/markdown/Release-notes-for-0.52.0.md index f5bbcc3..018fb35 100644 --- a/docs/markdown/Release-notes-for-0.52.0.md +++ b/docs/markdown/Release-notes-for-0.52.0.md @@ -3,4 +3,246 @@ title: Release 0.52.0 short-description: Release notes for 0.52.0 ... -# Notable changes in this version +# New features + +## Gettext targets are ignored if `gettext` is not installed + +Previously the `i18n` module has errored out when `gettext` tools are +not installed on the system. Starting with this version they will +become no-ops instead. This makes it easier to build projects on +minimal environments (such as when bootstrapping) that do not have +translation tools installed. + +## Support taking environment values from a dictionary + +`environment()` now accepts a dictionary as first argument. If +provided, each key/value pair is added into the `environment_object` +as if `set()` method was called for each of them. + +On the various functions that take an `env:` keyword argument, you may +now give a dictionary. + +## alias_target + +``` meson +runtarget alias_target(target_name, dep1, ...) +``` + +This function creates a new top-level target. Like all top-level targets, this +integrates with the selected backend. For instance, with Ninja you can +run it as `ninja target_name`. This is a dummy target that does not execute any +command, but ensures that all dependencies are built. Dependencies can be any +build target (e.g. return value of executable(), custom_target(), etc) + + +## Enhancements to the pkg_config_path argument + +Setting sys_root in the [properties] section of your cross file will now set +PKG_CONFIG_SYSROOT_DIR automatically for host system dependencies when +cross compiling. + +## The meson test program now accepts an additional "--gdb-path" argument to specify the GDB binary + +`meson test --gdb testname` invokes GDB with the specific test case. However, sometimes GDB is not in the path or a GDB replacement is wanted. +Therefore, a `--gdb-path` argument was added to specify which binary is executed (per default `gdb`): + +```console +$ meson test --gdb --gdb-path /my/special/location/for/gdb testname +$ meson test --gdb --gdb-path cgdb testname +``` + +## Better support for illumos and Solaris + +illumos (and hopefully Solaris) support has been dramatically improved, and one +can reasonably expect projects to compile. + +## Splitting of Compiler.get_function_attribute('visibility') + +On macOS there is no `protected` visibility, which results in the visbility +check always failing. 0.52.0 introduces two changes to improve this situation: + +1. the "visibility" check no longer includes "protected" +2. a new set of "split" checks are introduced which check for a single + attribute instead of all attributes. + +These new attributes are: +* visibility:default +* visibility:hidden +* visibility:internal +* visibility:protected + +## Clang-tidy 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` target that runs Clang-Tidy on all source files. + +If you have defined your own `clang-tidy` target, Meson will not +generate its own target. + +## Add blocks dependency + +Add `dependency('blocks')` to use the Clang blocks extension. + +## Meson's builtin b_lundef is now supported on macOS + +This has always been possible, but there are some addtional restrictions on +macOS (mainly do to Apple only features). With the linker internal +re-architecture this has become possible + +## Compiler and dynamic linker representation split + +0.52.0 inclues a massive refactor of the representaitons of compilers to +tease apart the representations of compilers and dynamic linkers (ld). This +fixes a number of compiler/linker combinations. In particular this fixes +use GCC and vanilla clang on macOS. + +## Add `depth` option to `wrap-git` + +To allow shallow cloning, an option `depth` has been added to `wrap-git`. +This applies recursively to submodules when `clone-recursive` is set to `true`. + +Note that the git server may have to be configured to support shallow cloning +not only for branches but also for tags. + +## Enhancements to the source_set module + +`SourceSet` objects now provide the `all_dependencies()` method, that +complement the existing `all_sources()` method. + +## added `--only test(s)` option to run_project_tests.py + +Individual tests or a list of tests from run_project_tests.py can be selected like: +``` +python run_project_tests.py --only fortran + +python run_project_tests.py --only fortran python3 +``` + +This assists Meson development by only running the tests for the portion of Meson being worked on during local development. + +## Experimental Webassembly support via Emscripten + +Meson now supports compiling code to Webassembly using the Emscripten +compiler. As with most things regarding Webassembly, this support is +subject to change. + +## Version check in `find_program()` + +A new `version` keyword argument has been added to `find_program` to specify +the required version. See [`dependency()`](#dependency) for argument format. +The version of the program is determined by running `program_name --version` +command. If stdout is empty it fallbacks to stderr. If the output contains more +text than simply a version number, only the first occurence of numbers separated +by dots is kept. If the output is more complicated than that, the version +checking will have to be done manually using [`run_command()`](#run_command). + +## Added `vs_module_defs` to `shared_module()` + +Like `shared_library()`, `shared_module()` now accepts +`vs_module_defs` argument for controlling symbol exports, etc. + +## Improved support for static libraries + +Static libraries had numerous shortcomings in the past, especially when using +uninstalled static libraries. This release brings many internal changes in the +way they are handled, including: + +- `link_whole:` of static libraries. In the example below, lib2 used to miss + symbols from lib1 and was unusable. +```meson +lib1 = static_library(sources) +lib2 = static_library(other_sources, link_whole : lib1, install : true) +``` +- `link_with:` of a static library with an uninstalled static library. In the +example below, lib2 now implicitly promote `link_with:` to `link_whole:` because +the installed lib2 would oterhwise be unusable. +```meson +lib1 = static_library(sources, install : false) +lib2 = static_library(sources, link_with : lib1, install : true) +``` +- pkg-config generator do not include uninstalled static libraries. In the example + below, the generated `.pc` file used to be unusable because it contained + `Libs.private: -llib1` and `lib1.a` is not installed. `lib1` is now ommitted + from the `.pc` file because the `link_with:` has been promoted to + `link_whole:` (see above) and thus lib1 is not needed to use lib2. +```meson +lib1 = static_library(sources, install : false) +lib2 = both_libraries(sources, link_with : lib1, install : true) +pkg.generate(lib2) +``` + +Many projects have been using `extract_all_objects()` to work around those issues, +and hopefully those hacks could now be removed. Since this is a pretty large +change, please double check if your static libraries behave correctly, and +report any regression. + +## Enhancements to the kconfig module + +`kconfig.load()` may now accept a `configure_file()` as input file. + +## Added `include_type` kwarg to `dependency` + +The `dependency()` function now has a `include_type` kwarg. It can take the +values `'preserve'`, `'system'` and `'non-system'`. If it is set to `'system'`, +all include directories of the dependency are marked as system dependencies. + +The default value of `include_type` is `'preserve'`. + +Additionally, it is also possible to check and change the `include_type` +state of an existing dependency object with the new `include_type()` and +`as_system()` methods. + +## Enhancements to `configure_file()` + +`input:` now accepts multiple input file names for `command:`-configured file. + +`depfile:` keyword argument is now accepted. The dependency file can +list all the additional files the configure target depends on. + +## Projects args can be set separately for build and host machines (potentially breaking change) + +Simplify `native` flag behavior in `add_global_arguments`, +`add_global_link_arguments`, `add_project_arguments` and +`add_project_link_arguments`. The rules are now very simple: + + - `native: true` affects `native: true` targets + + - `native: false` affects `native: false` targets + + - No native flag is the same as `native: false` + +This further simplifies behavior to match the "build vs host" decision done in +last release with `c_args` vs `build_c_args`. The underlying motivation in both +cases is to execute the same commands whether the overall build is native or +cross. + +## Allow checking if a variable is a disabler + +Added the function `is_disabler(var)`. Returns true if a variable is a disabler +and false otherwise. + + +## gtkdoc-check support + +`gnome.gtkdoc()` now has a `check` keyword argument. If `true` runs it will run +`gtkdoc-check` when running unit tests. Note that this has the downside of +rebuilding the doc for each build, which is often very slow. It usually should +be enabled only in CI. + +## `gnome.gtkdoc()` returns target object + +`gnome.gtkdoc()` now returns a target object that can be passed as dependency to +other targets using generated doc files (e.g. in `content_files` of another doc). + +## Dist is now a top level command + +Previously creating a source archive could only be done with `ninja +dist`. Starting with this release Meson provides a top level `dist` +that can be invoked directly. It also has a command line option to +determine which kinds of archives to create: + +```meson +meson dist --formats=xztar,zip +``` + diff --git a/docs/markdown/snippets/add_arguments_cross.md b/docs/markdown/snippets/add_arguments_cross.md deleted file mode 100644 index 7c197b6..0000000 --- a/docs/markdown/snippets/add_arguments_cross.md +++ /dev/null @@ -1,16 +0,0 @@ -## Projects args can be set separately for build and host machines (potentially breaking change) - -Simplify `native` flag behavior in `add_global_arguments`, -`add_global_link_arguments`, `add_project_arguments` and -`add_project_link_arguments`. The rules are now very simple: - - - `native: true` affects `native: true` targets - - - `native: false` affects `native: false` targets - - - No native flag is the same as `native: false` - -This further simplifies behavior to match the "build vs host" decision done in -last release with `c_args` vs `build_c_args`. The underlying motivation in both -cases is to execute the same commands whether the overall build is native or -cross. diff --git a/docs/markdown/snippets/add_gdb_path.md b/docs/markdown/snippets/add_gdb_path.md deleted file mode 100644 index 873c3fc..0000000 --- a/docs/markdown/snippets/add_gdb_path.md +++ /dev/null @@ -1,9 +0,0 @@ -## The meson test program now accepts an additional "--gdb-path" argument to specify the GDB binary - -`meson test --gdb testname` invokes GDB with the specific test case. However, sometimes GDB is not in the path or a GDB replacement is wanted. -Therefore, a `--gdb-path` argument was added to specify which binary is executed (per default `gdb`): - -```console -$ meson test --gdb --gdb-path /my/special/location/for/gdb testname -$ meson test --gdb --gdb-path cgdb testname -``` diff --git a/docs/markdown/snippets/alias_target.md b/docs/markdown/snippets/alias_target.md deleted file mode 100644 index 129730d..0000000 --- a/docs/markdown/snippets/alias_target.md +++ /dev/null @@ -1,12 +0,0 @@ -## alias_target - -``` meson -runtarget alias_target(target_name, dep1, ...) -``` - -This function creates a new top-level target. Like all top-level targets, this -integrates with the selected backend. For instance, with Ninja you can -run it as `ninja target_name`. This is a dummy target that does not execute any -command, but ensures that all dependencies are built. Dependencies can be any -build target (e.g. return value of executable(), custom_target(), etc) - diff --git a/docs/markdown/snippets/b_lundef_on_apple.md b/docs/markdown/snippets/b_lundef_on_apple.md deleted file mode 100644 index 850a412..0000000 --- a/docs/markdown/snippets/b_lundef_on_apple.md +++ /dev/null @@ -1,5 +0,0 @@ -## Meson's builtin b_lundef is now supported on macOS - -This has always been possible, but there are some addtional restrictions on -macOS (mainly do to Apple only features). With the linker internal -re-architecture this has become possible
\ No newline at end of file diff --git a/docs/markdown/snippets/blocks.md b/docs/markdown/snippets/blocks.md deleted file mode 100644 index 917ee54..0000000 --- a/docs/markdown/snippets/blocks.md +++ /dev/null @@ -1,3 +0,0 @@ -## Add blocks dependency - -Add `dependency('blocks')` to use the Clang blocks extension. diff --git a/docs/markdown/snippets/check-disabler.md b/docs/markdown/snippets/check-disabler.md deleted file mode 100644 index 9670792..0000000 --- a/docs/markdown/snippets/check-disabler.md +++ /dev/null @@ -1,5 +0,0 @@ -## Allow checking if a variable is a disabler - -Added the function `is_disabler(var)`. Returns true if a variable is a disabler -and false otherwise. - diff --git a/docs/markdown/snippets/clangtidy.md b/docs/markdown/snippets/clangtidy.md deleted file mode 100644 index 816d45f..0000000 --- a/docs/markdown/snippets/clangtidy.md +++ /dev/null @@ -1,8 +0,0 @@ -## Clang-tidy 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` target that runs Clang-Tidy on all source files. - -If you have defined your own `clang-tidy` target, Meson will not -generate its own target. diff --git a/docs/markdown/snippets/configure_file_enhancements.md b/docs/markdown/snippets/configure_file_enhancements.md deleted file mode 100644 index 7fee7b2..0000000 --- a/docs/markdown/snippets/configure_file_enhancements.md +++ /dev/null @@ -1,6 +0,0 @@ -## Enhancements to `configure_file()` - -`input:` now accepts multiple input file names for `command:`-configured file. - -`depfile:` keyword argument is now accepted. The dependency file can -list all the additional files the configure target depends on. diff --git a/docs/markdown/snippets/depth.md b/docs/markdown/snippets/depth.md deleted file mode 100644 index bdb032c..0000000 --- a/docs/markdown/snippets/depth.md +++ /dev/null @@ -1,7 +0,0 @@ -## Add `depth` option to `wrap-git` - -To allow shallow cloning, an option `depth` has been added to `wrap-git`. -This applies recursively to submodules when `clone-recursive` is set to `true`. - -Note that the git server may have to be configured to support shallow cloning -not only for branches but also for tags. diff --git a/docs/markdown/snippets/dist-command.md b/docs/markdown/snippets/dist-command.md deleted file mode 100644 index 026b8cd..0000000 --- a/docs/markdown/snippets/dist-command.md +++ /dev/null @@ -1,10 +0,0 @@ -## Dist is now a top level command - -Previously creating a source archive could only be done with `ninja -dist`. Starting with this release Meson provides a top level `dist` -that can be invoked directly. It also has a command line option to -determine which kinds of archives to create: - -```meson -meson dist --formats=xztar,zip -``` diff --git a/docs/markdown/snippets/env_dict.md b/docs/markdown/snippets/env_dict.md deleted file mode 100644 index 5949806..0000000 --- a/docs/markdown/snippets/env_dict.md +++ /dev/null @@ -1,8 +0,0 @@ -## Support taking environment values from a dictionary - -`environment()` now accepts a dictionary as first argument. If -provided, each key/value pair is added into the `environment_object` -as if `set()` method was called for each of them. - -On the various functions that take an `env:` keyword argument, you may -now give a dictionary. diff --git a/docs/markdown/snippets/find_program_version.md b/docs/markdown/snippets/find_program_version.md deleted file mode 100644 index 04424d7..0000000 --- a/docs/markdown/snippets/find_program_version.md +++ /dev/null @@ -1,9 +0,0 @@ -## Version check in `find_program()` - -A new `version` keyword argument has been added to `find_program` to specify -the required version. See [`dependency()`](#dependency) for argument format. -The version of the program is determined by running `program_name --version` -command. If stdout is empty it fallbacks to stderr. If the output contains more -text than simply a version number, only the first occurence of numbers separated -by dots is kept. If the output is more complicated than that, the version -checking will have to be done manually using [`run_command()`](#run_command). diff --git a/docs/markdown/snippets/force_system.md b/docs/markdown/snippets/force_system.md deleted file mode 100644 index fd983e0..0000000 --- a/docs/markdown/snippets/force_system.md +++ /dev/null @@ -1,11 +0,0 @@ -## Added `include_type` kwarg to `dependency` - -The `dependency()` function now has a `include_type` kwarg. It can take the -values `'preserve'`, `'system'` and `'non-system'`. If it is set to `'system'`, -all include directories of the dependency are marked as system dependencies. - -The default value of `include_type` is `'preserve'`. - -Additionally, it is also possible to check and change the `include_type` -state of an existing dependency object with the new `include_type()` and -`as_system()` methods. diff --git a/docs/markdown/snippets/gtkdoc.md b/docs/markdown/snippets/gtkdoc.md deleted file mode 100644 index f1f4ed4..0000000 --- a/docs/markdown/snippets/gtkdoc.md +++ /dev/null @@ -1,11 +0,0 @@ -## gtkdoc-check support - -`gnome.gtkdoc()` now has a `check` keyword argument. If `true` runs it will run -`gtkdoc-check` when running unit tests. Note that this has the downside of -rebuilding the doc for each build, which is often very slow. It usually should -be enabled only in CI. - -## `gnome.gtkdoc()` returns target object - -`gnome.gtkdoc()` now returns a target object that can be passed as dependency to -other targets using generated doc files (e.g. in `content_files` of another doc). diff --git a/docs/markdown/snippets/kconfig_enhancements.md b/docs/markdown/snippets/kconfig_enhancements.md deleted file mode 100644 index 94e3872..0000000 --- a/docs/markdown/snippets/kconfig_enhancements.md +++ /dev/null @@ -1,3 +0,0 @@ -## Enhancements to the kconfig module - -`kconfig.load()` may now accept a `configure_file()` as input file. diff --git a/docs/markdown/snippets/nogettext.md b/docs/markdown/snippets/nogettext.md deleted file mode 100644 index 5053226..0000000 --- a/docs/markdown/snippets/nogettext.md +++ /dev/null @@ -1,7 +0,0 @@ -## Gettext targets are ignored if `gettext` is not installed - -Previously the `i18n` module has errored out when `gettext` tools are -not installed on the system. Starting with this version they will -become no-ops instead. This makes it easier to build projects on -minimal environments (such as when bootstrapping) that do not have -translation tools installed. diff --git a/docs/markdown/snippets/pkg_config_enhancements.md b/docs/markdown/snippets/pkg_config_enhancements.md deleted file mode 100644 index 1d63c8f..0000000 --- a/docs/markdown/snippets/pkg_config_enhancements.md +++ /dev/null @@ -1,5 +0,0 @@ -## Enhancements to the pkg_config_path argument - -Setting sys_root in the [properties] section of your cross file will now set -PKG_CONFIG_SYSROOT_DIR automatically for host system dependencies when -cross compiling.
\ No newline at end of file diff --git a/docs/markdown/snippets/select_run_project_tests.md b/docs/markdown/snippets/select_run_project_tests.md deleted file mode 100644 index 8311c83..0000000 --- a/docs/markdown/snippets/select_run_project_tests.md +++ /dev/null @@ -1,10 +0,0 @@ -## added `--only test(s)` option to run_project_tests.py - -Individual tests or a list of tests from run_project_tests.py can be selected like: -``` -python run_project_tests.py --only fortran - -python run_project_tests.py --only fortran python3 -``` - -This assists Meson development by only running the tests for the portion of Meson being worked on during local development.
\ No newline at end of file diff --git a/docs/markdown/snippets/shared_module_defs.md b/docs/markdown/snippets/shared_module_defs.md deleted file mode 100644 index 5bc1de7..0000000 --- a/docs/markdown/snippets/shared_module_defs.md +++ /dev/null @@ -1,4 +0,0 @@ -## Added `vs_module_defs` to `shared_module()` - -Like `shared_library()`, `shared_module()` now accepts -`vs_module_defs` argument for controlling symbol exports, etc. diff --git a/docs/markdown/snippets/solaris.md b/docs/markdown/snippets/solaris.md deleted file mode 100644 index 78f5718..0000000 --- a/docs/markdown/snippets/solaris.md +++ /dev/null @@ -1,4 +0,0 @@ -## Better support for illumos and Solaris - -illumos (and hopefully Solaris) support has been dramatically improved, and one -can reasonably expect projects to compile. diff --git a/docs/markdown/snippets/source_set_enhancements.md b/docs/markdown/snippets/source_set_enhancements.md deleted file mode 100644 index 08e0ae3..0000000 --- a/docs/markdown/snippets/source_set_enhancements.md +++ /dev/null @@ -1,4 +0,0 @@ -## Enhancements to the source_set module - -`SourceSet` objects now provide the `all_dependencies()` method, that -complement the existing `all_sources()` method. diff --git a/docs/markdown/snippets/split-compiler-and-linker-representations.md b/docs/markdown/snippets/split-compiler-and-linker-representations.md deleted file mode 100644 index fd2e622..0000000 --- a/docs/markdown/snippets/split-compiler-and-linker-representations.md +++ /dev/null @@ -1,6 +0,0 @@ -## Compiler and dynamic linker representation split - -0.52.0 inclues a massive refactor of the representaitons of compilers to -tease apart the representations of compilers and dynamic linkers (ld). This -fixes a number of compiler/linker combinations. In particular this fixes -use GCC and vanilla clang on macOS.
\ No newline at end of file diff --git a/docs/markdown/snippets/split-visibility-attributes.md b/docs/markdown/snippets/split-visibility-attributes.md deleted file mode 100644 index e8cd152..0000000 --- a/docs/markdown/snippets/split-visibility-attributes.md +++ /dev/null @@ -1,14 +0,0 @@ -## Splitting of Compiler.get_function_attribute('visibility') - -On macOS there is no `protected` visibility, which results in the visbility -check always failing. 0.52.0 introduces two changes to improve this situation: - -1. the "visibility" check no longer includes "protected" -2. a new set of "split" checks are introduced which check for a single - attribute instead of all attributes. - -These new attributes are: -* visibility:default -* visibility:hidden -* visibility:internal -* visibility:protected
\ No newline at end of file diff --git a/docs/markdown/snippets/static_link.md b/docs/markdown/snippets/static_link.md deleted file mode 100644 index d619a8c..0000000 --- a/docs/markdown/snippets/static_link.md +++ /dev/null @@ -1,34 +0,0 @@ -## Improved support for static libraries - -Static libraries had numerous shortcomings in the past, especially when using -uninstalled static libraries. This release brings many internal changes in the -way they are handled, including: - -- `link_whole:` of static libraries. In the example below, lib2 used to miss - symbols from lib1 and was unusable. -```meson -lib1 = static_library(sources) -lib2 = static_library(other_sources, link_whole : lib1, install : true) -``` -- `link_with:` of a static library with an uninstalled static library. In the -example below, lib2 now implicitly promote `link_with:` to `link_whole:` because -the installed lib2 would oterhwise be unusable. -```meson -lib1 = static_library(sources, install : false) -lib2 = static_library(sources, link_with : lib1, install : true) -``` -- pkg-config generator do not include uninstalled static libraries. In the example - below, the generated `.pc` file used to be unusable because it contained - `Libs.private: -llib1` and `lib1.a` is not installed. `lib1` is now ommitted - from the `.pc` file because the `link_with:` has been promoted to - `link_whole:` (see above) and thus lib1 is not needed to use lib2. -```meson -lib1 = static_library(sources, install : false) -lib2 = both_libraries(sources, link_with : lib1, install : true) -pkg.generate(lib2) -``` - -Many projects have been using `extract_all_objects()` to work around those issues, -and hopefully those hacks could now be removed. Since this is a pretty large -change, please double check if your static libraries behave correctly, and -report any regression. diff --git a/docs/markdown/snippets/wasm.md b/docs/markdown/snippets/wasm.md deleted file mode 100644 index 04fbf49..0000000 --- a/docs/markdown/snippets/wasm.md +++ /dev/null @@ -1,5 +0,0 @@ -## Experimental Webassembly support via Emscripten - -Meson now supports compiling code to Webassembly using the Emscripten -compiler. As with most things regarding Webassembly, this support is -subject to change. diff --git a/man/meson.1 b/man/meson.1 index 6abc533..b80568e 100644 --- a/man/meson.1 +++ b/man/meson.1 @@ -1,4 +1,4 @@ -.TH MESON "1" "June 2019" "meson 0.51.0" "User Commands" +.TH MESON "1" "October 2019" "meson 0.52.0" "User Commands" .SH NAME meson - a high productivity build system .SH DESCRIPTION diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 3b9e3e9..9627bec 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -38,7 +38,7 @@ if typing.TYPE_CHECKING: OptionDictType = typing.Dict[str, 'UserOption[Any]'] -version = '0.51.999' +version = '0.52.0' backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'vs2019', 'xcode'] default_yielding = False |