Commit 15abc778 authored by Peter Eisentraut's avatar Peter Eisentraut

More correct way to check for existence of types, which allows to specify

which include files to consider.  Should fix BeOS problems with int8 types.
parent ad81c999
# Macros to detect C compiler features
# $Header: /cvsroot/pgsql/config/c-compiler.m4,v 1.3 2000/08/29 09:36:37 petere Exp $
# $Header: /cvsroot/pgsql/config/c-compiler.m4,v 1.4 2001/12/02 11:38:40 petere Exp $
# PGAC_C_SIGNED
......@@ -117,3 +117,34 @@ AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The alignment requirement of a `]
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
])# PGAC_CHECK_ALIGNOF
# PGAC_CHECK_TYPE(TYPE, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [INCLUDES])
# ---------------------------------------------------------------------------
AC_DEFUN([PGAC_CHECK_TYPE],
[changequote(<<,>>)dnl
dnl The name to #define
define(<<AC_TYPE_NAME>>, translit(have_$1, [a-z *], [A-Z_P]))dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, translit(pgac_cv_have_$1, [ *], [_p]))dnl
changequote([, ])dnl
AC_CACHE_CHECK([for $1], AC_CV_NAME,
[AC_TRY_COMPILE([$4],
[if (($1 *) 0)
return 0;
if (sizeof ($1))
return 0;],
AC_CV_NAME[=yes],
AC_CV_NAME[=no])])
if test "$AC_CV_NAME" = yes; then
AC_DEFINE(AC_TYPE_NAME, 1, [Define to 1 if you have `]$1['])
ifelse($2,,,[$2
])[]dnl
ifelse($3,,,[else
$3
])[]dnl
fi
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
])# PGAC_CHECK_TYPE
This diff is collapsed.
......@@ -1169,13 +1169,21 @@ 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)
AC_CHECK_SIZEOF(int64, 0)
AC_CHECK_SIZEOF(uint64, 0)
# a (hopefully) representative subset.
pgac_type_includes="\
#include <stdio.h>
#ifdef HAVE_SUPPORTDEFS_H
#include <SupportDefs.h>
#endif"
PGAC_CHECK_TYPE(int8, [], [], [$pgac_type_includes])
PGAC_CHECK_TYPE(uint8, [], [], [$pgac_type_includes])
PGAC_CHECK_TYPE(int64, [], [], [$pgac_type_includes])
PGAC_CHECK_TYPE(uint64, [], [], [$pgac_type_includes])
PGAC_FUNC_POSIX_SIGNALS
......
......@@ -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.111 2001/11/15 16:35:19 momjian Exp $
* $Id: c.h,v 1.112 2001/12/02 11:38:40 petere Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -205,11 +205,11 @@ typedef char *Pointer;
* used for numerical computations and the
* frontend/backend protocol.
*/
#if SIZEOF_INT8 == 0
#ifndef HAVE_INT8
typedef signed char int8; /* == 8 bits */
typedef signed short int16; /* == 16 bits */
typedef signed int int32; /* == 32 bits */
#endif /* SIZEOF_INT8 == 0 */
#endif /* not HAVE_INT8 */
/*
* uintN
......@@ -218,11 +218,11 @@ typedef signed int int32; /* == 32 bits */
* frontend/backend protocol.
*/
/* Also defined in interfaces/odbc/md5.h */
#if SIZEOF_UINT8 == 0
#ifndef HAVE_UINT8
typedef unsigned char uint8; /* == 8 bits */
typedef unsigned short uint16; /* == 16 bits */
typedef unsigned int uint32; /* == 32 bits */
#endif /* SIZEOF_UINT8 == 0 */
#endif /* not HAVE_UINT8 */
/*
* boolN
......@@ -270,35 +270,37 @@ typedef double *float64;
*/
#ifdef HAVE_LONG_INT_64
/* Plain "long int" fits, use it */
#if SIZEOF_INT64 == 0
#ifndef HAVE_INT64
typedef long int int64;
#endif
#if SIZEOF_UINT64 == 0
#ifndef HAVE_UINT64
typedef unsigned long int uint64;
#endif
#else
#ifdef HAVE_LONG_LONG_INT_64
#elif defined(HAVE_LONG_LONG_INT_64)
/* We have working support for "long long int", use that */
#if SIZEOF_INT64 == 0
#ifndef HAVE_INT64
typedef long long int int64;
#endif
#if SIZEOF_UINT64 == 0
#ifndef HAVE_UINT64
typedef unsigned long long int uint64;
#endif
#else
#else /* not HAVE_LONG_INT_64 and not HAVE_LONG_LONG_INT_64 */
/* Won't actually work, but fall back to long int so that code compiles */
#if SIZEOF_INT64 == 0
#ifndef HAVE_INT64
typedef long int int64;
#endif
#if SIZEOF_UINT64 == 0
#ifndef HAVE_UINT64
typedef unsigned long int uint64;
#endif
#define INT64_IS_BUSTED
#endif
#endif
#endif /* not HAVE_LONG_INT_64 and not HAVE_LONG_LONG_INT_64 */
/*
* Size
......
......@@ -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.13 2001/11/15 16:35:19 momjian Exp $
* $Id: pg_config.h.in,v 1.14 2001/12/02 11:38:40 petere Exp $
*/
#ifndef PG_CONFIG_H
......@@ -697,10 +697,10 @@ extern int fdatasync(int fildes);
/* Define if you have on_exit() */
#undef HAVE_ON_EXIT
#undef SIZEOF_INT8
#undef SIZEOF_UINT8
#undef SIZEOF_INT64
#undef SIZEOF_UINT64
#undef HAVE_INT8
#undef HAVE_UINT8
#undef HAVE_INT64
#undef HAVE_UINT64
/*
*------------------------------------------------------------------------
......
......@@ -36,11 +36,11 @@ typedef char bool;
#endif /* __BEOS__ */
/* Also defined in include/c.h */
#if SIZEOF_UINT8 == 0
#ifndef HAVE_UINT8
typedef unsigned char uint8; /* == 8 bits */
typedef unsigned short uint16; /* == 16 bits */
typedef unsigned int uint32; /* == 32 bits */
#endif /* SIZEOF_UINT8 == 0 */
#endif /* not HAVE_UINT8 */
extern bool md5_hash(const void *buff, size_t len, char *hexsum);
extern bool EncryptMD5(const char *passwd, const char *salt,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment