summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-04-02 14:15:59 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2025-04-04 12:46:55 +0300
commit47984f813450bcbcd102ed45d579011deb4572c1 (patch)
tree1c32e2f598a88b13464f3a007dbe8074fe824f91
parent4ecf608936dbaf70fb1c4e807a82073162b56a45 (diff)
downloadmeson-47984f813450bcbcd102ed45d579011deb4572c1.tar.gz
compilers: introduce get_option_std_args
Allow CUDA to completely override the -std arguments but not the rest. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--mesonbuild/backend/backends.py1
-rw-r--r--mesonbuild/backend/ninjabackend.py1
-rw-r--r--mesonbuild/backend/vs2010backend.py2
-rw-r--r--mesonbuild/backend/xcodebackend.py1
-rw-r--r--mesonbuild/compilers/compilers.py3
-rw-r--r--mesonbuild/interpreter/compiler.py1
6 files changed, 9 insertions, 0 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 8a7887837..20f7907a1 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -1024,6 +1024,7 @@ class Backend:
# Add compile args for c_* or cpp_* build options set on the
# command-line or default_options inside project().
commands += compiler.get_option_compile_args(target, self.environment, target.subproject)
+ commands += compiler.get_option_std_args(target, self.environment, target.subproject)
optimization = self.get_target_option(target, 'optimization')
assert isinstance(optimization, str), 'for mypy'
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 00cf4ad02..8cf459f7f 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1836,6 +1836,7 @@ class NinjaBackend(backends.Backend):
args += cython.get_debug_args(self.get_target_option(target, 'debug'))
args += cython.get_optimization_args(self.get_target_option(target, 'optimization'))
args += cython.get_option_compile_args(target, self.environment, target.subproject)
+ args += cython.get_option_std_args(target, self.environment, target.subproject)
args += self.build.get_global_args(cython, target.for_machine)
args += self.build.get_project_args(cython, target.subproject, target.for_machine)
args += target.get_extra_args('cython')
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index 59ddb9c26..283f9f0a3 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -1000,6 +1000,8 @@ class Vs2010Backend(backends.Backend):
target, comp, self.environment)
file_args[l] += comp.get_option_compile_args(
target, self.environment, target.subproject)
+ file_args[l] += comp.get_option_std_args(
+ target, self.environment, target.subproject)
# Add compile args added using add_project_arguments()
for l, args in self.build.projects_args[target.for_machine].get(target.subproject, {}).items():
diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py
index e5c631fff..587404a01 100644
--- a/mesonbuild/backend/xcodebackend.py
+++ b/mesonbuild/backend/xcodebackend.py
@@ -1688,6 +1688,7 @@ class XCodeBackend(backends.Backend):
# Start with warning args
warn_args = compiler.get_warn_args(self.get_target_option(target, 'warning_level'))
std_args = compiler.get_option_compile_args(target, self.environment, target.subproject)
+ std_args += compiler.get_option_std_args(target, self.environment, target.subproject)
# Add compile args added using add_project_arguments()
pargs = self.build.projects_args[target.for_machine].get(target.subproject, {}).get(lang, [])
# Add compile args added using add_global_arguments()
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 3398aa4af..89eceab75 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -611,6 +611,9 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
def get_option_compile_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]:
return []
+ 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)
diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py
index 303af1240..8aeac8ac6 100644
--- a/mesonbuild/interpreter/compiler.py
+++ b/mesonbuild/interpreter/compiler.py
@@ -270,6 +270,7 @@ class CompilerHolder(ObjectHolder['Compiler']):
args.extend(self.compiler.get_include_args(idir, False))
if not kwargs['no_builtin_args']:
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))
if kwargs.get('werror', False):