From 21faaa5d7f9e0e34df78bbfd54217ac45b6c98ce Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 22 Jan 2010 14:15:47 -0500 Subject: FortranCInterface: Fix PathScale detection PathScale Fortran mangles module symbols as "MYSUB.in.MYMODULE" and also requires "mymodule_" when the module is imported. We cannot provide the symbol with ".in." mangling so we should not provide "mymodule_" because it would duplicate the one in the Fortran-provided object file. --- Modules/FortranCInterface/CMakeLists.txt | 1 + Modules/FortranCInterface/mymodule_.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/Modules/FortranCInterface/CMakeLists.txt b/Modules/FortranCInterface/CMakeLists.txt index d014d9a..18014af 100644 --- a/Modules/FortranCInterface/CMakeLists.txt +++ b/Modules/FortranCInterface/CMakeLists.txt @@ -56,6 +56,7 @@ list(REMOVE_DUPLICATES module_symbols) # Note that some compiler manglings cannot be invoked from C: # MIPSpro uses "MY_SUB.in.MY_MODULE" # SunPro uses "my_module.my_sub_" +# PathScale uses "MY_SUB.in.MY_MODULE" # Add module symbols only with Fortran90. if(CMAKE_Fortran_COMPILER_SUPPORTS_F90) diff --git a/Modules/FortranCInterface/mymodule_.c b/Modules/FortranCInterface/mymodule_.c index a7152af..b5feda6 100644 --- a/Modules/FortranCInterface/mymodule_.c +++ b/Modules/FortranCInterface/mymodule_.c @@ -1,2 +1,8 @@ +#if defined(__PATHSCALE__) +/* PathScale Fortran wants mymodule_ when calling any mymodule symbol, + but module symbols use '.in.' so we cannot provide them anyway. */ +void pathscale_mymodule_(void) {} +#else /* PGI Fortran wants mymodule_ when calling any mymodule symbol. */ void mymodule_(void) {} +#endif -- cgit v0.12