aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-09-28 18:09:54 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-09-28 18:09:54 +0300
commitd4a922c21a65a1fc8c52bbce2c18fe3a0f169002 (patch)
tree909823a12e5115bc62e88a2dcfcef7231117fdae
parentd23e59ed5f82a3f2d3b0d70faf71a6d4ca16eaaa (diff)
downloadmeson-d4a922c21a65a1fc8c52bbce2c18fe3a0f169002.zip
meson-d4a922c21a65a1fc8c52bbce2c18fe3a0f169002.tar.gz
meson-d4a922c21a65a1fc8c52bbce2c18fe3a0f169002.tar.bz2
Can set build targets as arguments to run_target. Closes #270.
-rw-r--r--interpreter.py8
-rw-r--r--ninjabackend.py7
-rw-r--r--test cases/common/58 run target/helloprinter.c1
3 files changed, 11 insertions, 5 deletions
diff --git a/interpreter.py b/interpreter.py
index 5da6d8b..b6e98dd 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1466,6 +1466,7 @@ class Interpreter():
def func_run_target(self, node, args, kwargs):
if len(args) < 2:
raise InterpreterException('Incorrect number of arguments')
+ cleaned_args = []
for i in args:
try:
i = i.held_object
@@ -1474,9 +1475,10 @@ class Interpreter():
if not isinstance(i, (str, build.BuildTarget)):
mlog.debug('Wrong type:', str(i))
raise InterpreterException('Invalid argument to run_target.')
- name = args[0]
- command = args[1]
- cmd_args = args[2:]
+ cleaned_args.append(i)
+ name = cleaned_args[0]
+ command = cleaned_args[1]
+ cmd_args = cleaned_args[2:]
tg = RunTargetHolder(name, command, cmd_args, self.subdir)
self.add_target(name, tg.held_object)
return tg
diff --git a/ninjabackend.py b/ninjabackend.py
index 01223ab..b9eef19 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -345,8 +345,11 @@ class NinjaBackend(backends.Backend):
if isinstance(i, str):
arg_strings.append(i)
elif isinstance(i, build.BuildTarget):
- deps.append(self.get_target_filename(i))
+ relfname = self.get_target_filename(i)
+ deps.append(relfname)
+ arg_strings.append(os.path.join(self.environment.get_build_dir(), relfname))
else:
+ mlog.debug(str(i))
raise MesonException('Unreachable code.')
elem = NinjaBuildElement(target.name, 'CUSTOM_COMMAND', deps)
cmd = [sys.executable, runnerscript, self.environment.get_source_dir(), self.environment.get_build_dir(), target.subdir]
@@ -364,7 +367,7 @@ class NinjaBackend(backends.Backend):
cmd.append(abs_exe)
else:
cmd.append(target.command)
- cmd += target.args
+ cmd += arg_strings
elem.add_item('COMMAND', cmd)
elem.add_item('description', 'Running external command %s.' % target.name)
elem.add_item('pool', 'console')
diff --git a/test cases/common/58 run target/helloprinter.c b/test cases/common/58 run target/helloprinter.c
index 7f94b19..4a6e0ac 100644
--- a/test cases/common/58 run target/helloprinter.c
+++ b/test cases/common/58 run target/helloprinter.c
@@ -3,6 +3,7 @@
int main(int argc, char **argv) {
if(argc != 2) {
printf("I can not haz argument.\n");
+ return 1;
} else {
printf("I can haz argument: %s\n", argv[1]);
}