[PPL-devel] Modified PPL 0.10.2 source distribution for Solaris

Roberto Bagnara bagnara at cs.unipr.it
Sun Nov 8 08:48:47 CET 2009


Alan Pae wrote:
> but then it throws a bunch of other errors:
> 
> 
> addsource='Box.cc' object='Box.lo' libtool=yes \
>     DEPDIR=.deps depmode=none /bin/sh ../depcomp \
>     /bin/sh ../libtool --tag=CXX   --mode=compile 
> /opt/SunStudioExpress/bin/CC -DHAVE_CONFIG_H -I. -I..  -I.. -I../src 
> -I/usr/include/gmp  -g -O2  -c -o Box.lo Box.cc
> libtool: compile:  /opt/SunStudioExpress/bin/CC -DHAVE_CONFIG_H -I. -I.. 
> -I.. -I../src -I/usr/include/gmp -g -O2 -c Box.cc  -KPIC -DPIC -o 
> .libs/Box.o
> "checked_mpz.inlines.hh", line 54: Error: "," expected instead of "(".
> "checked_mpz.inlines.hh", line 60: Error: mp_size_field_t is not defined.
> "checked_mpz.inlines.hh", line 66: Error: mp_size_field_t is not defined.
> "checked_mpz.inlines.hh", line 67: Error: size is not defined.
> "Row.defs.hh", line 88: Error: Row_Impl_Handler is not defined.
> "Row.inlines.hh", line 168: Error: Impl is not defined.
> "Row.inlines.hh", line 173: Error: impl is not defined.
> "Row.inlines.hh", line 178: Error: impl is not defined.
> "Row.inlines.hh", line 183: Error: impl is not defined.
> "Row.inlines.hh", line 208: Error: 
> Parma_Polyhedra_Library::Row_Impl_Handler is not a direct base class of 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 224: Error: impl is not defined.
> "Row.inlines.hh", line 224: Error: Type name expected instead of "Impl".
> "Row.inlines.hh", line 224: Error: Could not find a match for operator 
> new(unsigned, unsigned).
> "Row.inlines.hh", line 237: Error: impl is not defined.
> "Row.inlines.hh", line 246: Error: impl is not defined.
> "Row.inlines.hh", line 267: Error: 
> Parma_Polyhedra_Library::Row_Impl_Handler is not a direct base class of 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 273: Error: 
> Parma_Polyhedra_Library::Row_Impl_Handler is not a direct base class of 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 279: Error: 
> Parma_Polyhedra_Library::Row_Impl_Handler is not a direct base class of 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 280: Error: impl is not a member of const 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 289: Error: 
> Parma_Polyhedra_Library::Row_Impl_Handler is not a direct base class of 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 300: Error: 
> Parma_Polyhedra_Library::Row_Impl_Handler is not a direct base class of 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 315: Error: impl is not defined.
> "Row.inlines.hh", line 320: Error: impl is not defined.
> "Row.inlines.hh", line 320: Error: impl is not a member of 
> Parma_Polyhedra_Library::Row.
> "Row.inlines.hh", line 328: Error: impl is not defined.
> Compilation aborted, too many Error messages.
> gmake[3]: *** [Box.lo] Error 1
> gmake[3]: Leaving directory `/build/ppl-0.10.2/src'
> 
> 
> Please suggest.

Hi Alan,

it seems the compiler is complaining at typeof in the following
context:

#ifdef PPL_HAVE_TYPEOF
//! Type of the _mp_size field of GMP's __mpz_struct.
typedef typeof(__mpz_struct()._mp_size) mp_size_field_t;
#else
//! This is assumed to be the type of the _mp_size field of GMP's __mpz_struct.
typedef int mp_size_field_t;
#endif

The PPL_HAVE_TYPEOF symbol should be defined only if the underlying
compiler supports typeof.  The test is performed via Autoconf in response
to the line

AC_C_TYPEOF

in configure.ac, root directory of the PPL 0.10.2 package.
This test results, on my machine, with GCC 4.3.2, in the
following lines in config.log

configure:7158: checking for typeof syntax and keyword spelling
configure:7199: gcc -c  -g -O2 -frounding-math   conftest.c >&5
configure:7206: $? = 0
configure:7223: result: typeof

In turn, this is checked by compiling the following source:

#define ac_kw typeof
/* #define ac_kw __typeof__ */

int
main ()
{

            int value;
            typedef struct {
                    char a [1
                            + ! ((ac_kw (value))
                                 ((ac_kw (value)) 0 < (ac_kw (value)) -1
                                  ? (ac_kw (value)) - 1
                                  : ~ (~ (ac_kw (value)) 0
                                       << sizeof (ac_kw (value)))))]; }
               ac__typeof_type_;
            return
              (! ((void) ((ac__typeof_type_ *) 0), 0));

   ;
   return 0;
}

If this does not work, then the second #define is used and then
in ppl-config.h we will have

#define typeof __typeof__

It even with the second #define the program above cannot be
compiled or fails, then in ppl-config.h we should have

#undef PPL_HAVE_TYPEOF

and then typeof would not be used.

It seems this mechanism is not working on your side.
You should have now enough elements to investigate.
Cheers,

    Roberto

-- 
Prof. Roberto Bagnara
Applied Formal Methods Laboratory
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara at cs.unipr.it



More information about the PPL-devel mailing list