diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-09-20 22:14:38 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-09-20 22:14:38 +0300 |
commit | 154dc839739909bf889b3f438f43a9ff0e3eb608 (patch) | |
tree | a1a0f96b01f31e06211accd9bfe423558fd0b83a | |
parent | 5d17e417b473a19b67176927fd0684d764bc0786 (diff) | |
download | meson-154dc839739909bf889b3f438f43a9ff0e3eb608.zip meson-154dc839739909bf889b3f438f43a9ff0e3eb608.tar.gz meson-154dc839739909bf889b3f438f43a9ff0e3eb608.tar.bz2 |
Multiple generated sources in one target now work.
-rw-r--r-- | ninjabackend.py | 30 | ||||
-rw-r--r-- | test cases/common/65 multiple generators/data2.dat | 1 | ||||
-rw-r--r-- | test cases/common/65 multiple generators/main.cpp | 6 | ||||
-rw-r--r-- | test cases/common/65 multiple generators/meson.build | 13 | ||||
-rwxr-xr-x | test cases/common/65 multiple generators/mygen.py | 19 | ||||
-rw-r--r-- | test cases/common/65 multiple generators/subdir/data.dat | 1 | ||||
-rw-r--r-- | test cases/common/65 multiple generators/subdir/meson.build | 4 |
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()]) |