Hi,

I just found this thread which is a couple of months old.

I would like to use scons with cython and C++ and the email below
indicates that this is possible.
Has there been any progress on this? Where can I find an example how
to specify C++ as the language in scons?

Thanks,
  Kilian

On Wed, Oct 21, 2009 at 1:56 AM, Dag Sverre Seljebotn
<[email protected]> wrote:
> OK, as requested I've uploaded the scons scripts I use. They're mostly
> taken from David Cournapeau's numscons, but works with normal scons.
> I'll start with a small user guide and then go to the TODO-list:
>
> 1) Copy Tools/site_scons to your project dir (sits in cython-devel hg trunk)
> 2) Make SConstruct (not the nicest example, but...):
>
> env = Environment(PYEXT_USE_DISTUTILS=True)
> # The above flag makes Python extensions look up compiler flags and
> include paths etc. from distutils)
> env.Tool("pyext")
> env.Tool("cython")
> env.Append(PYEXTINCPATH=[numpy.get_include()])
> # Override location of Cython and set some flags
> env.Replace(CYTHON="python /uio/arkimedes/s07/dagss/cython/devel/cython.py",
>            CYTHONFLAGS=['-a', '-I/uio/arkimedes/s07/dagss/cmb/cmblib'])
>
> # Specify an extension to be compiled
> env.PythonExtension('mapdatautils', ['mapdatautils.pyx'])
>
> # A more complicated example linking in Fortran code and libraries using
> ifort.
> # ifort must then be used to finally link the extension...
> env2 = env.Environment(F90="ifort")
> # Also omit -O2 and add Cython refnanny. This is hacky, see TODO.
> env2.Replace(PYEXTCFLAGS=['-fno-strict-aliasing', '-DNDEBUG', '-Wall',
>                         '-fwrapv', '-g', '-Wstrict-prototypes',
> '-DCYTHON_REFNANNY'],
> objs += env2.SharedObject(['comp_normalised_Plm.f90'])
> objs += env2.PythonObject(['healpix.pyx']) # note the use of PythonObject
>
> env2.PythonExtension('healpix', objs,
>                    LIBS=['healpix', 'cfitsio'],
>                    PYEXTLINKFLAGS=['-shared', '-openmp'],
>                    PYEXTLINK='$F90')
>
>
> OK, on to the TODO-list:
>  - Currently the choice for extension module compilation is between
> PYEXT_USE_DISTUTILS and a set of sensible defaults. Instead I think one
> should be given the choice of a PYTHON to use, and then launch that
> PYTHON executable to fetch distutils information.
>  - It should be possible to avoid the replacement of PYEXTCFLAGS above,
> perhaps by seperating between optional (-O2) and non-optional
> (-fno-strict-aliasing) flags and put them in seperate vars?
>  - The support for C++-generated Cython code is too weak (one has to
> specify it in two seperate vars...not shown above)
>  - Dependency tracking (none at all for pyx files currently)
>  - I'm uncertain about having to specify PYEXT_USE_DISTUTILS (or, in
> time, PYTHON) prior to loading the pyext tool...is this normal? Or
> should the distutils settings be looked up at compilation time rather
> than configuration time? (But then one wouldn't be able to dynamically
> modify e.g. PYEXTCFLAGS, only "leave it unset to be filled in"...).
>
> Help and input appreciated, I know way too little scons to pull this off
> the right way! But it does what I needed to for, and is already a lot
> better than jumping between my shell scripts, makefiles and setup.py's...
>
> Dag Sverre
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to