On Sun, 20 Apr 2008 15:08:12 -0700
chromatic <[EMAIL PROTECTED]> wrote:
> Is this really correct?  My gmp.h file has:

No, it's a workaround for an issue that isn't really gmp's fault.
Building with g++ barfs when parsing libintl.h, included by gmp.h.
Here's what happens:

libintl.h defines the following two function prototypes:

extern char *textdomain (__const char *__domainname) __THROW;
extern char *bindtextdomain (__const char *__domainname,
                             __const char *__dirname) __THROW;


Unfortunately, PARROT_HAS_GEXTTEXT (see the typo in that?) isn't
defined, so include/parrot/parrot.h does:

#  define textdomain(d)
#  define bindtextdomain(p, d)


So the compiler actually sees:

extern char * throw ();
extern char * throw ();


And barfs:

src/pmc/bigint.c
/usr/include/libintl.h:83: error: expected unqualified-id before 'throw'
/usr/include/libintl.h:83: error: expected initializer before 'throw'
/usr/include/libintl.h:87: error: expected unqualified-id before 'throw'
/usr/include/libintl.h:87: error: expected initializer before 'throw'
make: *** [src/pmc/bigint.o] Error 1


Fixing the typo fixes the bug.  Fixed in r27065.

(Still debatable whether the rest of that #else clause in parrot.h is
valid, if it's causing issues like this one.)

Mark

Reply via email to