From 6c9b11b35e300955587403bc14b8fa0a9ebe458d Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 15 Nov 2001 16:09:34 +0000 Subject: [PATCH] Fix for AIX compile and unsigned/signed typedefs. Peter E, Tatsuo, Andreas --- configure.in | 6 ++++++ src/include/c.h | 24 +++++++++++++++++------- src/include/pg_config.h.in | 5 ++++- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/configure.in b/configure.in index cd3bac3cfaa..c223ce51b65 100644 --- a/configure.in +++ b/configure.in @@ -1169,6 +1169,12 @@ else fi AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any type]) +# Some platforms predefine the types int8, int16, etc. Only check +# a (hopefully) representative subset. Don't use AC_CHECK_TYPE, which +# doesn't work the way we want to. +AC_CHECK_SIZEOF(int8, 0) +AC_CHECK_SIZEOF(uint8, 0) + PGAC_FUNC_POSIX_SIGNALS diff --git a/src/include/c.h b/src/include/c.h index e00ee1e1eb8..d4a67aa69f0 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: c.h,v 1.109 2001/11/12 01:52:46 momjian Exp $ + * $Id: c.h,v 1.110 2001/11/15 16:09:34 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -205,11 +205,11 @@ typedef char *Pointer; * used for numerical computations and the * frontend/backend protocol. */ -#ifndef __BEOS__ /* this shouldn't be required, but is is! */ +#if SIZEOF_INT8 == 0 typedef signed char int8; /* == 8 bits */ typedef signed short int16; /* == 16 bits */ typedef signed int int32; /* == 32 bits */ -#endif /* __BEOS__ */ +#endif /* SIZEOF_INT8 == 0 */ /* * uintN @@ -218,11 +218,11 @@ typedef signed int int32; /* == 32 bits */ * frontend/backend protocol. */ /* Also defined in interfaces/odbc/md5.h */ -#ifndef __BEOS__ /* this shouldn't be required, but is is! */ +#if SIZEOF_UINT8 == 0 typedef unsigned char uint8; /* == 8 bits */ typedef unsigned short uint16; /* == 16 bits */ typedef unsigned int uint32; /* == 32 bits */ -#endif /* __BEOS__ */ +#endif /* SIZEOF_UINT8 == 0 */ /* * boolN @@ -268,27 +268,37 @@ typedef double *float64; /* * 64-bit integers */ -#ifndef __BEOS__ /* this is already defined on BeOS */ #ifdef HAVE_LONG_INT_64 /* Plain "long int" fits, use it */ +#if SIZEOF_INT8 == 0 typedef long int int64; +#endif +#if SIZEOF_UINT8 == 0 typedef unsigned long int uint64; +#endif #else #ifdef HAVE_LONG_LONG_INT_64 /* We have working support for "long long int", use that */ +#if SIZEOF_INT8 == 0 typedef long long int int64; +#endif +#if SIZEOF_UINT8 == 0 typedef unsigned long long int uint64; +#endif #else /* Won't actually work, but fall back to long int so that code compiles */ +#if SIZEOF_INT8 == 0 typedef long int int64; +#endif +#if SIZEOF_UINT8 == 0 typedef unsigned long int uint64; +#endif #define INT64_IS_BUSTED #endif #endif -#endif /* __BEOS__ */ /* * Size diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 211a1efcd59..f33bd18f673 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -8,7 +8,7 @@ * or in pg_config.h afterwards. Of course, if you edit pg_config.h, then your * changes will be overwritten the next time you run configure. * - * $Id: pg_config.h.in,v 1.11 2001/10/20 17:57:39 tgl Exp $ + * $Id: pg_config.h.in,v 1.12 2001/11/15 16:09:34 momjian Exp $ */ #ifndef PG_CONFIG_H @@ -697,6 +697,9 @@ extern int fdatasync(int fildes); /* Define if you have on_exit() */ #undef HAVE_ON_EXIT +#undef SIZEOF_INT8 +#undef SIZEOF_UINT8 + /* *------------------------------------------------------------------------ * Part 4: pull in system-specific declarations.