3.1.52 fails to build in hppa/linux

Jaroslav Hajek highegg at gmail.com
Mon Feb 23 00:58:39 CST 2009


On Mon, Feb 23, 2009 at 7:27 AM, Marco Atzeri <marco_atzeri at yahoo.it> wrote:
>
> --- Lun 23/2/09, John W. Eaton  ha scritto:
>
>> Da: John W. Eaton
>> Oggetto: Re: 3.1.52 fails to build in hppa/linux
>> A: marco_atzeri at yahoo.it
>> Cc: "Jaroslav Hajek" , maintainers at octave.org
>> Data: Lunedì 23 febbraio 2009, 02:02
>> On 22-Feb-2009, Marco Atzeri wrote:
>>
>> |
>> | --- Dom 22/2/09, Jaroslav Hajek  ha scritto:
>> |
>> | > >> And is OCTAVE_INT_USE_LONG_DOUBLE defined
>> in
>> | > config.h? Do
>> | > >> you get the
>> | > >> same error as Rafael? You see, lines 511
>> and 514
>> | > in
>> | > >> oct-inttypes.cc
>> | > >> are inside an #ifdef
>> OCTAVE_INT_USE_LONG_DOUBLE
>> | > block.
>> | > >>
>> | > >>
>> | > >>
>> | > >> --
>> | > >> RNDr. Jaroslav Hajek
>> | > >
>> | > > OCTAVE_INT_USE_LONG_DOUBLE is defined
>> | > >
>> | > > same errors from 511 to 516
>> | > >
>> | > > Regards
>> | > > Marco
>> | >
>> | > Whoa, that's wicked. Those lines should not even
>> be
>> | > compiled, then (I
>> | > meant, of course, ifndef block in the previous
>> message).
>> | > Can you maybe
>> | > try posting just the preprocessor output?
>> | >
>> | > The easiest way to get it is to cd to liboctave/, do
>> | > make pic/oct-inttypes.o
>> | >
>> | > then copy the command shown to compile, but replace
>> | > "-c" by "-E" and
>> | > redirect -o to a suitable file. It will be probably
>> too
>> | > large to post
>> | > it on the mailing list.
>> |
>> | uploaded on
>> | http://matzeri.altervista.org/octave/
>> |
>> | gcc -E output    oct-inttypes.E
>> | gcc -c logs      oct-inttypes.log-20090222-202140
>> | full command     oct_int.sh
>>
>> Does the attached change avoid the problem for you?  It
>> allows me to
>> build Octave with GCC and OCTAVE_INT_USE_LONG_DOUBLE
>> undefined.  So
>> maybe this is a GCC bug because I didn't change any
>> code, I just moved
>> some function definitions to a header file.  But I did
>> remove some
>> explicit instantiations, and I'm not sure I fully
>> understand the rules
>> for instantiating templates, especially when some are
>> explicitly
>> instantiated and some are not (at least I think that is
>> true for the
>> classes defined in oct-inttypes.{h,cc}).
>>
>> I also don't see how these lines could be compiled if
>> OCTAVE_INT_USE_LONG_DOUBLE is defined.
>>
>> The lines to define it in config.h are
>>
>>   #if (SIZEOF_LONG_DOUBLE >= 10) && defined
>> (HAVE_ROUNDL)
>>   #define OCTAVE_INT_USE_LONG_DOUBLE
>>   #endif
>>
>> I think you already said SIZEOF_LONG_DOUBLE is 12.  Is
>> HAVE_ROUNDL
>> defined on your system?
>>
>> jwe
>>
>
> John,
> I am stupid, I used grep to find
> #define OCTAVE_INT_USE_LONG_DOUBLE
>
> and have not checked the line arounds.
> HAVE_ROUNDL is not defined
>
> so also OCTAVE_INT_USE_LONG_DOUBLE is not defined.
>
> Marco
>
>

What a relief :) And I was becoming afraid that I invented something
that makes the preprocessor go crazy...
I just filed a bug for GCC: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39270

I'm currently trying a workaround that would allow us to keep the ugly
emulation code (that is a workaround by itself) in oct-inttypes.cc. If
I'm not successful, I guess we should go with John's patch.

regards

-- 
RNDr. Jaroslav Hajek
computing expert
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz



More information about the Octave-maintainers mailing list