diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-02-29 20:51:25 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-02-29 20:51:25 +0200 |
commit | 2d32c39471dbb342d008a856ce006217c82e6ff0 (patch) | |
tree | 9a3782185c4c89150322870c020ac2f1e053b631 | |
parent | cb0b9b79f49b84650502bb81d671321a25109778 (diff) | |
download | meson-2d32c39471dbb342d008a856ce006217c82e6ff0.zip meson-2d32c39471dbb342d008a856ce006217c82e6ff0.tar.gz meson-2d32c39471dbb342d008a856ce006217c82e6ff0.tar.bz2 |
Handle built targets in custom rules. Closes #411.
5 files changed, 27 insertions, 0 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index d2176c7..b869008 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -389,8 +389,12 @@ class Backend(): if absolute_paths: outdir = os.path.join(self.environment.get_build_dir(), outdir) for i in target.sources: + if hasattr(i, 'held_object'): + i = i.held_object if isinstance(i, str): fname = os.path.join(self.build_to_src, target.subdir, i) + elif isinstance(i, build.BuildTarget): + fname = self.get_target_filename(i) else: fname = i.rel_to_builddir(self.build_to_src) if absolute_paths: diff --git a/test cases/common/57 custom target chain/meson.build b/test cases/common/57 custom target chain/meson.build index f53206e..286ff61 100644 --- a/test cases/common/57 custom target chain/meson.build +++ b/test cases/common/57 custom target chain/meson.build @@ -17,3 +17,5 @@ mytarget2 = custom_target('bindat2', install : true, install_dir : 'subdir' ) + +subdir('usetarget') diff --git a/test cases/common/57 custom target chain/usetarget/meson.build b/test cases/common/57 custom target chain/usetarget/meson.build new file mode 100644 index 0000000..9aece8c --- /dev/null +++ b/test cases/common/57 custom target chain/usetarget/meson.build @@ -0,0 +1,8 @@ +e = executable('myexe', 'myexe.c') +subexe = find_program('subcomp.py') + +custom_target('use_exe', + input : e, + output : 'subout.res', + command : [subexe, '@INPUT@', '@OUTPUT@'], +) diff --git a/test cases/common/57 custom target chain/usetarget/myexe.c b/test cases/common/57 custom target chain/usetarget/myexe.c new file mode 100644 index 0000000..f9874fd --- /dev/null +++ b/test cases/common/57 custom target chain/usetarget/myexe.c @@ -0,0 +1,6 @@ +#include<stdio.h> + +int main(int argc, char **argv) { + printf("I am myexe.\n"); + return 0; +} diff --git a/test cases/common/57 custom target chain/usetarget/subcomp.py b/test cases/common/57 custom target chain/usetarget/subcomp.py new file mode 100755 index 0000000..207a8ad --- /dev/null +++ b/test cases/common/57 custom target chain/usetarget/subcomp.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python3 + +import sys, os + +with open(sys.argv[1], 'rb') as ifile: + open(sys.argv[2], 'w').write('Everything ok.\n') + |