summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-11-08 11:56:45 +0100
committerDylan Baker <dylan@pnwbakers.com>2025-11-12 14:56:22 -0800
commit375154f964d14bde4982a15659fe2df81b571261 (patch)
tree0c50e79a41d27a81a5379dfc21e2e49ec48f3897 /mesonbuild/compilers
parentc1e91e497ffbe1d795c3bb996f0a6c2e42fd5018 (diff)
downloadmeson-375154f964d14bde4982a15659fe2df81b571261.tar.gz
compilers: pass target and env to sanitizer_*_args
The Rust compiler will need these to check the rust_nightly option. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r--mesonbuild/compilers/compilers.py8
-rw-r--r--mesonbuild/compilers/cuda.py8
-rw-r--r--mesonbuild/compilers/mixins/gnu.py3
-rw-r--r--mesonbuild/compilers/mixins/islinker.py2
-rw-r--r--mesonbuild/compilers/mixins/microchip.py3
-rw-r--r--mesonbuild/compilers/mixins/visualstudio.py3
6 files changed, 15 insertions, 12 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 8ee2c1b24..3105adb19 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -295,7 +295,7 @@ def get_base_compile_args(target: 'BuildTarget', compiler: 'Compiler', env: 'Env
assert isinstance(sanitize, list)
if sanitize == ['none']:
sanitize = []
- sanitize_args = compiler.sanitizer_compile_args(sanitize)
+ sanitize_args = compiler.sanitizer_compile_args(target, env, sanitize)
# We consider that if there are no sanitizer arguments returned, then
# the language doesn't support them.
if sanitize_args:
@@ -369,7 +369,7 @@ def get_base_link_args(target: 'BuildTarget',
assert isinstance(sanitizer, list)
if sanitizer == ['none']:
sanitizer = []
- sanitizer_args = linker.sanitizer_link_args(sanitizer)
+ sanitizer_args = linker.sanitizer_link_args(target, env, sanitizer)
# We consider that if there are no sanitizer arguments returned, then
# the language doesn't support them.
if sanitizer_args:
@@ -1050,10 +1050,10 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
def get_lto_obj_cache_path(self, path: str) -> T.List[str]:
return self.linker.get_lto_obj_cache_path(path)
- def sanitizer_compile_args(self, value: T.List[str]) -> T.List[str]:
+ def sanitizer_compile_args(self, target: T.Optional[BuildTarget], env: Environment, value: T.List[str]) -> T.List[str]:
return []
- def sanitizer_link_args(self, value: T.List[str]) -> T.List[str]:
+ def sanitizer_link_args(self, target: T.Optional[BuildTarget], env: Environment, value: T.List[str]) -> T.List[str]:
return self.linker.sanitizer_args(value)
def get_asneeded_args(self) -> T.List[str]:
diff --git a/mesonbuild/compilers/cuda.py b/mesonbuild/compilers/cuda.py
index 7e050f140..bf80a42ad 100644
--- a/mesonbuild/compilers/cuda.py
+++ b/mesonbuild/compilers/cuda.py
@@ -698,11 +698,11 @@ class CudaCompiler(Compiler):
# return self._to_host_flags(self.host_compiler.get_optimization_args(optimization_level))
return cuda_optimization_args[optimization_level]
- def sanitizer_compile_args(self, value: T.List[str]) -> T.List[str]:
- return self._to_host_flags(self.host_compiler.sanitizer_compile_args(value))
+ def sanitizer_compile_args(self, target: T.Optional[BuildTarget], env: Environment, value: T.List[str]) -> T.List[str]:
+ return self._to_host_flags(self.host_compiler.sanitizer_compile_args(target, env, value))
- def sanitizer_link_args(self, value: T.List[str]) -> T.List[str]:
- return self._to_host_flags(self.host_compiler.sanitizer_link_args(value))
+ def sanitizer_link_args(self, target: T.Optional[BuildTarget], env: Environment, value: T.List[str]) -> T.List[str]:
+ return self._to_host_flags(self.host_compiler.sanitizer_link_args(target, env, value))
def get_debug_args(self, is_debug: bool) -> T.List[str]:
return cuda_debug_args[is_debug]
diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py
index fb97d0278..933d236de 100644
--- a/mesonbuild/compilers/mixins/gnu.py
+++ b/mesonbuild/compilers/mixins/gnu.py
@@ -21,6 +21,7 @@ from mesonbuild.compilers.compilers import CompileCheckMode
if T.TYPE_CHECKING:
from ..._typing import ImmutableListProtocol
+ from ...build import BuildTarget
from ...options import MutableKeyedOptionDictType
from ...environment import Environment
from ..compilers import Compiler
@@ -496,7 +497,7 @@ class GnuLikeCompiler(Compiler, metaclass=abc.ABCMeta):
# for their specific arguments
return ['-flto']
- def sanitizer_compile_args(self, value: T.List[str]) -> T.List[str]:
+ def sanitizer_compile_args(self, target: T.Optional[BuildTarget], env: Environment, value: T.List[str]) -> T.List[str]:
if not value:
return value
args = ['-fsanitize=' + ','.join(value)]
diff --git a/mesonbuild/compilers/mixins/islinker.py b/mesonbuild/compilers/mixins/islinker.py
index e359fb353..762b5682e 100644
--- a/mesonbuild/compilers/mixins/islinker.py
+++ b/mesonbuild/compilers/mixins/islinker.py
@@ -38,7 +38,7 @@ class BasicLinkerIsCompilerMixin(Compiler):
functionality itself.
"""
- def sanitizer_link_args(self, value: T.List[str]) -> T.List[str]:
+ def sanitizer_link_args(self, target: BuildTarget, env: Environment, value: T.List[str]) -> T.List[str]:
return []
def get_lto_link_args(self, *, threads: int = 0, mode: str = 'default',
diff --git a/mesonbuild/compilers/mixins/microchip.py b/mesonbuild/compilers/mixins/microchip.py
index 6b989cba8..0dc7618a2 100644
--- a/mesonbuild/compilers/mixins/microchip.py
+++ b/mesonbuild/compilers/mixins/microchip.py
@@ -13,6 +13,7 @@ from ..compilers import Compiler
from ...mesonlib import EnvironmentException, version_compare
if T.TYPE_CHECKING:
+ from ...build import BuildTarget
from ...envconfig import MachineInfo
from ...environment import Environment
@@ -152,7 +153,7 @@ class Xc32Compiler(CompilerBase):
def get_profile_use_args(self) -> T.List[str]:
return Compiler.get_profile_use_args(self)
- def sanitizer_compile_args(self, value: T.List[str]) -> T.List[str]:
+ def sanitizer_compile_args(self, target: T.Optional[BuildTarget], env: Environment, value: T.List[str]) -> T.List[str]:
return []
@classmethod
diff --git a/mesonbuild/compilers/mixins/visualstudio.py b/mesonbuild/compilers/mixins/visualstudio.py
index 4125ed885..746f59395 100644
--- a/mesonbuild/compilers/mixins/visualstudio.py
+++ b/mesonbuild/compilers/mixins/visualstudio.py
@@ -20,6 +20,7 @@ from ...options import OptionKey
from mesonbuild.linkers.linkers import ClangClDynamicLinker
if T.TYPE_CHECKING:
+ from ...build import BuildTarget
from ...environment import Environment
from ...dependencies import Dependency
from .clike import CLikeCompiler as Compiler
@@ -162,7 +163,7 @@ class VisualStudioLikeCompiler(Compiler, metaclass=abc.ABCMeta):
def get_no_optimization_args(self) -> T.List[str]:
return ['/Od', '/Oi-']
- def sanitizer_compile_args(self, value: T.List[str]) -> T.List[str]:
+ def sanitizer_compile_args(self, target: T.Optional[BuildTarget], env: Environment, value: T.List[str]) -> T.List[str]:
if not value:
return value
return [f'/fsanitize={",".join(value)}']