Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package meson for openSUSE:Factory checked 
in at 2021-10-29 22:32:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/meson (Old)
 and      /work/SRC/openSUSE:Factory/.meson.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "meson"

Fri Oct 29 22:32:54 2021 rev:76 rq:927474 version:0.59.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/meson/meson.changes      2021-10-01 
22:29:02.381372527 +0200
+++ /work/SRC/openSUSE:Factory/.meson.new.1890/meson.changes    2021-10-29 
22:32:55.403652435 +0200
@@ -1,0 +2,7 @@
+Mon Oct 25 08:32:35 UTC 2021 - Bj??rn Lie <bjorn....@gmail.com>
+
+- Update to version 0.59.3:
+  + No upstream changes provided.
+- Drop meson-rust-1.55.patch: Fixed upstream.
+
+-------------------------------------------------------------------

Old:
----
  meson-0.59.2.tar.gz
  meson-0.59.2.tar.gz.asc
  meson-rust-1.55.patch

New:
----
  meson-0.59.3.tar.gz
  meson-0.59.3.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ meson.spec ++++++
--- /var/tmp/diff_new_pack.gF8lt6/_old  2021-10-29 22:32:56.075652689 +0200
+++ /var/tmp/diff_new_pack.gF8lt6/_new  2021-10-29 22:32:56.079652690 +0200
@@ -28,7 +28,7 @@
 %{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim}
 %bcond_with     setuptools
 Name:           meson%{name_ext}
-Version:        0.59.2
+Version:        0.59.3
 Release:        0
 Summary:        Python-based build system
 License:        Apache-2.0
@@ -41,8 +41,6 @@
 Patch1:         meson-test-installed-bin.patch
 # PATCH-FEATURE-OPENSUSE meson-distutils.patch tchva...@suse.com -- build and 
install using distutils instead of full setuptools
 Patch2:         meson-distutils.patch
-# PATCH-FIX-UPSTREAM meson-rust-1.55.patch gh#mesonbuikd/meson#9310 
dims...@opensuse.org -- Fix test suite with rust 1.55
-Patch3:         meson-rust-1.55.patch
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 BuildRequires:  python3-base
@@ -165,9 +163,6 @@
 %if !%{with setuptools}
 %patch2 -p1
 %endif
-pushd "test cases/rust/5 polyglot static"
-%patch3 -p4
-popd
 
 # We do not have gmock available at this moment - can't run the test suite for 
it
 rm -r "test cases/frameworks/3 gmock" \

++++++ meson-0.59.2.tar.gz -> meson-0.59.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/PKG-INFO new/meson-0.59.3/PKG-INFO
--- old/meson-0.59.2/PKG-INFO   2021-09-28 19:15:11.939847000 +0200
+++ new/meson-0.59.3/PKG-INFO   2021-10-23 19:08:57.638149000 +0200
@@ -1,12 +1,11 @@
 Metadata-Version: 2.1
 Name: meson
-Version: 0.59.2
+Version: 0.59.3
 Summary: A high performance build system
 Home-page: https://mesonbuild.com
 Author: Jussi Pakkanen
 Author-email: jpakk...@gmail.com
 License: Apache License, Version 2.0
-Description: Meson is a cross-platform build system designed to be both as 
fast and as user friendly as possible. It supports many languages and 
compilers, including GCC, Clang, PGI, Intel, and Visual Studio. Its build 
definitions are written in a simple non-Turing complete DSL.
 Keywords: meson,mesonbuild,build system,cmake
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
@@ -27,3 +26,7 @@
 Requires-Python: >=3.6
 Provides-Extra: progress
 Provides-Extra: typing
+License-File: COPYING
+
+Meson is a cross-platform build system designed to be both as fast and as user 
friendly as possible. It supports many languages and compilers, including GCC, 
Clang, PGI, Intel, and Visual Studio. Its build definitions are written in a 
simple non-Turing complete DSL.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/man/meson.1 new/meson-0.59.3/man/meson.1
--- old/meson-0.59.2/man/meson.1        2021-09-28 19:04:57.000000000 +0200
+++ new/meson-0.59.3/man/meson.1        2021-10-23 18:36:11.000000000 +0200
@@ -1,4 +1,4 @@
-.TH MESON "1" "September 2021" "meson 0.59.2" "User Commands"
+.TH MESON "1" "October 2021" "meson 0.59.3" "User Commands"
 .SH NAME
 meson - a high productivity build system
 .SH DESCRIPTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/meson.egg-info/PKG-INFO 
new/meson-0.59.3/meson.egg-info/PKG-INFO
--- old/meson-0.59.2/meson.egg-info/PKG-INFO    2021-09-28 19:15:06.000000000 
+0200
+++ new/meson-0.59.3/meson.egg-info/PKG-INFO    2021-10-23 19:08:50.000000000 
+0200
@@ -1,12 +1,11 @@
 Metadata-Version: 2.1
 Name: meson
-Version: 0.59.2
+Version: 0.59.3
 Summary: A high performance build system
 Home-page: https://mesonbuild.com
 Author: Jussi Pakkanen
 Author-email: jpakk...@gmail.com
 License: Apache License, Version 2.0
-Description: Meson is a cross-platform build system designed to be both as 
fast and as user friendly as possible. It supports many languages and 
compilers, including GCC, Clang, PGI, Intel, and Visual Studio. Its build 
definitions are written in a simple non-Turing complete DSL.
 Keywords: meson,mesonbuild,build system,cmake
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
@@ -27,3 +26,7 @@
 Requires-Python: >=3.6
 Provides-Extra: progress
 Provides-Extra: typing
+License-File: COPYING
+
+Meson is a cross-platform build system designed to be both as fast and as user 
friendly as possible. It supports many languages and compilers, including GCC, 
Clang, PGI, Intel, and Visual Studio. Its build definitions are written in a 
simple non-Turing complete DSL.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/meson.egg-info/SOURCES.txt 
new/meson-0.59.3/meson.egg-info/SOURCES.txt
--- old/meson-0.59.2/meson.egg-info/SOURCES.txt 2021-09-28 19:15:06.000000000 
+0200
+++ new/meson-0.59.3/meson.egg-info/SOURCES.txt 2021-10-23 19:08:50.000000000 
+0200
@@ -2975,6 +2975,9 @@
 test cases/unit/10 build_rpath/prog.cc
 test cases/unit/10 build_rpath/sub/meson.build
 test cases/unit/10 build_rpath/sub/stuff.c
