On Fri, Sep 11, 2009 at 1:36 PM, Dag Sverre Seljebotn <[email protected]> wrote: >> On Fri, Sep 11, 2009 at 12:26 PM, Dag Sverre Seljebotn >> <[email protected]> wrote: >>> Hi Darren, >>> >>>> Hello, >>>> >>>> I am just learning cython, please bear with me. This is maybe a common >>>> question, but I didn't recognize it in the documentation or the FAQs. >>>> How do you make cython definitions available to external C code? For >>>> example, converting some of numpy's code in numpy/core/src/multiarray >>>> to cython without affecting the C API? >>> >>> Doing just this is something I've been eager to try myself, please don't >>> hesitate to ask any questions you might have in the process. >>> >>> I hope it's OK that I write down some thoughts I have about this, even >>> if >>> they're not really related to your question. >>> >>> One thing that complicates this process is that NumPy has a requirement >>> that both modes of building the multiarray module works: >>> - Building all C files seperately, then linking >>> -- But this won't work with Cython out of the box because the module >>> initialization code won't get called, so that globals etc. are not >>> initialized properly. >>> - Including all C files in a single master C file, then compile only >>> that >>> one file >>> -- This won't work with Cython as it inserts module initialization code >>> which will conflict with the module initialization code already present >>> in multiarray. >> >> Where can I learn more about these requirements? > > It's just how the build works, there's two seperate ways of building > things; one "old" and one new which David introduced recently. I asked > whether the old one would be dropped, but it appears not: > > http://thread.gmane.org/gmane.comp.python.numeric.general/32385 > > I'm not sure if this is all that well documented anywhere, I think the > information has to be extracted on the mailing lists. Please ask again > whenever you're stuck. > > If you can get Cython code into the multiarray module using any of the > build modes it would be a great first step -- I don't expect it to be easy > (because Cython is made for writing entire modules, not for mixing with > other C source also making up the module), but I think it is doable.
So let me see if I understood you: Cython is not currently designed to let you build a module up from several submodule sources, be they C or Cython, because it will not expose the symbols in those submodules. Isn't it possible to make these available by treating them as external C sources, using the "cdef extern from "spam.h":" discussed at http://docs.cython.org/docs/external_C_code.html#referencing-c-header-files ? Although I am very interested in diving into cython, if it is not currently a good fit for helping with the numpy py3 transition then I should probably focus on getting up to speed on what needs to be done with the existing numpy C code. Darren _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
