From 28f60ca47404603bc8baccb9ed4c03f26df2b3ca Mon Sep 17 00:00:00 2001 From: Marko Raatikainen Date: Sun, 30 Aug 2015 17:13:48 +0300 Subject: [PATCH] Fix shared libraries for fortran --- build.py | 1 + compilers.py | 8 ++++++++ test cases/fortran/6 dynamic/dynamic.f95 | 17 +++++++++++++++++ test cases/fortran/6 dynamic/main.f95 | 6 ++++++ test cases/fortran/6 dynamic/meson.build | 4 ++++ 5 files changed, 36 insertions(+) create mode 100644 test cases/fortran/6 dynamic/dynamic.f95 create mode 100644 test cases/fortran/6 dynamic/main.f95 create mode 100644 test cases/fortran/6 dynamic/meson.build diff --git a/build.py b/build.py index cadfb8952..f1ce15df5 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 37b8c09f0..92437e12c 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 000000000..e78a40690 --- /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 000000000..cb3a53fe6 --- /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 000000000..53edaf663 --- /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)