Commit d15cb38d authored by Tom Lane's avatar Tom Lane

Alter the configure script to fail immediately if the C compiler does not

provide a working 64-bit integer datatype.  As recently noted, we've been
broken on such platforms since early in the 8.4 development cycle.  Since
it took nearly two years for anyone to even notice, it seems that the
rationale for continuing to support such platforms has reached the point
of non-existence.  Rather than thrashing around to try to make it work
again, we'll just admit up front that this no longer works.

Back-patch to 8.4 since that branch is also broken.

We should go around to remove INT64_IS_BUSTED support, but just in HEAD,
so that seems like material for a separate commit.
parent a6f56efc
...@@ -22385,6 +22385,7 @@ fi ...@@ -22385,6 +22385,7 @@ fi
{ $as_echo "$as_me:$LINENO: checking whether long int is 64 bits" >&5 { $as_echo "$as_me:$LINENO: checking whether long int is 64 bits" >&5
$as_echo_n "checking whether long int is 64 bits... " >&6; } $as_echo_n "checking whether long int is 64 bits... " >&6; }
if test "${pgac_cv_type_long_int_64+set}" = set; then if test "${pgac_cv_type_long_int_64+set}" = set; then
...@@ -22657,6 +22658,11 @@ _ACEOF ...@@ -22657,6 +22658,11 @@ _ACEOF
fi fi
if test x"$HAVE_LONG_LONG_INT_64" = x"no" ; then
{ { $as_echo "$as_me:$LINENO: error: Cannot find a working 64-bit integer type." >&5
$as_echo "$as_me: error: Cannot find a working 64-bit integer type." >&2;}
{ (exit 1); exit 1; }; }
fi
fi fi
...@@ -26542,26 +26548,6 @@ fi ...@@ -26542,26 +26548,6 @@ fi
# If the user did not disable integer datetimes, check that
# there is a working 64-bit integral type to use.
if test x"$USE_INTEGER_DATETIMES" = x"yes" &&
test x"$HAVE_LONG_INT_64" = x"no" &&
test x"$HAVE_LONG_LONG_INT_64" = x"no" &&
test x"$HAVE_INT64" = x"no" ; then
{ { $as_echo "$as_me:$LINENO: error:
Integer-based datetime support requires a 64-bit integer type,
but no such type could be found. The --disable-integer-datetimes
configure option can be used to disable integer-based storage
of datetime values." >&5
$as_echo "$as_me: error:
Integer-based datetime support requires a 64-bit integer type,
but no such type could be found. The --disable-integer-datetimes
configure option can be used to disable integer-based storage
of datetime values." >&2;}
{ (exit 1); exit 1; }; }
fi
if test "$PORTNAME" != "win32" if test "$PORTNAME" != "win32"
then then
{ $as_echo "$as_me:$LINENO: checking for POSIX signal interface" >&5 { $as_echo "$as_me:$LINENO: checking for POSIX signal interface" >&5
......
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
dnl $PostgreSQL: pgsql/configure.in,v 1.618 2010/01/02 16:57:32 momjian Exp $ dnl $PostgreSQL: pgsql/configure.in,v 1.619 2010/01/07 00:25:04 tgl Exp $
dnl dnl
dnl Developers, please strive to achieve this order: dnl Developers, please strive to achieve this order:
dnl dnl
...@@ -1499,10 +1499,16 @@ dnl If there is no native snprintf() or it does not handle the 64-bit type, ...@@ -1499,10 +1499,16 @@ dnl If there is no native snprintf() or it does not handle the 64-bit type,
dnl we force our own version of snprintf() to be used instead. dnl we force our own version of snprintf() to be used instead.
dnl Note this test must be run after our initial check for snprintf/vsnprintf. dnl Note this test must be run after our initial check for snprintf/vsnprintf.
dnl As of Postgres 8.4, we no longer support compilers without a working
dnl 64-bit type. But we still handle the case of snprintf being broken.
PGAC_TYPE_64BIT_INT([long int]) PGAC_TYPE_64BIT_INT([long int])
if test x"$HAVE_LONG_INT_64" = x"no" ; then if test x"$HAVE_LONG_INT_64" = x"no" ; then
PGAC_TYPE_64BIT_INT([long long int]) PGAC_TYPE_64BIT_INT([long long int])
if test x"$HAVE_LONG_LONG_INT_64" = x"no" ; then
AC_MSG_ERROR([Cannot find a working 64-bit integer type.])
fi
fi fi
...@@ -1546,10 +1552,10 @@ else ...@@ -1546,10 +1552,10 @@ else
fi fi
AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT, AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT,
[Define to the appropriate snprintf format for 64-bit ints, if any.]) [Define to the appropriate snprintf format for 64-bit ints.])
AC_DEFINE_UNQUOTED(UINT64_FORMAT, $UINT64_FORMAT, AC_DEFINE_UNQUOTED(UINT64_FORMAT, $UINT64_FORMAT,
[Define to the appropriate snprintf format for unsigned 64-bit ints, if any.]) [Define to the appropriate snprintf format for unsigned 64-bit ints.])
# Now we have checked all the reasons to replace snprintf # Now we have checked all the reasons to replace snprintf
if test $pgac_need_repl_snprintf = yes; then if test $pgac_need_repl_snprintf = yes; then
...@@ -1632,20 +1638,6 @@ AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [], ...@@ -1632,20 +1638,6 @@ AC_CHECK_TYPES([int8, uint8, int64, uint64], [], [],
AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <signal.h>]) AC_CHECK_TYPES(sig_atomic_t, [], [], [#include <signal.h>])
# If the user did not disable integer datetimes, check that
# there is a working 64-bit integral type to use.
if test x"$USE_INTEGER_DATETIMES" = x"yes" &&
test x"$HAVE_LONG_INT_64" = x"no" &&
test x"$HAVE_LONG_LONG_INT_64" = x"no" &&
test x"$HAVE_INT64" = x"no" ; then
AC_MSG_ERROR([
Integer-based datetime support requires a 64-bit integer type,
but no such type could be found. The --disable-integer-datetimes
configure option can be used to disable integer-based storage
of datetime values.])
fi
if test "$PORTNAME" != "win32" if test "$PORTNAME" != "win32"
then then
PGAC_FUNC_POSIX_SIGNALS PGAC_FUNC_POSIX_SIGNALS
......
...@@ -647,7 +647,7 @@ ...@@ -647,7 +647,7 @@
/* Define to 1 if you have the <winldap.h> header file. */ /* Define to 1 if you have the <winldap.h> header file. */
#undef HAVE_WINLDAP_H #undef HAVE_WINLDAP_H
/* Define to the appropriate snprintf format for 64-bit ints, if any. */ /* Define to the appropriate snprintf format for 64-bit ints. */
#undef INT64_FORMAT #undef INT64_FORMAT
/* Define to build with Kerberos 5 support. (--with-krb5) */ /* Define to build with Kerberos 5 support. (--with-krb5) */
...@@ -732,8 +732,7 @@ ...@@ -732,8 +732,7 @@
/* Define to 1 if your <sys/time.h> declares `struct tm'. */ /* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME #undef TM_IN_SYS_TIME
/* Define to the appropriate snprintf format for unsigned 64-bit ints, if any. /* Define to the appropriate snprintf format for unsigned 64-bit ints. */
*/
#undef UINT64_FORMAT #undef UINT64_FORMAT
/* Define to 1 to build with assertion checks. (--enable-cassert) */ /* Define to 1 to build with assertion checks. (--enable-cassert) */
......
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