aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2023-02-10 17:23:28 -0500
committerXavier Claessens <xclaesse@gmail.com>2023-02-15 15:12:34 -0500
commitd21b64487e30a6b9aa51e6db9f13dbb44e700788 (patch)
tree90f652fbd28548b412d74a26c0289238f29f1d42
parentc2a55bfe43fae1b44cf49a083297d6755c89e1cc (diff)
downloadmeson-d21b64487e30a6b9aa51e6db9f13dbb44e700788.zip
meson-d21b64487e30a6b9aa51e6db9f13dbb44e700788.tar.gz
meson-d21b64487e30a6b9aa51e6db9f13dbb44e700788.tar.bz2
preprocess: Add dependencies kwarg
-rw-r--r--docs/markdown/snippets/preprocess.md6
-rw-r--r--docs/yaml/objects/compiler.yaml4
-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, 17 insertions, 2 deletions
diff --git a/docs/markdown/snippets/preprocess.md b/docs/markdown/snippets/preprocess.md
new file mode 100644
index 0000000..c6cdc08
--- /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 7224011..abf86aa 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 d27fc20..eab8607 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 47d4ba1..0d961e6 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 9627b4f..2650166 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())