diff options
| author | Charles Brunet <charles.brunet@optelgroup.com> | 2024-01-09 20:37:15 -0500 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-01-25 11:06:56 -0800 |
| commit | d7bf365acdadf6bb5a456bbe405132cd17c3e5af (patch) | |
| tree | 0b8a8c506ab0dcca83cd914e15fe22ecffd526ed | |
| parent | a9f9f034905459bed628d886c3315ded162a9789 (diff) | |
| download | meson-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.py | 3 | ||||
| -rw-r--r-- | mesonbuild/build.py | 2 | ||||
| -rw-r--r-- | mesonbuild/interpreter/compiler.py | 3 | ||||
| -rw-r--r-- | test cases/common/259 preprocess/bar.c | 2 | ||||
| -rw-r--r-- | test cases/common/259 preprocess/meson.build | 4 |
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()) |
