diff options
author | 2023-10-10 14:33:42 +0000 | |
---|---|---|
committer | 2023-10-10 14:33:42 +0000 | |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/d/10 d cpp | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/d/10 d cpp')
-rw-r--r-- | meson/test cases/d/10 d cpp/cppmain.cpp | 18 | ||||
-rw-r--r-- | meson/test cases/d/10 d cpp/dmain.d | 5 | ||||
-rw-r--r-- | meson/test cases/d/10 d cpp/libfile.cpp | 5 | ||||
-rw-r--r-- | meson/test cases/d/10 d cpp/libfile.d | 5 | ||||
-rw-r--r-- | meson/test cases/d/10 d cpp/meson.build | 13 |
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) |