diff --git a/docs/markdown/snippets/preprocess.md b/docs/markdown/snippets/preprocess.md new file mode 100644 index 000000000..c6cdc08b4 --- /dev/null +++ b/docs/markdown/snippets/preprocess.md @@ -0,0 +1,6 @@ +## compiler.preprocess() + +Dependencies keyword argument can now be passed to `compiler.preprocess()` to +add include directories or compiler arguments. + +Generated sources such as custom targets are now allowed too. diff --git a/docs/yaml/objects/compiler.yaml b/docs/yaml/objects/compiler.yaml index 722401151..abf86aa94 100644 --- a/docs/yaml/objects/compiler.yaml +++ b/docs/yaml/objects/compiler.yaml @@ -617,3 +617,7 @@ methods: type: list[str] description: | Extra flags to pass to the preprocessor + dependencies: + type: dep | list[dep] + description: Additionally dependencies required. + since: 1.1.0 diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py index d27fc201f..eab8607e9 100644 --- a/mesonbuild/interpreter/compiler.py +++ b/mesonbuild/interpreter/compiler.py @@ -87,6 +87,7 @@ if T.TYPE_CHECKING: output: str compile_args: T.List[str] include_directories: T.List[build.IncludeDirs] + dependencies: T.List[dependencies.Dependency] class _TestMode(enum.Enum): @@ -760,6 +761,7 @@ class CompilerHolder(ObjectHolder['Compiler']): KwargInfo('output', str, default='@PLAINNAME@.i'), KwargInfo('compile_args', ContainerTypeInfo(list, str), listify=True, default=[]), _INCLUDE_DIRS_KW, + _DEPENDENCIES_KW.evolve(since='1.1.0'), ) def preprocess_method(self, args: T.Tuple[T.List['mesonlib.FileOrString']], kwargs: 'PreprocessKW') -> T.List[build.CustomTargetIndex]: compiler = self.compiler.get_preprocessor() @@ -771,6 +773,7 @@ class CompilerHolder(ObjectHolder['Compiler']): f'{self.compiler.language}_args': kwargs['compile_args'], 'build_by_default': False, 'include_directories': kwargs['include_directories'], + 'dependencies': kwargs['dependencies'], } tg_name = f'preprocessor_{next(self.preprocess_uid)}' tg = build.CompileTarget( diff --git a/test cases/common/259 preprocess/bar.c b/test cases/common/259 preprocess/bar.c index 47d4ba171..0d961e675 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; + return BAR + PLOP; } diff --git a/test cases/common/259 preprocess/meson.build b/test cases/common/259 preprocess/meson.build index 9627b4fb9..2650166b2 100644 --- a/test cases/common/259 preprocess/meson.build +++ b/test cases/common/259 preprocess/meson.build @@ -13,7 +13,9 @@ bar_c = custom_target( capture: true, ) -pp_files = cc.preprocess('foo.c', bar_c, output: '@PLAINNAME@') +dep = declare_dependency(compile_args: '-DPLOP=0') + +pp_files = cc.preprocess('foo.c', bar_c, output: '@PLAINNAME@', dependencies: dep) foreach f : pp_files message(f.full_path())