aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.py1
-rw-r--r--compilers.py8
-rw-r--r--test cases/fortran/6 dynamic/dynamic.f9517
-rw-r--r--test cases/fortran/6 dynamic/main.f956
-rw-r--r--test cases/fortran/6 dynamic/meson.build4
5 files changed, 36 insertions, 0 deletions
diff --git a/build.py b/build.py
index cadfb89..f1ce15d 100644
--- a/build.py
+++ b/build.py
@@ -630,6 +630,7 @@ class SharedLibrary(BuildTarget):
self.prefix = environment.get_shared_lib_prefix()
self.suffix = environment.get_shared_lib_suffix()
self.importsuffix = environment.get_import_lib_suffix()
+ self.filename = self.prefix + self.name + '.' + self.suffix
def process_kwargs(self, kwargs, environment):
super().process_kwargs(kwargs, environment)
diff --git a/compilers.py b/compilers.py
index 37b8c09..92437e1 100644
--- a/compilers.py
+++ b/compilers.py
@@ -1260,6 +1260,14 @@ class FortranCompiler():
def get_language(self):
return self.language
+ def get_pic_args(self):
+ if self.gcc_type == GCC_MINGW:
+ return [] # On Windows gcc defaults to fpic being always on.
+ return ['-fPIC']
+
+ def get_std_shared_lib_link_args(self):
+ return ['-shared']
+
def needs_static_linker(self):
return True
diff --git a/test cases/fortran/6 dynamic/dynamic.f95 b/test cases/fortran/6 dynamic/dynamic.f95
new file mode 100644
index 0000000..e78a406
--- /dev/null
+++ b/test cases/fortran/6 dynamic/dynamic.f95
@@ -0,0 +1,17 @@
+module dynamic
+ implicit none
+
+ private
+ public :: hello
+
+ interface hello
+ module procedure say
+ end interface hello
+
+contains
+
+ subroutine say
+ print *, "Hello, hello..."
+ end subroutine say
+
+end module dynamic
diff --git a/test cases/fortran/6 dynamic/main.f95 b/test cases/fortran/6 dynamic/main.f95
new file mode 100644
index 0000000..cb3a53f
--- /dev/null
+++ b/test cases/fortran/6 dynamic/main.f95
@@ -0,0 +1,6 @@
+program main
+ use dynamic
+ implicit none
+
+ call hello()
+end program main
diff --git a/test cases/fortran/6 dynamic/meson.build b/test cases/fortran/6 dynamic/meson.build
new file mode 100644
index 0000000..53edaf6
--- /dev/null
+++ b/test cases/fortran/6 dynamic/meson.build
@@ -0,0 +1,4 @@
+project('dynamic_fortran', 'fortran')
+
+dynamic = shared_library('dynamic', 'dynamic.f95')
+executable('test_exe', 'main.f95', link_with : dynamic)