فهرست منبع

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.
Brad King 16 سال پیش
والد
کامیت
21faaa5d7f
2فایلهای تغییر یافته به همراه7 افزوده شده و 0 حذف شده
  1. 1 0
      Modules/FortranCInterface/CMakeLists.txt
  2. 6 0
      Modules/FortranCInterface/mymodule_.c

+ 1 - 0
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)

+ 6 - 0
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