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
......@@ -1481,7 +1481,7 @@ else
if { (eval echo configure:1482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.C | *.o | *.obj) ;;
*.c | *.o | *.obj) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
......@@ -8279,173 +8279,169 @@ cat >> confdefs.h <<EOF
EOF
# 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.
echo $ac_n "checking size of int8""... $ac_c" 1>&6
echo "configure:8287: checking size of int8" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_int8'+set}'`\" = set"; then
# a (hopefully) representative subset.
pgac_type_includes="\
#include <stdio.h>
#ifdef HAVE_SUPPORTDEFS_H
#include <SupportDefs.h>
#endif"
echo $ac_n "checking for int8""... $ac_c" 1>&6
echo "configure:8294: checking for int8" >&5
if eval "test \"`echo '$''{'pgac_cv_have_int8'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
ac_cv_sizeof_int8=0
else
cat > conftest.$ac_ext <<EOF
#line 8295 "configure"
#line 8299 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
{
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
fprintf(f, "%d\n", sizeof(int8));
exit(0);
}
$pgac_type_includes
int main() {
if ((int8 *) 0)
return 0;
if (sizeof (int8))
return 0;
; return 0; }
EOF
if { (eval echo configure:8306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_int8=`cat conftestval`
if { (eval echo configure:8309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
pgac_cv_have_int8=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_sizeof_int8=0
rm -rf conftest*
pgac_cv_have_int8=no
fi
rm -fr conftest*
rm -f conftest*
fi
fi
echo "$ac_t""$ac_cv_sizeof_int8" 1>&6
cat >> confdefs.h <<EOF
#define SIZEOF_INT8 $ac_cv_sizeof_int8
echo "$ac_t""$pgac_cv_have_int8" 1>&6
if test "$pgac_cv_have_int8" = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_INT8 1
EOF
fi
echo $ac_n "checking size of uint8""... $ac_c" 1>&6
echo "configure:8326: checking size of uint8" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_uint8'+set}'`\" = set"; then
echo $ac_n "checking for uint8""... $ac_c" 1>&6
echo "configure:8330: checking for uint8" >&5
if eval "test \"`echo '$''{'pgac_cv_have_uint8'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
ac_cv_sizeof_uint8=0
else
cat > conftest.$ac_ext <<EOF
#line 8334 "configure"
#line 8335 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
{
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
fprintf(f, "%d\n", sizeof(uint8));
exit(0);
}
$pgac_type_includes
int main() {
if ((uint8 *) 0)
return 0;
if (sizeof (uint8))
return 0;
; return 0; }
EOF
if { (eval echo configure:8345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_uint8=`cat conftestval`
if { (eval echo configure:8345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
pgac_cv_have_uint8=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_sizeof_uint8=0
rm -rf conftest*
pgac_cv_have_uint8=no
fi
rm -fr conftest*
rm -f conftest*
fi
fi
echo "$ac_t""$ac_cv_sizeof_uint8" 1>&6
cat >> confdefs.h <<EOF
#define SIZEOF_UINT8 $ac_cv_sizeof_uint8
echo "$ac_t""$pgac_cv_have_uint8" 1>&6
if test "$pgac_cv_have_uint8" = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_UINT8 1
EOF
fi
echo $ac_n "checking size of int64""... $ac_c" 1>&6
echo "configure:8365: checking size of int64" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_int64'+set}'`\" = set"; then
echo $ac_n "checking for int64""... $ac_c" 1>&6
echo "configure:8366: checking for int64" >&5
if eval "test \"`echo '$''{'pgac_cv_have_int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
ac_cv_sizeof_int64=0
else
cat > conftest.$ac_ext <<EOF
#line 8373 "configure"
#line 8371 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
{
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
fprintf(f, "%d\n", sizeof(int64));
exit(0);
}
$pgac_type_includes
int main() {
if ((int64 *) 0)
return 0;
if (sizeof (int64))
return 0;
; return 0; }
EOF
if { (eval echo configure:8384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_int64=`cat conftestval`
if { (eval echo configure:8381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
pgac_cv_have_int64=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_sizeof_int64=0
rm -rf conftest*
pgac_cv_have_int64=no
fi
rm -fr conftest*
rm -f conftest*
fi
fi
echo "$ac_t""$ac_cv_sizeof_int64" 1>&6
cat >> confdefs.h <<EOF
#define SIZEOF_INT64 $ac_cv_sizeof_int64
echo "$ac_t""$pgac_cv_have_int64" 1>&6
if test "$pgac_cv_have_int64" = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_INT64 1
EOF
fi
echo $ac_n "checking size of uint64""... $ac_c" 1>&6
echo "configure:8404: checking size of uint64" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_uint64'+set}'`\" = set"; then
echo $ac_n "checking for uint64""... $ac_c" 1>&6
echo "configure:8402: checking for uint64" >&5
if eval "test \"`echo '$''{'pgac_cv_have_uint64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
ac_cv_sizeof_uint64=0
else
cat > conftest.$ac_ext <<EOF
#line 8412 "configure"
#line 8407 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
{
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
fprintf(f, "%d\n", sizeof(uint64));
exit(0);
}
$pgac_type_includes
int main() {
if ((uint64 *) 0)
return 0;
if (sizeof (uint64))
return 0;
; return 0; }
EOF
if { (eval echo configure:8423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_uint64=`cat conftestval`
if { (eval echo configure:8417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
pgac_cv_have_uint64=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_sizeof_uint64=0
rm -rf conftest*
pgac_cv_have_uint64=no
fi
rm -fr conftest*
rm -f conftest*
fi
fi
echo "$ac_t""$ac_cv_sizeof_uint64" 1>&6
cat >> confdefs.h <<EOF
#define SIZEOF_UINT64 $ac_cv_sizeof_uint64
echo "$ac_t""$pgac_cv_have_uint64" 1>&6
if test "$pgac_cv_have_uint64" = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_UINT64 1
EOF
fi
echo $ac_n "checking for POSIX signal interface""... $ac_c" 1>&6
echo "configure:8444: checking for POSIX signal interface" >&5
echo "configure:8440: checking for POSIX signal interface" >&5
if eval "test \"`echo '$''{'pgac_cv_func_posix_signals'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 8449 "configure"
#line 8445 "configure"
#include "confdefs.h"
#include <signal.h>
......@@ -8456,7 +8452,7 @@ act.sa_flags = SA_RESTART;
sigaction(0, &act, &oact);
; return 0; }
EOF
if { (eval echo configure:8460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:8456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
pgac_cv_func_posix_signals=yes
else
......@@ -8486,7 +8482,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:8490: checking for $ac_word" >&5
echo "configure:8486: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_TCLSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -8522,7 +8518,7 @@ test -n "$TCLSH" && break
done
echo $ac_n "checking for tclConfig.sh""... $ac_c" 1>&6
echo "configure:8526: checking for tclConfig.sh" >&5
echo "configure:8522: checking for tclConfig.sh" >&5
# Let user override test
if test -z "$TCL_CONFIG_SH"; then
pgac_test_dirs="$with_tclconfig"
......@@ -8555,7 +8551,7 @@ fi
# Check for Tk configuration script tkConfig.sh
if test "$with_tk" = yes; then
echo $ac_n "checking for tkConfig.sh""... $ac_c" 1>&6
echo "configure:8559: checking for tkConfig.sh" >&5
echo "configure:8555: checking for tkConfig.sh" >&5
# Let user override test
if test -z "$TK_CONFIG_SH"; then
pgac_test_dirs="$with_tkconfig $with_tclconfig"
......@@ -8594,7 +8590,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:8598: checking for $ac_word" >&5
echo "configure:8594: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_NSGMLS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -8630,7 +8626,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:8634: checking for $ac_word" >&5
echo "configure:8630: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_JADE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -8661,7 +8657,7 @@ done
echo $ac_n "checking for DocBook V3.1""... $ac_c" 1>&6
echo "configure:8665: checking for DocBook V3.1" >&5
echo "configure:8661: checking for DocBook V3.1" >&5
if eval "test \"`echo '$''{'pgac_cv_check_docbook'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -8694,7 +8690,7 @@ have_docbook=$pgac_cv_check_docbook
echo $ac_n "checking for DocBook stylesheets""... $ac_c" 1>&6
echo "configure:8698: checking for DocBook stylesheets" >&5
echo "configure:8694: checking for DocBook stylesheets" >&5
if eval "test \"`echo '$''{'pgac_cv_path_stylesheets'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -8733,7 +8729,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:8737: checking for $ac_word" >&5
echo "configure:8733: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_SGMLSPL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......
......@@ -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