.
[gnulib.git] / m4 / xstrtoumax.m4
index b9f2706..f6e3199 100644 (file)
@@ -1,4 +1,4 @@
-#serial 1
+#serial 2
 
 # autoconf tests required for use of xstrtoumax.c
 
 
 # autoconf tests required for use of xstrtoumax.c
 
@@ -7,14 +7,26 @@ AC_DEFUN(jm_AC_PREREQ_XSTRTOUMAX,
   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_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