Arjen Markus wrote:
Radu Serban wrote:



I've added this to my implementation (attached to this message). If successful, the name mangling scheme is encoded in two (cached, internal) variables: SCHEME_NO_UNDERSCORES is the mangled name of the symbol "mysub" and SCHEME_WITH_UNDERSCORES is the mangled name of the symbol "my_sub". The way I use them is by further defining two substitution variables which I use to generate a configuration header (using CONFIGURE_FILE). These variables (DEFINE_F77_FUNC and DEFINE_F77_FUNC_) contain the #define lines for two C preprocessor macros, F77_FUNC and F77_FUNC_ which can then be used in the C code. As an example, using the GNU compilers (without any of the g77 flags you mention) these two macros will be:
#define F77_FUNC(name,NAME) name ## _
#define F77_FUNC_(name,NAME) name ## __

I've tested this with the GNU compilers (with and without the flags you mentioned), as well as with PGI and Intel compilers (all under Linux). I hope it's portable but, unfortunately, I don't have a Windows machine to try it on...

Hi Radu,

I took a look at this new version of the script. It seems indeed more portable than the first version, but I must warn you that there are a few other issues on Windows that you need to take care of (there is the matter of the calling convention, indicated by the special keyword stdcall__ or the like and the positioning of the implicit string length argument). I am not sure how these can be automatically determined.

Regards,

Arjen


Hi Arjen,

I did not intend to solve all problems associated with mixing Fortran and C :-). Precisely due to portability issues, we kept the Fortran interfaces to our solvers fairly basic (e.g. we impose fixed subroutine names and therefore we do not have to deal with issues related to passing function names and/or strings between Fortran and C which are problematic on any platforms, not only Windows). As such, I'm only interested in finding the name mangling scheme which I hope to do with the script I posted previously.

Thanks,
--Radu
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to