| Index: bison/src/bison/2.4.1/bison-2.4.1-src/m4/inttypes.m4
|
| ===================================================================
|
| --- bison/src/bison/2.4.1/bison-2.4.1-src/m4/inttypes.m4 (revision 0)
|
| +++ bison/src/bison/2.4.1/bison-2.4.1-src/m4/inttypes.m4 (revision 0)
|
| @@ -0,0 +1,295 @@
|
| +# inttypes.m4 serial 12
|
| +dnl Copyright (C) 2006-2008 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 Derek Price, Bruno Haible.
|
| +dnl Test whether <inttypes.h> is supported or must be substituted.
|
| +
|
| +AC_DEFUN([gl_INTTYPES_H],
|
| +[
|
| + AC_REQUIRE([gl_STDINT_H])
|
| + AC_REQUIRE([gt_INTTYPES_PRI])
|
| + AC_CHECK_DECLS_ONCE([imaxabs])
|
| + AC_CHECK_DECLS_ONCE([imaxdiv])
|
| + AC_CHECK_DECLS_ONCE([strtoimax])
|
| + AC_CHECK_DECLS_ONCE([strtoumax])
|
| +
|
| + dnl Now see if we need a substitute <inttypes.h>.
|
| + dnl A complete <inttypes.h> requires
|
| + dnl - a complete <stdint.h>,
|
| + dnl - the existence of an <inttypes.h>,
|
| + dnl - that imaxabs, imaxdiv, strtoimax, strtoumax are declared,
|
| + dnl - some additional tests.
|
| + AC_CACHE_CHECK([whether inttypes.h conforms to C99],
|
| + [gl_cv_header_working_inttypes_h],
|
| + [gl_cv_header_working_inttypes_h=no
|
| + if test "$gl_cv_header_working_stdint_h" = yes \
|
| + && test $ac_cv_header_inttypes_h = yes \
|
| + && test "$ac_cv_have_decl_imaxabs" = yes \
|
| + && test "$ac_cv_have_decl_imaxdiv" = yes \
|
| + && test "$ac_cv_have_decl_strtoimax" = yes \
|
| + && test "$ac_cv_have_decl_strtoumax" = yes; then
|
| + AC_COMPILE_IFELSE([
|
| + AC_LANG_PROGRAM([[
|
| +#include <stddef.h>
|
| +#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
|
| +#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
|
| +#define __STDC_FORMAT_MACROS 1 /* to make it work also in C++ mode */
|
| +#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* work if build isn't clean */
|
| +#include <inttypes.h>
|
| +
|
| +/* No need to duplicate the tests of stdint.m4; they are subsumed by
|
| + $gl_cv_header_working_stdint_h = yes. */
|
| +
|
| +/* Tests for macros supposed to be defined in inttypes.h. */
|
| +
|
| +const char *k = /* implicit string concatenation */
|
| +#ifdef INT8_MAX
|
| + PRId8 PRIi8
|
| +#endif
|
| +#ifdef UINT8_MAX
|
| + PRIo8 PRIu8 PRIx8 PRIX8
|
| +#endif
|
| +#ifdef INT16_MAX
|
| + PRId16 PRIi16
|
| +#endif
|
| +#ifdef UINT16_MAX
|
| + PRIo16 PRIu16 PRIx16 PRIX16
|
| +#endif
|
| +#ifdef INT32_MAX
|
| + PRId32 PRIi32
|
| +#endif
|
| +#ifdef UINT32_MAX
|
| + PRIo32 PRIu32 PRIx32 PRIX32
|
| +#endif
|
| +#ifdef INT64_MAX
|
| + PRId64 PRIi64
|
| +#endif
|
| +#ifdef UINT64_MAX
|
| + PRIo64 PRIu64 PRIx64 PRIX64
|
| +#endif
|
| + PRIdLEAST8 PRIiLEAST8 PRIoLEAST8 PRIuLEAST8 PRIxLEAST8 PRIXLEAST8
|
| + PRIdLEAST16 PRIiLEAST16 PRIoLEAST16 PRIuLEAST16 PRIxLEAST16 PRIXLEAST16
|
| + PRIdLEAST32 PRIiLEAST32 PRIoLEAST32 PRIuLEAST32 PRIxLEAST32 PRIXLEAST32
|
| + PRIdLEAST64 PRIiLEAST64
|
| + PRIoLEAST64 PRIuLEAST64 PRIxLEAST64 PRIXLEAST64
|
| + PRIdFAST8 PRIiFAST8 PRIoFAST8 PRIuFAST8 PRIxFAST8 PRIXFAST8
|
| + PRIdFAST16 PRIiFAST16 PRIoFAST16 PRIuFAST16 PRIxFAST16 PRIXFAST16
|
| + PRIdFAST32 PRIiFAST32 PRIoFAST32 PRIuFAST32 PRIxFAST32 PRIXFAST32
|
| + PRIdFAST64 PRIiFAST64
|
| + PRIoFAST64 PRIuFAST64 PRIxFAST64 PRIXFAST64
|
| + PRIdMAX PRIiMAX PRIoMAX PRIuMAX PRIxMAX PRIXMAX
|
| +#ifdef INTPTR_MAX
|
| + PRIdPTR PRIiPTR
|
| +#endif
|
| +#ifdef UINTPTR_MAX
|
| + PRIoPTR PRIuPTR PRIxPTR PRIXPTR
|
| +#endif
|
| + ;
|
| +const char *l = /* implicit string concatenation */
|
| +#ifdef INT8_MAX
|
| + SCNd8 SCNi8
|
| +#endif
|
| +#ifdef UINT8_MAX
|
| + SCNo8 SCNu8 SCNx8
|
| +#endif
|
| +#ifdef INT16_MAX
|
| + SCNd16 SCNi16
|
| +#endif
|
| +#ifdef UINT16_MAX
|
| + SCNo16 SCNu16 SCNx16
|
| +#endif
|
| +#ifdef INT32_MAX
|
| + SCNd32 SCNi32
|
| +#endif
|
| +#ifdef UINT32_MAX
|
| + SCNo32 SCNu32 SCNx32
|
| +#endif
|
| +#ifdef INT64_MAX
|
| + SCNd64 SCNi64
|
| +#endif
|
| +#ifdef UINT64_MAX
|
| + SCNo64 SCNu64 SCNx64
|
| +#endif
|
| + SCNdLEAST8 SCNiLEAST8 SCNoLEAST8 SCNuLEAST8 SCNxLEAST8
|
| + SCNdLEAST16 SCNiLEAST16 SCNoLEAST16 SCNuLEAST16 SCNxLEAST16
|
| + SCNdLEAST32 SCNiLEAST32 SCNoLEAST32 SCNuLEAST32 SCNxLEAST32
|
| + SCNdLEAST64 SCNiLEAST64
|
| + SCNoLEAST64 SCNuLEAST64 SCNxLEAST64
|
| + SCNdFAST8 SCNiFAST8 SCNoFAST8 SCNuFAST8 SCNxFAST8
|
| + SCNdFAST16 SCNiFAST16 SCNoFAST16 SCNuFAST16 SCNxFAST16
|
| + SCNdFAST32 SCNiFAST32 SCNoFAST32 SCNuFAST32 SCNxFAST32
|
| + SCNdFAST64 SCNiFAST64
|
| + SCNoFAST64 SCNuFAST64 SCNxFAST64
|
| + SCNdMAX SCNiMAX SCNoMAX SCNuMAX SCNxMAX
|
| +#ifdef INTPTR_MAX
|
| + SCNdPTR SCNiPTR
|
| +#endif
|
| +#ifdef UINTPTR_MAX
|
| + SCNoPTR SCNuPTR SCNxPTR
|
| +#endif
|
| + ;
|
| + ]])],
|
| + [gl_cv_header_working_inttypes_h=yes])
|
| + fi])
|
| +
|
| + dnl Override <inttypes.h> always, so that the portability warnings work.
|
| + if false && test $gl_cv_header_working_inttypes_h = yes; then
|
| + dnl Use the existing <inttypes.h>.
|
| + INTTYPES_H=''
|
| + else
|
| +
|
| + AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
|
| + gl_CHECK_NEXT_HEADERS([inttypes.h])
|
| +
|
| + dnl Ensure that <stdint.h> defines the limit macros, since gnulib's
|
| + dnl <inttypes.h> relies on them. This macro is only needed when a
|
| + dnl C++ compiler is in use; it has no effect for a C compiler.
|
| + dnl Also be careful to define __STDC_LIMIT_MACROS only when gnulib's
|
| + dnl <inttypes.h> is going to be created, and to avoid redefinition warnings
|
| + dnl if the __STDC_LIMIT_MACROS is already defined through the CPPFLAGS.
|
| + AC_DEFINE([GL_TRIGGER_STDC_LIMIT_MACROS], 1,
|
| + [Define to make the limit macros in <stdint.h> visible.])
|
| + AH_VERBATIM([__STDC_LIMIT_MACROS_ZZZ],
|
| +[/* Ensure that <stdint.h> defines the limit macros, since gnulib's
|
| + <inttypes.h> relies on them. */
|
| +#if defined __cplusplus && !defined __STDC_LIMIT_MACROS && GL_TRIGGER_STDC_LIMIT_MACROS
|
| +# define __STDC_LIMIT_MACROS 1
|
| +#endif
|
| +])
|
| +
|
| + PRIPTR_PREFIX=
|
| + if test -n "$STDINT_H"; then
|
| + dnl Using the gnulib <stdint.h>. It always defines intptr_t to 'long'.
|
| + PRIPTR_PREFIX='"l"'
|
| + else
|
| + dnl Using the system's <stdint.h>.
|
| + for glpfx in '' l ll I64; do
|
| + case $glpfx in
|
| + '') gltype1='int';;
|
| + l) gltype1='long int';;
|
| + ll) gltype1='long long int';;
|
| + I64) gltype1='__int64';;
|
| + esac
|
| + AC_COMPILE_IFELSE(
|
| + [AC_LANG_PROGRAM([[#include <stdint.h>
|
| + extern intptr_t foo;
|
| + extern $gltype1 foo;]])],
|
| + [PRIPTR_PREFIX='"'$glpfx'"'])
|
| + test -n "$PRIPTR_PREFIX" && break
|
| + done
|
| + fi
|
| + AC_SUBST([PRIPTR_PREFIX])
|
| +
|
| + if test "$ac_cv_have_decl_imaxabs" = yes; then
|
| + HAVE_DECL_IMAXABS=1
|
| + else
|
| + HAVE_DECL_IMAXABS=0
|
| + fi
|
| +
|
| + if test "$ac_cv_have_decl_imaxdiv" = yes; then
|
| + HAVE_DECL_IMAXDIV=1
|
| + else
|
| + HAVE_DECL_IMAXDIV=0
|
| + fi
|
| +
|
| + if test "$ac_cv_have_decl_strtoimax" = yes; then
|
| + HAVE_DECL_STRTOIMAX=1
|
| + else
|
| + HAVE_DECL_STRTOIMAX=0
|
| + fi
|
| +
|
| + if test "$ac_cv_have_decl_strtoumax" = yes; then
|
| + HAVE_DECL_STRTOUMAX=1
|
| + else
|
| + HAVE_DECL_STRTOUMAX=0
|
| + fi
|
| +
|
| + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
|
| + [INT32_MAX_LT_INTMAX_MAX],
|
| + [defined INT32_MAX && defined INTMAX_MAX],
|
| + [INT32_MAX < INTMAX_MAX],
|
| + [sizeof (int) < sizeof (long long int)])
|
| + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
|
| + [INT64_MAX_EQ_LONG_MAX],
|
| + [defined INT64_MAX],
|
| + [INT64_MAX == LONG_MAX],
|
| + [sizeof (long long int) == sizeof (long int)])
|
| + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
|
| + [UINT32_MAX_LT_UINTMAX_MAX],
|
| + [defined UINT32_MAX && defined UINTMAX_MAX],
|
| + [UINT32_MAX < UINTMAX_MAX],
|
| + [sizeof (unsigned int) < sizeof (unsigned long long int)])
|
| + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
|
| + [UINT64_MAX_EQ_ULONG_MAX],
|
| + [defined UINT64_MAX],
|
| + [UINT64_MAX == ULONG_MAX],
|
| + [sizeof (unsigned long long int) == sizeof (unsigned long int)])
|
| +
|
| + INTTYPES_H='inttypes.h'
|
| + fi
|
| + AC_SUBST(INTTYPES_H)
|
| +])
|
| +
|
| +# Define the symbol $1 to be 1 if the condition is true, 0 otherwise.
|
| +# If $2 is true, the condition is $3; otherwise if long long int is supported
|
| +# approximate the condition with $4; otherwise, assume the condition is false.
|
| +# The condition should work on all C99 platforms; the approximations should be
|
| +# good enough to work on all practical pre-C99 platforms.
|
| +# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants.
|
| +AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION],
|
| +[
|
| + AC_CACHE_CHECK([whether $3],
|
| + [gl_cv_test_$1],
|
| + [AC_COMPILE_IFELSE(
|
| + [AC_LANG_PROGRAM(
|
| + [[/* Work also in C++ mode. */
|
| + #define __STDC_LIMIT_MACROS 1
|
| +
|
| + /* Work if build is not clean. */
|
| + #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
|
| +
|
| + #include <limits.h>
|
| + #if HAVE_STDINT_H
|
| + #include <stdint.h>
|
| + #endif
|
| +
|
| + #if $2
|
| + #define CONDITION ($3)
|
| + #elif HAVE_LONG_LONG_INT
|
| + #define CONDITION ($4)
|
| + #else
|
| + #define CONDITION 0
|
| + #endif
|
| + int test[CONDITION ? 1 : -1];]])],
|
| + [gl_cv_test_$1=yes],
|
| + [gl_cv_test_$1=no])])
|
| + if test $gl_cv_test_$1 = yes; then
|
| + $1=1;
|
| + else
|
| + $1=0;
|
| + fi
|
| + AC_SUBST([$1])
|
| +])
|
| +
|
| +AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
|
| +[
|
| + dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
| + AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
|
| + GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
|
| +])
|
| +
|
| +AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
|
| +[
|
| + GNULIB_IMAXABS=0; AC_SUBST([GNULIB_IMAXABS])
|
| + GNULIB_IMAXDIV=0; AC_SUBST([GNULIB_IMAXDIV])
|
| + GNULIB_STRTOIMAX=0; AC_SUBST([GNULIB_STRTOIMAX])
|
| + GNULIB_STRTOUMAX=0; AC_SUBST([GNULIB_STRTOUMAX])
|
| + dnl Assume proper GNU behavior unless another module says otherwise.
|
| + HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS])
|
| + HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV])
|
| + HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
|
| + HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
|
| +])
|
|
|