summaryrefslogtreecommitdiffstats
path: root/test cases/common/90 gen extra
diff options
context:
space:
mode:
Diffstat (limited to 'test cases/common/90 gen extra')
-rw-r--r--test cases/common/90 gen extra/meson.build40
-rw-r--r--test cases/common/90 gen extra/name.dat1
-rw-r--r--test cases/common/90 gen extra/name.l3
-rw-r--r--test cases/common/90 gen extra/plain.c5
-rwxr-xr-xtest cases/common/90 gen extra/srcgen.py27
-rw-r--r--test cases/common/90 gen extra/srcgen2.py32
-rw-r--r--test cases/common/90 gen extra/srcgen3.py15
-rw-r--r--test cases/common/90 gen extra/upper.c5
8 files changed, 128 insertions, 0 deletions
diff --git a/test cases/common/90 gen extra/meson.build b/test cases/common/90 gen extra/meson.build
new file mode 100644
index 0000000..cbbdceb
--- /dev/null
+++ b/test cases/common/90 gen extra/meson.build
@@ -0,0 +1,40 @@
+project('extra args in gen', 'c')
+
+prog = find_program('srcgen.py')
+
+gen = generator(prog,
+ output : '@BASENAME@.c',
+ arguments : ['--input=@INPUT@', '--output=@OUTPUT@', '@EXTRA_ARGS@'])
+
+g1 = gen.process('name.dat')
+g2 = gen.process('name.dat', extra_args: '--upper')
+
+test('basic', executable('basic', 'plain.c', g1))
+test('upper', executable('upper', 'upper.c', g2))
+
+prog2 = find_program('srcgen2.py')
+basename_gen = generator(prog2,
+ output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
+ arguments : ['@BUILD_DIR@', '@BASENAME@', '@INPUT@'])
+
+basename_src = basename_gen.process('name.l')
+
+test('basename', executable('basename', basename_src))
+
+plainname_gen = generator(prog2,
+ output : ['@PLAINNAME@.tab.c', '@PLAINNAME@.tab.h'],
+ arguments : ['@BUILD_DIR@', '@PLAINNAME@', '@INPUT@'])
+
+plainname_src = plainname_gen.process('name.l')
+
+test('plainname', executable('plainname', plainname_src))
+
+prog3 = find_program('srcgen3.py')
+capture_gen = generator(prog3,
+ output : ['@BASENAME@.yy.c'],
+ arguments : ['@INPUT@'],
+ capture : true)
+
+capture_src = capture_gen.process('name.l')
+
+test('capture', executable('capture', capture_src))
diff --git a/test cases/common/90 gen extra/name.dat b/test cases/common/90 gen extra/name.dat
new file mode 100644
index 0000000..caf5b1c
--- /dev/null
+++ b/test cases/common/90 gen extra/name.dat
@@ -0,0 +1 @@
+bob_mcbob
diff --git a/test cases/common/90 gen extra/name.l b/test cases/common/90 gen extra/name.l
new file mode 100644
index 0000000..c4ba277
--- /dev/null
+++ b/test cases/common/90 gen extra/name.l
@@ -0,0 +1,3 @@
+int main(void) {
+return 0;
+}
diff --git a/test cases/common/90 gen extra/plain.c b/test cases/common/90 gen extra/plain.c
new file mode 100644
index 0000000..c068a02
--- /dev/null
+++ b/test cases/common/90 gen extra/plain.c
@@ -0,0 +1,5 @@
+int bob_mcbob(void);
+
+int main(void) {
+ return bob_mcbob();
+}
diff --git a/test cases/common/90 gen extra/srcgen.py b/test cases/common/90 gen extra/srcgen.py
new file mode 100755
index 0000000..c64f540
--- /dev/null
+++ b/test cases/common/90 gen extra/srcgen.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+import sys
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--input', dest='input',
+ help='the input file')
+parser.add_argument('--output', dest='output',
+ help='the output file')
+parser.add_argument('--upper', dest='upper', action='store_true', default=False,
+ help='Convert to upper case.')
+
+c_templ = '''int %s(void) {
+ return 0;
+}
+'''
+
+options = parser.parse_args(sys.argv[1:])
+
+with open(options.input) as f:
+ funcname = f.readline().strip()
+if options.upper:
+ funcname = funcname.upper()
+
+with open(options.output, 'w') as f:
+ f.write(c_templ % funcname)
diff --git a/test cases/common/90 gen extra/srcgen2.py b/test cases/common/90 gen extra/srcgen2.py
new file mode 100644
index 0000000..9cdf12d
--- /dev/null
+++ b/test cases/common/90 gen extra/srcgen2.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('target_dir',
+ help='the target dir')
+parser.add_argument('stem',
+ help='the stem')
+parser.add_argument('input',
+ help='the input file')
+
+options = parser.parse_args(sys.argv[1:])
+
+with open(options.input) as f:
+ content = f.read()
+
+
+output_c = os.path.join(options.target_dir, options.stem + ".tab.c")
+with open(output_c, 'w') as f:
+ f.write(content)
+
+
+output_h = os.path.join(options.target_dir, options.stem + ".tab.h")
+h_content = '''#pragma once
+
+int myfun(void);
+'''
+with open(output_h, 'w') as f:
+ f.write(h_content)
diff --git a/test cases/common/90 gen extra/srcgen3.py b/test cases/common/90 gen extra/srcgen3.py
new file mode 100644
index 0000000..b737114
--- /dev/null
+++ b/test cases/common/90 gen extra/srcgen3.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+
+import sys
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('input',
+ help='the input file')
+
+options = parser.parse_args(sys.argv[1:])
+
+with open(options.input) as f:
+ content = f.read().strip()
+
+print(content)
diff --git a/test cases/common/90 gen extra/upper.c b/test cases/common/90 gen extra/upper.c
new file mode 100644
index 0000000..82c3252
--- /dev/null
+++ b/test cases/common/90 gen extra/upper.c
@@ -0,0 +1,5 @@
+int BOB_MCBOB(void);
+
+int main(void) {
+ return BOB_MCBOB();
+}