diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-11-08 11:56:45 +0100 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-11-12 14:56:22 -0800 |
| commit | 375154f964d14bde4982a15659fe2df81b571261 (patch) | |
| tree | 0c50e79a41d27a81a5379dfc21e2e49ec48f3897 /mesonbuild/compilers | |
| parent | c1e91e497ffbe1d795c3bb996f0a6c2e42fd5018 (diff) | |
| download | meson-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.py | 8 | ||||
| -rw-r--r-- | mesonbuild/compilers/cuda.py | 8 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/gnu.py | 3 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/islinker.py | 2 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/microchip.py | 3 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/visualstudio.py | 3 |
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)}'] |
