diff options
| author | SmallWood-D <shay.gozan@gmail.com> | 2022-09-25 21:30:03 +0300 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2022-11-29 01:48:27 +0200 |
| commit | d32ee583ada8304fb31d11382bc6055f6239a99b (patch) | |
| tree | 02b30d6a37cfc2e2c9b0aa9f0db0e3e7bf4a3f1a /mesonbuild/cmake | |
| parent | 23fcea16e56cd154f995208a0443e3d8c18bd8bf (diff) | |
| download | meson-d32ee583ada8304fb31d11382bc6055f6239a99b.tar.gz | |
Fix crash when toolchain is missing
Add a MissingCompiler class returned by compiler detecting methods
intead of None - accessing such an object raises a DependencyException
Fixes #10586
Co-authored-by: duckflyer <duckflyer@gmail.com>
Diffstat (limited to 'mesonbuild/cmake')
| -rw-r--r-- | mesonbuild/cmake/tracetargets.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mesonbuild/cmake/tracetargets.py b/mesonbuild/cmake/tracetargets.py index 2169a6b82..d64d1a1de 100644 --- a/mesonbuild/cmake/tracetargets.py +++ b/mesonbuild/cmake/tracetargets.py @@ -12,6 +12,7 @@ if T.TYPE_CHECKING: from .traceparser import CMakeTraceParser from ..environment import Environment from ..compilers import Compiler + from ..dependencies import MissingCompiler class ResolvedTarget: def __init__(self) -> None: @@ -24,7 +25,7 @@ def resolve_cmake_trace_targets(target_name: str, trace: 'CMakeTraceParser', env: 'Environment', *, - clib_compiler: T.Optional['Compiler'] = None, + clib_compiler: T.Union['MissingCompiler', 'Compiler'] = None, not_found_warning: T.Callable[[str], None] = lambda x: None) -> ResolvedTarget: res = ResolvedTarget() targets = [target_name] @@ -48,7 +49,7 @@ def resolve_cmake_trace_targets(target_name: str, res.libraries += [curr] elif Path(curr).is_absolute() and Path(curr).exists(): res.libraries += [curr] - elif env.machines.build.is_windows() and reg_is_maybe_bare_lib.match(curr) and clib_compiler is not None: + elif env.machines.build.is_windows() and reg_is_maybe_bare_lib.match(curr) and clib_compiler: # On Windows, CMake library dependencies can be passed as bare library names, # CMake brute-forces a combination of prefix/suffix combinations to find the # right library. Assume any bare argument passed which is not also a CMake |
