diff options
| -rw-r--r-- | mesonbuild/compilers/asm.py | 16 | ||||
| -rw-r--r-- | mesonbuild/compilers/c.py | 92 | ||||
| -rw-r--r-- | mesonbuild/compilers/compilers.py | 2 | ||||
| -rw-r--r-- | mesonbuild/compilers/cpp.py | 81 | ||||
| -rw-r--r-- | mesonbuild/compilers/cuda.py | 4 | ||||
| -rw-r--r-- | mesonbuild/compilers/d.py | 22 | ||||
| -rw-r--r-- | mesonbuild/compilers/detect.py | 122 | ||||
| -rw-r--r-- | mesonbuild/compilers/fortran.py | 63 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/ti.py | 4 | ||||
| -rw-r--r-- | mesonbuild/compilers/objc.py | 12 | ||||
| -rw-r--r-- | mesonbuild/compilers/objcpp.py | 13 | ||||
| -rw-r--r-- | mesonbuild/compilers/rust.py | 12 | ||||
| -rw-r--r-- | mesonbuild/compilers/swift.py | 5 | ||||
| -rw-r--r-- | mesonbuild/compilers/vala.py | 4 | ||||
| -rw-r--r-- | unittests/internaltests.py | 14 |
15 files changed, 216 insertions, 250 deletions
diff --git a/mesonbuild/compilers/asm.py b/mesonbuild/compilers/asm.py index 01915bc3e..54218eb0a 100644 --- a/mesonbuild/compilers/asm.py +++ b/mesonbuild/compilers/asm.py @@ -35,11 +35,11 @@ class ASMCompiler(Compiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional[DynamicLinker] = None, - full_version: T.Optional[str] = None, is_cross: bool = False): + full_version: T.Optional[str] = None): info = env.machines[for_machine] 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, env, linker, full_version, is_cross) + super().__init__(ccache, exelist, version, for_machine, env, linker, full_version) def sanity_check(self, work_dir: str, environment: Environment) -> None: return None @@ -63,8 +63,8 @@ class NasmCompiler(ASMCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: 'MachineChoice', env: Environment, linker: T.Optional['DynamicLinker'] = None, - full_version: T.Optional[str] = None, is_cross: bool = False): - super().__init__(ccache, exelist, version, for_machine, env, linker, full_version, is_cross) + full_version: T.Optional[str] = None): + super().__init__(ccache, exelist, version, for_machine, env, linker, full_version) if isinstance(self.linker, VisualStudioLikeLinkerMixin): self.base_options.add(OptionKey('b_vscrt')) @@ -281,8 +281,8 @@ class TILinearAsmCompiler(TICompiler, ASMCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional[DynamicLinker] = None, - full_version: T.Optional[str] = None, is_cross: bool = False): - ASMCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker, full_version, is_cross) + full_version: T.Optional[str] = None): + ASMCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker, full_version) TICompiler.__init__(self) def needs_static_linker(self) -> bool: @@ -304,8 +304,8 @@ class MetrowerksAsmCompiler(MetrowerksCompiler, ASMCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: 'MachineChoice', env: Environment, linker: T.Optional['DynamicLinker'] = None, - full_version: T.Optional[str] = None, is_cross: bool = False): - ASMCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker, full_version, is_cross) + full_version: T.Optional[str] = None): + ASMCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker, full_version) MetrowerksCompiler.__init__(self) self.warn_args: T.Dict[str, T.List[str]] = { diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index 4f505852e..8dc17e0b1 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -63,12 +63,12 @@ class CCompiler(CLikeCompiler, Compiler): language = 'c' - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): # If a child ObjC or CPP class has already set it, don't set it ourselves Compiler.__init__(self, ccache, exelist, version, for_machine, env, - is_cross=is_cross, full_version=full_version, linker=linker) + full_version=full_version, linker=linker) CLikeCompiler.__init__(self) def get_no_stdinc_args(self) -> T.List[str]: @@ -106,11 +106,11 @@ class CCompiler(CLikeCompiler, Compiler): class ClangCCompiler(ClangCStds, ClangCompiler, CCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, env, linker=linker, full_version=full_version) + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ClangCompiler.__init__(self, defines) default_warn_args = ['-Wall', '-Winvalid-pch'] self.warn_args = {'0': [], @@ -176,17 +176,16 @@ class EmscriptenCCompiler(EmscriptenMixin, ClangCCompiler): _C2X_VERSION = '>=1.38.35' # 1.38.35 used Clang 9.0.0 _C23_VERSION = '>=3.1.45' # 3.1.45 used Clang 18.0.0 - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - if not is_cross: + if not env.is_cross_build(for_machine): raise MesonException('Emscripten compiler can only be used for cross compilation.') if not version_compare(version, '>=1.39.19'): raise MesonException('Meson requires Emscripten >= 1.39.19') - ClangCCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, - env, linker=linker, - defines=defines, full_version=full_version) + ClangCCompiler.__init__(self, ccache, exelist, version, for_machine, env, + linker=linker, defines=defines, full_version=full_version) class ArmclangCCompiler(ArmclangCompiler, CCompiler): @@ -194,10 +193,10 @@ class ArmclangCCompiler(ArmclangCompiler, CCompiler): Keil armclang ''' - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ArmclangCompiler.__init__(self) default_warn_args = ['-Wall', '-Winvalid-pch'] @@ -231,11 +230,11 @@ class GnuCCompiler(GnuCStds, GnuCompiler, CCompiler): _INVALID_PCH_VERSION = ">=3.4.0" - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, env, linker=linker, full_version=full_version) + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) GnuCompiler.__init__(self, defines) default_warn_args = ['-Wall'] if version_compare(self.version, self._INVALID_PCH_VERSION): @@ -284,10 +283,10 @@ class GnuCCompiler(GnuCStds, GnuCompiler, CCompiler): class PGICCompiler(PGICompiler, CCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) PGICompiler.__init__(self) @@ -296,10 +295,10 @@ class NvidiaHPC_CCompiler(PGICompiler, CCompiler): id = 'nvidia_hpc' - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) PGICompiler.__init__(self) @@ -313,11 +312,11 @@ class NvidiaHPC_CCompiler(PGICompiler, CCompiler): class ElbrusCCompiler(ElbrusCompiler, CCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ElbrusCompiler.__init__(self) @@ -353,10 +352,10 @@ class ElbrusCCompiler(ElbrusCompiler, CCompiler): class IntelCCompiler(IntelGnuLikeCompiler, CCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) IntelGnuLikeCompiler.__init__(self) self.lang_header = 'c-header' @@ -420,10 +419,10 @@ class VisualStudioCCompiler(MSVCCompiler, VisualStudioLikeCCompilerMixin, CCompi _C17_VERSION = '>=19.28' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, target: str, + env: Environment, target: str, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) MSVCCompiler.__init__(self, target) @@ -454,10 +453,10 @@ class VisualStudioCCompiler(MSVCCompiler, VisualStudioLikeCCompilerMixin, CCompi class ClangClCCompiler(ClangCStds, ClangClCompiler, VisualStudioLikeCCompilerMixin, CCompiler): def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, target: str, + env: Environment, target: str, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, [], exelist, version, for_machine, is_cross, + CCompiler.__init__(self, [], exelist, version, for_machine, env, linker=linker, full_version=full_version) ClangClCompiler.__init__(self, target) @@ -474,12 +473,11 @@ class IntelClCCompiler(IntelVisualStudioLikeCompiler, VisualStudioLikeCCompilerM """Intel "ICL" compiler abstraction.""" def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, target: str, + env: Environment, target: str, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, [], exelist, version, for_machine, is_cross, - env, linker=linker, - full_version=full_version) + CCompiler.__init__(self, [], exelist, version, for_machine, + env, linker=linker, full_version=full_version) IntelVisualStudioLikeCompiler.__init__(self, target) def get_options(self) -> 'MutableKeyedOptionDictType': @@ -508,10 +506,10 @@ class IntelLLVMClCCompiler(IntelClCCompiler): class ArmCCompiler(ArmCompiler, CCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ArmCompiler.__init__(self) @@ -534,10 +532,10 @@ class ArmCCompiler(ArmCompiler, CCompiler): class CcrxCCompiler(CcrxCompiler, CCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) CcrxCompiler.__init__(self) @@ -586,10 +584,10 @@ class CcrxCCompiler(CcrxCompiler, CCompiler): class Xc16CCompiler(Xc16Compiler, CCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) Xc16Compiler.__init__(self) @@ -635,21 +633,21 @@ class Xc32CCompiler(Xc32CStds, Xc32Compiler, GnuCCompiler): """Microchip XC32 C compiler.""" - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional[DynamicLinker] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - GnuCCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + GnuCCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version, defines=defines) Xc32Compiler.__init__(self) class CompCertCCompiler(CompCertCompiler, CCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) CompCertCompiler.__init__(self) @@ -677,10 +675,10 @@ class CompCertCCompiler(CompCertCompiler, CCompiler): class TICCompiler(TICompiler, CCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) TICompiler.__init__(self) @@ -718,10 +716,10 @@ class MetrowerksCCompilerARM(MetrowerksCompiler, CCompiler): id = 'mwccarm' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) MetrowerksCompiler.__init__(self) @@ -746,10 +744,10 @@ class MetrowerksCCompilerEmbeddedPowerPC(MetrowerksCompiler, CCompiler): id = 'mwcceppc' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) MetrowerksCompiler.__init__(self) @@ -773,9 +771,9 @@ class TaskingCCompiler(TaskingCompiler, CCompiler): id = 'tasking' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) TaskingCompiler.__init__(self) diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 9ae48bfab..2d548a45d 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -474,7 +474,7 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, environment: Environment, linker: T.Optional['DynamicLinker'] = None, - full_version: T.Optional[str] = None, is_cross: bool = False): + full_version: T.Optional[str] = None): self.exelist = ccache + exelist self.exelist_no_ccache = exelist self.file_suffixes = lang_suffixes[self.language] diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index d9facb721..f53004f61 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -66,13 +66,12 @@ class CPPCompiler(CLikeCompiler, Compiler): language = 'cpp' - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): # If a child ObjCPP class has already set it, don't set it ourselves Compiler.__init__(self, ccache, exelist, version, for_machine, env, - is_cross=is_cross, linker=linker, - full_version=full_version) + linker=linker, full_version=full_version) CLikeCompiler.__init__(self) @classmethod @@ -219,11 +218,11 @@ class _StdCPPLibMixin(CompilerMixinBase): class ClangCPPCompiler(_StdCPPLibMixin, ClangCPPStds, ClangCompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ClangCompiler.__init__(self, defines) default_warn_args = ['-Wall', '-Winvalid-pch'] @@ -353,17 +352,16 @@ class EmscriptenCPPCompiler(EmscriptenMixin, ClangCPPCompiler): _CPP23_VERSION = '>=2.0.10' _CPP26_VERSION = '>=3.1.39' - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - if not is_cross: + if not env.is_cross_build(for_machine): raise MesonException('Emscripten compiler can only be used for cross compilation.') if not version_compare(version, '>=1.39.19'): raise MesonException('Meson requires Emscripten >= 1.39.19') - ClangCPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, - env, linker=linker, - defines=defines, full_version=full_version) + ClangCPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, + linker=linker, defines=defines, full_version=full_version) def get_option_std_args(self, target: BuildTarget, env: Environment, subproject: T.Optional[str] = None) -> T.List[str]: args: T.List[str] = [] @@ -379,10 +377,10 @@ class ArmclangCPPCompiler(ArmclangCompiler, CPPCompiler): Keil armclang ''' - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ArmclangCompiler.__init__(self) default_warn_args = ['-Wall', '-Winvalid-pch'] @@ -426,11 +424,11 @@ class ArmclangCPPCompiler(ArmclangCompiler, CPPCompiler): class GnuCPPCompiler(_StdCPPLibMixin, GnuCPPStds, GnuCompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) GnuCompiler.__init__(self, defines) default_warn_args = ['-Wall', '-Winvalid-pch'] @@ -541,10 +539,10 @@ class GnuCPPCompiler(_StdCPPLibMixin, GnuCPPStds, GnuCompiler, CPPCompiler): class PGICPPCompiler(PGICompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) PGICompiler.__init__(self) @@ -553,10 +551,10 @@ class NvidiaHPC_CPPCompiler(PGICompiler, CPPCompiler): id = 'nvidia_hpc' - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) PGICompiler.__init__(self) @@ -573,11 +571,11 @@ class NvidiaHPC_CPPCompiler(PGICompiler, CPPCompiler): class ElbrusCPPCompiler(ElbrusCompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ElbrusCompiler.__init__(self) @@ -655,10 +653,10 @@ class ElbrusCPPCompiler(ElbrusCompiler, CPPCompiler): class IntelCPPCompiler(IntelGnuLikeCompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) IntelGnuLikeCompiler.__init__(self) self.lang_header = 'c++-header' @@ -874,10 +872,10 @@ class VisualStudioCPPCompiler(CPP11AsCPP14Mixin, VisualStudioLikeCPPCompilerMixi id = 'msvc' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, target: str, + env: Environment, target: str, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) MSVCCompiler.__init__(self, target) @@ -919,10 +917,10 @@ class ClangClCPPCompiler(CPP11AsCPP14Mixin, VisualStudioLikeCPPCompilerMixin, Cl id = 'clang-cl' def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, target: str, + env: Environment, target: str, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, [], exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, [], exelist, version, for_machine, env, linker=linker, full_version=full_version) ClangClCompiler.__init__(self, target) @@ -934,10 +932,10 @@ class ClangClCPPCompiler(CPP11AsCPP14Mixin, VisualStudioLikeCPPCompilerMixin, Cl class IntelClCPPCompiler(VisualStudioLikeCPPCompilerMixin, IntelVisualStudioLikeCompiler, CPPCompiler): def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, target: str, + env: Environment, target: str, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, [], exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, [], exelist, version, for_machine, env, linker=linker, full_version=full_version) IntelVisualStudioLikeCompiler.__init__(self, target) @@ -962,10 +960,10 @@ class IntelLLVMClCPPCompiler(IntelClCPPCompiler): class ArmCPPCompiler(ArmCompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ArmCompiler.__init__(self) @@ -994,10 +992,10 @@ class ArmCPPCompiler(ArmCompiler, CPPCompiler): class CcrxCPPCompiler(CcrxCompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) CcrxCompiler.__init__(self) @@ -1018,10 +1016,10 @@ class CcrxCPPCompiler(CcrxCompiler, CPPCompiler): return [] class TICPPCompiler(TICompiler, CPPCompiler): - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) TICompiler.__init__(self) @@ -1058,9 +1056,9 @@ class MetrowerksCPPCompilerARM(MetrowerksCompiler, CPPCompiler): id = 'mwccarm' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, linker: T.Optional['DynamicLinker'] = None, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) MetrowerksCompiler.__init__(self) @@ -1085,10 +1083,9 @@ class MetrowerksCPPCompilerEmbeddedPowerPC(MetrowerksCompiler, CPPCompiler): id = 'mwcceppc' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, - linker: T.Optional['DynamicLinker'] = None, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - CPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + CPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) MetrowerksCompiler.__init__(self) @@ -1113,10 +1110,10 @@ class Xc32CPPCompiler(Xc32CPPStds, Xc32Compiler, GnuCPPCompiler): """Microchip XC32 C++ compiler.""" - def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional[DynamicLinker] = None, defines: T.Optional[T.Dict[str, str]] = None, full_version: T.Optional[str] = None): - GnuCPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, - env, linker=linker, full_version=full_version, defines=defines) + GnuCPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, + linker=linker, full_version=full_version, defines=defines) Xc32Compiler.__init__(self) diff --git a/mesonbuild/compilers/cuda.py b/mesonbuild/compilers/cuda.py index be92dfbc8..b13a1fdac 100644 --- a/mesonbuild/compilers/cuda.py +++ b/mesonbuild/compilers/cuda.py @@ -182,10 +182,10 @@ class CudaCompiler(Compiler): id = 'nvcc' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, host_compiler: Compiler, env: Environment, + host_compiler: Compiler, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - super().__init__(ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version, is_cross=is_cross) + super().__init__(ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) self.host_compiler = host_compiler self.base_options = host_compiler.base_options # -Wpedantic generates useless churn due to nvcc's dual compilation model producing diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index c37bb679a..ccafe291c 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -432,10 +432,9 @@ class DCompiler(Compiler): def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, arch: str, *, linker: T.Optional['DynamicLinker'] = None, - full_version: T.Optional[str] = None, - is_cross: bool = False): + full_version: T.Optional[str] = None): super().__init__([], exelist, version, for_machine, env, linker=linker, - full_version=full_version, is_cross=is_cross) + full_version=full_version) self.arch = arch def sanity_check(self, work_dir: str, environment: 'Environment') -> None: @@ -641,11 +640,9 @@ class GnuDCompiler(GnuCompiler, DCompiler): def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, arch: str, *, linker: T.Optional['DynamicLinker'] = None, - full_version: T.Optional[str] = None, - is_cross: bool = False): + full_version: T.Optional[str] = None): DCompiler.__init__(self, exelist, version, for_machine, env, arch, - linker=linker, - full_version=full_version, is_cross=is_cross) + linker=linker, full_version=full_version) GnuCompiler.__init__(self, {}) default_warn_args = ['-Wall', '-Wdeprecated'] self.warn_args = {'0': [], @@ -725,10 +722,9 @@ class LLVMDCompiler(DmdLikeCompilerMixin, DCompiler): env: Environment, arch: str, *, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None, - is_cross: bool = False, version_output: T.Optional[str] = None): + version_output: T.Optional[str] = None): DCompiler.__init__(self, exelist, version, for_machine, env, arch, - linker=linker, - full_version=full_version, is_cross=is_cross) + linker=linker, full_version=full_version) DmdLikeCompilerMixin.__init__(self, dmd_frontend_version=find_ldc_dmd_frontend_version(version_output)) self.base_options = {OptionKey(o) for o in ['b_coverage', 'b_colorout', 'b_vscrt', 'b_ndebug']} @@ -787,11 +783,9 @@ class DmdDCompiler(DmdLikeCompilerMixin, DCompiler): def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, arch: str, *, linker: T.Optional['DynamicLinker'] = None, - full_version: T.Optional[str] = None, - is_cross: bool = False): + full_version: T.Optional[str] = None): DCompiler.__init__(self, exelist, version, for_machine, env, arch, - linker=linker, - full_version=full_version, is_cross=is_cross) + linker=linker, full_version=full_version) DmdLikeCompilerMixin.__init__(self, version) self.base_options = {OptionKey(o) for o in ['b_coverage', 'b_colorout', 'b_vscrt', 'b_ndebug']} diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py index f1910df70..2a7944a81 100644 --- a/mesonbuild/compilers/detect.py +++ b/mesonbuild/compilers/detect.py @@ -284,7 +284,6 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin ccache = ccache_exe.get_command() if (ccache_exe and ccache_exe.found()) else [] if override_compiler is not None: compilers = [override_compiler] - is_cross = env.is_cross_build(for_machine) cls: T.Union[T.Type[CCompiler], T.Type[CPPCompiler]] lnk: T.Union[T.Type[StaticLinker], T.Type[DynamicLinker]] @@ -371,7 +370,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - ccache, compiler, version, for_machine, is_cross, + ccache, compiler, version, for_machine, env, defines=defines, full_version=full_version, linker=linker) @@ -390,7 +389,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin compiler, for_machine, cls.LINKER_PREFIX, [], version=search_version(o)) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, linker=linker, full_version=full_version) if 'Arm C/C++/Fortran Compiler' in out: @@ -403,7 +402,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin cls = cpp.ArmLtdClangCPPCompiler linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, linker=linker) if 'armclang' in out: # The compiler version is not present in the first line of output, @@ -423,7 +422,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin linker = linkers.ArmClangDynamicLinker(for_machine, version=version) env.add_lang_args(cls.language, cls, for_machine) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'CL.EXE COMPATIBILITY' in out: # if this is clang-cl masquerading as cl, detect it as cl, not @@ -442,7 +441,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin cls = c.ClangClCCompiler if lang == 'c' else cpp.ClangClCPPCompiler linker = guess_win_linker(env, ['lld-link'], cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, target, + compiler, version, for_machine, env, target, linker=linker) # must be detected here before clang because TI compilers contain 'clang' in their output and so that they can be detected as 'clang' @@ -459,7 +458,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin env.add_lang_args(cls.language, cls, for_machine) linker = lnk(compiler, for_machine, version=version) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'clang' in out or 'Clang' in out: @@ -486,7 +485,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, defines=defines, full_version=full_version, linker=linker) if 'Intel(R) C++ Intel(R)' in err: @@ -496,7 +495,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin env.add_lang_args(cls.language, cls, for_machine) linker = linkers.XilinkDynamicLinker(for_machine, [], version=version) return cls( - compiler, version, for_machine, is_cross, env, target, + compiler, version, for_machine, env, target, linker=linker) if 'Intel(R) oneAPI DPC++/C++ Compiler for applications' in err: version = search_version(err) @@ -505,7 +504,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin env.add_lang_args(cls.language, cls, for_machine) linker = linkers.XilinkDynamicLinker(for_machine, [], version=version) return cls( - compiler, version, for_machine, is_cross, env, target, + compiler, version, for_machine, env, target, linker=linker) if 'Microsoft' in out or 'Microsoft' in err: # Latest versions of Visual Studio print version @@ -532,47 +531,47 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin mlog.warning('Visual Studio support requires ccache 4.6 or higher. You have ccache {}. '.format(ccache_exe.get_version()), once=True) ccache = [] return cls( - ccache, compiler, version, for_machine, is_cross, env, target, + ccache, compiler, version, for_machine, env, target, full_version=cl_signature, linker=linker) if 'PGI Compilers' in out: cls = c.PGICCompiler if lang == 'c' else cpp.PGICPPCompiler env.add_lang_args(cls.language, cls, for_machine) linker = linkers.PGIDynamicLinker(compiler, for_machine, cls.LINKER_PREFIX, [], version=version) return cls( - ccache, compiler, version, for_machine, is_cross, + ccache, compiler, version, for_machine, env, linker=linker) if 'NVIDIA Compilers and Tools' in out: cls = c.NvidiaHPC_CCompiler if lang == 'c' else cpp.NvidiaHPC_CPPCompiler env.add_lang_args(cls.language, cls, for_machine) linker = linkers.NvidiaHPC_DynamicLinker(compiler, for_machine, cls.LINKER_PREFIX, [], version=version) return cls( - ccache, compiler, version, for_machine, is_cross, + ccache, compiler, version, for_machine, env, linker=linker) if '(ICC)' in out: cls = c.IntelCCompiler if lang == 'c' else cpp.IntelCPPCompiler l = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=l) if 'Intel(R) oneAPI' in out: cls = c.IntelLLVMCCompiler if lang == 'c' else cpp.IntelLLVMCPPCompiler l = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=l) if 'ARM' in out and not ('Metrowerks' in out or 'Freescale' in out): cls = c.ArmCCompiler if lang == 'c' else cpp.ArmCPPCompiler env.add_lang_args(cls.language, cls, for_machine) linker = linkers.ArmDynamicLinker(for_machine, version=version) return cls( - ccache, compiler, version, for_machine, is_cross, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'RX Family' in out: cls = c.CcrxCCompiler if lang == 'c' else cpp.CcrxCPPCompiler env.add_lang_args(cls.language, cls, for_machine) linker = linkers.CcrxDynamicLinker(for_machine, version=version) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'Microchip' in out: @@ -592,7 +591,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin linker = linkers.Xc32DynamicLinker(compiler, for_machine, cls.LINKER_PREFIX, [], version=version) return cls( - ccache, compiler, version, for_machine, is_cross, + ccache, compiler, version, for_machine, env, defines=defines, full_version=full_version, linker=linker) else: @@ -601,7 +600,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin linker = linkers.Xc16DynamicLinker(for_machine, version=version) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'CompCert' in out: @@ -609,7 +608,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin env.add_lang_args(cls.language, cls, for_machine) linker = linkers.CompCertDynamicLinker(for_machine, version=version) return cls( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'Metrowerks C/C++' in out or 'Freescale C/C++' in out: @@ -639,7 +638,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin raise EnvironmentException(f'Failed to detect linker for {cls.id!r} compiler. Please update your cross file(s).') return cls( - ccache, compiler, compiler_version, for_machine, is_cross, env, + ccache, compiler, compiler_version, for_machine, env, full_version=full_version, linker=linker) if 'TASKING VX-toolset' in err: cls = c.TaskingCCompiler @@ -656,7 +655,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin linker = lnk(ld, for_machine, version=tasking_version) return cls( - ccache, compiler, tasking_version, for_machine, is_cross, env, + ccache, compiler, tasking_version, for_machine, env, full_version=full_version, linker=linker) _handle_exceptions(popen_exceptions, compilers) @@ -673,7 +672,6 @@ def detect_cuda_compiler(env: 'Environment', for_machine: MachineChoice) -> Comp from ..options import OptionKey from ..linkers.linkers import CudaLinker popen_exceptions = {} - is_cross = env.is_cross_build(for_machine) compilers, ccache_exe = _get_compilers(env, 'cuda', for_machine) ccache = ccache_exe.get_command() if (ccache_exe and ccache_exe.found()) else [] for compiler in compilers: @@ -703,7 +701,7 @@ def detect_cuda_compiler(env: 'Environment', for_machine: MachineChoice) -> Comp cls = CudaCompiler env.add_lang_args(cls.language, cls, for_machine) key = OptionKey('cuda_link_args', machine=for_machine) - if for_machine is MachineChoice.BUILD and not is_cross: + if env.is_cross_build(for_machine): key = key.as_host() if key in env.options: # To fix LDFLAGS issue @@ -711,7 +709,7 @@ def detect_cuda_compiler(env: 'Environment', for_machine: MachineChoice) -> Comp assert isinstance(val, list) env.coredata.optstore.set_option(key, cls.to_host_flags_base(val, Phase.LINKER)) linker = CudaLinker(compiler, for_machine, CudaCompiler.LINKER_PREFIX, [], version=CudaLinker.parse_version()) - return cls(ccache, compiler, version, for_machine, is_cross, cpp_compiler, env, linker=linker) + return cls(ccache, compiler, version, for_machine, cpp_compiler, env, linker=linker) raise EnvironmentException(f'Could not find suitable CUDA compiler: "{"; ".join([" ".join(c) for c in compilers])}"') def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> Compiler: @@ -719,7 +717,6 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C from ..linkers import linkers popen_exceptions: T.Dict[str, T.Union[Exception, str]] = {} compilers, ccache = _get_compilers(env, 'fortran', for_machine) - is_cross = env.is_cross_build(for_machine) cls: T.Type[FortranCompiler] for compiler in compilers: # capture help text for possible fallback @@ -755,14 +752,14 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C cls = fortran.ElbrusFortranCompiler linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, defines, full_version=full_version, linker=linker) else: version = _get_gnu_version_from_defines(defines) cls = fortran.GnuFortranCompiler linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, defines, full_version=full_version, linker=linker) if 'Arm C/C++/Fortran Compiler' in out: @@ -772,13 +769,13 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C version = '.'.join([x for x in arm_ver_match.groups() if x is not None]) linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, linker=linker) if 'G95' in out: cls = fortran.G95FortranCompiler linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'Sun Fortran' in err: @@ -786,7 +783,7 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C cls = fortran.SunFortranCompiler linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'Intel(R) Fortran Compiler for applications' in err: @@ -796,7 +793,7 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C env.add_lang_args(cls.language, cls, for_machine) linker = linkers.XilinkDynamicLinker(for_machine, [], version=version) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, target, linker=linker) if 'Intel(R) Visual Fortran' in err or 'Intel(R) Fortran' in err: @@ -806,26 +803,26 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C env.add_lang_args(cls.language, cls, for_machine) linker = linkers.XilinkDynamicLinker(for_machine, [], version=version) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, target, linker=linker) if 'ifort (IFORT)' in out: cls = fortran.IntelFortranCompiler linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'ifx (IFORT)' in out or 'ifx (IFX)' in out: cls = fortran.IntelLLVMFortranCompiler linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'PathScale EKOPath(tm)' in err: return fortran.PathScaleFortranCompiler( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version) if 'PGI Compilers' in out: @@ -834,7 +831,7 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C linker = linkers.PGIDynamicLinker(compiler, for_machine, cls.LINKER_PREFIX, [], version=version) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'NVIDIA Compilers and Tools' in out: @@ -843,7 +840,7 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C linker = linkers.PGIDynamicLinker(compiler, for_machine, cls.LINKER_PREFIX, [], version=version) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) def _get_linker_try_windows(cls: T.Type['Compiler']) -> T.Optional['DynamicLinker']: @@ -868,14 +865,14 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C cls = fortran.LlvmFlangFortranCompiler linker = _get_linker_try_windows(cls) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'flang' in out or 'clang' in out: cls = fortran.ClassicFlangFortranCompiler linker = _get_linker_try_windows(cls) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'Open64 Compiler Suite' in err: @@ -883,7 +880,7 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C linker = guess_nix_linker(env, compiler, cls, version, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) if 'NAG Fortran' in err: @@ -895,7 +892,7 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C compiler, for_machine, cls.LINKER_PREFIX, [], version=version) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, full_version=full_version, linker=linker) _handle_exceptions(popen_exceptions, compilers) @@ -912,7 +909,6 @@ def _detect_objc_or_objcpp_compiler(env: 'Environment', lang: str, for_machine: popen_exceptions: T.Dict[str, T.Union[Exception, str]] = {} compilers, ccache_exe = _get_compilers(env, lang, for_machine) ccache = ccache_exe.get_command() if (ccache_exe and ccache_exe.found()) else [] - is_cross = env.is_cross_build(for_machine) comp: T.Union[T.Type[objc.ObjCCompiler], T.Type[objcpp.ObjCPPCompiler]] for compiler in compilers: @@ -932,7 +928,7 @@ def _detect_objc_or_objcpp_compiler(env: 'Environment', lang: str, for_machine: comp = objc.GnuObjCCompiler if lang == 'objc' else objcpp.GnuObjCPPCompiler linker = guess_nix_linker(env, compiler, comp, version, for_machine) c = comp( - ccache, compiler, version, for_machine, is_cross, env, + ccache, compiler, version, for_machine, env, defines, linker=linker) if not c.compiles('int main(void) { return 0; }', env)[0]: popen_exceptions[join_args(compiler)] = f'GCC was not built with support for {"objective-c" if lang == "objc" else "objective-c++"}' @@ -959,7 +955,7 @@ def _detect_objc_or_objcpp_compiler(env: 'Environment', lang: str, for_machine: linker = guess_nix_linker(env, compiler, comp, version, for_machine) return comp( ccache, compiler, version, for_machine, - is_cross, env, linker=linker, defines=defines) + env, linker=linker, defines=defines) _handle_exceptions(popen_exceptions, compilers) raise EnvironmentException('Unreachable code (exception to make mypy happy)') @@ -1014,7 +1010,6 @@ def detect_cython_compiler(env: 'Environment', for_machine: MachineChoice) -> Co """Search for a cython compiler.""" from .cython import CythonCompiler compilers, _ = _get_compilers(env, 'cython', MachineChoice.BUILD) - is_cross = env.is_cross_build(for_machine) popen_exceptions: T.Dict[str, Exception] = {} for comp in compilers: @@ -1034,14 +1029,13 @@ def detect_cython_compiler(env: 'Environment', for_machine: MachineChoice) -> Co if version is not None: comp_class = CythonCompiler env.add_lang_args(comp_class.language, comp_class, for_machine) - return comp_class([], comp, version, for_machine, env, is_cross=is_cross) + return comp_class([], comp, version, for_machine, env) _handle_exceptions(popen_exceptions, compilers) raise EnvironmentException('Unreachable code (exception to make mypy happy)') def detect_vala_compiler(env: 'Environment', for_machine: MachineChoice) -> Compiler: from .vala import ValaCompiler exelist = env.lookup_binary_entry(MachineChoice.BUILD, 'vala') - is_cross = env.is_cross_build(for_machine) if exelist is None: # TODO support fallback exelist = [defaults['vala'][0]] @@ -1054,7 +1048,7 @@ def detect_vala_compiler(env: 'Environment', for_machine: MachineChoice) -> Comp if 'Vala' in out: comp_class = ValaCompiler env.add_lang_args(comp_class.language, comp_class, for_machine) - return comp_class(exelist, version, for_machine, is_cross, env) + return comp_class(exelist, version, for_machine, env) raise EnvironmentException('Unknown compiler: ' + join_args(exelist)) def detect_rust_compiler(env: 'Environment', for_machine: MachineChoice) -> RustCompiler: @@ -1062,7 +1056,6 @@ def detect_rust_compiler(env: 'Environment', for_machine: MachineChoice) -> Rust from ..linkers import linkers popen_exceptions: T.Dict[str, Exception] = {} compilers, _ = _get_compilers(env, 'rust', for_machine) - is_cross = env.is_cross_build(for_machine) cc = detect_c_compiler(env, for_machine) is_link_exe = isinstance(cc.linker, linkers.VisualStudioLikeLinkerMixin) @@ -1176,7 +1169,7 @@ def detect_rust_compiler(env: 'Environment', for_machine: MachineChoice) -> Rust env.add_lang_args(cls.language, cls, for_machine) return cls( - compiler, version, for_machine, is_cross, env, + compiler, version, for_machine, env, linker=linker, full_version=full_version) _handle_exceptions(popen_exceptions, compilers) @@ -1197,7 +1190,6 @@ def detect_d_compiler(env: 'Environment', for_machine: MachineChoice) -> Compile arch = 'x86_mscoff' popen_exceptions = {} - is_cross = env.is_cross_build(for_machine) info = env.machines[for_machine] compilers, ccache = _get_compilers(env, 'd', for_machine) cls: T.Type[d.DCompiler] @@ -1235,7 +1227,7 @@ def detect_d_compiler(env: 'Environment', for_machine: MachineChoice) -> Compile if info.is_windows() or info.is_cygwin(): objfile = os.path.basename(f)[:-1] + 'obj' extra_args = [f] - if is_cross: + if env.is_cross_build(for_machine): extra_args.append(f'-mtriple={info.cpu}-windows') linker = guess_win_linker(env, @@ -1257,13 +1249,13 @@ def detect_d_compiler(env: 'Environment', for_machine: MachineChoice) -> Compile return cls( exelist, version, for_machine, env, arch, full_version=full_version, linker=linker, - is_cross=is_cross, version_output=out) + version_output=out) elif 'gdc' in out: cls = d.GnuDCompiler linker = guess_nix_linker(env, exelist, cls, version, for_machine) return cls( exelist, version, for_machine, env, arch, - is_cross=is_cross, full_version=full_version, linker=linker) + full_version=full_version, linker=linker) elif 'The D Language Foundation' in out or 'Digital Mars' in out: cls = d.DmdDCompiler # DMD seems to require a file @@ -1302,7 +1294,6 @@ def detect_d_compiler(env: 'Environment', for_machine: MachineChoice) -> Compile def detect_swift_compiler(env: 'Environment', for_machine: MachineChoice) -> Compiler: from .swift import SwiftCompiler exelist = env.lookup_binary_entry(for_machine, 'swift') - is_cross = env.is_cross_build(for_machine) if exelist is None: # TODO support fallback exelist = [defaults['swift'][0]] @@ -1320,13 +1311,12 @@ def detect_swift_compiler(env: 'Environment', for_machine: MachineChoice) -> Com exelist, cls, version, for_machine, extra_args=[f.name, '-o', '/dev/null']) return cls( - exelist, version, for_machine, is_cross, env, linker=linker) + exelist, version, for_machine, env, linker=linker) raise EnvironmentException('Unknown compiler: ' + join_args(exelist)) def detect_nasm_compiler(env: 'Environment', for_machine: MachineChoice) -> Compiler: from .asm import NasmCompiler, YasmCompiler, MetrowerksAsmCompilerARM, MetrowerksAsmCompilerEmbeddedPowerPC - is_cross = env.is_cross_build(for_machine) # When cross compiling and nasm is not defined in the cross file we can # fallback to the build machine nasm. @@ -1352,29 +1342,28 @@ 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, env, cc.linker, is_cross=is_cross) + return comp_class([], comp, version, for_machine, env, cc.linker) 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, env, cc.linker, is_cross=is_cross) + return comp_class([], comp, version, for_machine, env, cc.linker) 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, env, cc.linker, is_cross=is_cross) + return comp_class_mwasmarm([], comp, version, for_machine, env, cc.linker) 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, env, cc.linker, is_cross=is_cross) + return comp_class_mwasmeppc([], comp, version, for_machine, env, cc.linker) _handle_exceptions(popen_exceptions, compilers) raise EnvironmentException('Unreachable code (exception to make mypy happy)') def detect_masm_compiler(env: 'Environment', for_machine: MachineChoice) -> Compiler: # We need a C compiler to properly detect the machine info and linker - is_cross = env.is_cross_build(for_machine) cc = detect_c_compiler(env, for_machine) - if not is_cross: + if not env.is_cross_build(for_machine): info = detect_machine_info({'c': cc}) else: info = env.machines[for_machine] @@ -1405,7 +1394,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, env, cc.linker, is_cross=is_cross) + return comp_class([], comp, version, for_machine, env, cc.linker) except OSError as e: popen_exceptions[' '.join(comp + [arg])] = e _handle_exceptions(popen_exceptions, [comp]) @@ -1417,14 +1406,13 @@ def detect_linearasm_compiler(env: Environment, for_machine: MachineChoice) -> C comp_class: T.Type[ASMCompiler] = TILinearAsmCompiler arg = '-h' cc = detect_c_compiler(env, for_machine) - is_cross = env.is_cross_build(for_machine) popen_exceptions: T.Dict[str, Exception] = {} try: 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, env, cc.linker, is_cross=is_cross) + return comp_class([], comp, version, for_machine, env, cc.linker) except OSError as e: popen_exceptions[' '.join(comp + [arg])] = e _handle_exceptions(popen_exceptions, [comp]) diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py index 447094ce9..46211465f 100644 --- a/mesonbuild/compilers/fortran.py +++ b/mesonbuild/compilers/fortran.py @@ -39,11 +39,11 @@ class FortranCompiler(CLikeCompiler, Compiler): language = 'fortran' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): Compiler.__init__(self, [], exelist, version, for_machine, env, - is_cross=is_cross, full_version=full_version, linker=linker) + full_version=full_version, linker=linker) CLikeCompiler.__init__(self) def has_function(self, funcname: str, prefix: str, env: 'Environment', *, @@ -257,14 +257,13 @@ class FortranCompiler(CLikeCompiler, Compiler): class GnuFortranCompiler(GnuCompiler, FortranCompiler): - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, defines: T.Optional[T.Dict[str, str]] = None, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) GnuCompiler.__init__(self, defines) default_warn_args = ['-Wall'] self.warn_args = {'0': [], @@ -325,12 +324,12 @@ class GnuFortranCompiler(GnuCompiler, FortranCompiler): class ElbrusFortranCompiler(ElbrusCompiler, FortranCompiler): - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, defines: T.Optional[T.Dict[str, str]] = None, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - FortranCompiler.__init__(self, exelist, version, for_machine, is_cross, + FortranCompiler.__init__(self, exelist, version, for_machine, env, linker=linker, full_version=full_version) ElbrusCompiler.__init__(self) @@ -348,12 +347,11 @@ class G95FortranCompiler(FortranCompiler): LINKER_PREFIX = '-Wl,' id = 'g95' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) default_warn_args = ['-Wall'] self.warn_args = {'0': [], '1': default_warn_args, @@ -393,12 +391,11 @@ class IntelFortranCompiler(IntelGnuLikeCompiler, FortranCompiler): id = 'intel' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) # FIXME: Add support for OS X and Windows in detect_fortran_compiler so # we are sent the type of compiler IntelGnuLikeCompiler.__init__(self) @@ -453,12 +450,11 @@ class IntelClFortranCompiler(IntelVisualStudioLikeCompiler, FortranCompiler): always_args = ['/nologo'] def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, target: str, + env: Environment, target: str, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) IntelVisualStudioLikeCompiler.__init__(self, target) self.file_suffixes = ('f90', 'f', 'for', 'ftn', 'fpp', ) @@ -498,12 +494,11 @@ class PathScaleFortranCompiler(FortranCompiler): id = 'pathscale' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) default_warn_args = ['-fullwarn'] self.warn_args = {'0': [], '1': default_warn_args, @@ -517,12 +512,11 @@ class PathScaleFortranCompiler(FortranCompiler): class PGIFortranCompiler(PGICompiler, FortranCompiler): - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) PGICompiler.__init__(self) default_warn_args = ['-Minform=inform'] @@ -542,12 +536,11 @@ class NvidiaHPC_FortranCompiler(PGICompiler, FortranCompiler): id = 'nvidia_hpc' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) PGICompiler.__init__(self) default_warn_args = ['-Minform=inform'] @@ -562,12 +555,11 @@ class ClassicFlangFortranCompiler(ClangCompiler, FortranCompiler): id = 'flang' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) ClangCompiler.__init__(self, {}) default_warn_args = ['-Minform=inform'] self.warn_args = {'0': [], @@ -597,12 +589,11 @@ class LlvmFlangFortranCompiler(ClangCompiler, FortranCompiler): id = 'llvm-flang' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) ClangCompiler.__init__(self, {}) default_warn_args = ['-Wall'] self.warn_args = {'0': [], @@ -651,12 +642,11 @@ class Open64FortranCompiler(FortranCompiler): id = 'open64' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) default_warn_args = ['-fullwarn'] self.warn_args = {'0': [], '1': default_warn_args, @@ -672,12 +662,11 @@ class NAGFortranCompiler(FortranCompiler): id = 'nagfor' - def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool, + def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): FortranCompiler.__init__(self, exelist, version, for_machine, - is_cross, env, linker=linker, - full_version=full_version) + env, linker=linker, full_version=full_version) # Warnings are on by default; -w disables (by category): self.warn_args = { '0': ['-w=all'], diff --git a/mesonbuild/compilers/mixins/ti.py b/mesonbuild/compilers/mixins/ti.py index 93cc31ee8..99a0120da 100644 --- a/mesonbuild/compilers/mixins/ti.py +++ b/mesonbuild/compilers/mixins/ti.py @@ -41,6 +41,10 @@ class TICompiler(Compiler): id = 'ti' + if T.TYPE_CHECKING: + # Older versions of mypy can't figure this out for some reason. + is_cross: bool + def __init__(self) -> None: if not self.is_cross: raise EnvironmentException('TI compilers only support cross-compilation.') diff --git a/mesonbuild/compilers/objc.py b/mesonbuild/compilers/objc.py index 8cbe2933d..58d676786 100644 --- a/mesonbuild/compilers/objc.py +++ b/mesonbuild/compilers/objc.py @@ -27,11 +27,11 @@ class ObjCCompiler(CLikeCompiler, Compiler): language = 'objc' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): Compiler.__init__(self, ccache, exelist, version, for_machine, env, - is_cross=is_cross, full_version=full_version, + full_version=full_version, linker=linker) CLikeCompiler.__init__(self) @@ -59,11 +59,11 @@ class ObjCCompiler(CLikeCompiler, Compiler): class GnuObjCCompiler(GnuCStds, GnuCompiler, ObjCCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, defines: T.Optional[T.Dict[str, str]] = None, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - ObjCCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + ObjCCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) GnuCompiler.__init__(self, defines) default_warn_args = ['-Wall', '-Winvalid-pch'] @@ -89,11 +89,11 @@ class GnuObjCCompiler(GnuCStds, GnuCompiler, ObjCCompiler): class ClangObjCCompiler(ClangCStds, ClangCompiler, ObjCCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, defines: T.Optional[T.Dict[str, str]] = None, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - ObjCCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + ObjCCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ClangCompiler.__init__(self, defines) default_warn_args = ['-Wall', '-Winvalid-pch'] diff --git a/mesonbuild/compilers/objcpp.py b/mesonbuild/compilers/objcpp.py index d205dd1fc..df71de3c9 100644 --- a/mesonbuild/compilers/objcpp.py +++ b/mesonbuild/compilers/objcpp.py @@ -27,12 +27,11 @@ class ObjCPPCompiler(CLikeCompiler, Compiler): language = 'objcpp' def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): Compiler.__init__(self, ccache, exelist, version, for_machine, env, - is_cross=is_cross, full_version=full_version, - linker=linker) + full_version=full_version, linker=linker) CLikeCompiler.__init__(self) def form_compileropt_key(self, basename: str) -> OptionKey: @@ -64,11 +63,11 @@ class ObjCPPCompiler(CLikeCompiler, Compiler): class GnuObjCPPCompiler(GnuCPPStds, GnuCompiler, ObjCPPCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, defines: T.Optional[T.Dict[str, str]] = None, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - ObjCPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + ObjCPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) GnuCompiler.__init__(self, defines) default_warn_args = ['-Wall', '-Winvalid-pch'] @@ -95,11 +94,11 @@ class GnuObjCPPCompiler(GnuCPPStds, GnuCompiler, ObjCPPCompiler): class ClangObjCPPCompiler(ClangCPPStds, ClangCompiler, ObjCPPCompiler): def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, + env: Environment, defines: T.Optional[T.Dict[str, str]] = None, linker: T.Optional['DynamicLinker'] = None, full_version: T.Optional[str] = None): - ObjCPPCompiler.__init__(self, ccache, exelist, version, for_machine, is_cross, + ObjCPPCompiler.__init__(self, ccache, exelist, version, for_machine, env, linker=linker, full_version=full_version) ClangCompiler.__init__(self, defines) default_warn_args = ['-Wall', '-Winvalid-pch'] diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py index 55c58b56a..a6954f866 100644 --- a/mesonbuild/compilers/rust.py +++ b/mesonbuild/compilers/rust.py @@ -98,12 +98,10 @@ class RustCompiler(Compiler): } def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, - full_version: T.Optional[str] = None, + env: Environment, full_version: T.Optional[str] = None, linker: T.Optional['DynamicLinker'] = None): super().__init__([], exelist, version, for_machine, env, - is_cross=is_cross, full_version=full_version, - linker=linker) + full_version=full_version, 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_coverage', 'b_ndebug', 'b_pgo']}) if isinstance(self.linker, VisualStudioLikeLinkerMixin): @@ -462,7 +460,7 @@ class RustCompiler(Compiler): return None return RustdocTestCompiler(exelist, self.version, self.for_machine, - self.is_cross, self.environment, + self.environment, full_version=self.full_version, linker=self.linker, rustc=self) @@ -494,10 +492,10 @@ class RustdocTestCompiler(RustCompiler): id = 'rustdoc --test' def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, full_version: T.Optional[str], + env: Environment, full_version: T.Optional[str], linker: T.Optional['DynamicLinker'], rustc: RustCompiler): super().__init__(exelist, version, for_machine, - is_cross, env, full_version, linker) + env, full_version, linker) self.rustc = rustc @functools.lru_cache(maxsize=None) diff --git a/mesonbuild/compilers/swift.py b/mesonbuild/compilers/swift.py index 80c104bdb..2a0c6fd09 100644 --- a/mesonbuild/compilers/swift.py +++ b/mesonbuild/compilers/swift.py @@ -37,11 +37,10 @@ class SwiftCompiler(Compiler): id = 'llvm' def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, env: Environment, full_version: T.Optional[str] = None, + env: Environment, full_version: T.Optional[str] = None, linker: T.Optional['DynamicLinker'] = None): super().__init__([], exelist, version, for_machine, env, - is_cross=is_cross, full_version=full_version, - linker=linker) + full_version=full_version, linker=linker) self.version = version if self.info.is_darwin(): try: diff --git a/mesonbuild/compilers/vala.py b/mesonbuild/compilers/vala.py index da05f88d2..6db3ff996 100644 --- a/mesonbuild/compilers/vala.py +++ b/mesonbuild/compilers/vala.py @@ -25,8 +25,8 @@ class ValaCompiler(Compiler): id = 'valac' def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, - is_cross: bool, environment: Environment): - super().__init__([], exelist, version, for_machine, environment, is_cross=is_cross) + environment: Environment): + super().__init__([], exelist, version, for_machine, environment) self.version = version self.base_options = {OptionKey('b_colorout')} self.force_link = False diff --git a/unittests/internaltests.py b/unittests/internaltests.py index b5dad878b..a1c18efba 100644 --- a/unittests/internaltests.py +++ b/unittests/internaltests.py @@ -109,7 +109,7 @@ class InternalTests(unittest.TestCase): stat.S_IRGRP | stat.S_IXGRP) def test_compiler_args_class_none_flush(self): - cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, False, get_fake_env()) + cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, get_fake_env()) a = cc.compiler_args(['-I.']) #first we are checking if the tree construction deduplicates the correct -I argument a += ['-I..'] @@ -133,7 +133,7 @@ class InternalTests(unittest.TestCase): self.assertEqual(a, ['-Ifirst', '-Isecond', '-Ithird']) def test_compiler_args_class_clike(self): - cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, False, get_fake_env()) + cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, get_fake_env()) # Test that empty initialization works a = cc.compiler_args() self.assertEqual(a, []) @@ -216,7 +216,7 @@ class InternalTests(unittest.TestCase): def test_compiler_args_class_visualstudio(self): linker = linkers.MSVCDynamicLinker(MachineChoice.HOST, []) # Version just needs to be > 19.0.0 - cc = VisualStudioCPPCompiler([], [], '20.00', MachineChoice.HOST, False, get_fake_env(), 'x64', linker=linker) + cc = VisualStudioCPPCompiler([], [], '20.00', MachineChoice.HOST, get_fake_env(), 'x64', linker=linker) a = cc.compiler_args(cc.get_always_args()) self.assertEqual(a.to_native(copy=True), ['/nologo', '/showIncludes', '/utf-8', '/Zc:__cplusplus']) @@ -237,7 +237,7 @@ class InternalTests(unittest.TestCase): def test_compiler_args_class_gnuld(self): ## Test --start/end-group linker = linkers.GnuBFDDynamicLinker([], MachineChoice.HOST, '-Wl,', []) - gcc = GnuCCompiler([], [], 'fake', MachineChoice.HOST, False, get_fake_env(), linker=linker) + gcc = GnuCCompiler([], [], 'fake', MachineChoice.HOST, get_fake_env(), linker=linker) ## Ensure that the fake compiler is never called by overriding the relevant function gcc.get_default_include_dirs = lambda: ['/usr/include', '/usr/share/include', '/usr/local/include'] ## Test that 'direct' append and extend works @@ -265,7 +265,7 @@ class InternalTests(unittest.TestCase): def test_compiler_args_remove_system(self): ## Test --start/end-group linker = linkers.GnuBFDDynamicLinker([], MachineChoice.HOST, '-Wl,', []) - gcc = GnuCCompiler([], [], 'fake', MachineChoice.HOST, False, get_fake_env(), linker=linker) + gcc = GnuCCompiler([], [], 'fake', MachineChoice.HOST, get_fake_env(), linker=linker) ## Ensure that the fake compiler is never called by overriding the relevant function gcc.get_default_include_dirs = lambda: ['/usr/include', '/usr/share/include', '/usr/local/include'] ## Test that 'direct' append and extend works @@ -1636,7 +1636,7 @@ class InternalTests(unittest.TestCase): ('aarch64_be', 'aarch64'), ] - cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, False, get_fake_env()) + cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, get_fake_env()) with mock.patch('mesonbuild.envconfig.any_compiler_has_define', mock.Mock(return_value=False)): for test, expected in cases: @@ -1685,7 +1685,7 @@ class InternalTests(unittest.TestCase): ('aarch64_be', 'aarch64'), ] - cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, False, get_fake_env()) + cc = ClangCCompiler([], [], 'fake', MachineChoice.HOST, get_fake_env()) with mock.patch('mesonbuild.envconfig.any_compiler_has_define', mock.Mock(return_value=False)): for test, expected in cases: |
