summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2025-11-13 09:31:40 -0800
committerDylan Baker <dylan@pnwbakers.com>2025-11-19 10:48:48 -0800
commit81bd5d3fe409dd46cad307fbb18703fda1261e38 (patch)
tree80ba6e26a22ff1d4816f65f6c1061e84236eec0e
parent99bb927a74bb0d0fdd836d8442d2595ebc5d054e (diff)
downloadmeson-81bd5d3fe409dd46cad307fbb18703fda1261e38.tar.gz
compilers: Remove Environment parameter from Compiler.get_option_link_args
-rw-r--r--mesonbuild/backend/ninjabackend.py2
-rw-r--r--mesonbuild/backend/vs2010backend.py2
-rw-r--r--mesonbuild/compilers/c.py8
-rw-r--r--mesonbuild/compilers/compilers.py4
-rw-r--r--mesonbuild/compilers/cpp.py20
-rw-r--r--mesonbuild/compilers/cuda.py6
-rw-r--r--mesonbuild/compilers/mixins/islinker.py3
-rw-r--r--mesonbuild/compilers/vala.py2
-rw-r--r--mesonbuild/interpreter/compiler.py2
-rw-r--r--mesonbuild/linkers/linkers.py4
10 files changed, 26 insertions, 27 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 04d9dd0de..3ef5f6267 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -3758,7 +3758,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485'''))
#
# We shouldn't check whether we are making a static library, because
# in the LTO case we do use a real compiler here.
- commands += linker.get_option_link_args(target, self.environment)
+ commands += linker.get_option_link_args(target)
dep_targets = []
dep_targets.extend(self.guess_external_link_dependencies(linker, target, commands, internal))
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index 724dfd8b0..8188b1826 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -1470,7 +1470,7 @@ class Vs2010Backend(backends.Backend):
# to be after all internal and external libraries so that unresolved
# symbols from those can be found here. This is needed when the
# *_winlibs that we want to link to are static mingw64 libraries.
- extra_link_args += compiler.get_option_link_args(target, self.environment, target.subproject)
+ extra_link_args += compiler.get_option_link_args(target, target.subproject)
(additional_libpaths, additional_links, extra_link_args) = self.split_link_args(extra_link_args.to_native())
# Add more libraries to be linked if needed
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index 99761f99b..adad9179c 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -136,7 +136,7 @@ class ClangCCompiler(ClangCStds, ClangCompiler, CCompiler):
args.append('-std=' + std)
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
if self.info.is_windows() or self.info.is_cygwin():
retval = self.get_compileropt_value('winlibs', target, subproject)
assert isinstance(retval, list)
@@ -221,7 +221,7 @@ class ArmclangCCompiler(ArmclangCompiler, CCompiler):
args.append('-std=' + std)
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
@@ -265,7 +265,7 @@ class GnuCCompiler(GnuCStds, GnuCompiler, CCompiler):
args.append('-std=' + std)
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
if self.info.is_windows() or self.info.is_cygwin():
# without a typeddict mypy can't figure this out
retval = self.get_compileropt_value('winlibs', target, subproject)
@@ -400,7 +400,7 @@ class VisualStudioLikeCCompilerMixin(CompilerMixinBase):
msvc_winlibs)
return opts
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
retval = self.get_compileropt_value('winlibs', target, subproject)
assert isinstance(retval, list)
libs: T.List[str] = retval.copy()
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 732203c61..845f798d7 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -638,8 +638,8 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
def get_option_std_args(self, target: BuildTarget, env: Environment, subproject: T.Optional[str] = None) -> T.List[str]:
return []
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
- return self.linker.get_option_link_args(target, env, subproject)
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
+ return self.linker.get_option_link_args(target, subproject)
def check_header(self, hname: str, prefix: str, *,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]] = None,
diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
index 46c7bf5d8..857fccef3 100644
--- a/mesonbuild/compilers/cpp.py
+++ b/mesonbuild/compilers/cpp.py
@@ -294,7 +294,7 @@ class ClangCPPCompiler(_StdCPPLibMixin, ClangCPPStds, ClangCompiler, CPPCompiler
args.append(self._find_best_cpp_std(std))
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
if self.info.is_windows() or self.info.is_cygwin():
# without a typedict mypy can't understand this.
retval = self.get_compileropt_value('winlibs', target, subproject)
@@ -415,7 +415,7 @@ class ArmclangCPPCompiler(ArmclangCompiler, CPPCompiler):
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
@@ -496,7 +496,7 @@ class GnuCPPCompiler(_StdCPPLibMixin, GnuCPPStds, GnuCompiler, CPPCompiler):
args.append(self._find_best_cpp_std(std))
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
if self.info.is_windows() or self.info.is_cygwin():
# without a typedict mypy can't understand this.
retval = self.get_compileropt_value('winlibs', target, subproject)
@@ -733,7 +733,7 @@ class IntelCPPCompiler(IntelGnuLikeCompiler, CPPCompiler):
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
@@ -760,13 +760,13 @@ class VisualStudioLikeCPPCompilerMixin(CompilerMixinBase):
'c++latest': (False, "latest"),
}
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
# need a typeddict for this
key = self.form_compileropt_key('winlibs').evolve(subproject=subproject)
if target:
- value = env.coredata.get_option_for_target(target, key)
+ value = self.environment.coredata.get_option_for_target(target, key)
else:
- value = env.coredata.optstore.get_value_for(key)
+ value = self.environment.coredata.optstore.get_value_for(key)
return T.cast('T.List[str]', value)[:]
def _get_options_impl(self, opts: 'MutableKeyedOptionDictType', cpp_stds: T.List[str]) -> 'MutableKeyedOptionDictType':
@@ -977,7 +977,7 @@ class ArmCPPCompiler(ArmCompiler, CPPCompiler):
args.append('--cpp')
return args
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
@@ -1002,7 +1002,7 @@ class CcrxCPPCompiler(CcrxCompiler, CPPCompiler):
def get_output_args(self, outputname: str) -> T.List[str]:
return [f'-output=obj={outputname}']
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
@@ -1035,7 +1035,7 @@ class TICPPCompiler(TICompiler, CPPCompiler):
def get_always_args(self) -> T.List[str]:
return []
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
class C2000CPPCompiler(TICPPCompiler):
diff --git a/mesonbuild/compilers/cuda.py b/mesonbuild/compilers/cuda.py
index e7cf21963..3978632ec 100644
--- a/mesonbuild/compilers/cuda.py
+++ b/mesonbuild/compilers/cuda.py
@@ -673,9 +673,9 @@ class CudaCompiler(Compiler):
host_compiler_args = []
return self._to_host_flags(host_compiler_args)
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
- args = self.get_ccbin_args(target, env, subproject)
- return args + self._to_host_flags(self.host_compiler.get_option_link_args(target, env, subproject), Phase.LINKER)
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
+ args = self.get_ccbin_args(target, self.environment, subproject)
+ return args + self._to_host_flags(self.host_compiler.get_option_link_args(target, subproject), Phase.LINKER)
def get_soname_args(self, prefix: str, shlib_name: str, suffix: str, soversion: str,
darwin_versions: T.Tuple[str, str]) -> T.List[str]:
diff --git a/mesonbuild/compilers/mixins/islinker.py b/mesonbuild/compilers/mixins/islinker.py
index 7adbe8039..4106f76cc 100644
--- a/mesonbuild/compilers/mixins/islinker.py
+++ b/mesonbuild/compilers/mixins/islinker.py
@@ -17,7 +17,6 @@ import typing as T
from ...mesonlib import EnvironmentException, MesonException, is_windows
if T.TYPE_CHECKING:
- from ...environment import Environment
from ...compilers.compilers import Compiler
from ...build import BuildTarget
from ...options import OptionStore
@@ -60,7 +59,7 @@ class BasicLinkerIsCompilerMixin(Compiler):
def get_linker_lib_prefix(self) -> str:
return ''
- def get_option_link_args(self, target: BuildTarget, env: Environment, subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: BuildTarget, subproject: T.Optional[str] = None) -> T.List[str]:
return []
def has_multi_link_args(self, args: T.List[str]) -> T.Tuple[bool, bool]:
diff --git a/mesonbuild/compilers/vala.py b/mesonbuild/compilers/vala.py
index c9b415326..854bd1f33 100644
--- a/mesonbuild/compilers/vala.py
+++ b/mesonbuild/compilers/vala.py
@@ -148,7 +148,7 @@ class ValaCompiler(Compiler):
def thread_link_flags(self) -> T.List[str]:
return []
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
def build_wrapper_args(self,
diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py
index beff6eb4c..b24ea6d8b 100644
--- a/mesonbuild/interpreter/compiler.py
+++ b/mesonbuild/interpreter/compiler.py
@@ -233,7 +233,7 @@ class CompilerHolder(ObjectHolder['Compiler']):
args += self.compiler.get_option_compile_args(None, self.interpreter.environment, self.subproject)
args += self.compiler.get_option_std_args(None, self.interpreter.environment, self.subproject)
if mode is CompileCheckMode.LINK:
- args.extend(self.compiler.get_option_link_args(None, self.interpreter.environment, self.subproject))
+ args.extend(self.compiler.get_option_link_args(None, self.subproject))
if kwargs.get('werror', False):
args.extend(self.compiler.get_werror_args())
args.extend(kwargs['args'])
diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py
index 15b1ea5b0..6122db9d8 100644
--- a/mesonbuild/linkers/linkers.py
+++ b/mesonbuild/linkers/linkers.py
@@ -77,7 +77,7 @@ class StaticLinker:
def openmp_flags(self) -> T.List[str]:
return []
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
@classmethod
@@ -192,7 +192,7 @@ class DynamicLinker(metaclass=abc.ABCMeta):
def get_option_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
return []
- def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
+ def get_option_link_args(self, target: 'BuildTarget', subproject: T.Optional[str] = None) -> T.List[str]:
return []
def has_multi_arguments(self, args: T.List[str]) -> T.Tuple[bool, bool]: