diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-06-11 22:38:36 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-06-11 22:38:36 +0300 |
commit | 73ca870bef956f81d37795d66c639e40c0dff709 (patch) | |
tree | dcd16de034316fbefdbc42ca0997a398dcd8b967 /interpreter.py | |
parent | 365f529c75a6b55278db2ee5749d26a29a56fa83 (diff) | |
download | meson-73ca870bef956f81d37795d66c639e40c0dff709.zip meson-73ca870bef956f81d37795d66c639e40c0dff709.tar.gz meson-73ca870bef956f81d37795d66c639e40c0dff709.tar.bz2 |
Can specify standalone command targets.
Diffstat (limited to 'interpreter.py')
-rw-r--r-- | interpreter.py | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/interpreter.py b/interpreter.py index fe51c9b..3cf521f 100644 --- a/interpreter.py +++ b/interpreter.py @@ -383,6 +383,10 @@ class CustomTargetHolder(InterpreterObject): gobjs = self.held_object.extract_objects(args) return GeneratedObjectsHolder(gobjs) +class RunTargetHolder(InterpreterObject): + def __init__(self, name, command, args, subdir): + self.held_object = build.RunTarget(name, command, args, subdir) + class Test(InterpreterObject): def __init__(self, name, exe, is_parallel, cmd_args, env): InterpreterObject.__init__(self) @@ -659,6 +663,7 @@ class Interpreter(): 'shared_library' : self.func_shared_lib, 'jar' : self.func_jar, 'custom_target' : self.func_custom_target, + 'run_target' : self.func_run_target, 'generator' : self.func_generator, 'test' : self.func_test, 'headers' : self.func_headers, @@ -956,7 +961,6 @@ class Interpreter(): self.coredata.cross_compilers[lang] = cross_comp mlog.log('Using native %s compiler "' % lang, mlog.bold(' '.join(comp.get_exelist())), '". (%s %s)' % (comp.id, comp.version), sep='') if not comp.get_language() in self.coredata.external_args: - print('getting from envvars') (ext_compile_flags, ext_link_flags) = environment.get_flags_from_envvars(comp.get_language()) self.coredata.external_args[comp.get_language()] = ext_compile_flags self.coredata.external_link_args[comp.get_language()] = ext_link_flags @@ -1024,7 +1028,7 @@ 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') @@ -1040,6 +1044,24 @@ class Interpreter(): self.build.targets[name] = tg.held_object return tg + def func_run_target(self, node, args, kwargs): + if len(args) < 2: + raise InterpreterException('Incorrect number of arguments') + for i in args: + if not isinstance(i, str): + raise InvalidArguments('Argument is not a string') + name = args[0] + 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) + command = args[1] + cmd_args = args[2:] + tg = RunTargetHolder(name, command, cmd_args, self.subdir) + self.build.targets[name] = tg.held_object + return tg + def func_generator(self, node, args, kwargs): gen = GeneratorHolder(args, kwargs) self.generators.append(gen) |