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