aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/common/57 custom header generator
diff options
context:
space:
mode:
Diffstat (limited to 'meson/test cases/common/57 custom header generator')
-rw-r--r--meson/test cases/common/57 custom header generator/input.def1
-rw-r--r--meson/test cases/common/57 custom header generator/makeheader.py12
-rw-r--r--meson/test cases/common/57 custom header generator/meson.build21
-rw-r--r--meson/test cases/common/57 custom header generator/prog.c5
-rw-r--r--meson/test cases/common/57 custom header generator/somefile.txt0
5 files changed, 39 insertions, 0 deletions
diff --git a/meson/test cases/common/57 custom header generator/input.def b/meson/test cases/common/57 custom header generator/input.def
new file mode 100644
index 000000000..573541ac9
--- /dev/null
+++ b/meson/test cases/common/57 custom header generator/input.def
@@ -0,0 +1 @@
+0
diff --git a/meson/test cases/common/57 custom header generator/makeheader.py b/meson/test cases/common/57 custom header generator/makeheader.py
new file mode 100644
index 000000000..f15683447
--- /dev/null
+++ b/meson/test cases/common/57 custom header generator/makeheader.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python3
+
+# NOTE: this file does not have the executable bit set. This tests that
+# Meson can automatically parse shebang lines.
+
+import sys
+
+template = '#define RET_VAL %s\n'
+with open(sys.argv[1]) as f:
+ output = template % (f.readline().strip(), )
+with open(sys.argv[2], 'w') as f:
+ f.write(output)
diff --git a/meson/test cases/common/57 custom header generator/meson.build b/meson/test cases/common/57 custom header generator/meson.build
new file mode 100644
index 000000000..d43915a3c
--- /dev/null
+++ b/meson/test cases/common/57 custom header generator/meson.build
@@ -0,0 +1,21 @@
+project('custom header generator', 'c')
+
+cc_id = meson.get_compiler('c').get_id()
+cc_ver = meson.get_compiler('c').version()
+
+if cc_id == 'intel' or (cc_id == 'lcc' and cc_ver.version_compare('<=1.23.08'))
+ # ICC and LCC <= 1.23.08 do not escape spaces in paths in the dependency file, so Ninja
+ # (correctly) thinks that the rule has multiple outputs and errors out:
+ # 'depfile has multiple output paths'
+ error('MESON_SKIP_TEST: Skipping test because your compiler is known to generate broken dependency files')
+endif
+
+gen = find_program('makeheader.py')
+
+generated_h = custom_target('makeheader.py',
+ output : 'myheader.lh', # Suffix not .h to ensure this works with custom suffixes, too.
+ input : 'input.def',
+ command : [gen, '@INPUT0@', '@OUTPUT0@', files('somefile.txt')])
+
+prog = executable('prog', 'prog.c', generated_h)
+test('gentest', prog)
diff --git a/meson/test cases/common/57 custom header generator/prog.c b/meson/test cases/common/57 custom header generator/prog.c
new file mode 100644
index 000000000..acd0ff79b
--- /dev/null
+++ b/meson/test cases/common/57 custom header generator/prog.c
@@ -0,0 +1,5 @@
+#include"myheader.lh"
+
+int main(void) {
+ return RET_VAL;
+}
diff --git a/meson/test cases/common/57 custom header generator/somefile.txt b/meson/test cases/common/57 custom header generator/somefile.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/meson/test cases/common/57 custom header generator/somefile.txt