From 6c5a88632f1d3319124d03eab596d57416ef16c6 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Mon, 6 Oct 2025 10:20:54 -0700 Subject: Revert "compilers/asm: Store the C Compiler inside the Assembly Compilers" This reverts commit 8847c938dd1c9e2c6e64e3050eb58f7ec54fccb3. --- mesonbuild/compilers/asm.py | 23 +++++++++++++---------- mesonbuild/compilers/detect.py | 13 ++++++------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/mesonbuild/compilers/asm.py b/mesonbuild/compilers/asm.py index 813c87fe6..5f065e193 100644 --- a/mesonbuild/compilers/asm.py +++ b/mesonbuild/compilers/asm.py @@ -11,6 +11,7 @@ from .mixins.ti import TICompiler if T.TYPE_CHECKING: from ..environment import Environment + from ..linkers.linkers import DynamicLinker from ..mesonlib import MachineChoice from ..envconfig import MachineInfo @@ -32,13 +33,12 @@ class ASMCompiler(Compiler): _SUPPORTED_ARCHES: T.Set[str] = set() def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, - for_machine: 'MachineChoice', info: 'MachineInfo', compiler: Compiler, + for_machine: MachineChoice, info: MachineInfo, + linker: T.Optional[DynamicLinker] = None, full_version: T.Optional[str] = None, is_cross: bool = False): - assert compiler.linker is not None, 'for mypy' if self._SUPPORTED_ARCHES and info.cpu_family not in self._SUPPORTED_ARCHES: raise EnvironmentException(f'ASM Compiler {self.id} does not support building for {info.cpu_family} CPU family.') - super().__init__(ccache, exelist, version, for_machine, info, compiler.linker, full_version, is_cross) - self._compiler = compiler + super().__init__(ccache, exelist, version, for_machine, info, linker, full_version, is_cross) def _sanity_check_compile_args(self, env: Environment, sourcename: str, binname: str) -> T.List[str]: return [] @@ -63,9 +63,10 @@ class NasmCompiler(ASMCompiler): _SUPPORTED_ARCHES = {'x86', 'x86_64'} def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, - for_machine: 'MachineChoice', info: 'MachineInfo', compiler: Compiler, + for_machine: 'MachineChoice', info: 'MachineInfo', + linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None, is_cross: bool = False): - super().__init__(ccache, exelist, version, for_machine, info, compiler, full_version, is_cross) + super().__init__(ccache, exelist, version, for_machine, info, linker, full_version, is_cross) self.links_with_msvc = False if 'link' in self.linker.id: self.base_options.add(OptionKey('b_vscrt')) @@ -279,9 +280,10 @@ class TILinearAsmCompiler(TICompiler, ASMCompiler): _SUPPORTED_ARCHES = {'c6000'} def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, - for_machine: MachineChoice, info: MachineInfo, compiler: Compiler, + for_machine: MachineChoice, info: MachineInfo, + linker: T.Optional[DynamicLinker] = None, full_version: T.Optional[str] = None, is_cross: bool = False): - ASMCompiler.__init__(self, ccache, exelist, version, for_machine, info, compiler, full_version, is_cross) + ASMCompiler.__init__(self, ccache, exelist, version, for_machine, info, linker, full_version, is_cross) TICompiler.__init__(self) def needs_static_linker(self) -> bool: @@ -301,9 +303,10 @@ class MetrowerksAsmCompiler(MetrowerksCompiler, ASMCompiler): language = 'nasm' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, - for_machine: 'MachineChoice', info: 'MachineInfo', compiler: Compiler, + for_machine: 'MachineChoice', info: 'MachineInfo', + linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None, is_cross: bool = False): - ASMCompiler.__init__(self, ccache, exelist, version, for_machine, info, compiler, full_version, is_cross) + ASMCompiler.__init__(self, ccache, exelist, version, for_machine, info, linker, full_version, is_cross) MetrowerksCompiler.__init__(self) self.warn_args: T.Dict[str, T.List[str]] = { diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py index 483a584cb..a0ae8108d 100644 --- a/mesonbuild/compilers/detect.py +++ b/mesonbuild/compilers/detect.py @@ -22,7 +22,6 @@ import os import typing as T if T.TYPE_CHECKING: - from .asm import ASMCompiler from .compilers import Compiler from .c import CCompiler from .cpp import CPPCompiler @@ -1336,20 +1335,20 @@ def detect_nasm_compiler(env: 'Environment', for_machine: MachineChoice) -> Comp if 'NASM' in output: comp_class = NasmCompiler env.add_lang_args(comp_class.language, comp_class, for_machine) - return comp_class([], comp, version, for_machine, info, cc, is_cross=is_cross) + return comp_class([], comp, version, for_machine, info, cc.linker, is_cross=is_cross) elif 'yasm' in output: comp_class = YasmCompiler env.add_lang_args(comp_class.language, comp_class, for_machine) - return comp_class([], comp, version, for_machine, info, cc, is_cross=is_cross) + return comp_class([], comp, version, for_machine, info, cc.linker, is_cross=is_cross) elif 'Metrowerks' in output or 'Freescale' in output: if 'ARM' in output: comp_class_mwasmarm = MetrowerksAsmCompilerARM env.add_lang_args(comp_class_mwasmarm.language, comp_class_mwasmarm, for_machine) - return comp_class_mwasmarm([], comp, version, for_machine, info, cc, is_cross=is_cross) + return comp_class_mwasmarm([], comp, version, for_machine, info, cc.linker, is_cross=is_cross) else: comp_class_mwasmeppc = MetrowerksAsmCompilerEmbeddedPowerPC env.add_lang_args(comp_class_mwasmeppc.language, comp_class_mwasmeppc, for_machine) - return comp_class_mwasmeppc([], comp, version, for_machine, info, cc, is_cross=is_cross) + return comp_class_mwasmeppc([], comp, version, for_machine, info, cc.linker, is_cross=is_cross) _handle_exceptions(popen_exceptions, compilers) raise EnvironmentException('Unreachable code (exception to make mypy happy)') @@ -1365,7 +1364,7 @@ def detect_masm_compiler(env: 'Environment', for_machine: MachineChoice) -> Comp info = env.machines[for_machine] from .asm import MasmCompiler, MasmARMCompiler - comp_class: T.Type[ASMCompiler] + comp_class: T.Type[Compiler] if info.cpu_family == 'x86': comp = ['ml'] comp_class = MasmCompiler @@ -1390,7 +1389,7 @@ def detect_masm_compiler(env: 'Environment', for_machine: MachineChoice) -> Comp output = Popen_safe(comp + [arg])[2] version = search_version(output) env.add_lang_args(comp_class.language, comp_class, for_machine) - return comp_class([], comp, version, for_machine, info, cc, is_cross=is_cross) + return comp_class([], comp, version, for_machine, info, cc.linker, is_cross=is_cross) except OSError as e: popen_exceptions[' '.join(comp + [arg])] = e _handle_exceptions(popen_exceptions, [comp]) -- cgit v1.2.3