NEWS.stable: log cherry-pick [7b2b693]->[a43f6fd] autoupdate
[gnulib.git] / m4 / floorl.m4
index ab54d93..2741dd8 100644 (file)
@@ -1,5 +1,5 @@
-# floorl.m4 serial 2
-dnl Copyright (C) 2007 Free Software Foundation, Inc.
+# floorl.m4 serial 7
+dnl Copyright (C) 2007, 2009-2011 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.
@@ -15,14 +15,17 @@ AC_DEFUN([gl_FUNC_FLOORL],
     dnl Test whether floorl() can be used without libm.
     gl_FUNC_FLOORL_LIBS
     if test "$FLOORL_LIBM" = "?"; then
-      FLOORL_LIBM=
+      dnl Sun C 5.0 on Solaris declares floorl() and has it in the system-wide
+      dnl libm.so, but not in the libm.so that the compiler uses.
+      REPLACE_FLOORL=1
     fi
   else
     HAVE_DECL_FLOORL=0
+  fi
+  if test $HAVE_DECL_FLOORL = 0 || test $REPLACE_FLOORL = 1; then
     AC_LIBOBJ([floorl])
     FLOORL_LIBM=
   fi
-  AC_SUBST([HAVE_DECL_FLOORL])
   AC_SUBST([FLOORL_LIBM])
 ])
 
@@ -30,29 +33,31 @@ AC_DEFUN([gl_FUNC_FLOORL],
 # Sets FLOORL_LIBM.
 AC_DEFUN([gl_FUNC_FLOORL_LIBS],
 [
-  AC_CACHE_VAL([gl_func_floorl_libm], [
-    gl_func_floorl_libm=?
-    AC_TRY_LINK([
-       #ifndef __NO_MATH_INLINES
-       # define __NO_MATH_INLINES 1 /* for glibc */
-       #endif
-       #include <math.h>
-       long double x;],
-      [x = floorl(x);],
-      [gl_func_floorl_libm=])
-    if test "$gl_func_floorl_libm" = "?"; then
+  gl_CACHE_VAL_SILENT([gl_cv_func_floorl_libm], [
+    gl_cv_func_floorl_libm=?
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[#ifndef __NO_MATH_INLINES
+           # define __NO_MATH_INLINES 1 /* for glibc */
+           #endif
+           #include <math.h>
+           long double x;]],
+         [[x = floorl(x);]])],
+      [gl_cv_func_floorl_libm=])
+    if test "$gl_cv_func_floorl_libm" = "?"; then
       save_LIBS="$LIBS"
       LIBS="$LIBS -lm"
-      AC_TRY_LINK([
-         #ifndef __NO_MATH_INLINES
-         # define __NO_MATH_INLINES 1 /* for glibc */
-         #endif
-         #include <math.h>
-         long double x;],
-        [x = floorl(x);],
-        [gl_func_floorl_libm="-lm"])
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#ifndef __NO_MATH_INLINES
+             # define __NO_MATH_INLINES 1 /* for glibc */
+             #endif
+             #include <math.h>
+             long double x;]],
+           [[x = floorl(x);]])],
+        [gl_cv_func_floorl_libm="-lm"])
       LIBS="$save_LIBS"
     fi
   ])
-  FLOORL_LIBM="$gl_func_floorl_libm"
+  FLOORL_LIBM="$gl_cv_func_floorl_libm"
 ])