aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-02-29 20:51:25 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-02-29 20:51:25 +0200
commit2d32c39471dbb342d008a856ce006217c82e6ff0 (patch)
tree9a3782185c4c89150322870c020ac2f1e053b631
parentcb0b9b79f49b84650502bb81d671321a25109778 (diff)
downloadmeson-2d32c39471dbb342d008a856ce006217c82e6ff0.zip
meson-2d32c39471dbb342d008a856ce006217c82e6ff0.tar.gz
meson-2d32c39471dbb342d008a856ce006217c82e6ff0.tar.bz2
Handle built targets in custom rules. Closes #411.
-rw-r--r--mesonbuild/backend/backends.py4
-rw-r--r--test cases/common/57 custom target chain/meson.build2
-rw-r--r--test cases/common/57 custom target chain/usetarget/meson.build8
-rw-r--r--test cases/common/57 custom target chain/usetarget/myexe.c6
-rwxr-xr-xtest cases/common/57 custom target chain/usetarget/subcomp.py7
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')
+