+test cases/unit/100 rlib linkage/lib2.rs
+test cases/unit/100 rlib linkage/main.rs
+test cases/unit/100 rlib linkage/meson.build
 test cases/unit/11 cross prog/meson.build
 test cases/unit/11 cross prog/some_cross_tool.py
 test cases/unit/11 cross prog/sometool.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/backend/ninjabackend.py 
new/meson-0.59.3/mesonbuild/backend/ninjabackend.py
--- old/meson-0.59.2/mesonbuild/backend/ninjabackend.py 2021-08-18 
13:22:33.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/backend/ninjabackend.py 2021-10-23 
18:36:11.000000000 +0200
@@ -1616,7 +1616,10 @@
         args += compilers.get_base_compile_args(base_proxy, rustc)
         self.generate_generator_list_rules(target)
 
-        orderdeps = [os.path.join(t.subdir, t.get_filename()) for t in 
target.link_targets]
+        # dependencies need to cause a relink, they're not just for odering
+        deps = [os.path.join(t.subdir, t.get_filename()) for t in 
target.link_targets]
+
+        orderdeps: T.List[str] = []
 
         main_rust_file = None
         for i in target.get_sources():
@@ -1745,6 +1748,8 @@
         element = NinjaBuildElement(self.all_outputs, target_name, 
compiler_name, main_rust_file)
         if orderdeps:
             element.add_orderdep(orderdeps)
+        if deps:
+            element.add_dep(deps)
         element.add_item('ARGS', args)
         element.add_item('targetdep', depfile)
         element.add_item('cratetype', cratetype)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/backend/xcodebackend.py 
new/meson-0.59.3/mesonbuild/backend/xcodebackend.py
--- old/meson-0.59.2/mesonbuild/backend/xcodebackend.py 2021-08-18 
13:22:33.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/backend/xcodebackend.py 2021-10-23 
18:36:11.000000000 +0200
@@ -592,7 +592,7 @@
                 if isinstance(dep, dependencies.AppleFrameworks):
                     for f in dep.frameworks:
                         fw_dict = PbxDict()
-                        objects_dict.add:item(self.native_frameworks[f], 
fw_dict, f'{f}.framework in Frameworks')
+                        objects_dict.add_item(self.native_frameworks[f], 
fw_dict, f'{f}.framework in Frameworks')
                         fw_dict.add_item('isa', 'PBXBuildFile')
                         fw_dict.add_item('fileRef', 
self.native_frameworks_fileref[f], f)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/cmake/toolchain.py 
new/meson-0.59.3/mesonbuild/cmake/toolchain.py
--- old/meson-0.59.2/mesonbuild/cmake/toolchain.py      2021-08-18 
13:22:15.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/cmake/toolchain.py      2021-10-23 
18:36:11.000000000 +0200
@@ -16,6 +16,7 @@
 from .traceparser import CMakeTraceParser
 from ..envconfig import CMakeSkipCompilerTest
 from ..mesonlib import MachineChoice
+from ..compilers import VisualStudioLikeCompiler
 from .common import language_map, cmake_get_generator_args
 from .. import mlog
 
@@ -28,6 +29,7 @@
     from .executor import CMakeExecutor
     from ..envconfig import MachineInfo, Properties, CMakeVariables
     from ..environment import Environment
+    from ..compilers import Compiler
 
 class CMakeExecScope(Enum):
     SUBPROJECT = 'subproject'
@@ -183,21 +185,30 @@
 
         # Set the compiler variables
         for lang, comp_obj in self.compilers.items():
-            exe_list = [make_abs(x) for x in comp_obj.get_exelist()]
             prefix = 'CMAKE_{}_'.format(language_map.get(lang, lang.upper()))
 
+            exe_list = comp_obj.get_exelist()
             if not exe_list:
                 continue
-            elif len(exe_list) == 2:
-                defaults[prefix + 'COMPILER']          = [exe_list[1]]
-                defaults[prefix + 'COMPILER_LAUNCHER'] = [exe_list[0]]
-            else:
-                defaults[prefix + 'COMPILER'] = exe_list
+
+            if len(exe_list) >= 2 and not self.is_cmdline_option(comp_obj, 
exe_list[1]):
+                defaults[prefix + 'COMPILER_LAUNCHER'] = 
[make_abs(exe_list[0])]
+                exe_list = exe_list[1:]
+
+            exe_list[0] = make_abs(exe_list[0])
+            defaults[prefix + 'COMPILER'] = exe_list
             if comp_obj.get_id() == 'clang-cl':
                 defaults['CMAKE_LINKER'] = comp_obj.get_linker_exelist()
 
         return defaults
 
+    @staticmethod
+    def is_cmdline_option(compiler: 'Compiler', arg: str) -> bool:
+        if isinstance(compiler, VisualStudioLikeCompiler):
+            return arg.startswith('/')
+        else:
+            return arg.startswith('-')
+
     def update_cmake_compiler_state(self) -> None:
         # Check if all variables are already cached
         if self.cmakestate.languages.issuperset(self.compilers.keys()):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/compilers/cuda.py 
new/meson-0.59.3/mesonbuild/compilers/cuda.py
--- old/meson-0.59.2/mesonbuild/compilers/cuda.py       2021-08-18 
13:22:33.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/compilers/cuda.py       2021-10-23 
18:36:11.000000000 +0200
@@ -623,12 +623,9 @@
 
         # We must strip the -std option from the host compiler option set, as 
NVCC has
         # its own -std flag that may not agree with the host compiler's.
-        overrides = {name: opt.value for name, opt in options.items()}
-        overrides.pop(OptionKey('std', machine=self.for_machine,
-                                       lang=self.host_compiler.language), None)
-        host_options = self.host_compiler.get_options().copy()
-        if 'std' in host_options:
-            del host_options['std'] # type: ignore
+        host_options = {key: options.get(key, opt) for key, opt in 
self.host_compiler.get_options().items()}
+        std_key = OptionKey('std', machine=self.for_machine, 
lang=self.host_compiler.language)
+        overrides = {std_key: 'none'}
         return OptionOverrideProxy(overrides, host_options)
 
     def get_option_compile_args(self, options: 'KeyedOptionDictType') -> 
