aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-09-07 23:04:11 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2016-09-07 23:04:11 +0300
commit9235fd4ec1cfdea9f1c73719c80607ee0cdad39b (patch)
tree39d8ff868ec3a384c407f1e8859d8c55a7e25651
parent3f62fb788beea1ac32d514d549fdaeaaae0f3292 (diff)
downloadmeson-9235fd4ec1cfdea9f1c73719c80607ee0cdad39b.zip
meson-9235fd4ec1cfdea9f1c73719c80607ee0cdad39b.tar.gz
meson-9235fd4ec1cfdea9f1c73719c80607ee0cdad39b.tar.bz2
Permit use of file objects in run targets.
-rw-r--r--mesonbuild/backend/ninjabackend.py2
-rw-r--r--mesonbuild/interpreter.py4
-rw-r--r--test cases/common/58 run target/meson.build3
3 files changed, 7 insertions, 2 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index e81c407..adf9b71 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -424,6 +424,8 @@ int dummy;
elif isinstance(i, (build.BuildTarget, build.CustomTarget)):
relfname = self.get_target_filename(i)
arg_strings.append(os.path.join(self.environment.get_build_dir(), relfname))
+ elif isinstance(i, mesonlib.File):
+ arg_strings.append(i.rel_to_builddir(self.build_to_src))
else:
mlog.debug(str(i))
raise MesonException('Unreachable code in generate_run_target.')
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 0c53326..361e0aa 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1873,12 +1873,12 @@ class Interpreter():
raise InterpreterException('Run_target needs at least one positional argument.')
cleaned_args = []
- for i in all_args:
+ for i in mesonlib.flatten(all_args):
try:
i = i.held_object
except AttributeError:
pass
- if not isinstance(i, (str, build.BuildTarget, build.CustomTarget, dependencies.ExternalProgram)):
+ if not isinstance(i, (str, build.BuildTarget, build.CustomTarget, dependencies.ExternalProgram, mesonlib.File)):
mlog.debug('Wrong type:', str(i))
raise InterpreterException('Invalid argument to run_target.')
cleaned_args.append(i)
diff --git a/test cases/common/58 run target/meson.build b/test cases/common/58 run target/meson.build
index 0febe35..0ef1966 100644
--- a/test cases/common/58 run target/meson.build
+++ b/test cases/common/58 run target/meson.build
@@ -34,3 +34,6 @@ run_target('upload2',
python3 = find_program('python3')
run_target('py3hi',
command : [python3, '-c', 'print("I am Python3.")'])
+
+run_target('ct_in_arg',
+ command : ['echo', hex, files('helloprinter.c')])