Now that autoconf-2.61 provides AC_COMPUTE_INT, I think the macros should use it. As long as people are still heavily using 2.59 or 2.60, we need to provide a fallback.
Users of autoconf-2.60a or -2.60b, please upgrade to 2.61! The signature of AC_COMPUTE_INT has changed between 2.60a and 2.61. Opinions? 2006-11-21 Bruno Haible <[EMAIL PROTECTED]> * m4/eoverflow.m4 (gl_EOVERFLOW): Use AC_COMPUTE_INT instead of _AC_COMPUTE_INT. (AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61. * m4/ptrdiff_max.m4 (gl_PTRDIFF_MAX): Use AC_COMPUTE_INT instead of _AC_COMPUTE_INT. (AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61. * m4/size_max.m4 (gl_SIZE_MAX): Use AC_COMPUTE_INT instead of _AC_COMPUTE_INT. (AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61. * m4/stdint.m4 (gl_STDINT_BITSIZEOF): Use AC_COMPUTE_INT instead of _AC_COMPUTE_INT. (AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61. *** eoverflow.m4.bak 2005-01-18 14:07:56.000000000 +0100 --- eoverflow.m4 2006-11-22 03:58:33.000000000 +0100 *************** *** 1,5 **** ! # eoverflow.m4 serial 1 ! dnl Copyright (C) 2004 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. --- 1,5 ---- ! # eoverflow.m4 serial 2 ! dnl Copyright (C) 2004, 2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. *************** *** 40,46 **** if test -n "$have_eoverflow"; then dnl EOVERFLOW exists but is hidden. dnl Define it to the same value. ! _AC_COMPUTE_INT([EOVERFLOW], ac_cv_decl_EOVERFLOW, [ #define _XOPEN_SOURCE_EXTENDED 1 #include <errno.h> /* The following two lines are a workaround against an autoconf-2.52 bug. */ --- 40,46 ---- if test -n "$have_eoverflow"; then dnl EOVERFLOW exists but is hidden. dnl Define it to the same value. ! AC_COMPUTE_INT([ac_cv_decl_EOVERFLOW], [EOVERFLOW], [ #define _XOPEN_SOURCE_EXTENDED 1 #include <errno.h> /* The following two lines are a workaround against an autoconf-2.52 bug. */ *************** *** 62,64 **** --- 62,70 ---- AC_SUBST(EOVERFLOW) fi ]) + + dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. + dnl Remove this when we can assume autoconf >= 2.61. + m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) + ]) *** ptrdiff_max.m4.bak 2003-11-11 12:57:04.000000000 +0100 --- ptrdiff_max.m4 2006-11-22 03:58:34.000000000 +0100 *************** *** 1,5 **** ! # ptrdiff_max.m4 serial 1 ! dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program --- 1,5 ---- ! # ptrdiff_max.m4 serial 2 ! dnl Copyright (C) 2003, 2006 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program *************** *** 30,44 **** if test -z "$result"; then dnl Define it ourselves. Here we assume that the type 'ptrdiff_t' is not dnl wider than the type 'long'. ! dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', dnl which is guaranteed to work from LONG_MIN to LONG_MAX. ! _AC_COMPUTE_INT([STYPE_MAXIMUM (ptrdiff_t)], res, [ #include <stddef.h> #include <limits.h> #define STYPE_MINIMUM(t) (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)) #define STYPE_MAXIMUM(t) ((t) (~ (t) 0 - STYPE_MINIMUM (t))) ], result=?) ! _AC_COMPUTE_INT([sizeof (ptrdiff_t) <= sizeof (int)], fits_in_int, [#include <stddef.h>], result=?) if test "$fits_in_int" = 1; then dnl Even though PTRDIFF_MAX fits in an int, it must be of type --- 30,44 ---- if test -z "$result"; then dnl Define it ourselves. Here we assume that the type 'ptrdiff_t' is not dnl wider than the type 'long'. ! dnl The AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', dnl which is guaranteed to work from LONG_MIN to LONG_MAX. ! AC_COMPUTE_INT([res], [STYPE_MAXIMUM (ptrdiff_t)], [ #include <stddef.h> #include <limits.h> #define STYPE_MINIMUM(t) (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)) #define STYPE_MAXIMUM(t) ((t) (~ (t) 0 - STYPE_MINIMUM (t))) ], result=?) ! AC_COMPUTE_INT([fits_in_int], [sizeof (ptrdiff_t) <= sizeof (int)], [#include <stddef.h>], result=?) if test "$fits_in_int" = 1; then dnl Even though PTRDIFF_MAX fits in an int, it must be of type *************** *** 65,67 **** --- 65,73 ---- [Define as the maximum value of type 'ptrdiff_t', if the system doesn't define it.]) fi ]) + + dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. + dnl Remove this when we can assume autoconf >= 2.61. + m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) + ]) *** size_max.m4.bak 2006-10-21 00:24:19.000000000 +0200 --- size_max.m4 2006-11-22 03:58:34.000000000 +0100 *************** *** 1,4 **** ! # size_max.m4 serial 5 dnl Copyright (C) 2003, 2005-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # size_max.m4 serial 6 dnl Copyright (C) 2003, 2005-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 26,35 **** dnl Define it ourselves. Here we assume that the type 'size_t' is not wider dnl than the type 'unsigned long'. Try hard to find a definition that can dnl be used in a preprocessor #if, i.e. doesn't contain a cast. ! _AC_COMPUTE_INT([sizeof (size_t) * CHAR_BIT - 1], size_t_bits_minus_1, [#include <stddef.h> #include <limits.h>], size_t_bits_minus_1=) ! _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, [#include <stddef.h>], fits_in_uint=) if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then if test $fits_in_uint = 1; then --- 26,35 ---- dnl Define it ourselves. Here we assume that the type 'size_t' is not wider dnl than the type 'unsigned long'. Try hard to find a definition that can dnl be used in a preprocessor #if, i.e. doesn't contain a cast. ! AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], [#include <stddef.h> #include <limits.h>], size_t_bits_minus_1=) ! AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], [#include <stddef.h>], fits_in_uint=) if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then if test $fits_in_uint = 1; then *************** *** 60,62 **** --- 60,68 ---- [Define as the maximum value of type 'size_t', if the system doesn't define it.]) fi ]) + + dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. + dnl Remove this when we can assume autoconf >= 2.61. + m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) + ]) *** stdint.m4.bak 2006-10-13 00:10:35.000000000 +0200 --- stdint.m4 2006-11-22 03:58:35.000000000 +0100 *************** *** 1,4 **** ! # stdint.m4 serial 19 dnl Copyright (C) 2001-2002, 2004-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # stdint.m4 serial 20 dnl Copyright (C) 2001-2002, 2004-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 229,235 **** [Define to the number of bits in type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], ! [_AC_COMPUTE_INT([sizeof ($gltype) * CHAR_BIT], result, [$2 #include <limits.h>], [result=unknown]) eval gl_cv_bitsizeof_${gltype}=\$result --- 229,235 ---- [Define to the number of bits in type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], ! [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT], [$2 #include <limits.h>], [result=unknown]) eval gl_cv_bitsizeof_${gltype}=\$result *************** *** 366,368 **** --- 366,374 ---- gl_INTEGER_TYPE_SUFFIX([ptrdiff_t sig_atomic_t size_t wchar_t wint_t], [gl_STDINT_INCLUDES]) ]) + + dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. + dnl Remove this when we can assume autoconf >= 2.61. + m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) + ])