From 4f4cdee6876148b14a430e5886fec45299bb0573 Mon Sep 17 00:00:00 2001 From: Niklas Claesson Date: Tue, 1 May 2018 13:51:55 +0200 Subject: Allow custom_target do depend on indexed output of custom_target Fixes: #3494 --- mesonbuild/backend/backends.py | 2 +- mesonbuild/build.py | 2 +- test cases/common/161 index customtarget/check_args.py | 18 ++++++++++++++++++ test cases/common/161 index customtarget/meson.build | 7 +++++++ 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 test cases/common/161 index customtarget/check_args.py diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 2fd028d..ed7c118 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -764,7 +764,7 @@ class Backend: fname = [os.path.join(self.build_to_src, target.subdir, i)] elif isinstance(i, build.BuildTarget): fname = [self.get_target_filename(i)] - elif isinstance(i, build.CustomTarget): + elif isinstance(i, (build.CustomTarget, build.CustomTargetIndex)): fname = [os.path.join(self.get_target_dir(i), p) for p in i.get_outputs()] elif isinstance(i, build.GeneratedList): fname = [os.path.join(self.get_target_private_dir(target), p) for p in i.get_outputs()] diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 352f857..3d531d1 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1974,7 +1974,7 @@ def get_sources_string_names(sources): s = s.held_object if isinstance(s, str): names.append(s) - elif isinstance(s, (BuildTarget, CustomTarget, GeneratedList)): + elif isinstance(s, (BuildTarget, CustomTarget, CustomTargetIndex, GeneratedList)): names += s.get_outputs() elif isinstance(s, File): names.append(s.fname) diff --git a/test cases/common/161 index customtarget/check_args.py b/test cases/common/161 index customtarget/check_args.py new file mode 100644 index 0000000..8663a6f --- /dev/null +++ b/test cases/common/161 index customtarget/check_args.py @@ -0,0 +1,18 @@ +#!python3 + +import sys +from pathlib import Path + +def main(): + if len(sys.argv) != 2: + print(sys.argv) + return 1 + if sys.argv[1] != 'gen.c': + print(sys.argv) + return 2 + Path('foo').touch() + + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/test cases/common/161 index customtarget/meson.build b/test cases/common/161 index customtarget/meson.build index 11cb214..27d28b5 100644 --- a/test cases/common/161 index customtarget/meson.build +++ b/test cases/common/161 index customtarget/meson.build @@ -29,4 +29,11 @@ lib = static_library( ['lib.c', gen[1]], ) +custom_target( + 'foo', + input: gen[0], + output: 'foo', + command: [find_program('check_args.py'), '@INPUT@'], +) + subdir('subdir') -- cgit v1.1