diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-11-12 10:28:18 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-11-19 10:48:48 -0800 |
| commit | ca15ed8f73e6b8c0cad81bee119c5c099e066767 (patch) | |
| tree | a93c6627cbb7a67fcc1e2e4cf1c03a7ed35c790f | |
| parent | a5c703c9e068366a6331b23227529fabd35e42cd (diff) | |
| download | meson-ca15ed8f73e6b8c0cad81bee119c5c099e066767.tar.gz | |
compilers: Remove Environment parameter from Compiler.build_rpath_args
| -rw-r--r-- | mesonbuild/backend/ninjabackend.py | 3 | ||||
| -rw-r--r-- | mesonbuild/compilers/compilers.py | 8 | ||||
| -rw-r--r-- | mesonbuild/compilers/cuda.py | 7 | ||||
| -rw-r--r-- | mesonbuild/compilers/d.py | 9 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/islinker.py | 5 | ||||
| -rw-r--r-- | mesonbuild/compilers/rust.py | 8 | ||||
| -rw-r--r-- | mesonbuild/linkers/linkers.py | 61 |
7 files changed, 58 insertions, 43 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 97d42fdc4..2189f0c65 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -3631,8 +3631,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) else: target_slashname_workaround_dir = self.get_target_dir(target) (rpath_args, target.rpath_dirs_to_remove) = ( - linker.build_rpath_args(self.environment, - self.environment.get_build_dir(), + linker.build_rpath_args(self.environment.get_build_dir(), target_slashname_workaround_dir, target)) return rpath_args diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index e9446b3b8..007f44fcd 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -951,10 +951,10 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta): """ return None - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: - return self.linker.build_rpath_args( - env, build_dir, from_dir, target, extra_paths) + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: + return self.linker.build_rpath_args(build_dir, from_dir, target, extra_paths) def get_archive_name(self, filename: str) -> str: return self.linker.get_archive_name(filename) diff --git a/mesonbuild/compilers/cuda.py b/mesonbuild/compilers/cuda.py index 5fb0522d7..e9dff7757 100644 --- a/mesonbuild/compilers/cuda.py +++ b/mesonbuild/compilers/cuda.py @@ -728,10 +728,11 @@ class CudaCompiler(Compiler): def get_optimization_link_args(self, optimization_level: str) -> T.List[str]: return self._to_host_flags(self.host_compiler.get_optimization_link_args(optimization_level), Phase.LINKER) - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: (rpath_args, rpath_dirs_to_remove) = self.host_compiler.build_rpath_args( - env, build_dir, from_dir, target, extra_paths) + build_dir, from_dir, target, extra_paths) return (self._to_host_flags(rpath_args, Phase.LINKER), rpath_dirs_to_remove) def linker_to_compiler_args(self, args: T.List[str]) -> T.List[str]: diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index 57426e086..8d13c1ae6 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -175,8 +175,9 @@ class DmdLikeCompilerMixin(CompilerMixinBase): def gen_import_library_args(self, implibname: str) -> T.List[str]: return self.linker.import_library_args(implibname) - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: if self.info.is_windows(): return ([], set()) @@ -187,7 +188,7 @@ class DmdLikeCompilerMixin(CompilerMixinBase): # split into two separate arguments both prefaced with the -L=. args: T.List[str] = [] (rpath_args, rpath_dirs_to_remove) = super().build_rpath_args( - env, build_dir, from_dir, target) + build_dir, from_dir, target) for r in rpath_args: if ',' in r: a, b = r.split(',', maxsplit=1) @@ -198,7 +199,7 @@ class DmdLikeCompilerMixin(CompilerMixinBase): return (args, rpath_dirs_to_remove) return super().build_rpath_args( - env, build_dir, from_dir, target) + build_dir, from_dir, target) @classmethod def _translate_args_to_nongnu(cls, args: T.List[str], info: MachineInfo, link_id: str) -> T.List[str]: diff --git a/mesonbuild/compilers/mixins/islinker.py b/mesonbuild/compilers/mixins/islinker.py index f8c6c0b13..35369ca8e 100644 --- a/mesonbuild/compilers/mixins/islinker.py +++ b/mesonbuild/compilers/mixins/islinker.py @@ -101,8 +101,9 @@ class BasicLinkerIsCompilerMixin(Compiler): darwin_versions: T.Tuple[str, str]) -> T.List[str]: raise MesonException("This linker doesn't support soname args") - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: return ([], set()) def get_asneeded_args(self) -> T.List[str]: diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py index 0f83bb737..de2ab8d95 100644 --- a/mesonbuild/compilers/rust.py +++ b/mesonbuild/compilers/rust.py @@ -271,10 +271,12 @@ class RustCompiler(Compiler): def get_optimization_args(self, optimization_level: str) -> T.List[str]: return rust_optimization_args[optimization_level] - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: # add rustc's sysroot to account for rustup installations - args, to_remove = super().build_rpath_args(env, build_dir, from_dir, target, [self.get_target_libdir()]) + args, to_remove = super().build_rpath_args( + build_dir, from_dir, target, [self.get_target_libdir()]) return rustc_link_args(args), to_remove def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py index 6c447ffa7..41c686e6d 100644 --- a/mesonbuild/linkers/linkers.py +++ b/mesonbuild/linkers/linkers.py @@ -66,8 +66,9 @@ class StaticLinker: def get_coverage_link_args(self) -> T.List[str]: return [] - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: return ([], set()) def thread_flags(self) -> T.List[str]: @@ -301,8 +302,9 @@ class DynamicLinker(metaclass=abc.ABCMeta): def bitcode_args(self) -> T.List[str]: raise MesonException('This linker does not support bitcode bundles') - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: return ([], set()) def get_soname_args(self, prefix: str, shlib_name: str, @@ -724,9 +726,10 @@ class GnuLikeDynamicLinkerMixin(DynamicLinkerBase): sostr = '' if soversion is None else '.' + soversion return self._apply_prefix(f'-soname,{prefix}{shlib_name}.{suffix}{sostr}') - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: - m = env.machines[self.for_machine] + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: + m = self.environment.machines[self.for_machine] if m.is_windows() or m.is_cygwin(): return ([], set()) rpath_paths = target.determine_rpath_dirs() @@ -899,8 +902,9 @@ class AppleDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): '-current_version', darwin_versions[1]]) return args - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: rpath_paths = target.determine_rpath_dirs() if not rpath_paths and not target.install_rpath and not target.build_rpath and not extra_paths: return ([], set()) @@ -1055,8 +1059,9 @@ class WASMDynamicLinker(GnuLikeDynamicLinkerMixin, PosixDynamicLinkerMixin, Dyna def get_asneeded_args(self) -> T.List[str]: return [] - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: return ([], set()) @@ -1134,8 +1139,9 @@ class Xc16DynamicLinker(DynamicLinker): ) -> T.List[str]: return [] - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: return ([], set()) @@ -1192,8 +1198,9 @@ class CompCertDynamicLinker(DynamicLinker): def get_allow_undefined_args(self) -> T.List[str]: return [] - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: return ([], set()) class TIDynamicLinker(DynamicLinker): @@ -1303,8 +1310,9 @@ class NAGDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): id = 'nag' - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: rpath_paths = target.determine_rpath_dirs() if not rpath_paths and not target.install_rpath and not target.build_rpath and not extra_paths: return ([], set()) @@ -1351,9 +1359,10 @@ class PGIDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): return ['-shared'] return [] - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: - if not env.machines[self.for_machine].is_windows(): + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: + if not self.environment.machines[self.for_machine].is_windows(): rpath_paths = target.determine_rpath_dirs() return (['-R' + os.path.join(build_dir, p) for p in rpath_paths], set()) return ([], set()) @@ -1566,8 +1575,9 @@ class SolarisDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): def fatal_warnings(self) -> T.List[str]: return ['-z', 'fatal-warnings'] - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: rpath_paths = target.determine_rpath_dirs() if not rpath_paths and not target.install_rpath and not target.build_rpath and not extra_paths: return ([], set()) @@ -1639,8 +1649,9 @@ class AIXDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): # archives or not." return args - def build_rpath_args(self, env: Environment, build_dir: str, from_dir: str, - target: BuildTarget, extra_paths: T.Optional[T.List[str]] = None) -> T.Tuple[T.List[str], T.Set[bytes]]: + def build_rpath_args(self, build_dir: str, from_dir: str, target: BuildTarget, + extra_paths: T.Optional[T.List[str]] = None + ) -> T.Tuple[T.List[str], T.Set[bytes]]: all_paths: mesonlib.OrderedSet[str] = mesonlib.OrderedSet() # install_rpath first, followed by other paths, and the system path last if target.install_rpath != '': @@ -1651,7 +1662,7 @@ class AIXDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): all_paths.add(os.path.join(build_dir, p)) # We should consider allowing the $LIBPATH environment variable # to override sys_path. - sys_path = env.get_compiler_system_lib_dirs(self.for_machine) + sys_path = self.environment.get_compiler_system_lib_dirs(self.for_machine) if len(sys_path) == 0: # get_compiler_system_lib_dirs doesn't support our compiler. # Use the default system library path |
