aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-09-01 00:22:31 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-09-01 00:22:31 +0300
commit62fe99ceee1e1a68bcc0bc67361fe4ab29566ce9 (patch)
treeed7ea186f88ab0d0f07e5265d43ed47db8cf0d0e
parent4a06f6d399f31090a24e732c3e110b8d89a470f4 (diff)
parent28f60ca47404603bc8baccb9ed4c03f26df2b3ca (diff)
downloadmeson-62fe99ceee1e1a68bcc0bc67361fe4ab29566ce9.zip
meson-62fe99ceee1e1a68bcc0bc67361fe4ab29566ce9.tar.gz
meson-62fe99ceee1e1a68bcc0bc67361fe4ab29566ce9.tar.bz2
Merge pull request #250 from byon/master
Fix shared libraries for fortran
-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)