diff options
Diffstat (limited to 'interpreter.py')
-rw-r--r-- | interpreter.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py index f732923..03ee59d 100644 --- a/interpreter.py +++ b/interpreter.py @@ -372,6 +372,17 @@ class JarHolder(BuildTargetHolder): def __init__(self, name, subdir, is_cross, sources, objects, environment, kwargs): super().__init__(build.Jar, name, subdir, is_cross, sources, objects, environment, kwargs) +class CustomTargetHolder(InterpreterObject): + def __init__(self, name, subdir, kwargs): + self.held_object = build.CustomTarget(name, subdir, kwargs) + + def is_cross(self): + return self.held_object.is_cross() + + def extract_objects_method(self, args, kwargs): + gobjs = self.held_object.extract_objects(args) + return GeneratedObjectsHolder(gobjs) + class Test(InterpreterObject): def __init__(self, name, exe, is_parallel, cmd_args, env): InterpreterObject.__init__(self) @@ -647,6 +658,7 @@ class Interpreter(): 'static_library' : self.func_static_lib, 'shared_library' : self.func_shared_lib, 'jar' : self.func_jar, + 'custom_target' : self.func_custom_target, 'generator' : self.func_generator, 'test' : self.func_test, 'headers' : self.func_headers, @@ -1007,6 +1019,21 @@ class Interpreter(): def func_jar(self, node, args, kwargs): return self.build_target(node, args, kwargs, JarHolder) + + def func_custom_target(self, node, args, kwargs): + if len(args) != 1: + raise InterpreterException('Incorrect number of arguments') + name = args[0] + if not isinstance(name, str): + raise InterpreterException('Argument must be a string.') + if name in coredata.forbidden_target_names: + raise InvalidArguments('Target name "%s" is reserved for Meson\'s internal use. Please rename.'\ + % name) + if name in self.build.targets: + raise InvalidCode('Tried to create target "%s", but a target of that name already exists.' % name) + tg = CustomTargetHolder(name, self.subdir, kwargs) + self.build.targets[name] = tg.held_object + return tg def func_generator(self, node, args, kwargs): gen = GeneratorHolder(args, kwargs) |