diff options
author | Emil Styrke <emil.styrke@contextvision.se> | 2018-07-17 13:33:32 +0200 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-08-07 04:57:34 -0700 |
commit | 2e3e2abcebb14fb1175fdd8facb0524fb0df4259 (patch) | |
tree | 1e743addbb4ab983ea2f420d50b8dea0501103c5 | |
parent | 69a65006f2261953083df30d14cd67b5d8998897 (diff) | |
download | meson-2e3e2abcebb14fb1175fdd8facb0524fb0df4259.zip meson-2e3e2abcebb14fb1175fdd8facb0524fb0df4259.tar.gz meson-2e3e2abcebb14fb1175fdd8facb0524fb0df4259.tar.bz2 |
Fix @CURRENT_SOURCE_DIR@ in generator()
Fix @CURRENT_SOURCE_DIR@ pointing to the wrong directory if generator() is called from a subdir.
6 files changed, 66 insertions, 1 deletions
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index c36022f..acbb12d 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -105,7 +105,7 @@ class Vs2010Backend(backends.Backend): exe = generator.get_exe() infilelist = genlist.get_inputs() outfilelist = genlist.get_outputs() - source_dir = os.path.join(self.build_to_src, genlist.subdir) + source_dir = os.path.join(down, self.build_to_src, genlist.subdir) exe_arr = self.exe_object_to_cmd_array(exe) idgroup = ET.SubElement(parent_node, 'ItemGroup') for i in range(len(infilelist)): diff --git a/test cases/common/205 generator in subdir/com/mesonbuild/genprog.py b/test cases/common/205 generator in subdir/com/mesonbuild/genprog.py new file mode 100644 index 0000000..1e10998 --- /dev/null +++ b/test cases/common/205 generator in subdir/com/mesonbuild/genprog.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 + +import os, sys, argparse + +h_templ = '''#pragma once + +int %s(); +''' + +c_templ = '''#include"%s.h" + +int %s() { + return 0; +} +''' + +parser = argparse.ArgumentParser() +parser.add_argument('--searchdir', required=True) +parser.add_argument('--outdir', required=True) +parser.add_argument('ifiles', nargs='+') + +options = parser.parse_args() + +searchdir = options.searchdir +outdir = options.outdir +ifiles = options.ifiles + +rel_ofiles = [] + +for ifile in ifiles: + if not ifile.startswith(options.searchdir): + sys.exit('Input file %s does not start with search dir %s.' % (ifile, searchdir)) + rel_ofile = ifile[len(searchdir):] + if rel_ofile[0] == '/' or rel_ofile[0] == '\\': + rel_ofile = rel_ofile[1:] + rel_ofiles.append(os.path.splitext(rel_ofile)[0]) + +ofile_bases = [os.path.join(outdir, i) for i in rel_ofiles] + +for i, ifile_name in enumerate(ifiles): + proto_name = open(ifile_name).readline().strip() + h_out = ofile_bases[i] + '.h' + c_out = ofile_bases[i] + '.c' + os.makedirs(os.path.split(ofile_bases[i])[0], exist_ok=True) + open(h_out, 'w').write(h_templ % (proto_name)) + open(c_out, 'w').write(c_templ % (proto_name, proto_name)) diff --git a/test cases/common/205 generator in subdir/com/mesonbuild/meson.build b/test cases/common/205 generator in subdir/com/mesonbuild/meson.build new file mode 100644 index 0000000..4808743 --- /dev/null +++ b/test cases/common/205 generator in subdir/com/mesonbuild/meson.build @@ -0,0 +1,10 @@ +gprog = find_program('genprog.py') + +gen = generator(gprog, \ + output : ['@BASENAME@.c', '@BASENAME@.h'], + arguments : ['--searchdir=@CURRENT_SOURCE_DIR@', '--outdir=@BUILD_DIR@', '@INPUT@']) + +generated = gen.process('subbie.inp') + +e = executable('testprog', 'testprog.c', generated) +test('testprog', e) diff --git a/test cases/common/205 generator in subdir/com/mesonbuild/subbie.inp b/test cases/common/205 generator in subdir/com/mesonbuild/subbie.inp new file mode 100644 index 0000000..df0f4e9 --- /dev/null +++ b/test cases/common/205 generator in subdir/com/mesonbuild/subbie.inp @@ -0,0 +1 @@ +subbie diff --git a/test cases/common/205 generator in subdir/com/mesonbuild/testprog.c b/test cases/common/205 generator in subdir/com/mesonbuild/testprog.c new file mode 100644 index 0000000..58867ad --- /dev/null +++ b/test cases/common/205 generator in subdir/com/mesonbuild/testprog.c @@ -0,0 +1,5 @@ +#include"subbie.h" + +int main(int argc, char **argv) { + return subbie(); +} diff --git a/test cases/common/205 generator in subdir/meson.build b/test cases/common/205 generator in subdir/meson.build new file mode 100644 index 0000000..9b8eb7c --- /dev/null +++ b/test cases/common/205 generator in subdir/meson.build @@ -0,0 +1,3 @@ +project('generator in subdir', 'c') + +subdir('com/mesonbuild') |