summaryrefslogtreecommitdiffstats
path: root/test cases/fortran/9 cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-29 04:41:38 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-29 04:41:38 +0000
commit7b6e527f440cd7e6f8be2b07cee320ee6ca18786 (patch)
tree4a2738d69fa2814659fdadddf5826282e73d81f4 /test cases/fortran/9 cpp
parentInitial commit. (diff)
downloadmeson-7b6e527f440cd7e6f8be2b07cee320ee6ca18786.tar.xz
meson-7b6e527f440cd7e6f8be2b07cee320ee6ca18786.zip
Adding upstream version 1.0.1.upstream/1.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test cases/fortran/9 cpp')
-rw-r--r--test cases/fortran/9 cpp/fortran.f11
-rw-r--r--test cases/fortran/9 cpp/main.c8
-rw-r--r--test cases/fortran/9 cpp/main.cpp8
-rw-r--r--test cases/fortran/9 cpp/meson.build29
4 files changed, 56 insertions, 0 deletions
diff --git a/test cases/fortran/9 cpp/fortran.f b/test cases/fortran/9 cpp/fortran.f
new file mode 100644
index 0000000..255872c
--- /dev/null
+++ b/test cases/fortran/9 cpp/fortran.f
@@ -0,0 +1,11 @@
+ function fortran() bind(C)
+ use, intrinsic :: iso_c_binding, only: dp=>c_double
+ implicit none
+
+ real(dp) :: r, fortran
+
+ call random_number(r)
+
+ fortran = 2._dp**r
+
+ end function fortran
diff --git a/test cases/fortran/9 cpp/main.c b/test cases/fortran/9 cpp/main.c
new file mode 100644
index 0000000..c1750ad
--- /dev/null
+++ b/test cases/fortran/9 cpp/main.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+double fortran(void);
+
+int main(void) {
+ printf("FORTRAN gave us this number: %lf.\n", fortran());
+ return 0;
+}
diff --git a/test cases/fortran/9 cpp/main.cpp b/test cases/fortran/9 cpp/main.cpp
new file mode 100644
index 0000000..534a23a
--- /dev/null
+++ b/test cases/fortran/9 cpp/main.cpp
@@ -0,0 +1,8 @@
+#include <iostream>
+
+extern "C" double fortran();
+
+int main(void) {
+ std::cout << "FORTRAN gave us this number: " << fortran() << '\n';
+ return 0;
+}
diff --git a/test cases/fortran/9 cpp/meson.build b/test cases/fortran/9 cpp/meson.build
new file mode 100644
index 0000000..2afa864
--- /dev/null
+++ b/test cases/fortran/9 cpp/meson.build
@@ -0,0 +1,29 @@
+project('C, C++ and Fortran', 'c', 'cpp', 'fortran')
+
+cpp = meson.get_compiler('cpp')
+fc = meson.get_compiler('fortran')
+
+if build_machine.system() == 'windows' and fc.get_id() == 'gcc' and cpp.get_id() != 'gcc'
+ error('MESON_SKIP_TEST mixing gfortran with non-GNU C++ does not work.')
+endif
+
+link_with = []
+if fc.get_id() == 'intel'
+ link_with += fc.find_library('ifport')
+endif
+
+e = executable(
+ 'cfort',
+ ['main.c', 'fortran.f'],
+ dependencies : link_with,
+)
+
+test('C and Fortran', e)
+
+e2 = executable(
+ 'cppfort',
+ ['main.cpp', 'fortran.f'],
+ dependencies : link_with,
+)
+
+test('C++ and Fortran', e2)