Radu Serban wrote:


Hi Arjen,

That's not what I want for several reasons:
1) I really think this is something that the build system should take care of. I intend to provide cmake only as an alternative to autotools and determining the Fortran name mangling scheme with the later is no problem.

I agree that ideally the build system should take responsibility.

2) A typical Fortran-C interface library (and we provide such libraries for 3 different solvers) contains around 30 different functions which would then require 180 wrappers (for all combinations lower/upper case and none/one/two underscores)! A nightmare of (unnecessary) code duplication.

Not necessarily:
You can put the actual wrapper functions in a separate file and include it several
times, like this:

#define suba SUBA
#include "wrappers.h"
#define suba SUBA_
#include "wrappers.h"
#define suba SUBA__
#include "wrappers.h"
...

Maybe not the most elegant way to solve it, but somewhere you need
the six combinations of case/appended underscores.

3) We distribute our solvers open source and we'd like to keep the sources as clean and readable as possible.

The above seems relatively clean to me, if not very elegant.


In any case, I think I have a solution. I seems to work, but then I've only tried it on my Linux box. It's probably not the cleanest implementation (I've only started using cmake very recently). I copied the relevant portion of my CMakeLists.txt below. I'd appreciate any comments and suggestions, both on whether it can be simplified/cleaned-up and also on whether it's portable.

If this is indeed a useable solution, then there is no need for mine of course. Perhaps this functionality should be included in the various Fortran modules - you are certainly
not the only one facing this problem.

Regards,

Arjen


_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to