diff options
author | Bruno Haible <bruno@clisp.org> | 2006-06-28 11:59:30 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2009-06-23 12:13:27 +0200 |
commit | 49347b86d90d6c872aa2b3b2a4eb5735118511d1 (patch) | |
tree | 88cd5c3608da578ab5c3ff358f0abb9c7fb3741c | |
parent | f161725feeea2bb18e943e5cf8a0dcda2b436f7f (diff) | |
download | external_gettext-49347b86d90d6c872aa2b3b2a4eb5735118511d1.zip external_gettext-49347b86d90d6c872aa2b3b2a4eb5735118511d1.tar.gz external_gettext-49347b86d90d6c872aa2b3b2a4eb5735118511d1.tar.bz2 |
Update from gnulib.
-rw-r--r-- | gettext-runtime/m4/ChangeLog | 10 | ||||
-rw-r--r-- | gettext-runtime/m4/size_max.m4 | 47 |
2 files changed, 34 insertions, 23 deletions
diff --git a/gettext-runtime/m4/ChangeLog b/gettext-runtime/m4/ChangeLog index 7003407..b97ad1c 100644 --- a/gettext-runtime/m4/ChangeLog +++ b/gettext-runtime/m4/ChangeLog @@ -1,3 +1,13 @@ +2006-06-15 Bruno Haible <bruno@clisp.org> + + * size_max.m4 (gl_SIZE_MAX): Make it work also when cross-compiling. + +2005-07-10 Bruno Haible <bruno@clisp.org> + + * size_max.m4 (gl_SIZE_MAX): Cast ~(size_t)0 back to size_t. + Needed when size_t is smaller than 'unsigned int'. + Reported by Paul Eggert. + 2006-01-08 Bruno Haible <bruno@clisp.org> Ensure automatic ordering between gl_LOCK and gl_ARGP. diff --git a/gettext-runtime/m4/size_max.m4 b/gettext-runtime/m4/size_max.m4 index 4fe81c7..029e471 100644 --- a/gettext-runtime/m4/size_max.m4 +++ b/gettext-runtime/m4/size_max.m4 @@ -1,5 +1,5 @@ -# size_max.m4 serial 2 -dnl Copyright (C) 2003 Free Software Foundation, Inc. +# size_max.m4 serial 4 +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, dnl with or without modifications, as long as this notice is preserved. @@ -23,32 +23,33 @@ Found it ], result=yes) if test -z "$result"; then dnl Define it ourselves. Here we assume that the type 'size_t' is not wider - dnl than the type 'unsigned 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([~(size_t)0 / 10], res_hi, - [#include <stddef.h>], result=?) - _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, - [#include <stddef.h>], result=?) + 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>], result=?) - if test "$fits_in_uint" = 1; then - dnl Even though SIZE_MAX fits in an unsigned int, it must be of type - dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. - AC_TRY_COMPILE([#include <stddef.h> - extern size_t foo; - extern unsigned long foo; - ], [], fits_in_uint=0) - fi - if test -z "$result"; then - if test "$fits_in_uint" = 1; then - result="$res_hi$res_lo"U + [#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 + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_TRY_COMPILE([#include <stddef.h> + extern size_t foo; + extern unsigned long foo; + ], [], fits_in_uint=0) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + result="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" else - result="$res_hi$res_lo"UL + result="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" fi else dnl Shouldn't happen, but who knows... - result='~(size_t)0' + result='((size_t)~(size_t)0)' fi fi AC_MSG_RESULT([$result]) |