aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/d/10 d cpp
diff options
context:
space:
mode:
Diffstat (limited to 'meson/test cases/d/10 d cpp')
-rw-r--r--meson/test cases/d/10 d cpp/cppmain.cpp18
-rw-r--r--meson/test cases/d/10 d cpp/dmain.d5
-rw-r--r--meson/test cases/d/10 d cpp/libfile.cpp5
-rw-r--r--meson/test cases/d/10 d cpp/libfile.d5
-rw-r--r--meson/test cases/d/10 d cpp/meson.build13
5 files changed, 46 insertions, 0 deletions
diff --git a/meson/test cases/d/10 d cpp/cppmain.cpp b/meson/test cases/d/10 d cpp/cppmain.cpp
new file mode 100644
index 000000000..ff90e3f41
--- /dev/null
+++ b/meson/test cases/d/10 d cpp/cppmain.cpp
@@ -0,0 +1,18 @@
+extern "C" int rt_init();
+extern "C" int rt_term();
+extern void print_hello(int i);
+
+int main(int, char**) {
+ // initialize D runtime
+ if (!rt_init())
+ return 1;
+
+ print_hello(1);
+
+ // terminate D runtime, each initialize call
+ // must be paired with a terminate call.
+ if (!rt_term())
+ return 1;
+
+ return 0;
+}
diff --git a/meson/test cases/d/10 d cpp/dmain.d b/meson/test cases/d/10 d cpp/dmain.d
new file mode 100644
index 000000000..bece25f6c
--- /dev/null
+++ b/meson/test cases/d/10 d cpp/dmain.d
@@ -0,0 +1,5 @@
+extern (C++) void print_hello(int i);
+
+void main() {
+ print_hello(1);
+}
diff --git a/meson/test cases/d/10 d cpp/libfile.cpp b/meson/test cases/d/10 d cpp/libfile.cpp
new file mode 100644
index 000000000..2ea67fc92
--- /dev/null
+++ b/meson/test cases/d/10 d cpp/libfile.cpp
@@ -0,0 +1,5 @@
+#include<iostream>
+
+void print_hello(int i) {
+ std::cout << "Hello. Here is a number printed with C++: " << i << ".\n";
+}
diff --git a/meson/test cases/d/10 d cpp/libfile.d b/meson/test cases/d/10 d cpp/libfile.d
new file mode 100644
index 000000000..88cb53e9b
--- /dev/null
+++ b/meson/test cases/d/10 d cpp/libfile.d
@@ -0,0 +1,5 @@
+import std.stdio;
+
+extern (C++) void print_hello(int i) {
+ writefln("Hello. Here is a number printed with D: %d", i);
+}
diff --git a/meson/test cases/d/10 d cpp/meson.build b/meson/test cases/d/10 d cpp/meson.build
new file mode 100644
index 000000000..eecb151f4
--- /dev/null
+++ b/meson/test cases/d/10 d cpp/meson.build
@@ -0,0 +1,13 @@
+project('d and c++', 'd', 'cpp')
+
+cpp = meson.get_compiler('cpp')
+
+if cpp.get_id() == 'clang'
+ error('MESON_SKIP_TEST combining Clang C++ with GDC produces broken executables.')
+endif
+
+e1 = executable('dcpp', 'dmain.d', 'libfile.cpp')
+test('dcpp', e1)
+
+e2 = executable('cppd', 'cppmain.cpp', 'libfile.d')
+test('cppd', e2)