strtoumax: fix typo in previous commit.
[gnulib.git] / m4 / fmod.m4
index 26b1c72..139afe6 100644 (file)
@@ -1,5 +1,5 @@
-# fmod.m4 serial 2
-dnl Copyright (C) 2011-2012 Free Software Foundation, Inc.
+# fmod.m4 serial 4
+dnl Copyright (C) 2011-2013 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.
@@ -14,6 +14,7 @@ AC_DEFUN([gl_FUNC_FMOD],
 
   m4_ifdef([gl_FUNC_FMOD_IEEE], [
     if test $gl_fmod_required = ieee && test $REPLACE_FMOD = 0; then
+      AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
       AC_CACHE_CHECK([whether fmod works according to ISO C 99 with IEC 60559],
         [gl_cv_func_fmod_ieee],
         [
@@ -40,7 +41,6 @@ int main (int argc, char *argv[])
 {
   double (*my_fmod) (double, double) = argc ? fmod : dummy;
   int result = 0;
-  double i;
   double f;
   /* Test fmod(...,0.0).
      This test fails on OSF/1 5.1.  */
@@ -57,7 +57,13 @@ int main (int argc, char *argv[])
             ]])],
             [gl_cv_func_fmod_ieee=yes],
             [gl_cv_func_fmod_ieee=no],
-            [gl_cv_func_fmod_ieee="guessing no"])
+            [case "$host_os" in
+                       # Guess yes on glibc systems.
+               *-gnu*) gl_cv_func_fmod_ieee="guessing yes" ;;
+                       # If we don't know, assume the worst.
+               *)      gl_cv_func_fmod_ieee="guessing no" ;;
+             esac
+            ])
           LIBS="$save_LIBS"
         ])
       case "$gl_cv_func_fmod_ieee" in
@@ -68,18 +74,36 @@ int main (int argc, char *argv[])
   ])
   if test $REPLACE_FMOD = 1; then
     dnl Find libraries needed to link lib/fmod.c.
+    AC_REQUIRE([gl_FUNC_FABS])
+    AC_REQUIRE([gl_FUNC_FREXP])
     AC_REQUIRE([gl_FUNC_TRUNC])
-    AC_REQUIRE([gl_FUNC_FMA])
+    AC_REQUIRE([gl_FUNC_LDEXP])
+    AC_REQUIRE([gl_FUNC_ISNAND])
     FMOD_LIBM=
+    dnl Append $FABS_LIBM to FMOD_LIBM, avoiding gratuitous duplicates.
+    case " $FMOD_LIBM " in
+      *" $FABS_LIBM "*) ;;
+      *) FMOD_LIBM="$FMOD_LIBM $FABS_LIBM" ;;
+    esac
+    dnl Append $FREXP_LIBM to FMOD_LIBM, avoiding gratuitous duplicates.
+    case " $FMOD_LIBM " in
+      *" $FREXP_LIBM "*) ;;
+      *) FMOD_LIBM="$FMOD_LIBM $FREXP_LIBM" ;;
+    esac
     dnl Append $TRUNC_LIBM to FMOD_LIBM, avoiding gratuitous duplicates.
     case " $FMOD_LIBM " in
       *" $TRUNC_LIBM "*) ;;
       *) FMOD_LIBM="$FMOD_LIBM $TRUNC_LIBM" ;;
     esac
-    dnl Append $FMA_LIBM to FMOD_LIBM, avoiding gratuitous duplicates.
+    dnl Append $LDEXP_LIBM to FMOD_LIBM, avoiding gratuitous duplicates.
+    case " $FMOD_LIBM " in
+      *" $LDEXP_LIBM "*) ;;
+      *) FMOD_LIBM="$FMOD_LIBM $LDEXP_LIBM" ;;
+    esac
+    dnl Append $ISNAND_LIBM to FMOD_LIBM, avoiding gratuitous duplicates.
     case " $FMOD_LIBM " in
-      *" $FMA_LIBM "*) ;;
-      *) FMOD_LIBM="$FMOD_LIBM $FMA_LIBM" ;;
+      *" $ISNAND_LIBM "*) ;;
+      *) FMOD_LIBM="$FMOD_LIBM $ISNAND_LIBM" ;;
     esac
   fi
 ])