[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
use autoconf caching in size_max.m4
From: |
Bruno Haible |
Subject: |
use autoconf caching in size_max.m4 |
Date: |
Fri, 20 Oct 2006 15:54:07 +0200 |
User-agent: |
KMail/1.9.1 |
This is a small optim, when gl_SIZE_MAX is used several times by the same
configure file.
2006-10-19 Bruno Haible <address@hidden>
* m4/size_max.m4 (gl_SIZE_MAX): Cache the result.
*** gnulib-20061019/m4/size_max.m4 2006-06-16 15:14:36.000000000 +0200
--- gnulib-20061019-modified/m4/size_max.m4 2006-10-20 02:19:12.000000000
+0200
***************
*** 1,4 ****
! # 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,
--- 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,
***************
*** 11,18 ****
AC_CHECK_HEADERS(stdint.h)
dnl First test whether the system already has SIZE_MAX.
AC_MSG_CHECKING([for SIZE_MAX])
! result=
! AC_EGREP_CPP([Found it], [
#include <limits.h>
#if HAVE_STDINT_H
#include <stdint.h>
--- 11,19 ----
AC_CHECK_HEADERS(stdint.h)
dnl First test whether the system already has SIZE_MAX.
AC_MSG_CHECKING([for SIZE_MAX])
! AC_CACHE_VAL([gl_cv_size_max], [
! gl_cv_size_max=
! AC_EGREP_CPP([Found it], [
#include <limits.h>
#if HAVE_STDINT_H
#include <stdint.h>
***************
*** 20,60 ****
#ifdef SIZE_MAX
Found it
#endif
! ], 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'. 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
! 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="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
fi
- else
- dnl Shouldn't happen, but who knows...
- result='((size_t)~(size_t)0)'
fi
! fi
! AC_MSG_RESULT([$result])
! if test "$result" != yes; then
! AC_DEFINE_UNQUOTED([SIZE_MAX], [$result],
[Define as the maximum value of type 'size_t', if the system doesn't
define it.])
fi
])
--- 21,62 ----
#ifdef SIZE_MAX
Found it
#endif
! ], gl_cv_size_max=yes)
! if test -z "$gl_cv_size_max"; then
! 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
! 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
! gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
! else
! gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
! fi
else
! dnl Shouldn't happen, but who knows...
! gl_cv_size_max='((size_t)~(size_t)0)'
fi
fi
! ])
! AC_MSG_RESULT([$gl_cv_size_max])
! if test "$gl_cv_size_max" != yes; then
! AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
[Define as the maximum value of type 'size_t', if the system doesn't
define it.])
fi
])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- use autoconf caching in size_max.m4,
Bruno Haible <=