T.List[str]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/compilers/detect.py 
new/meson-0.59.3/mesonbuild/compilers/detect.py
--- old/meson-0.59.2/mesonbuild/compilers/detect.py     2021-08-18 
13:22:15.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/compilers/detect.py     2021-10-23 
18:36:11.000000000 +0200
@@ -367,7 +367,7 @@
             compiler = [compiler]
         compiler_name = os.path.basename(compiler[0])
 
-        if not {'cl', 'cl.exe', 'clang-cl', 
'clang-cl.exe'}.isdisjoint(compiler):
+        if any(os.path.basename(x) in {'cl', 'cl.exe', 'clang-cl', 
'clang-cl.exe'} for x in compiler):
             # Watcom C provides it's own cl.exe clone that mimics an older
             # version of Microsoft's compiler. Since Watcom's cl.exe is
             # just a wrapper, we skip using it if we detect its presence
@@ -973,7 +973,7 @@
                     extra_args['direct'] = True
                     extra_args['machine'] = cc.linker.machine
                 else:
-                    exelist = cc.linker.exelist.copy()
+                    exelist = cc.linker.exelist + cc.linker.get_always_args()
                     if 'ccache' in exelist[0]:
                         del exelist[0]
                     c = exelist.pop(0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/compilers/fortran.py 
new/meson-0.59.3/mesonbuild/compilers/fortran.py
--- old/meson-0.59.2/mesonbuild/compilers/fortran.py    2021-08-18 
13:22:33.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/compilers/fortran.py    2021-10-23 
18:36:11.000000000 +0200
@@ -71,7 +71,7 @@
         if binary_name.is_file():
             binary_name.unlink()
 
-        source_name.write_text('print *, "Fortran compilation is working."; 
end', encoding='utf-8')
+        source_name.write_text('program main; print *, "Fortran compilation is 
working."; end program', encoding='utf-8')
 
         extra_flags: T.List[str] = []
         extra_flags += 
environment.coredata.get_external_args(self.for_machine, self.language)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/coredata.py 
new/meson-0.59.3/mesonbuild/coredata.py
--- old/meson-0.59.2/mesonbuild/coredata.py     2021-09-28 19:04:57.000000000 
+0200
+++ new/meson-0.59.3/mesonbuild/coredata.py     2021-10-23 18:36:11.000000000 
+0200
@@ -43,7 +43,7 @@
     KeyedOptionDictType = T.Union[T.Dict['OptionKey', 'UserOption[T.Any]'], 
OptionOverrideProxy]
     CompilerCheckCacheKey = T.Tuple[T.Tuple[str, ...], str, str, T.Tuple[str, 
...], str]
 
-version = '0.59.2'
+version = '0.59.3'
 backendlist = ['ninja', 'vs', 'vs2010', 'vs2012', 'vs2013', 'vs2015', 
'vs2017', 'vs2019', 'xcode']
 
 default_yielding = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/dependencies/cmake.py 
new/meson-0.59.3/mesonbuild/dependencies/cmake.py
--- old/meson-0.59.2/mesonbuild/dependencies/cmake.py   2021-08-18 
13:22:33.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/dependencies/cmake.py   2021-10-23 
18:36:11.000000000 +0200
@@ -15,7 +15,7 @@
 from .base import ExternalDependency, DependencyException, DependencyMethods, 
DependencyTypeName
 from ..mesonlib import is_windows, MesonException, OptionKey, PerMachine, 
stringlistify, extract_as_list
 from ..mesondata import mesondata
-from ..cmake import CMakeExecutor, CMakeTraceParser, CMakeException, 
CMakeToolchain, CMakeExecScope, check_cmake_args
+from ..cmake import CMakeExecutor, CMakeTraceParser, CMakeException, 
CMakeToolchain, CMakeExecScope, check_cmake_args, CMakeTarget
 from .. import mlog
 from pathlib import Path
 import functools
@@ -433,6 +433,18 @@
         modules = self._map_module_list(modules, components)
         autodetected_module_list = False
 
+        # Check if we need a DEBUG or RELEASE CMake dependencies
+        is_debug = False
+        if OptionKey('b_vscrt') in self.env.coredata.options:
+            is_debug = self.env.coredata.get_option(OptionKey('buildtype')) == 
'debug'
+            if self.env.coredata.options[OptionKey('b_vscrt')].value in 
{'mdd', 'mtd'}:
+                is_debug = True
+        else:
+            # Don't directly assign to is_debug to make mypy happy
+            debug_opt = self.env.coredata.get_option(OptionKey('debug'))
+            assert isinstance(debug_opt, bool)
+            is_debug = debug_opt
+
         # Try guessing a CMake target if none is provided
         if len(modules) == 0:
             for i in self.traceparser.targets:
@@ -446,9 +458,59 @@
 
         # Failed to guess a target --> try the old-style method
         if len(modules) == 0:
+            # Warn when there might be matching imported targets but no 
automatic match was used
+            partial_modules: T.List[CMakeTarget] = []
+            for k, v in self.traceparser.targets.items():
+                tg = k.lower()
+                lname = name.lower()
+                if tg.startswith(f'{lname}::'):
+                    partial_modules += [v]
+            if partial_modules:
+                mlog.warning(textwrap.dedent(f'''\
+                    Could not find and exact match for the CMake dependency 
{name}.
+
+                    However, Meson found the following partial matches:
+
+                        {[x.name for x in partial_modules]}
+
+                    Using imported is recommended, since this approach is less 
error prone
+                    and better supported by Meson. Consider explicitly 
specifying one of
+                    these in the dependency call with:
+
+                        dependency('{name}', modules: ['{name}::<name>', ...])
+
+                    Meson will now continue to use the old-style 
{name}_LIBRARIES CMake
+                    variables to extract the dependency information since no 
explicit
+                    target is currently specified.
+
+                '''))
+                mlog.debug('More info for the partial match targets:')
+                for tgt in partial_modules:
+                    mlog.debug(tgt)
+
+
             incDirs = [x for x in 
self.traceparser.get_cmake_var('PACKAGE_INCLUDE_DIRS') if x]
             defs = [x for x in 
self.traceparser.get_cmake_var('PACKAGE_DEFINITIONS') if x]
-            libs = [x for x in 
self.traceparser.get_cmake_var('PACKAGE_LIBRARIES') if x]
+            libs_raw = [x for x in 
self.traceparser.get_cmake_var('PACKAGE_LIBRARIES') if x]
+
+            # CMake has a "fun" API, where certain keywords describing
+            # configurations can be in the *_LIBRARIES vraiables. See:
+            # - https://github.com/mesonbuild/meson/issues/9197
+            # - https://gitlab.freedesktop.org/libnice/libnice/-/issues/140
+            # - 
https://cmake.org/cmake/help/latest/command/target_link_libraries.html#overview 
 (the last point in the section)
+            libs: T.List[str] = []
+            cfg_matches = True
+            cm_tag_map = {'debug': is_debug, 'optimized': not is_debug, 
'general': True}
+            for i in libs_raw:
+                if i.lower() in cm_tag_map:
+                    cfg_matches = cm_tag_map[i.lower()]
+                    continue
+                if cfg_matches:
+                    libs += [i]
+                # According to the CMake docs, a keyword only works for the
+                # directly the following item and all items without a keyword
+                # are implizitly `general`
+                cfg_matches = True
 
             # Try to use old style variables if no module is specified
             if len(libs) > 0:
@@ -514,15 +576,6 @@
                     cfgs = [x for x in 
tgt.properties['IMPORTED_CONFIGURATIONS'] if x]
                     cfg = cfgs[0]
 
-                if OptionKey('b_vscrt') in self.env.coredata.options:
-                    is_debug = 
self.env.coredata.get_option(OptionKey('buildtype')) == 'debug'
-                    if self.env.coredata.options[OptionKey('b_vscrt')].value 
in {'mdd', 'mtd'}:
-                        is_debug = True
-                else:
-                    # Don't directly assign to is_debug to make mypy happy
-                    debug_opt = 
self.env.coredata.get_option(OptionKey('debug'))
-                    assert isinstance(debug_opt, bool)
-                    is_debug = debug_opt
                 if is_debug:
                     if 'DEBUG' in cfgs:
                         cfg = 'DEBUG'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/linkers/detect.py 
new/meson-0.59.3/mesonbuild/linkers/detect.py
--- old/meson-0.59.2/mesonbuild/linkers/detect.py       2021-08-18 
13:22:15.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/linkers/detect.py       2021-10-23 
18:36:11.000000000 +0200
@@ -79,7 +79,7 @@
         check_args.extend(extra_args)
 
     p, o, _ = Popen_safe(compiler + check_args)
-    if o.startswith('LLD'):
+    if 'LLD' in o.split('\n')[0]:
         if '(compatible with GNU linkers)' in o:
             return LLVMDynamicLinker(
                 compiler, for_machine, comp_class.LINKER_PREFIX,
@@ -94,7 +94,7 @@
         # We've already hanedled the non-direct case above
 
     p, o, e = Popen_safe(compiler + check_args)
-    if o.startswith('LLD'):
+    if 'LLD' in o.split('\n')[0]:
         return ClangClDynamicLinker(
             for_machine, [],
             prefix=comp_class.LINKER_PREFIX if use_linker_prefix else [],
@@ -149,7 +149,7 @@
     _, o, e = Popen_safe(compiler + check_args)
     v = search_version(o + e)
     linker: DynamicLinker
-    if o.startswith('LLD'):
+    if 'LLD' in o.split('\n')[0]:
         linker = LLVMDynamicLinker(
             compiler, for_machine, comp_class.LINKER_PREFIX, override, 
version=v)
     elif 'Snapdragon' in e and 'LLVM' in e:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/mintro.py 
new/meson-0.59.3/mesonbuild/mintro.py
--- old/meson-0.59.2/mesonbuild/mintro.py       2021-07-20 10:56:20.000000000 
+0200
+++ new/meson-0.59.3/mesonbuild/mintro.py       2021-10-23 18:36:11.000000000 
+0200
@@ -256,6 +256,8 @@
                 typestr = 'integer'
             elif isinstance(opt, cdata.UserArrayOption):
                 typestr = 'array'
+                if opt.choices:
+                    optdict['choices'] = opt.choices
             else:
                 raise RuntimeError("Unknown option type")
             optdict['type'] = typestr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/modules/gnome.py 
new/meson-0.59.3/mesonbuild/modules/gnome.py
--- old/meson-0.59.2/mesonbuild/modules/gnome.py        2021-09-28 
19:04:57.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/modules/gnome.py        2021-10-23 
18:36:11.000000000 +0200
@@ -222,9 +222,9 @@
                     ifile = os.path.join(ifile.subdir, ifile.fname)
             elif isinstance(ifile, str):
                 ifile = os.path.join(state.subdir, ifile)
-            elif isinstance(ifile, (interpreter.CustomTargetHolder,
-                                    interpreter.CustomTargetIndexHolder,
-                                    interpreter.GeneratedObjectsHolder)):
+            elif isinstance(ifile, (build.CustomTarget,
+                                    build.CustomTargetIndex,
+                                    build.GeneratedList)):
                 m = 'Resource xml files generated at build-time cannot be used 
' \
                     'with gnome.compile_resources() because we need to scan ' \
                     'the xml for dependencies. Use configure_file() instead ' \
@@ -286,7 +286,7 @@
             kwargs['depend_files'] = depend_files
             kwargs['command'] = cmd
         else:
-            depfile = kwargs['output'] + '.d'
+            depfile = f'{output}.d'
             kwargs['depfile'] = depfile
             kwargs['command'] = copy.copy(cmd) + ['--dependency-file', 
'@DEPFILE@']
         target_c = GResourceTarget(name, state.subdir, state.subproject, 
kwargs)
@@ -1627,7 +1627,7 @@
                         arg))
 
         install_header = kwargs.pop('install_header', False)
-        install_dir = kwargs.pop('install_dir', None)
+        install_dir = kwargs.pop('install_dir', [])
 
         custom_kwargs = {
             'input': sources,
@@ -1652,8 +1652,7 @@
         body = build.CustomTarget(output + '_c', state.subdir, 
state.subproject, custom_kwargs)
 
         custom_kwargs['install'] = install_header
-        if install_dir is not None:
-            custom_kwargs['install_dir'] = install_dir
+        custom_kwargs['install_dir'] = install_dir
         if new_genmarshal:
             cmd += ['--pragma-once']
         custom_kwargs['command'] = cmd + ['--header', '@INPUT@']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/modules/unstable_cuda.py 
new/meson-0.59.3/mesonbuild/modules/unstable_cuda.py
--- old/meson-0.59.2/mesonbuild/modules/unstable_cuda.py        2021-08-18 
13:22:15.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/modules/unstable_cuda.py        2021-10-23 
18:36:11.000000000 +0200
@@ -50,6 +50,8 @@
 
         cuda_version = args[0]
         driver_version_table = [
+            {'cuda_version': '>=11.5.0',   'windows': '496.04', 'linux': 
'495.29.05'},
+            {'cuda_version': '>=11.4.1',   'windows': '471.41', 'linux': 
'470.57.02'},
             {'cuda_version': '>=11.4.0',   'windows': '471.11', 'linux': 
'470.42.01'},
             {'cuda_version': '>=11.3.0',   'windows': '465.89', 'linux': 
'465.19.01'},
             {'cuda_version': '>=11.2.2',   'windows': '461.33', 'linux': 
'460.32.03'},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/meson-0.59.2/mesonbuild/modules/unstable_external_project.py 
new/meson-0.59.3/mesonbuild/modules/unstable_external_project.py
--- old/meson-0.59.2/mesonbuild/modules/unstable_external_project.py    
2021-08-18 13:22:15.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/modules/unstable_external_project.py    
2021-10-23 18:36:11.000000000 +0200
@@ -233,7 +233,7 @@
         libs_whole = []
         sources = self.target
         final_deps = []
-        variables = []
+        variables = {}
         dep = InternalDependency(version, incdir, compile_args, link_args, 
libs,
                                  libs_whole, sources, final_deps, variables)
         return dep
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/mtest.py 
new/meson-0.59.3/mesonbuild/mtest.py
--- old/meson-0.59.2/mesonbuild/mtest.py        2021-09-28 19:04:57.000000000 
+0200
+++ new/meson-0.59.3/mesonbuild/mtest.py        2021-10-23 18:36:11.000000000 
+0200
@@ -1893,7 +1893,10 @@
             l.start(self)
 
         if sys.platform != 'win32':
-            asyncio.get_event_loop().add_signal_handler(signal.SIGINT, 
sigint_handler)
+            if os.getpgid(0) == os.getpid():
+                asyncio.get_event_loop().add_signal_handler(signal.SIGINT, 
sigint_handler)
+            else:
+                asyncio.get_event_loop().add_signal_handler(signal.SIGINT, 
sigterm_handler)
             asyncio.get_event_loop().add_signal_handler(signal.SIGTERM, 
sigterm_handler)
         try:
             for runner in runners:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/optinterpreter.py 
new/meson-0.59.3/mesonbuild/optinterpreter.py
--- old/meson-0.59.2/mesonbuild/optinterpreter.py       2021-07-20 
10:56:20.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/optinterpreter.py       2021-10-23 
18:36:11.000000000 +0200
@@ -16,7 +16,6 @@
 import functools
 import typing as T
 
-from . import compilers
 from . import coredata
 from . import mesonlib
 from . import mparser
@@ -26,21 +25,6 @@
 if T.TYPE_CHECKING:
     from .interpreterbase import TV_func
 
-forbidden_option_names = set(coredata.BUILTIN_OPTIONS.keys())
-forbidden_prefixes = [lang + '_' for lang in compilers.all_languages] + ['b_', 
'backend_']
-reserved_prefixes = ['cross_']
-
-def is_invalid_name(name: str, *, log: bool = True) -> bool:
-    if name in forbidden_option_names:
-        return True
-    pref = name.split('_')[0] + '_'
-    if pref in forbidden_prefixes:
-        return True
-    if pref in reserved_prefixes:
-        if log:
-            mlog.deprecation('Option uses prefix "%s", which is reserved for 
Meson. This will become an error in the future.' % pref)
-    return False
-
 class OptionException(mesonlib.MesonException):
     pass
 
@@ -225,9 +209,9 @@
             raise OptionException('Positional argument must be a string.')
         if optname_regex.search(opt_name) is not None:
             raise OptionException('Option names can only contain letters, 
numbers or dashes.')
-        if is_invalid_name(opt_name):
+        key = 
mesonlib.OptionKey.from_string(opt_name).evolve(subproject=self.subproject)
+        if not key.is_project():
             raise OptionException('Option name %s is reserved.' % opt_name)
-        key = mesonlib.OptionKey(opt_name, self.subproject)
 
         if 'yield' in kwargs:
             FeatureNew.single_use('option yield', '0.45.0', self.subproject)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/mesonbuild/scripts/meson_exe.py 
new/meson-0.59.3/mesonbuild/scripts/meson_exe.py
--- old/meson-0.59.2/mesonbuild/scripts/meson_exe.py    2021-08-18 
13:22:15.000000000 +0200
+++ new/meson-0.59.3/mesonbuild/scripts/meson_exe.py    2021-10-23 
18:36:11.000000000 +0200
@@ -67,6 +67,9 @@
                          close_fds=False, stdin=stdin, stdout=pipe, 
stderr=pipe)
     stdout, stderr = p.communicate()
 
+    if stdin is not None:
+        stdin.close()
+
     if p.returncode == 0xc0000135:
         # STATUS_DLL_NOT_FOUND on Windows indicating a common problem that is 
otherwise hard to diagnose
         raise FileNotFoundError('due to missing DLLs')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.59.2/run_unittests.py 
new/meson-0.59.3/run_unittests.py
--- old/meson-0.59.2/run_unittests.py   2021-09-28 19:04:57.000000000 +0200
+++ new/meson-0.59.3/run_unittests.py   2021-10-23 18:36:11.000000000 +0200
@@ -79,6 +79,7 @@
 from mesonbuild.build import Target, ConfigurationData
 import mesonbuild.modules.pkgconfig
 from mesonbuild.scripts import destdir_join
+from mesonbuild.optinterpreter import OptionInterpreter, OptionException
 
 from mesonbuild.mtest import TAPParser, TestResult
 from mesonbuild.mesonmain import setup_vsenv
@@ -2445,6 +2446,38 @@
             raise self.fail('Did not find option "prefix"')
         self.assertEqual(prefix, '/absoluteprefix')
 
+    def test_invalid_option_names(self):
+        interp = OptionInterpreter('')
+
+        def write_file(code: str):
+            with tempfile.NamedTemporaryFile('w', dir=self.builddir, 
encoding='utf-8', delete=False) as f:
+                f.write(code)
+                return f.name
+
+        fname = write_file("option('default_library', type: 'string')")
+        self.assertRaisesRegex(OptionException, 'Option name default_library 
is reserved.',
+                               interp.process, fname)
+
+        fname = write_file("option('c_anything', type: 'string')")
+        self.assertRaisesRegex(OptionException, 'Option name c_anything is 
reserved.',
+                               interp.process, fname)
+
+        fname = write_file("option('b_anything', type: 'string')")
+        self.assertRaisesRegex(OptionException, 'Option name b_anything is 
reserved.',
+                               interp.process, fname)
+
+        fname = write_file("option('backend_anything', type: 'string')")
+        self.assertRaisesRegex(OptionException, 'Option name backend_anything 
is reserved.',
+                               interp.process, fname)
+
+        fname = write_file("option('foo.bar', type: 'string')")
+        self.assertRaisesRegex(OptionException, 'Option names can only contain 
letters, numbers or dashes.',
+                               interp.process, fname)
+
+        # platlib is allowed, only python.platlib is reserved.
+        fname = write_file("option('platlib', type: 'string')")
+        interp.process(fname)
+
     def test_do_conf_file_preserve_newlines(self):
 
         def conf_file(in_data, confdata):
@@ -3908,6 +3941,7 @@
             'section': 'user',
             'type': 'array',
             'value': ['foo', 'bar'],
+            'choices': ['foo', 'bar', 'oink', 'boink'],
             'machine': 'any',
         }
         tdir = os.path.join(self.unit_test_dir, '19 array option')
@@ -3934,6 +3968,7 @@
             'section': 'user',
             'type': 'array',
             'value': ['foo', 'bar'],
+            'choices': ['foo', 'bar', 'oink', 'boink'],
             'machine': 'any',
         }
         tdir = os.path.join(self.unit_test_dir, '19 array option')
@@ -3960,6 +3995,7 @@
             'section': 'user',
             'type': 'array',
             'value': [],
+            'choices': ['foo', 'bar', 'oink', 'boink'],
             'machine': 'any',
         }
         tdir = os.path.join(self.unit_test_dir, '19 array option')
@@ -4016,7 +4052,7 @@
             if item['name'] == 'combo':
                 self.assertEqual(item['value'], 'b')
                 self.assertEqual(item['choices'], ['b', 'c', 'd'])
-            elif item['name'] == 'arr':
+            elif item['name'] == 'array':
                 self.assertEqual(item['value'], ['b'])
                 self.assertEqual(item['choices'], ['b', 'c', 'd'])
 
@@ -4034,7 +4070,7 @@
             if item['name'] == 'combo':
                 self.assertEqual(item['value'], 'c')
                 self.assertEqual(item['choices'], ['b', 'c', 'd'])
-            elif item['name'] == 'arr':
+            elif item['name'] == 'array':
                 self.assertEqual(item['value'], ['b', 'c'])
                 self.assertEqual(item['choices'], ['b', 'c', 'd'])
 
@@ -6080,6 +6116,37 @@
                 link_args = 
env.coredata.get_external_link_args(cc.for_machine, cc.language)
                 self.assertEqual(sorted(link_args), sorted(['-flto']))
 
+    @skip_if_not_language('rust')
+    def test_rust_rlib_linkage(self) -> None:
+        if self.backend is not Backend.ninja:
+            raise unittest.SkipTest('Rust is only supported with ninja 
currently')
+        template = textwrap.dedent('''\
+                use std::process::exit;
+
+                pub fn fun() {{
+                    exit({});
+                }}
+            ''')
+
+        testdir = os.path.join(self.unit_test_dir, '100 rlib linkage')
+        gen_file = os.path.join(testdir, 'lib.rs')
+        with open(gen_file, 'w', encoding='utf-8') as f:
+            f.write(template.format(0))
+        self.addCleanup(windows_proof_rm, gen_file)
+
+        self.init(testdir)
+        self.build()
+        self.run_tests()
+
+        with open(gen_file, 'w', encoding='utf-8') as f:
+            f.write(template.format(39))
+
+        self.build()
+        with self.assertRaises(subprocess.CalledProcessError) as cm:
+            self.run_tests()
+        self.assertEqual(cm.exception.returncode, 1)
+        self.assertIn('exit status 39', cm.exception.stdout)
+
 class FailureTests(BasePlatformTests):
     '''
     Tests that test failure conditions. Build files here should be dynamically
@@ -8455,6 +8522,38 @@
         self.assertEqual(len(obj_files), 1)
         self.assertTrue(obj_files[0].endswith('-prelink.o'))
 
+    def do_one_test_with_nativefile(self, testdir, args):
+        testdir = os.path.join(self.common_test_dir, testdir)
+        with tempfile.TemporaryDirectory() as d:
+            p = Path(d) / 'nativefile'
+            with p.open('wt', encoding='utf-8') as f:
+                f.write(f'''[binaries]
+                    c = {args}
+                    ''')
+            self.init(testdir, extra_args=['--native-file=' + str(p)])
+            self.build()
+
+    def test_cmake_multilib(self):
+        '''
+        Test that the cmake module handles multilib paths correctly.
+        '''
+        # Verify that "gcc -m32" works
+        try:
+            self.do_one_test_with_nativefile('1 trivial', "['gcc', '-m32']")
+        except subprocess.CalledProcessError as e:
+            raise unittest.SkipTest('Not GCC, or GCC does not have the -m32 
option')
+        self.wipe()
+
+        # Verify that cmake works
+        try:
+            self.do_one_test_with_nativefile('../cmake/1 basic', "['gcc']")
+        except subprocess.CalledProcessError as e:
+            raise unittest.SkipTest('Could not build basic cmake project')
+        self.wipe()
+
+        # If so, we can test that cmake works with "gcc -m32"
+        self.do_one_test_with_nativefile('../cmake/1 basic', "['gcc', '-m32']")
+
 class BaseLinuxCrossTests(BasePlatformTests):
     # Don't pass --libdir when cross-compiling. We have tests that
     # check whether meson auto-detects it correctly.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/1 basic/simple.f90" 
"new/meson-0.59.3/test cases/fortran/1 basic/simple.f90"
--- "old/meson-0.59.2/test cases/fortran/1 basic/simple.f90"    2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/1 basic/simple.f90"    2021-10-23 
18:36:11.000000000 +0200
@@ -1,2 +1,3 @@
+program main
 print *, "Fortran compilation is working."
 end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/10 find 
library/main.f90" "new/meson-0.59.3/test cases/fortran/10 find library/main.f90"
--- "old/meson-0.59.2/test cases/fortran/10 find library/main.f90"      
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/10 find library/main.f90"      
2021-10-23 18:36:11.000000000 +0200
@@ -1,4 +1,4 @@
-
+program main
 use iso_fortran_env, only: stderr=>error_unit
 use iso_c_binding, only: c_int, c_char, c_null_char, c_ptr
 use gzip, only: gzopen, gzwrite, gzclose
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/12 
submodule/parent.f90" "new/meson-0.59.3/test cases/fortran/12 
submodule/parent.f90"
--- "old/meson-0.59.2/test cases/fortran/12 submodule/parent.f90"       
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/12 submodule/parent.f90"       
2021-10-23 18:36:11.000000000 +0200
@@ -13,6 +13,7 @@
 
 end module parent
 
+program main
 
 use parent
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/13 
coarray/main.f90" "new/meson-0.59.3/test cases/fortran/13 coarray/main.f90"
--- "old/meson-0.59.2/test cases/fortran/13 coarray/main.f90"   2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/13 coarray/main.f90"   2021-10-23 
18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 implicit none
 
 if (this_image() == 1)  print *, 'number of Fortran coarray images:', 
num_images()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/14 fortran links 
c/f_call_c.f90" "new/meson-0.59.3/test cases/fortran/14 fortran links 
c/f_call_c.f90"
--- "old/meson-0.59.2/test cases/fortran/14 fortran links c/f_call_c.f90"       
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/14 fortran links c/f_call_c.f90"       
2021-10-23 18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 implicit none
 
 interface
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/16 openmp/main.f90" 
"new/meson-0.59.3/test cases/fortran/16 openmp/main.f90"
--- "old/meson-0.59.2/test cases/fortran/16 openmp/main.f90"    2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/16 openmp/main.f90"    2021-10-23 
18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 use, intrinsic :: iso_fortran_env, only: stderr=>error_unit
 use omp_lib, only: omp_get_max_threads
 implicit none
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/18 
first_arg/main.f90" "new/meson-0.59.3/test cases/fortran/18 first_arg/main.f90"
--- "old/meson-0.59.2/test cases/fortran/18 first_arg/main.f90" 2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/18 first_arg/main.f90" 2021-10-23 
18:36:11.000000000 +0200
@@ -1,2 +1,3 @@
+program main
 i = 3
 end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 
fortran_std/legacy.f" "new/meson-0.59.3/test cases/fortran/19 
fortran_std/legacy.f"
--- "old/meson-0.59.2/test cases/fortran/19 fortran_std/legacy.f"       
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/legacy.f"       
2021-10-23 18:36:11.000000000 +0200
@@ -1,7 +1,8 @@
+      program main
     ! non-integer loop indices are deleted in Fortran 95 standard
       real a
 
       do 10 a=0,0.5,0.1
 10    continue
 
-      end program
\ No newline at end of file
+      end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 
fortran_std/std2003.f90" "new/meson-0.59.3/test cases/fortran/19 
fortran_std/std2003.f90"
--- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2003.f90"    
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2003.f90"    
2021-10-23 18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 use, intrinsic :: iso_fortran_env, only : error_unit
 implicit none
 
@@ -33,4 +34,4 @@
 
 end subroutine timestwo
 
-end program
\ No newline at end of file
+end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 
fortran_std/std2008.f90" "new/meson-0.59.3/test cases/fortran/19 
fortran_std/std2008.f90"
--- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2008.f90"    
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2008.f90"    
2021-10-23 18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 use, intrinsic :: iso_fortran_env, only : error_unit, sp=>real32, dp=>real64
 implicit none
 
@@ -29,4 +30,4 @@
 
 end subroutine timestwo
 
-end program
\ No newline at end of file
+end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 
fortran_std/std2018.f90" "new/meson-0.59.3/test cases/fortran/19 
fortran_std/std2018.f90"
--- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2018.f90"    
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2018.f90"    
2021-10-23 18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 use, intrinsic :: iso_fortran_env, only : error_unit, sp=>real32, dp=>real64
 implicit none
 
@@ -31,4 +32,4 @@
 
 end subroutine timestwo
 
-end program
\ No newline at end of file
+end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 
fortran_std/std95.f90" "new/meson-0.59.3/test cases/fortran/19 
fortran_std/std95.f90"
--- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std95.f90"      
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std95.f90"      
2021-10-23 18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 implicit none
 
 integer :: i, j
@@ -10,4 +11,4 @@
   A(i,j) = 1
 end forall
 
-end program
\ No newline at end of file
+end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/2 modules/prog.f90" 
"new/meson-0.59.3/test cases/fortran/2 modules/prog.f90"
--- "old/meson-0.59.2/test cases/fortran/2 modules/prog.f90"    2021-08-18 
13:22:33.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/2 modules/prog.f90"    2021-10-23 
18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 use circle, only: pi
 use line, only: length
 implicit none
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/20 
buildtype/main.f90" "new/meson-0.59.3/test cases/fortran/20 buildtype/main.f90"
--- "old/meson-0.59.2/test cases/fortran/20 buildtype/main.f90" 2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/20 buildtype/main.f90" 2021-10-23 
18:36:11.000000000 +0200
@@ -1 +1,2 @@
+program main
 end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/21 install 
static/main.f90" "new/meson-0.59.3/test cases/fortran/21 install 
static/main.f90"
--- "old/meson-0.59.2/test cases/fortran/21 install static/main.f90"    
2021-04-01 23:13:00.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/21 install static/main.f90"    
2021-10-23 18:36:11.000000000 +0200
@@ -1,4 +1,5 @@
+program main
 use main_lib
 implicit none
 call main_hello()
-end program
\ No newline at end of file
+end program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/5 static/main.f90" 
"new/meson-0.59.3/test cases/fortran/5 static/main.f90"
--- "old/meson-0.59.2/test cases/fortran/5 static/main.f90"     2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/5 static/main.f90"     2021-10-23 
18:36:11.000000000 +0200
@@ -1,4 +1,4 @@
-
+program main
 use static_hello
 implicit none
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/6 dynamic/main.f90" 
"new/meson-0.59.3/test cases/fortran/6 dynamic/main.f90"
--- "old/meson-0.59.2/test cases/fortran/6 dynamic/main.f90"    2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/6 dynamic/main.f90"    2021-10-23 
18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 use dynamic, only: hello
 implicit none
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/8 module 
names/test.f90" "new/meson-0.59.3/test cases/fortran/8 module names/test.f90"
--- "old/meson-0.59.2/test cases/fortran/8 module names/test.f90"       
2020-08-15 18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/fortran/8 module names/test.f90"       
2021-10-23 18:36:11.000000000 +0200
@@ -1,3 +1,4 @@
+program main
 use mymod1
 use MyMod2  ! test inline comment
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/linuxlike/13 cmake 
dependency/cmake_fake1/cmMesonTestF1Config.cmake" "new/meson-0.59.3/test 
cases/linuxlike/13 cmake dependency/cmake_fake1/cmMesonTestF1Config.cmake"
--- "old/meson-0.59.2/test cases/linuxlike/13 cmake 
dependency/cmake_fake1/cmMesonTestF1Config.cmake"   2020-08-15 
18:27:05.000000000 +0200
+++ "new/meson-0.59.3/test cases/linuxlike/13 cmake 
dependency/cmake_fake1/cmMesonTestF1Config.cmake"   2021-10-23 
18:36:11.000000000 +0200
@@ -2,8 +2,10 @@
 
 if(ZLIB_FOUND OR ZLIB_Found)
   set(cmMesonTestF1_FOUND        ON)
-  set(cmMesonTestF1_LIBRARIES    ${ZLIB_LIBRARY})
+  set(cmMesonTestF1_LIBRARIES    general ${ZLIB_LIBRARY})
   set(cmMesonTestF1_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
+
+  add_library(CMMesonTESTf1::evil_non_standard_trget UNKNOWN IMPORTED)
 else()
   set(cmMesonTestF1_FOUND       OFF)
 endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/linuxlike/13 cmake 
dependency/meson.build" "new/meson-0.59.3/test cases/linuxlike/13 cmake 
dependency/meson.build"
--- "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/meson.build"     
2021-08-18 14:01:28.000000000 +0200
+++ "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/meson.build"     
2021-10-23 18:51:52.000000000 +0200
@@ -48,6 +48,10 @@
 depPrefEnv2 = dependency('cmMesonTestF2', required : true, method : 'cmake')
 depPrefEnv3 = dependency('cmMesonTestF3', required : true, method : 'cmake')
 
+# Try to actually link with depPrefEnv1, since we are doing "fun" stuff there
+exe3 = executable('zlibprog3', 'prog.c', dependencies : depPrefEnv1)
+test('zlibtest3', exe3)
+
 # Try to find a dependency with a custom CMake module
 
 depm1 = dependency('SomethingLikeZLIB', required : true, components : 
'required_comp',   method : 'cmake', cmake_module_path : 'cmake')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/linuxlike/13 cmake 
dependency/test.json" "new/meson-0.59.3/test cases/linuxlike/13 cmake 
dependency/test.json"
--- "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/test.json"       
2021-04-01 23:13:00.000000000 +0200
+++ "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/test.json"       
2021-10-23 18:36:11.000000000 +0200
@@ -2,5 +2,13 @@
   "env": {
     "CMAKE_PREFIX_PATH": 
"@ROOT@/cmake_fake1;@ROOT@/cmake_fake2:@ROOT@/cmake_pref_env",
     "PATH": "@ROOT@/cmake_fake3/bin:@PATH@"
-  }
+  },
+  "stdout": [
+    {
+      "line": "WARNING: Could not find and exact match for the CMake 
dependency cmMesonTestF1."
+    },
+    {
+      "line": "    ['CMMesonTESTf1::evil_non_standard_trget']"
+    }
+  ]
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/rust/5 polyglot 
static/meson.build" "new/meson-0.59.3/test cases/rust/5 polyglot 
static/meson.build"
--- "old/meson-0.59.2/test cases/rust/5 polyglot static/meson.build"    
2021-08-18 14:02:28.000000000 +0200
+++ "new/meson-0.59.3/test cases/rust/5 polyglot static/meson.build"    
2021-10-23 18:52:45.000000000 +0200
@@ -2,6 +2,7 @@
 
 deps = [
   meson.get_compiler('c').find_library('dl', required: false),
+  meson.get_compiler('c').find_library('m', required: false),
   dependency('threads'),
 ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/unit/100 rlib 
linkage/lib2.rs" "new/meson-0.59.3/test cases/unit/100 rlib linkage/lib2.rs"
--- "old/meson-0.59.2/test cases/unit/100 rlib linkage/lib2.rs" 1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.59.3/test cases/unit/100 rlib linkage/lib2.rs" 2021-10-23 
18:36:11.000000000 +0200
@@ -0,0 +1,5 @@
+use lib;
+
+pub fn fun() {
+    lib::fun();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/unit/100 rlib 
linkage/main.rs" "new/meson-0.59.3/test cases/unit/100 rlib linkage/main.rs"
--- "old/meson-0.59.2/test cases/unit/100 rlib linkage/main.rs" 1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.59.3/test cases/unit/100 rlib linkage/main.rs" 2021-10-23 
18:36:11.000000000 +0200
@@ -0,0 +1,5 @@
+use lib2::fun;
+
+fn main() {
+    fun();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.59.2/test cases/unit/100 rlib 
linkage/meson.build" "new/meson-0.59.3/test cases/unit/100 rlib 
linkage/meson.build"
--- "old/meson-0.59.2/test cases/unit/100 rlib linkage/meson.build"     
1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-0.59.3/test cases/unit/100 rlib linkage/meson.build"     
2021-10-23 18:36:11.000000000 +0200
@@ -0,0 +1,22 @@
+project('rlib linkage', 'rust', default_options : ['rust_std=2018'])
+
+lib = static_library(
+  'lib',
+  'lib.rs',
+  rust_crate_type : 'rlib',
+)
+
+lib2 = static_library(
+  'lib2',
+  'lib2.rs',
+  rust_crate_type : 'rlib',
+  link_with : lib,
+)
+
+exe = executable(
+  'exe',
+  'main.rs',
+  link_with : lib2,
+)
+
+test('main', exe)

Reply via email to