diff options
| -rw-r--r-- | mesonbuild/compilers/asm.py | 9 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/clang.py | 8 | ||||
| -rw-r--r-- | mesonbuild/compilers/rust.py | 5 |
3 files changed, 11 insertions, 11 deletions
diff --git a/mesonbuild/compilers/asm.py b/mesonbuild/compilers/asm.py index d358ca992..d4bd32579 100644 --- a/mesonbuild/compilers/asm.py +++ b/mesonbuild/compilers/asm.py @@ -6,6 +6,7 @@ import typing as T from ..mesonlib import EnvironmentException, get_meson_command from ..options import OptionKey from .compilers import Compiler +from ..linkers.linkers import VisualStudioLikeLinkerMixin from .mixins.metrowerks import MetrowerksCompiler, mwasmarm_instruction_set_args, mwasmeppc_instruction_set_args from .mixins.ti import TICompiler @@ -44,10 +45,8 @@ class NasmCompiler(Compiler): linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None, is_cross: bool = False): super().__init__(ccache, exelist, version, for_machine, info, linker, full_version, is_cross) - self.links_with_msvc = False - if 'link' in self.linker.id: + if isinstance(self.linker, VisualStudioLikeLinkerMixin): self.base_options.add(OptionKey('b_vscrt')) - self.links_with_msvc = True def needs_static_linker(self) -> bool: return True @@ -122,7 +121,7 @@ class NasmCompiler(Compiler): # require this, otherwise it'll fail to find # _WinMain or _DllMainCRTStartup. def get_crt_link_args(self, crt_val: str, buildtype: str) -> T.List[str]: - if not self.info.is_windows(): + if not isinstance(self.linker, VisualStudioLikeLinkerMixin): return [] return self.crt_args[self.get_crt_val(crt_val, buildtype)] @@ -140,7 +139,7 @@ class YasmCompiler(NasmCompiler): def get_debug_args(self, is_debug: bool) -> T.List[str]: if is_debug: - if self.info.is_windows() and self.links_with_msvc: + if isinstance(self.linker, VisualStudioLikeLinkerMixin): return ['-g', 'cv8'] elif self.info.is_darwin(): return ['-g', 'null'] diff --git a/mesonbuild/compilers/mixins/clang.py b/mesonbuild/compilers/mixins/clang.py index 863d2502d..3b22ec388 100644 --- a/mesonbuild/compilers/mixins/clang.py +++ b/mesonbuild/compilers/mixins/clang.py @@ -12,7 +12,7 @@ import typing as T from ... import mesonlib from ... import options from ...linkers.linkers import AppleDynamicLinker, ClangClDynamicLinker, LLVMDynamicLinker, GnuGoldDynamicLinker, \ - MoldDynamicLinker, MSVCDynamicLinker + MoldDynamicLinker, VisualStudioLikeLinkerMixin from ...options import OptionKey from ..compilers import CompileCheckMode from .gnu import GnuLikeCompiler @@ -82,7 +82,7 @@ class ClangCompiler(GnuLikeCompiler): # linkers don't have base_options. if isinstance(self.linker, AppleDynamicLinker): self.base_options.add(OptionKey('b_bitcode')) - elif isinstance(self.linker, MSVCDynamicLinker) or self.info.is_windows(): + elif isinstance(self.linker, VisualStudioLikeLinkerMixin): self.base_options.add(OptionKey('b_vscrt')) # All Clang backends can also do LLVM IR self.can_compile_suffixes.add('ll') @@ -167,7 +167,7 @@ class ClangCompiler(GnuLikeCompiler): return [] def gen_vs_module_defs_args(self, defsfile: str) -> T.List[str]: - if isinstance(self.linker, (ClangClDynamicLinker, MSVCDynamicLinker)): + if isinstance(self.linker, VisualStudioLikeLinkerMixin): # With MSVC, DLLs only export symbols that are explicitly exported, # so if a module defs file is specified, we use that to export symbols return ['-Wl,/DEF:' + defsfile] @@ -221,7 +221,7 @@ class ClangCompiler(GnuLikeCompiler): return args def linker_to_compiler_args(self, args: T.List[str]) -> T.List[str]: - if isinstance(self.linker, (ClangClDynamicLinker, MSVCDynamicLinker)): + if isinstance(self.linker, VisualStudioLikeLinkerMixin): return [flag if flag.startswith('-Wl,') or flag.startswith('-fuse-ld=') else f'-Wl,{flag}' for flag in args] else: return args diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py index 8f8febdb0..7e6c31096 100644 --- a/mesonbuild/compilers/rust.py +++ b/mesonbuild/compilers/rust.py @@ -12,6 +12,7 @@ import typing as T from .. import options from ..mesonlib import EnvironmentException, MesonException, Popen_safe_logged, version_compare +from ..linkers.linkers import VisualStudioLikeLinkerMixin from ..options import OptionKey from .compilers import Compiler, CompileCheckMode, clike_debug_args, is_library @@ -98,7 +99,7 @@ class RustCompiler(Compiler): linker=linker) self.rustup_run_and_args: T.Optional[T.Tuple[T.List[str], T.List[str]]] = get_rustup_run_and_args(exelist) self.base_options.update({OptionKey(o) for o in ['b_colorout', 'b_ndebug']}) - if 'link' in self.linker.id: + if isinstance(self.linker, VisualStudioLikeLinkerMixin): self.base_options.add(OptionKey('b_vscrt')) self.native_static_libs: T.List[str] = [] self.is_beta = '-beta' in full_version @@ -307,7 +308,7 @@ class RustCompiler(Compiler): return [] def get_crt_link_args(self, crt_val: str, buildtype: str) -> T.List[str]: - if self.linker.id not in {'link', 'lld-link'}: + if not isinstance(self.linker, VisualStudioLikeLinkerMixin): return [] return self.MSVCRT_ARGS[self.get_crt_val(crt_val, buildtype)] |
