diff options
| -rw-r--r-- | mesonbuild/backend/backends.py | 5 | ||||
| -rw-r--r-- | mesonbuild/cmake/toolchain.py | 3 | ||||
| -rw-r--r-- | mesonbuild/compilers/compilers.py | 6 | ||||
| -rw-r--r-- | mesonbuild/compilers/detect.py | 4 | ||||
| -rw-r--r-- | mesonbuild/compilers/rust.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/dev.py | 2 | ||||
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 7 | ||||
| -rw-r--r-- | mesonbuild/linkers/linkers.py | 6 |
8 files changed, 23 insertions, 12 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index a960537a8..8a7887837 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -2078,9 +2078,8 @@ class Backend: Some backends don't support custom compilers. This is a convenience method to convert a Compiler to a Generator. ''' - exelist = compiler.get_exelist() - exe = programs.ExternalProgram(exelist[0]) - args = exelist[1:] + exe = programs.ExternalProgram(compiler.get_exe()) + args = compiler.get_exe_args() commands = self.compiler_to_generator_args(target, compiler) generator = build.Generator(exe, args + commands.to_native(), [output_templ], depfile='@PLAINNAME@.d', diff --git a/mesonbuild/cmake/toolchain.py b/mesonbuild/cmake/toolchain.py index 9eb961c52..d410886ec 100644 --- a/mesonbuild/cmake/toolchain.py +++ b/mesonbuild/cmake/toolchain.py @@ -9,6 +9,7 @@ from ..envconfig import CMakeSkipCompilerTest from .common import language_map, cmake_get_generator_args from .. import mlog +import os.path import shutil import typing as T from enum import Enum @@ -198,7 +199,7 @@ class CMakeToolchain: if compiler.get_argument_syntax() == 'msvc': return arg.startswith('/') else: - if compiler.exelist[0] == 'zig' and arg in {'ar', 'cc', 'c++', 'dlltool', 'lib', 'ranlib', 'objcopy', 'rc'}: + if os.path.basename(compiler.get_exe()) == 'zig' and arg in {'ar', 'cc', 'c++', 'dlltool', 'lib', 'ranlib', 'objcopy', 'rc'}: return True return arg.startswith('-') diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index a73697cdd..9fbde0e49 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -521,6 +521,12 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta): def get_modes(self) -> T.List[Compiler]: return self.modes + def get_exe(self) -> str: + return self.exelist[0] + + def get_exe_args(self) -> T.List[str]: + return self.exelist[1:] + def get_linker_id(self) -> str: # There is not guarantee that we have a dynamic linker instance, as # some languages don't have separate linkers and compilers. In those diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py index bce0be8a8..9dab06a85 100644 --- a/mesonbuild/compilers/detect.py +++ b/mesonbuild/compilers/detect.py @@ -1099,7 +1099,7 @@ def detect_rust_compiler(env: 'Environment', for_machine: MachineChoice) -> Rust extra_args: T.Dict[str, T.Union[str, bool]] = {} always_args: T.List[str] = [] if is_link_exe: - compiler.extend(cls.use_linker_args(cc.linker.exelist[0], '')) + compiler.extend(cls.use_linker_args(cc.linker.get_exe(), '')) extra_args['direct'] = True extra_args['machine'] = cc.linker.machine else: @@ -1131,7 +1131,7 @@ def detect_rust_compiler(env: 'Environment', for_machine: MachineChoice) -> Rust # inserts the correct prefix itself. assert isinstance(linker, linkers.VisualStudioLikeLinkerMixin) linker.direct = True - compiler.extend(cls.use_linker_args(linker.exelist[0], '')) + compiler.extend(cls.use_linker_args(linker.get_exe(), '')) else: # On linux and macos rust will invoke the c compiler for # linking, on windows it will use lld-link or link.exe. diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py index 210544ed8..17908860e 100644 --- a/mesonbuild/compilers/rust.py +++ b/mesonbuild/compilers/rust.py @@ -314,7 +314,7 @@ class RustCompiler(Compiler): exelist = rustup_exelist + [name] else: exelist = [name] - args = self.exelist[1:] + args = self.get_exe_args() from ..programs import find_external_program for prog in find_external_program(env, self.for_machine, exelist[0], exelist[0], diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py index 0c8886b81..8f0f1baae 100644 --- a/mesonbuild/dependencies/dev.py +++ b/mesonbuild/dependencies/dev.py @@ -593,7 +593,7 @@ class JNISystemDependency(SystemDependency): self.java_home = environment.properties[self.for_machine].get_java_home() if not self.java_home: - self.java_home = pathlib.Path(shutil.which(self.javac.exelist[0])).resolve().parents[1] + self.java_home = pathlib.Path(shutil.which(self.javac.get_exe())).resolve().parents[1] if m.is_darwin(): problem_java_prefix = pathlib.Path('/System/Library/Frameworks/JavaVM.framework/Versions') if problem_java_prefix in self.java_home.parents: diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index a17c76c5f..24c63bc1a 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -798,13 +798,12 @@ class Interpreter(InterpreterBase, HoldableObject): if not cmd.found(): raise InterpreterException(f'command {cmd.get_name()!r} not found or not executable') elif isinstance(cmd, compilers.Compiler): - exelist = cmd.get_exelist() - cmd = exelist[0] + expanded_args = cmd.get_exe_args() + cmd = cmd.get_exe() prog = ExternalProgram(cmd, silent=True) if not prog.found(): raise InterpreterException(f'Program {cmd!r} not found or not executable') cmd = prog - expanded_args = exelist[1:] else: if isinstance(cmd, mesonlib.File): cmd = cmd.absolute_path(srcdir, builddir) @@ -823,7 +822,7 @@ class Interpreter(InterpreterBase, HoldableObject): expanded_args.append(a.get_path()) elif isinstance(a, compilers.Compiler): FeatureNew.single_use('Compiler object as a variadic argument to `run_command`', '0.61.0', self.subproject, location=self.current_node) - prog = ExternalProgram(a.exelist[0], silent=True) + prog = ExternalProgram(a.get_exe(), silent=True) if not prog.found(): raise InterpreterException(f'Program {cmd!r} not found or not executable') expanded_args.append(prog.get_path()) diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py index 45eb6e8c3..58753e63b 100644 --- a/mesonbuild/linkers/linkers.py +++ b/mesonbuild/linkers/linkers.py @@ -31,6 +31,9 @@ class StaticLinker: def get_id(self) -> str: return self.id + def get_exe(self) -> str: + return self.exelist[0] + def compiler_args(self, args: T.Optional[T.Iterable[str]] = None) -> CompilerArgs: return CompilerArgs(self, args) @@ -152,6 +155,9 @@ class DynamicLinker(metaclass=abc.ABCMeta): def get_id(self) -> str: return self.id + def get_exe(self) -> str: + return self.exelist[0] + def get_version_string(self) -> str: return f'({self.id} {self.version})' |
