aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2020-04-13 21:17:56 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2020-05-10 19:03:42 +0300
commit3a4a94d28d47bd142a27e53a5a0670fcf1dae5c4 (patch)
tree7ad17c5aa2fad8290734869d29dc962675ecaebb /mesonbuild/interpreter.py
parent8c144adc7a32f23e63eb85b989739adf476d04b4 (diff)
downloadmeson-gentarget.zip
meson-gentarget.tar.gz
meson-gentarget.tar.bz2
Add just enough backend to make the simple case work.gentarget
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index a3e9dee..cce47fe 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -638,8 +638,11 @@ class GeneratorHolder(InterpreterObject, ObjectHolder):
raise InvalidArguments('Preserve_path_from must be an absolute path for now. Sorry.')
else:
preserve_path_from = None
- gl = self.held_object.process_files('Generator', args, self.interpreter,
- preserve_path_from, extra_args=extras)
+ gl = self.held_object.process_files('Generator',
+ args,
+ self.interpreter,
+ preserve_path_from=preserve_path_from,
+ extra_args=extras)
return GeneratedListHolder(gl)
@@ -953,6 +956,10 @@ class CustomTargetHolder(TargetHolder):
return IncludeDirsHolder(build.IncludeDirs('', [], False,
[os.path.join('@BUILD_ROOT@', self.interpreter.backend.get_target_dir(self.held_object))]))
+class GeneratorTargetHolder(TargetHolder):
+ def __init__(self, target, interp):
+ super().__init__(target, interp)
+
class RunTargetHolder(TargetHolder):
def __init__(self, target, interp):
super().__init__(target, interp)
@@ -2265,6 +2272,9 @@ permitted_kwargs = {'add_global_arguments': {'language', 'native'},
'depfile',
'capture',
'preserve_path_from'},
+ 'generator_target': {'generator',
+ 'output',
+ 'sources'},
'include_directories': {'is_system'},
'install_data': {'install_dir', 'install_mode', 'rename', 'sources'},
'install_headers': {'install_dir', 'install_mode', 'subdir'},
@@ -2382,6 +2392,7 @@ class Interpreter(InterpreterBase):
'error': self.func_error,
'executable': self.func_executable,
'generator': self.func_generator,
+ 'generator_target': self.func_generator_target,
'gettext': self.func_gettext,
'get_option': self.func_get_option,
'get_variable': self.func_get_variable,
@@ -3809,6 +3820,20 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
self.generators.append(gen)
return gen
+ @stringArgs
+ @permittedKwargs(permitted_kwargs['generator_target'])
+ def func_generator_target(self, node, args, kwargs):
+ if len(args) != 1:
+ raise InterpreterException('custom_target: Only one positional argument is allowed, and it must be a string name')
+
+ name = args[0]
+ gt = GeneratorTargetHolder(build.GeneratorTarget(name,
+ self,
+ kwargs),
+ self)
+ self.add_target(name, gt.held_object)
+ return gt
+
@FeatureNewKwargs('benchmark', '0.46.0', ['depends'])
@FeatureNewKwargs('benchmark', '0.52.0', ['priority'])
@permittedKwargs(permitted_kwargs['benchmark'])