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.
This commit is contained in:
Peter Eisentraut 2001-12-02 11:38:40 +00:00
parent ad81c99984
commit 15abc7788e
6 changed files with 181 additions and 144 deletions

View file

@ -1,5 +1,5 @@
# 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

224
configure vendored
View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
/*
*------------------------------------------------------------------------

View file

@ -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,