summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2025-11-12 10:28:18 -0800
committerDylan Baker <dylan@pnwbakers.com>2025-11-19 10:48:48 -0800
commitca15ed8f73e6b8c0cad81bee119c5c099e066767 (patch)
treea93c6627cbb7a67fcc1e2e4cf1c03a7ed35c790f
parenta5c703c9e068366a6331b23227529fabd35e42cd (diff)
downloadmeson-ca15ed8f73e6b8c0cad81bee119c5c099e066767.tar.gz
compilers: Remove Environment parameter from Compiler.build_rpath_args
-rw-r--r--mesonbuild/backend/ninjabackend.py3
-rw-r--r--mesonbuild/compilers/compilers.py8
-rw-r--r--mesonbuild/compilers/cuda.py7
-rw-r--r--mesonbuild/compilers/d.py9
-rw-r--r--mesonbuild/compilers/mixins/islinker.py5
-rw-r--r--mesonbuild/compilers/rust.py8
-rw-r--r--mesonbuild/linkers/linkers.py61
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