aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2022-10-16 18:19:33 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2022-10-16 18:19:33 +0300
commit2b43f1ec1dd72e774162642c91421f4a6ae38f9c (patch)
treef2e544cf9a1dac65797a6ac06ae1cfdc24f504e1 /mesonbuild/interpreter
parent5937bbf6ee99d31b2f7d47d4e5cae7892bcb88d8 (diff)
downloadmeson-biggen.zip
meson-biggen.tar.gz
meson-biggen.tar.bz2
Add support for opaque build targets. Closes #10627.biggen
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r--mesonbuild/interpreter/interpreter.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 1f9a99a..523b3e7 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -408,6 +408,7 @@ class Interpreter(InterpreterBase, HoldableObject):
'join_paths': self.func_join_paths,
'library': self.func_library,
'message': self.func_message,
+ 'opaque_target': self.func_opaque_target,
'option': self.func_option,
'project': self.func_project,
'range': self.func_range,
@@ -1984,6 +1985,24 @@ class Interpreter(InterpreterBase, HoldableObject):
self.add_target(tg.name, tg)
return tg
+ def func_opaque_target(self, node: mparser.FunctionNode, args: T.Tuple[str],
+ kwargs: 'kwtypes.OpaqueTarget') -> build.CustomTarget:
+ if len(args) != 1:
+ raise InterpreterException('Opaque_target takes exactly one positional argument.')
+ opaque_data = mesonlib.get_opaque_data(self.subproject, args[0])
+ kwargs['output'] = opaque_data.stamp
+ kwargs['depfile'] = opaque_data.dep
+ integration_args = ['--stamp=@OUTPUT@',
+ '--dep=@DEPFILE@',
+ '--scratch=' + opaque_data.scratch,
+ '--out=' + opaque_data.out,
+ '--']
+ kwargs['command'] = listify(kwargs['command']) + integration_args + kwargs['args']
+ del kwargs['args']
+ ct = self.func_custom_target(node, args, kwargs)
+ ct.is_opaque = True
+ return ct
+
@typed_pos_args('run_target', str)
@typed_kwargs(
'run_target',