Add this:
[gnulib.git] / m4 / xstrtoumax.m4
index 842d729..7899ca1 100644 (file)
@@ -1,21 +1,33 @@
-#serial 1
+#serial 2
 
 # autoconf tests required for use of xstrtoumax.c
 
 AC_DEFUN(jm_AC_PREREQ_XSTRTOUMAX,
 [
 
 # autoconf tests required for use of xstrtoumax.c
 
 AC_DEFUN(jm_AC_PREREQ_XSTRTOUMAX,
 [
+  AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
   AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
   AC_CHECK_HEADERS(stdlib.h)
   AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
   AC_CHECK_HEADERS(stdlib.h)
-  AC_CHECK_FUNCS(strtoull strtoumax strtouq)
-  AC_REPLACE_FUNCS(strtoumax)
+
+  AC_CACHE_CHECK([whether <inttypes.h> defines strtoumax as a macro],
+    jm_cv_func_strtoumax_macro,
+    AC_EGREP_CPP([inttypes_h_defines_strtoumax], [#include <inttypes.h>
+#ifdef strtoumax
+ inttypes_h_defines_strtoumax
+#endif],
+      jm_cv_func_strtoumax_macro=yes,
+      jm_cv_func_strtoumax_macro=no))
+
+  if test "$jm_cv_func_strtoumax_macro" != yes; then
+    AC_REPLACE_FUNCS(strtoumax)
+  fi
 
   dnl We don't need (and can't compile) the replacement strtoull
   dnl unless the type `unsigned long long' exists.
   dnl Also, only the replacement strtoumax invokes strtoull,
   dnl so we need the replacement strtoull only if strtoumax does not exist.
 
   dnl We don't need (and can't compile) the replacement strtoull
   dnl unless the type `unsigned long long' exists.
   dnl Also, only the replacement strtoumax invokes strtoull,
   dnl so we need the replacement strtoull only if strtoumax does not exist.
-  case "$ac_cv_type_unsigned_long_long,$ac_cv_func_strtoumax" in
-    yes,no)
+  case "$ac_cv_type_unsigned_long_long,$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in
+    yes,no,no)
       AC_REPLACE_FUNCS(strtoull)
       ;;
   esac
       AC_REPLACE_FUNCS(strtoull)
       ;;
   esac