This has been raised earlier, but I don't think there was such a demonstrative use-case as what I have now.

Fwrap is suppose to be able to wrap Fortran "modules", which is essentially a namespace mechanism. It makes sense to convert the namespace to Python by creating one Cython pyx file per Fortran module.

However, if you are wrapping a Fortran library this way, you suddenly have lots of opportunity to mess up the build:

- If you build the Fortran code as a static library (rather common...), then each pyx file will have their own copy. This will link successfully but likely have a rather poor effect.

- If you link each Cython file with only the corresponding Fortran file, things won't work (likely to get missing symbols from cross-module calls Fortran-side).

Yes, linking each Cython file to the same shared Fortran library should work. Still, this seems dangerous.

Options:
a) Simply make sure to link with shared versions of Fortran libraries ("this is a documentation problem")

b) Use some other namespace mechanism in the same pyx (classes with static methods...)

c) Somehow provide more than one module in the same compilation unit. Again, this requires the build to work correctly, but seems less dangerous, and also has the advantage of *allowing* static linking of the Fortran library, if one wants to.

But is something like this possible? Could one implement

cython -o assembly.c file1.pyx file2.pyx file3.pyx

...where assembly.so would contain three Python modules? (initfile1, initfile2, and so on...)

Dag Sverre
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to