aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-09-20 22:14:38 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-09-20 22:14:38 +0300
commit154dc839739909bf889b3f438f43a9ff0e3eb608 (patch)
treea1a0f96b01f31e06211accd9bfe423558fd0b83a
parent5d17e417b473a19b67176927fd0684d764bc0786 (diff)
downloadmeson-154dc839739909bf889b3f438f43a9ff0e3eb608.zip
meson-154dc839739909bf889b3f438f43a9ff0e3eb608.tar.gz
meson-154dc839739909bf889b3f438f43a9ff0e3eb608.tar.bz2
Multiple generated sources in one target now work.
-rw-r--r--ninjabackend.py30
-rw-r--r--test cases/common/65 multiple generators/data2.dat1
-rw-r--r--test cases/common/65 multiple generators/main.cpp6
-rw-r--r--test cases/common/65 multiple generators/meson.build13
-rwxr-xr-xtest cases/common/65 multiple generators/mygen.py19
-rw-r--r--test cases/common/65 multiple generators/subdir/data.dat1
-rw-r--r--test cases/common/65 multiple generators/subdir/meson.build4
7 files changed, 59 insertions, 15 deletions
diff --git a/ninjabackend.py b/ninjabackend.py
index 616041e..d9a9b5b 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -211,22 +211,22 @@ class NinjaBackend(backends.Backend):
# people generate files with weird suffixes (.inc, .fh) that they then include
# in their source files.
header_deps.append(RawFilename(src))
- break # just to cut down on indentation size
- for src in gensource.get_outfilelist():
- if self.environment.is_object(src):
- obj_list.append(os.path.join(self.get_target_dir(target), target.get_basename() + '.dir', src))
- elif not self.environment.is_header(src):
- if is_unity:
- if '/' in src:
- rel_src = src
+ else:
+ for src in gensource.get_outfilelist():
+ if self.environment.is_object(src):
+ obj_list.append(os.path.join(self.get_target_dir(target), target.get_basename() + '.dir', src))
+ elif not self.environment.is_header(src):
+ if is_unity:
+ if '/' in src:
+ rel_src = src
+ else:
+ rel_src = os.path.join(self.get_target_private_dir(target), src)
+ unity_deps.append(rel_src)
+ abs_src = os.path.join(self.environment.get_build_dir(), rel_src)
+ unity_src.append(abs_src)
else:
- rel_src = os.path.join(self.get_target_private_dir(target), src)
- unity_deps.append(rel_src)
- abs_src = os.path.join(self.environment.get_build_dir(), rel_src)
- unity_src.append(abs_src)
- else:
- obj_list.append(self.generate_single_compile(target, outfile, src, True,
- header_deps=header_deps))
+ obj_list.append(self.generate_single_compile(target, outfile, src, True,
+ header_deps=header_deps))
src_list = []
for src in gen_src_deps:
src_list.append(src)
diff --git a/test cases/common/65 multiple generators/data2.dat b/test cases/common/65 multiple generators/data2.dat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/test cases/common/65 multiple generators/data2.dat
@@ -0,0 +1 @@
+2
diff --git a/test cases/common/65 multiple generators/main.cpp b/test cases/common/65 multiple generators/main.cpp
new file mode 100644
index 0000000..5277063
--- /dev/null
+++ b/test cases/common/65 multiple generators/main.cpp
@@ -0,0 +1,6 @@
+#include"source1.h"
+#include"source2.h"
+
+int main(int argc, char **argv) {
+ return func1() + func2();
+}
diff --git a/test cases/common/65 multiple generators/meson.build b/test cases/common/65 multiple generators/meson.build
new file mode 100644
index 0000000..969610b
--- /dev/null
+++ b/test cases/common/65 multiple generators/meson.build
@@ -0,0 +1,13 @@
+project('trickier generator', 'cpp')
+
+comp = find_program('mygen.py')
+subdir('subdir')
+
+generated2 = custom_target('generated2',
+output : ['source2.h', 'source2.cpp'],
+input : 'data2.dat',
+command : [comp, '@INPUT0@', meson.current_build_dir()])
+
+exe = executable('prog', 'main.cpp', generated, generated2,
+include_directories : include_directories('subdir', '.'))
+test('generated test', exe)
diff --git a/test cases/common/65 multiple generators/mygen.py b/test cases/common/65 multiple generators/mygen.py
new file mode 100755
index 0000000..06fe032
--- /dev/null
+++ b/test cases/common/65 multiple generators/mygen.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python3
+
+import sys, os
+
+if len(sys.argv) != 3:
+ print("You is fail.")
+ sys.exit(1)
+
+val = open(sys.argv[1]).read().strip()
+outdir = sys.argv[2]
+
+outhdr = os.path.join(outdir, 'source%s.h' % val)
+outsrc = os.path.join(outdir, 'source%s.cpp' % val)
+
+open(outhdr, 'w').write('int func%s();\n' % val)
+open(outsrc, 'w').write('''int func%s() {
+ return 0;
+}
+''' % val) \ No newline at end of file
diff --git a/test cases/common/65 multiple generators/subdir/data.dat b/test cases/common/65 multiple generators/subdir/data.dat
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/test cases/common/65 multiple generators/subdir/data.dat
@@ -0,0 +1 @@
+1
diff --git a/test cases/common/65 multiple generators/subdir/meson.build b/test cases/common/65 multiple generators/subdir/meson.build
new file mode 100644
index 0000000..49c6248
--- /dev/null
+++ b/test cases/common/65 multiple generators/subdir/meson.build
@@ -0,0 +1,4 @@
+generated = custom_target('generated',
+output : ['source1.h', 'source1.cpp'],
+input : 'data.dat',
+command : [comp, '@INPUT0@', meson.current_build_dir()])