diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2022-10-16 18:19:33 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2022-10-16 18:19:33 +0300 |
commit | 2b43f1ec1dd72e774162642c91421f4a6ae38f9c (patch) | |
tree | f2e544cf9a1dac65797a6ac06ae1cfdc24f504e1 /mesonbuild/interpreter | |
parent | 5937bbf6ee99d31b2f7d47d4e5cae7892bcb88d8 (diff) | |
download | meson-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.py | 19 |
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', |