diff options
| -rw-r--r-- | mesonbuild/compilers/detect.py | 44 | ||||
| -rw-r--r-- | mesonbuild/linkers/linkers.py | 43 |
2 files changed, 44 insertions, 43 deletions
diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py index 2a7944a81..ff6eb2631 100644 --- a/mesonbuild/compilers/detect.py +++ b/mesonbuild/compilers/detect.py @@ -213,55 +213,55 @@ def detect_static_linker(env: 'Environment', compiler: Compiler) -> StaticLinker popen_exceptions[join_args(linker + [arg])] = e continue if "xilib: executing 'lib'" in err: - return linkers.IntelVisualStudioLinker(linker, getattr(compiler, 'machine', None)) + return linkers.IntelVisualStudioLinker(linker, env, getattr(compiler, 'machine', None)) if '/OUT:' in out.upper() or '/OUT:' in err.upper(): - return linkers.VisualStudioLinker(linker, getattr(compiler, 'machine', None)) + return linkers.VisualStudioLinker(linker, env, getattr(compiler, 'machine', None)) if 'ar-Error-Unknown switch: --version' in err: - return linkers.PGIStaticLinker(linker) + return linkers.PGIStaticLinker(linker, env) if p.returncode == 0 and 'armar' in linker_name: - return linkers.ArmarLinker(linker) + return linkers.ArmarLinker(linker, env) if 'DMD32 D Compiler' in out or 'DMD64 D Compiler' in out: assert isinstance(compiler, d.DCompiler) - return linkers.DLinker(linker, compiler.arch) + return linkers.DLinker(linker, env, compiler.arch) if 'LDC - the LLVM D compiler' in out: assert isinstance(compiler, d.DCompiler) - return linkers.DLinker(linker, compiler.arch, rsp_syntax=compiler.rsp_file_syntax()) + return linkers.DLinker(linker, env, compiler.arch, rsp_syntax=compiler.rsp_file_syntax()) if 'GDC' in out and ' based on D ' in out: assert isinstance(compiler, d.DCompiler) - return linkers.DLinker(linker, compiler.arch) + return linkers.DLinker(linker, env, compiler.arch) if err.startswith('Renesas') and 'rlink' in linker_name: - return linkers.CcrxLinker(linker) + return linkers.CcrxLinker(linker, env) if out.startswith('GNU ar'): if 'xc16-ar' in linker_name: - return linkers.Xc16Linker(linker) + return linkers.Xc16Linker(linker, env) elif 'xc32-ar' in linker_name: - return linkers.Xc32ArLinker(compiler.for_machine, linker) + return linkers.Xc32ArLinker(compiler.for_machine, linker, env) if 'Texas Instruments Incorporated' in out: if 'ar2000' in linker_name: - return linkers.C2000Linker(linker) + return linkers.C2000Linker(linker, env) elif 'ar6000' in linker_name: - return linkers.C6000Linker(linker) + return linkers.C6000Linker(linker, env) else: - return linkers.TILinker(linker) + return linkers.TILinker(linker, env) if out.startswith('The CompCert'): - return linkers.CompCertLinker(linker) + return linkers.CompCertLinker(linker, env) if out.strip().startswith('Metrowerks') or out.strip().startswith('Freescale'): if 'ARM' in out: - return linkers.MetrowerksStaticLinkerARM(linker) + return linkers.MetrowerksStaticLinkerARM(linker, env) else: - return linkers.MetrowerksStaticLinkerEmbeddedPowerPC(linker) + return linkers.MetrowerksStaticLinkerEmbeddedPowerPC(linker, env) if 'TASKING VX-toolset' in err: - return linkers.TaskingStaticLinker(linker) + return linkers.TaskingStaticLinker(linker, env) if p.returncode == 0: - return linkers.ArLinker(compiler.for_machine, linker) + return linkers.ArLinker(compiler.for_machine, linker, env) if p.returncode == 1 and err.startswith('usage'): # OSX - return linkers.AppleArLinker(compiler.for_machine, linker) + return linkers.AppleArLinker(compiler.for_machine, linker, env) if p.returncode == 1 and err.startswith('Usage'): # AIX - return linkers.AIXArLinker(linker) + return linkers.AIXArLinker(linker, env) if p.returncode == 1 and err.startswith('ar: bad option: --'): # Solaris - return linkers.ArLinker(compiler.for_machine, linker) + return linkers.ArLinker(compiler.for_machine, linker, env) if p.returncode == 1 and err.startswith('emxomfar'): - return linkers.EmxomfArLinker(compiler.for_machine, linker) + return linkers.EmxomfArLinker(compiler.for_machine, linker, env) _handle_exceptions(popen_exceptions, trials, 'linker') raise EnvironmentException('Unreachable code (exception to make mypy happy)') diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py index ce9ca4f37..efb151bea 100644 --- a/mesonbuild/linkers/linkers.py +++ b/mesonbuild/linkers/linkers.py @@ -25,8 +25,9 @@ class StaticLinker: id: str - def __init__(self, exelist: T.List[str]): + def __init__(self, exelist: T.List[str], env: Environment): self.exelist = exelist + self.environment = env def get_id(self) -> str: return self.id @@ -362,8 +363,8 @@ class VisualStudioLinker(VisualStudioLikeLinker, StaticLinker): id = 'lib' - def __init__(self, exelist: T.List[str], machine: str): - StaticLinker.__init__(self, exelist) + def __init__(self, exelist: T.List[str], env: Environment, machine: str): + StaticLinker.__init__(self, exelist, env) VisualStudioLikeLinker.__init__(self, machine) @@ -373,16 +374,16 @@ class IntelVisualStudioLinker(VisualStudioLikeLinker, StaticLinker): id = 'xilib' - def __init__(self, exelist: T.List[str], machine: str): - StaticLinker.__init__(self, exelist) + def __init__(self, exelist: T.List[str], env: Environment, machine: str): + StaticLinker.__init__(self, exelist, env) VisualStudioLikeLinker.__init__(self, machine) class ArLinker(ArLikeLinker, StaticLinker): id = 'ar' - def __init__(self, for_machine: mesonlib.MachineChoice, exelist: T.List[str]): - super().__init__(exelist) + def __init__(self, for_machine: mesonlib.MachineChoice, exelist: T.List[str], env: Environment): + super().__init__(exelist, env) stdo = mesonlib.Popen_safe(self.exelist + ['-h'])[1] # Enable deterministic builds if they are available. stdargs = 'csr' @@ -425,8 +426,8 @@ class ArmarLinker(ArLikeLinker, StaticLinker): class DLinker(StaticLinker): - def __init__(self, exelist: T.List[str], arch: str, *, rsp_syntax: RSPFileSyntax = RSPFileSyntax.GCC): - super().__init__(exelist) + def __init__(self, exelist: T.List[str], env: Environment, arch: str, *, rsp_syntax: RSPFileSyntax = RSPFileSyntax.GCC): + super().__init__(exelist, env) self.id = exelist[0] self.arch = arch self.__rsp_syntax = rsp_syntax @@ -452,8 +453,8 @@ class DLinker(StaticLinker): class CcrxLinker(StaticLinker): - def __init__(self, exelist: T.List[str]): - super().__init__(exelist) + def __init__(self, exelist: T.List[str], env: Environment): + super().__init__(exelist, env) self.id = 'rlink' def can_linker_accept_rsp(self) -> bool: @@ -468,8 +469,8 @@ class CcrxLinker(StaticLinker): class Xc16Linker(StaticLinker): - def __init__(self, exelist: T.List[str]): - super().__init__(exelist) + def __init__(self, exelist: T.List[str], env: Environment): + super().__init__(exelist, env) self.id = 'xc16-ar' def can_linker_accept_rsp(self) -> bool: @@ -491,8 +492,8 @@ class Xc32ArLinker(ArLinker): class CompCertLinker(StaticLinker): - def __init__(self, exelist: T.List[str]): - super().__init__(exelist) + def __init__(self, exelist: T.List[str], env: Environment): + super().__init__(exelist, env) self.id = 'ccomp' def can_linker_accept_rsp(self) -> bool: @@ -504,8 +505,8 @@ class CompCertLinker(StaticLinker): class TILinker(StaticLinker): - def __init__(self, exelist: T.List[str]): - super().__init__(exelist) + def __init__(self, exelist: T.List[str], env: Environment): + super().__init__(exelist, env) self.id = 'ti-ar' def can_linker_accept_rsp(self) -> bool: @@ -556,8 +557,8 @@ class MetrowerksStaticLinkerEmbeddedPowerPC(MetrowerksStaticLinker): class TaskingStaticLinker(StaticLinker): id = 'tasking' - def __init__(self, exelist: T.List[str]): - super().__init__(exelist) + def __init__(self, exelist: T.List[str], env: Environment): + super().__init__(exelist, env) def can_linker_accept_rsp(self) -> bool: return True @@ -1358,8 +1359,8 @@ NvidiaHPC_DynamicLinker = PGIDynamicLinker class PGIStaticLinker(StaticLinker): - def __init__(self, exelist: T.List[str]): - super().__init__(exelist) + def __init__(self, exelist: T.List[str], env: Environment): + super().__init__(exelist, env) self.id = 'ar' self.std_args = ['-r'] |
