mirror of
https://github.com/yasm/yasm
synced 2026-08-26 22:26:05 -04:00
Note that due to an m4 bug, you need at least m4 1.4.5, and autoconf built with the newer version of m4, to run autoconf on the source now (this does not apply if you're just running ./configure from a tarball). svn path=/trunk/yasm/; revision=1768
59 lines
1.9 KiB
Text
59 lines
1.9 KiB
Text
# size_max.m4 serial 2
|
|
dnl Copyright (C) 2003 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.
|
|
|
|
dnl From Bruno Haible.
|
|
|
|
AC_DEFUN([gl_SIZE_MAX],
|
|
[
|
|
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>
|
|
#endif
|
|
#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'.
|
|
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=?)
|
|
_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
|
|
else
|
|
result="$res_hi$res_lo"UL
|
|
fi
|
|
else
|
|
dnl Shouldn't happen, but who knows...
|
|
result='~(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
|
|
])
|