aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/common/126 generated llvm ir
diff options
context:
space:
mode:
Diffstat (limited to 'meson/test cases/common/126 generated llvm ir')
-rw-r--r--meson/test cases/common/126 generated llvm ir/copyfile.py6
-rw-r--r--meson/test cases/common/126 generated llvm ir/main.c13
-rw-r--r--meson/test cases/common/126 generated llvm ir/meson.build28
-rw-r--r--meson/test cases/common/126 generated llvm ir/square.ll.in4
4 files changed, 51 insertions, 0 deletions
diff --git a/meson/test cases/common/126 generated llvm ir/copyfile.py b/meson/test cases/common/126 generated llvm ir/copyfile.py
new file mode 100644
index 000000000..ff42ac359
--- /dev/null
+++ b/meson/test cases/common/126 generated llvm ir/copyfile.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+import sys
+import shutil
+
+shutil.copyfile(sys.argv[1], sys.argv[2])
diff --git a/meson/test cases/common/126 generated llvm ir/main.c b/meson/test cases/common/126 generated llvm ir/main.c
new file mode 100644
index 000000000..35e8ed623
--- /dev/null
+++ b/meson/test cases/common/126 generated llvm ir/main.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+unsigned square_unsigned (unsigned a);
+
+int main(void)
+{
+ unsigned int ret = square_unsigned (2);
+ if (ret != 4) {
+ printf("Got %u instead of 4\n", ret);
+ return 1;
+ }
+ return 0;
+}
diff --git a/meson/test cases/common/126 generated llvm ir/meson.build b/meson/test cases/common/126 generated llvm ir/meson.build
new file mode 100644
index 000000000..f10754a09
--- /dev/null
+++ b/meson/test cases/common/126 generated llvm ir/meson.build
@@ -0,0 +1,28 @@
+project('generated llvm ir', 'c')
+
+if meson.get_compiler('c').get_id() != 'clang'
+ error('MESON_SKIP_TEST: LLVM IR files can only be built with clang')
+endif
+
+if meson.backend() == 'xcode'
+ error('MESON_SKIP_TEST: LLMV ir not supported with the Xcode backend. Patches welcome.')
+endif
+
+copy = find_program('copyfile.py')
+
+copygen = generator(copy,
+ arguments : ['@INPUT@', '@OUTPUT@'],
+ output : '@BASENAME@')
+
+l = library('square-gen', copygen.process('square.ll.in'))
+
+test('square-gen-test', executable('square-gen-test', 'main.c', link_with : l))
+
+copyct = custom_target('square',
+ input : 'square.ll.in',
+ output : 'square.ll',
+ command : [copy, '@INPUT@', '@OUTPUT@'])
+
+l = library('square-ct', copyct)
+
+test('square-ct-test', executable('square-ct-test', 'main.c', link_with : l))
diff --git a/meson/test cases/common/126 generated llvm ir/square.ll.in b/meson/test cases/common/126 generated llvm ir/square.ll.in
new file mode 100644
index 000000000..7c321aa82
--- /dev/null
+++ b/meson/test cases/common/126 generated llvm ir/square.ll.in
@@ -0,0 +1,4 @@
+define i32 @square_unsigned(i32 %a) {
+ %1 = mul i32 %a, %a
+ ret i32 %1
+}