[SciPy-user] weave and compilers other than GCC 2.95?

Steve M. Robbins steven.robbins at videotron.ca
Tue Aug 27 13:53:02 CDT 2002


On Tue, Aug 27, 2002 at 12:35:18PM -0500, eric jones wrote:
> Hey Steve,
> 
> Your in new territory here.  The only compilers I have used are
> gcc-2.95.3 and MSVC.

OK.  The problem is less severe than I first feared.  I have managed
to kill most of the error messages by adding "typename" keywords,
changing templates like the following

  template <class T> bool operator==(const SeqBase<T>::iterator& left, 
				     const SeqBase<T>::iterator& right);

to

  template <class T> bool operator==(const typename SeqBase<T>::iterator& left, 
				     const typename SeqBase<T>::iterator& right);

I'm still trying to figure out what to do about
random_access_iterator, apparently a non-standard STL class that can
be replaced somehow with std::iterator.

Also: the code includes the deprecated <strstream> header.  At the
moment, this only elicits a warning that I'm ignoring.


> The second issue is that distutils doesn't automatically handle building
> C++ libraries.  Weave uses a hack that replaces gcc with g++ if gnu is
> used.

Ah, I didn't notice that.  I thought you were relying on the fact that
SGI "cc" (like gcc) will detect the language based on the input file
extension (.c or .cxx, etc).  I was actually rather surprised to learn
that SGI's compiler does that.

> g++ links in the correct libraries for cout, etc. while gcc
> doesn't.  I'm betting your hitting a similar problem.

The messages about "cout" were my own fault (blush) -- they came from
the code I was trying to weave.

> One temporary fix
> might be to try libraries=['stdc++'] as an inline() keyword argument.
> 
> >   #error directive:  This header file requires the -LANG:std option
> 
> Yikes!  This looks like something we'll just have to hard code when MIPS
> is detected.  Or maybe if we build with the MIPS c++ compiler (is it
> different than the c compiler on this platform?) this flag will
> automatically be set.  I can't imagine a C++ compiler having to have a
> flag set to use the std namespace files.

Guess again.  :-(  The MIPS C++ compiler is named "CC"; but yes, you
need -LANG:std to get something closer to current standards.  At least
with MIPSpro 7.30 compilers (which, admittedly are a few years old).


> With the change to SCXX, inline() should theoretically
> work everywhere.  blitz() on the other hand... I think that is still
> relegated to the world of gcc.

Uh, oh.  What about inline( ... type_converters = converters.blitz ...)?


-Steve



More information about the SciPy-user mailing list