summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Brunet <charles.brunet@optelgroup.com>2024-01-09 20:37:15 -0500
committerDylan Baker <dylan@pnwbakers.com>2024-01-25 11:06:56 -0800
commitd7bf365acdadf6bb5a456bbe405132cd17c3e5af (patch)
tree0b8a8c506ab0dcca83cd914e15fe22ecffd526ed
parenta9f9f034905459bed628d886c3315ded162a9789 (diff)
downloadmeson-d7bf365acdadf6bb5a456bbe405132cd17c3e5af.tar.gz
Fix compiler.preprocess compile_args not used
As described in https://github.com/mesonbuild/meson/issues/12715#issuecomment-1883448780, the compiler.preprocess function ignores compile_args. This should fix it in both ninja and visualstudio backends.
-rw-r--r--mesonbuild/backend/backends.py3
-rw-r--r--mesonbuild/build.py2
-rw-r--r--mesonbuild/interpreter/compiler.py3
-rw-r--r--test cases/common/259 preprocess/bar.c2
-rw-r--r--test cases/common/259 preprocess/meson.build4
5 files changed, 10 insertions, 4 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index e8eaa5e61..441a1eca5 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -2029,6 +2029,9 @@ class Backend:
commands += compiler.get_compile_only_args() + ['@INPUT@']
commands += self.get_source_dir_include_args(target, compiler)
commands += self.get_build_dir_include_args(target, compiler)
+ # Add per-target compile args, f.ex, `c_args : ['-DFOO']`. We set these
+ # near the end since these are supposed to override everything else.
+ commands += self.escape_extra_args(target.get_extra_args(compiler.get_language()))
generator = build.Generator(exe, args + commands.to_native(),
[output_templ], depfile='@PLAINNAME@.d',
depends=depends)
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 324721798..934e7c1f0 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -2768,7 +2768,7 @@ class CompileTarget(BuildTarget):
compilers = {compiler.get_language(): compiler}
kwargs = {
'build_by_default': False,
- f'{compiler.language}_args': compile_args,
+ 'language_args': {compiler.language: compile_args},
'include_directories': include_directories,
'dependencies': dependencies,
}
diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py
index f31952867..0cd6aecf3 100644
--- a/mesonbuild/interpreter/compiler.py
+++ b/mesonbuild/interpreter/compiler.py
@@ -18,7 +18,7 @@ from .. import mlog
from ..compilers import SUFFIX_TO_LANG
from ..compilers.compilers import CompileCheckMode
from ..interpreterbase import (ObjectHolder, noPosargs, noKwargs,
- FeatureNew, disablerIfNotFound,
+ FeatureNew, FeatureNewKwargs, disablerIfNotFound,
InterpreterException)
from ..interpreterbase.decorators import ContainerTypeInfo, typed_kwargs, KwargInfo, typed_pos_args
from ..mesonlib import OptionKey
@@ -853,6 +853,7 @@ class CompilerHolder(ObjectHolder['Compiler']):
return self.compiler.get_argument_syntax()
@FeatureNew('compiler.preprocess', '0.64.0')
+ @FeatureNewKwargs('compiler.preprocess', '1.3.2', ['compile_args'], extra_message='compile_args were ignored before this version')
@typed_pos_args('compiler.preprocess', varargs=(str, mesonlib.File, build.CustomTarget, build.CustomTargetIndex, build.GeneratedList), min_varargs=1)
@typed_kwargs(
'compiler.preprocess',
diff --git a/test cases/common/259 preprocess/bar.c b/test cases/common/259 preprocess/bar.c
index 0d961e675..598abcab0 100644
--- a/test cases/common/259 preprocess/bar.c
+++ b/test cases/common/259 preprocess/bar.c
@@ -1,3 +1,3 @@
int @BAR@(void) {
- return BAR + PLOP;
+ return BAR + PLOP + BAZ;
}
diff --git a/test cases/common/259 preprocess/meson.build b/test cases/common/259 preprocess/meson.build
index 40168f95d..2ca5bed59 100644
--- a/test cases/common/259 preprocess/meson.build
+++ b/test cases/common/259 preprocess/meson.build
@@ -20,7 +20,9 @@ dep = declare_dependency(compile_args: '-DPLOP=0')
pp_files = cc.preprocess('foo.c', bar_x, 'math.c',
output: '@PLAINNAME@.c',
dependencies: dep,
- depends: foo_h)
+ depends: foo_h,
+ compile_args: ['-DBAZ=0'],
+)
foreach f : pp_files
message(f.full_path())