[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: compile on Cray/ nonGNUcompiler

From: Mumit Khan
Subject: Re: compile on Cray/ nonGNUcompiler
Date: Tue, 1 Feb 2000 12:08:44 -0600 (CST)

On Mon, 31 Jan 2000, John W. Eaton wrote:

> When I started working on Octave, there were no ANSI/ISO standard C++
> compilers, or even any ANSI/ISO standard.

And even today there's not a single compiler that implements it (unless
you believe in whatever marketing says ;-)

> I'm willing to work toward making Octave more compliant with the
> current standard(s), but not at the expense of compiling with the
> current release of g++.  I don't really care about any version of g++
> before 2.95.x.  So, since I'm not as up-to-date as others may be about
> what features are or are not supported, can anyone tell me if this is
> a reasonable goal?

A good goal is to make sure that Octave will work next release of gcc,
and I believe that's what we should spend time on first, and then look
at other compilers. Getting Octave to build with next GCC release will
do 90% of the work of getting Octave to build other conforming compilers.

However, I do believe that jwe's time is much better spent on core Octave
than on this issue, especially since this can easily be done by other
contributors. I'll contribute what I can.

There're a few things I had forgotten in the list (I took another look 
last night):

1. GNU libio/iostream extension: Octave uses a few extensions that need
   to taken care of. Off the cuff, these are streambuf::form, the proc
   buf and stream, and probably a few others that I haven't yet looked

2. kpathsea needs 'proto'izing' in addition to readline.

> Other than g++, I think the only C++ compiler that I have available to
> me that is Sun CC on a SunOS 5.7 system, which reports the following
> version information:
>   CC: WorkShop Compilers 5.0 98/12/15 C++ 5.0
> I tried using this last night, and immediately ran into the same
> problems Mumit reported (mostly namespace and forward declaration
> problems).  Does anyone know if it is reasonable to expect this
> compiler to do the job?  I had no trouble compiling Octave's C and
> Fortran code using the corresponding C and Fortran compilers on the
> same system.

We're using the same compiler, and it certainly has its share of problems,
but it does provide a nearly conforming standard library. A good one is
a missing "extern "C"" block in climits.

Here's what I would propose:

1. Get configure to add a few macros: __STD and __C_STD, which will 
   expand to "std" if it's supported. Note that we need __C_STD so 
   that "unwrapped" C headers will work with GCC (currently, std::errno
   won't work with even the experimental libstdc++-v3, and you need to
   use ::errno instead).

2. Fix up Octave's code to use STD and C_STD so that code looks like
   STD::string instead of just string.

3. Fix up readline and kpathsea. I don't know if newer releases of these
   packages have these fixed or not. It's tedious work at best. It should
   be easy to auto-protoize readline, but kpathsea will take some manual 

That will make Octave work with next major release of GCC (2.96 or maybe
3.0?) and also the libstdc++-v3 that'll hopefully come with 3.0. This 
will also keep Octave compatible with gcc-2.95.x series, which is
important in my opinion.

Next step:

1. Remove GNU'ish extensions such as:
     streambuf::form -- can be emulated without too much trouble
     procbuf, procstream: a bit more work.

Anything else?


Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:
How to fund new projects:
Subscription information:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]