aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-06-11 22:38:36 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-06-11 22:38:36 +0300
commit73ca870bef956f81d37795d66c639e40c0dff709 (patch)
treedcd16de034316fbefdbc42ca0997a398dcd8b967 /interpreter.py
parent365f529c75a6b55278db2ee5749d26a29a56fa83 (diff)
downloadmeson-73ca870bef956f81d37795d66c639e40c0dff709.zip
meson-73ca870bef956f81d37795d66c639e40c0dff709.tar.gz
meson-73ca870bef956f81d37795d66c639e40c0dff709.tar.bz2
Can specify standalone command targets.
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py26
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)