summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2025-10-06 10:20:54 -0700
committerDylan Baker <dylan@pnwbakers.com>2025-10-06 10:22:41 -0700
commit6c5a88632f1d3319124d03eab596d57416ef16c6 (patch)
treed6193d9aa67a6fb26e539d8b936f58aea19f2958
parent434208b2f6ab82cc360870f660d511866bddd169 (diff)
downloadmeson-6c5a88632f1d3319124d03eab596d57416ef16c6.tar.gz
Revert "compilers/asm: Store the C Compiler inside the Assembly Compilers"
This reverts commit 8847c938dd1c9e2c6e64e3050eb58f7ec54fccb3.
-rw-r--r--mesonbuild/compilers/asm.py23
-rw-r--r--mesonbuild/compilers/detect.py13
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])