diff --git a/docs/markdown/Release-notes-for-0.53.0.md b/docs/markdown/Release-notes-for-0.53.0.md new file mode 100644 index 000000000..22db714df --- /dev/null +++ b/docs/markdown/Release-notes-for-0.53.0.md @@ -0,0 +1,193 @@ +--- +title: Release 0.53.0 +short-description: Release notes for 0.53.0 +... + +# New features + +## A new module for filesystem operations + +The new `fs` module can be used to examine the contents of the current +file system. + +```meson +fs = import('fs') +assert(fs.exists('important_file'), + 'The important file is missing.') +``` + +## meson dist --include-subprojects + +`meson dist` command line now gained `--include-subprojects` command line option. +When enabled, the source tree of all subprojects used by the current build will +also be included in the final tarball. This is useful to distribute self contained +tarball that can be built offline (i.e. `--wrap-mode=nodownload`). + +## Added new Meson templates for `Dlang`, `Rust`, `Objective-C` + +Meson now ships with predefined project templates for `Dlang`, +`Fortran`, `Rust`, `Objective-C`, and by passing the associated flags `d`, +`fortran`, `rust`, `objc` to `meson init --language`. + +## Add a new summary() function + +A new function [`summary()`](Reference-manual.md#summary) has been added to +summarize build configuration at the end of the build process. + +Example: +```meson +project('My Project', version : '1.0') +summary({'bindir': get_option('bindir'), + 'libdir': get_option('libdir'), + 'datadir': get_option('datadir'), + }, section: 'Directories') +summary({'Some boolean': false, + 'Another boolean': true, + 'Some string': 'Hello World', + 'A list': ['string', 1, true], + }, section: 'Configuration') +``` + +Output: +``` +My Project 1.0 + + Directories + prefix: /opt/gnome + bindir: bin + libdir: lib/x86_64-linux-gnu + datadir: share + + Configuration + Some boolean: False + Another boolean: True + Some string: Hello World + A list: string + 1 + True +``` + +## Generic Overrider for Dynamic Linker selection + +Previous to meson 0.52.0 you set the dynamic linker using compiler specific +flags passed via language flags and hoped things worked out. In meson 0.52.0 +meson started detecting the linker and making intelligent decisions about +using it. Unfortunately this broke choosing a non-default linker. + +Now there is a generic mechanism for doing this, you may use the LD +environment variable (with normal meson environment variable rules), or add +the following to a cross or native file: + +```ini +[binaries] +ld = 'gold' +``` + +And meson will select the linker if possible. + +## `fortran_std` option + +**new in 0.53.0** +Akin to the `c_std` and `cpp_std` options, the `fortran_std` option sets Fortran compilers to warn or error on non-Fortran standard code. +Only the Gfortran and Intel Fortran compilers have support for this option. +Other Fortran compilers ignore the `fortran_std` option. + +Supported values for `fortran_std` include: + +* `legacy` for non-conforming code--this is especially important for Gfortran, which by default errors on old non-compliant Fortran code +* `f95` for Fortran 95 compliant code. +* `f2003` for Fortran 2003 compliant code. +* `f2008` for Fortran 2008 compliant code. +* `f2018` for Fortran 2018 compliant code. + +## python.dependency() embed kwarg + +Added the `embed` kwarg to the python module dependency function to select +the python library that can be used to embed python into an application. + +## Scalapack + +added in **0.53.0**: + +```meson +scalapack = dependency('scalapack') +``` + +Historically and through today, typical Scalapack setups have broken and incomplete pkg-config or +FindScalapack.cmake. Meson handles finding Scalapack on setups including: + +* Linux: Intel MKL or OpenMPI + Netlib +* MacOS: Intel MKL or OpenMPI + Netlib +* Windows: Intel MKL (OpenMPI not available on Windows) + +## Search directories for `find_program()` + +It is now possible to give a list of absolute paths where `find_program()` should +also search, using the `dirs` keyword argument. + +For example on Linux `/sbin` and `/usr/sbin` are not always in the `$PATH`: +```meson +prog = find_program('mytool', dirs : ['/usr/sbin', '/sbin']) +``` + +## Source tags targets + +When the respective tools are available, 'ctags', 'TAGS' and 'cscope' +targets will be generated by Meson, unless you have defined your own. + +## Dictionary entry using string variable as key + +Keys can now be any expression evaluating to a string value, not limited +to string literals any more. +```meson +d = {'a' + 'b' : 42} +k = 'cd' +d += {k : 43} +``` + +## Improved CMake subprojects support + +With this release even more CMake projects are supported via +[CMake subprojects](CMake-module.md#cmake-subprojects) due to these internal +improvements: + +- Use the CMake file API for CMake >=3.14 +- Handle the explicit dependencies via `add_dependency` +- Basic support for `add_custom_target` +- Improved `add_custom_command` support +- Object library support on Windows + +## compiler.get_linker_id() + +since 0.53.0, `compiler.get_linker_id()` allows retrieving a lowercase name for the linker. +Since each compiler family can typically use a variety of linkers depending on operating system, +this helps users define logic for corner cases not otherwise easily handled. + +## CUDA dependency + +Native support for compiling and linking against the CUDA Toolkit using +the `dependency` function: + +```meson +project('CUDA test', 'cpp', meson_version: '>= 0.53.0') +exe = executable('prog', 'prog.cc', dependencies: dependency('cuda')) +``` + +See [the CUDA dependency](Dependencies.md#cuda) for more information. + +## Added global option to disable C++ RTTI + +The new boolean option is called `cpp_rtti`. + +## Introspection API changes + +dependencies (--dependencies, intro-dependencies.json): +- added the `version` key + +scanning dependencies (--scan-dependencies): +- added the `version` key containing the required dependency version + +tests and benchmarks (--tests, --benchmarks, intro-tests.json, +intro-benchmarks.json): +- added the `protocol` key + diff --git a/docs/markdown/snippets/add_dictionary_variable_key.md b/docs/markdown/snippets/add_dictionary_variable_key.md deleted file mode 100644 index 72294aeb9..000000000 --- a/docs/markdown/snippets/add_dictionary_variable_key.md +++ /dev/null @@ -1,9 +0,0 @@ -## Dictionary entry using string variable as key - -Keys can now be any expression evaluating to a string value, not limited -to string literals any more. -```meson -d = {'a' + 'b' : 42} -k = 'cd' -d += {k : 43} -``` diff --git a/docs/markdown/snippets/cmake_improvements.md b/docs/markdown/snippets/cmake_improvements.md deleted file mode 100644 index 95f30cc6b..000000000 --- a/docs/markdown/snippets/cmake_improvements.md +++ /dev/null @@ -1,11 +0,0 @@ -## Improved CMake subprojects support - -With this release even more CMake projects are supported via -[CMake subprojects](CMake-module.md#cmake-subprojects) due to these internal -improvements: - -- Use the CMake file API for CMake >=3.14 -- Handle the explicit dependencies via `add_dependency` -- Basic support for `add_custom_target` -- Improved `add_custom_command` support -- Object library support on Windows diff --git a/docs/markdown/snippets/cuda_dependency.md b/docs/markdown/snippets/cuda_dependency.md deleted file mode 100644 index 1cc9ae60f..000000000 --- a/docs/markdown/snippets/cuda_dependency.md +++ /dev/null @@ -1,11 +0,0 @@ -## CUDA dependency - -Native support for compiling and linking against the CUDA Toolkit using -the `dependency` function: - -```meson -project('CUDA test', 'cpp', meson_version: '>= 0.53.0') -exe = executable('prog', 'prog.cc', dependencies: dependency('cuda')) -``` - -See [the CUDA dependency](Dependencies.md#cuda) for more information. diff --git a/docs/markdown/snippets/dist_subprojects.md b/docs/markdown/snippets/dist_subprojects.md deleted file mode 100644 index cdfa0708a..000000000 --- a/docs/markdown/snippets/dist_subprojects.md +++ /dev/null @@ -1,6 +0,0 @@ -## meson dist --include-subprojects - -`meson dist` command line now gained `--include-subprojects` command line option. -When enabled, the source tree of all subprojects used by the current build will -also be included in the final tarball. This is useful to distribute self contained -tarball that can be built offline (i.e. `--wrap-mode=nodownload`). diff --git a/docs/markdown/snippets/find_program.md b/docs/markdown/snippets/find_program.md deleted file mode 100644 index 2bef82443..000000000 --- a/docs/markdown/snippets/find_program.md +++ /dev/null @@ -1,9 +0,0 @@ -## Search directories for `find_program()` - -It is now possible to give a list of absolute paths where `find_program()` should -also search, using the `dirs` keyword argument. - -For example on Linux `/sbin` and `/usr/sbin` are not always in the `$PATH`: -```meson -prog = find_program('mytool', dirs : ['/usr/sbin', '/sbin']) -``` diff --git a/docs/markdown/snippets/fortran_std.md b/docs/markdown/snippets/fortran_std.md deleted file mode 100644 index 2170a5eb6..000000000 --- a/docs/markdown/snippets/fortran_std.md +++ /dev/null @@ -1,14 +0,0 @@ -## `fortran_std` option - -**new in 0.53.0** -Akin to the `c_std` and `cpp_std` options, the `fortran_std` option sets Fortran compilers to warn or error on non-Fortran standard code. -Only the Gfortran and Intel Fortran compilers have support for this option. -Other Fortran compilers ignore the `fortran_std` option. - -Supported values for `fortran_std` include: - -* `legacy` for non-conforming code--this is especially important for Gfortran, which by default errors on old non-compliant Fortran code -* `f95` for Fortran 95 compliant code. -* `f2003` for Fortran 2003 compliant code. -* `f2008` for Fortran 2008 compliant code. -* `f2018` for Fortran 2018 compliant code. \ No newline at end of file diff --git a/docs/markdown/snippets/fsmodule.md b/docs/markdown/snippets/fsmodule.md deleted file mode 100644 index d668b184d..000000000 --- a/docs/markdown/snippets/fsmodule.md +++ /dev/null @@ -1,10 +0,0 @@ -## A new module for filesystem operations - -The new `fs` module can be used to examine the contents of the current -file system. - -```meson -fs = import('fs') -assert(fs.exists('important_file'), - 'The important file is missing.') -``` diff --git a/docs/markdown/snippets/get_linker_id.md b/docs/markdown/snippets/get_linker_id.md deleted file mode 100644 index 92a91a63e..000000000 --- a/docs/markdown/snippets/get_linker_id.md +++ /dev/null @@ -1,5 +0,0 @@ -## compiler.get_linker_id() - -since 0.53.0, `compiler.get_linker_id()` allows retrieving a lowercase name for the linker. -Since each compiler family can typically use a variety of linkers depending on operating system, -this helps users define logic for corner cases not otherwise easily handled. \ No newline at end of file diff --git a/docs/markdown/snippets/introspect.md b/docs/markdown/snippets/introspect.md deleted file mode 100644 index 9efa4d771..000000000 --- a/docs/markdown/snippets/introspect.md +++ /dev/null @@ -1,11 +0,0 @@ -## Introspection API changes - -dependencies (--dependencies, intro-dependencies.json): -- added the `version` key - -scanning dependencies (--scan-dependencies): -- added the `version` key containing the required dependency version - -tests and benchmarks (--tests, --benchmarks, intro-tests.json, -intro-benchmarks.json): -- added the `protocol` key diff --git a/docs/markdown/snippets/linker_override.md b/docs/markdown/snippets/linker_override.md deleted file mode 100644 index 21cb07258..000000000 --- a/docs/markdown/snippets/linker_override.md +++ /dev/null @@ -1,17 +0,0 @@ -## Generic Overrider for Dynamic Linker selection - -Previous to meson 0.52.0 you set the dynamic linker using compiler specific -flags passed via language flags and hoped things worked out. In meson 0.52.0 -meson started detecting the linker and making intelligent decisions about -using it. Unfortunately this broke choosing a non-default linker. - -Now there is a generic mechanism for doing this, you may use the LD -environment variable (with normal meson environment variable rules), or add -the following to a cross or native file: - -```ini -[binaries] -ld = 'gold' -``` - -And meson will select the linker if possible. diff --git a/docs/markdown/snippets/new_meson_project_templates.md b/docs/markdown/snippets/new_meson_project_templates.md deleted file mode 100644 index eb9842eb5..000000000 --- a/docs/markdown/snippets/new_meson_project_templates.md +++ /dev/null @@ -1,5 +0,0 @@ -## Added new Meson templates for `Dlang`, `Rust`, `Objective-C` - -Meson now ships with predefined project templates for `Dlang`, -`Fortran`, `Rust`, `Objective-C`, and by passing the associated flags `d`, -`fortran`, `rust`, `objc` to `meson init --language`. diff --git a/docs/markdown/snippets/nortti.md b/docs/markdown/snippets/nortti.md deleted file mode 100644 index 63d85c5ac..000000000 --- a/docs/markdown/snippets/nortti.md +++ /dev/null @@ -1,3 +0,0 @@ -## Added global option to disable C++ RTTI - -The new boolean option is called `cpp_rtti`. diff --git a/docs/markdown/snippets/python_embed.md b/docs/markdown/snippets/python_embed.md deleted file mode 100644 index f50002cbb..000000000 --- a/docs/markdown/snippets/python_embed.md +++ /dev/null @@ -1,4 +0,0 @@ -## python.dependency() embed kwarg - -Added the `embed` kwarg to the python module dependency function to select -the python library that can be used to embed python into an application. diff --git a/docs/markdown/snippets/scalapack.md b/docs/markdown/snippets/scalapack.md deleted file mode 100644 index 03ddbd4aa..000000000 --- a/docs/markdown/snippets/scalapack.md +++ /dev/null @@ -1,14 +0,0 @@ -## Scalapack - -added in **0.53.0**: - -```meson -scalapack = dependency('scalapack') -``` - -Historically and through today, typical Scalapack setups have broken and incomplete pkg-config or -FindScalapack.cmake. Meson handles finding Scalapack on setups including: - -* Linux: Intel MKL or OpenMPI + Netlib -* MacOS: Intel MKL or OpenMPI + Netlib -* Windows: Intel MKL (OpenMPI not available on Windows) \ No newline at end of file diff --git a/docs/markdown/snippets/summary.md b/docs/markdown/snippets/summary.md deleted file mode 100644 index 91b3e5d74..000000000 --- a/docs/markdown/snippets/summary.md +++ /dev/null @@ -1,37 +0,0 @@ -## Add a new summary() function - -A new function [`summary()`](Reference-manual.md#summary) has been added to -summarize build configuration at the end of the build process. - -Example: -```meson -project('My Project', version : '1.0') -summary({'bindir': get_option('bindir'), - 'libdir': get_option('libdir'), - 'datadir': get_option('datadir'), - }, section: 'Directories') -summary({'Some boolean': false, - 'Another boolean': true, - 'Some string': 'Hello World', - 'A list': ['string', 1, true], - }, section: 'Configuration') -``` - -Output: -``` -My Project 1.0 - - Directories - prefix: /opt/gnome - bindir: bin - libdir: lib/x86_64-linux-gnu - datadir: share - - Configuration - Some boolean: False - Another boolean: True - Some string: Hello World - A list: string - 1 - True -``` diff --git a/docs/markdown/snippets/tags.md b/docs/markdown/snippets/tags.md deleted file mode 100644 index e27fc5bc1..000000000 --- a/docs/markdown/snippets/tags.md +++ /dev/null @@ -1,4 +0,0 @@ -## Source tags targets - -When the respective tools are available, 'ctags', 'TAGS' and 'cscope' -targets will be generated by Meson, unless you have defined your own. diff --git a/docs/sitemap.txt b/docs/sitemap.txt index 5c78694d0..5850cc3b8 100644 --- a/docs/sitemap.txt +++ b/docs/sitemap.txt @@ -76,6 +76,7 @@ index.md Shipping-prebuilt-binaries-as-wraps.md fallback-wraptool.md Release-notes.md + Release-notes-for-0.53.0.md Release-notes-for-0.52.0.md Release-notes-for-0.51.0.md Release-notes-for-0.50.0.md diff --git a/man/meson.1 b/man/meson.1 index b80568ec0..05213a7c8 100644 --- a/man/meson.1 +++ b/man/meson.1 @@ -1,4 +1,4 @@ -.TH MESON "1" "October 2019" "meson 0.52.0" "User Commands" +.TH MESON "1" "January 2020" "meson 0.53.0" "User Commands" .SH NAME meson - a high productivity build system .SH DESCRIPTION diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 140950de9..dd5f1f328 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -40,7 +40,7 @@ if TYPE_CHECKING: OptionDictType = Dict[str, 'UserOption[Any]'] -version = '0.52.999' +version = '0.53.0' backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'vs2019', 'xcode'] default_yielding = False