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])
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([
/* 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 */
PRId8 PRIi8
PRIo8 PRIu8 PRIx8 PRIX8
PRId16 PRIi16
PRIo16 PRIu16 PRIx16 PRIX16
PRId32 PRIi32
PRIo32 PRIu32 PRIx32 PRIX32
PRId64 PRIi64
PRIo64 PRIu64 PRIx64 PRIX64
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
PRIdPTR PRIiPTR
PRIoPTR PRIuPTR PRIxPTR PRIXPTR
;
const char *l = /* implicit string concatenation */
SCNd8 SCNi8
SCNo8 SCNu8 SCNx8
SCNd16 SCNi16
SCNo16 SCNu16 SCNx16
SCNd32 SCNi32
SCNo32 SCNu32 SCNx32
SCNd64 SCNi64
SCNo64 SCNu64 SCNx64
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
SCNdPTR SCNiPTR
SCNoPTR SCNuPTR SCNxPTR
;
])],
[gl_cv_header_working_inttypes_h=yes])
fi])
if false && test $gl_cv_header_working_inttypes_h = yes; then
INTTYPES_H=''
else
AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
if test $ac_cv_header_inttypes_h = yes; then
gl_ABSOLUTE_HEADER([inttypes.h])
ABSOLUTE_INTTYPES_H=\"$gl_cv_absolute_inttypes_h\"
else
ABSOLUTE_INTTYPES_H=\"no/such/file/inttypes.h\"
fi
AC_SUBST([ABSOLUTE_INTTYPES_H])
PRIPTR_PREFIX=
if test -n "$STDINT_H"; then
PRIPTR_PREFIX='"l"'
else
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([ 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
INTTYPES_H='inttypes.h'
fi
AC_SUBST(INTTYPES_H)
])
AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
[
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])
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])
])