changeset 15843:bc22a56bfa43

frexpf: Drop assumption about library that defines frexpf. * m4/mathfunc.m4 (gl_MATHFUNC): Support also the argument types 'int *', 'float *', 'long double *', 'float', 'long double'. * m4/frexpf.m4 (gl_FUNC_FREXPF): Use gl_MATHFUNC macro instead of AC_CHECK_FUNCS. * modules/frexpf (Files): Add m4/mathfunc.m4.
author Bruno Haible <bruno@clisp.org>
date Fri, 07 Oct 2011 00:11:51 +0200
parents 290f37cfc069
children 5a6c8b0dc836
files ChangeLog m4/frexpf.m4 m4/mathfunc.m4 modules/frexpf
diffstat 4 files changed, 26 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2011-10-06  Bruno Haible  <bruno@clisp.org>
 
+	frexpf: Drop assumption about library that defines frexpf.
+	* m4/mathfunc.m4 (gl_MATHFUNC): Support also the argument types
+	'int *', 'float *', 'long double *', 'float', 'long double'.
+	* m4/frexpf.m4 (gl_FUNC_FREXPF): Use gl_MATHFUNC macro instead of
+	AC_CHECK_FUNCS.
+	* modules/frexpf (Files): Add m4/mathfunc.m4.
+
 	Tests for module 'frexpf'.
 	* modules/frexpf-tests: New file.
 	* tests/test-frexpf.c: New file.
--- a/m4/frexpf.m4
+++ b/m4/frexpf.m4
@@ -1,4 +1,4 @@
-# frexpf.m4 serial 1
+# frexpf.m4 serial 2
 dnl Copyright (C) 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,
@@ -9,15 +9,12 @@
   AC_REQUIRE([gl_MATH_H_DEFAULTS])
   AC_REQUIRE([gl_FUNC_FREXP])
 
-  dnl Test whether frexpf() exists. Assume that frexpf(), if it exists, is
-  dnl defined in the same library as frexp().
-  save_LIBS="$LIBS"
-  LIBS="$LIBS $FREXP_LIBM"
-  AC_CHECK_FUNCS([frexpf])
-  LIBS="$save_LIBS"
-  if test $ac_cv_func_frexpf = yes; then
-    FREXPF_LIBM="$FREXP_LIBM"
-  else
+  dnl Test whether frexpf() exists. We cannot assume that frexpf(), if it
+  dnl exists, is defined in the same library as frexp(). This is not the case
+  dnl on NetBSD, OpenBSD.
+  gl_MATHFUNC([frexpf], [float], [(float, int *)])
+  if test $gl_cv_func_frexpf_no_libm = no \
+     && test $gl_cv_func_frexpf_in_libm = no; then
     HAVE_FREXPF=0
     FREXPF_LIBM="$FREXP_LIBM"
   fi
--- a/m4/mathfunc.m4
+++ b/m4/mathfunc.m4
@@ -1,4 +1,4 @@
-# mathfunc.m4 serial 6
+# mathfunc.m4 serial 7
 dnl Copyright (C) 2010-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,
@@ -30,8 +30,11 @@
              #endif
              #include <math.h>
              $2 (*funcptr) $3 = ]func[;
-             double d_ret;]],
-           [[$2 y = funcptr ]m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([$3], [int], [2])], [double \*], [&d_ret])], [double], [1.6180339887])[;
+             int i_ret;
+             float f_ret;
+             double d_ret;
+             long double l_ret;]],
+           [[$2 y = funcptr ]m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([$3], [int \*], [&i_ret])], [float \*], [&f_ret])], [double \*], [&d_ret])], [long double \*], [&l_ret])], [int], [2])], [float], [1.618034f])], [long double], [1.618033988749894848L])], [double], [1.6180339887])[;
              return y < 0.3 || y > 1.7;
            ]])],
         [gl_cv_func_]func[_no_libm=yes],
@@ -50,8 +53,11 @@
                #endif
                #include <math.h>
                $2 (*funcptr) $3 = ]func[;
-               double d_ret;]],
-             [[$2 y = funcptr ]m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([$3], [int], [2])], [double \*], [&d_ret])], [double], [1.6180339887])[;
+               int i_ret;
+               float f_ret;
+               double d_ret;
+               long double l_ret;]],
+             [[$2 y = funcptr ]m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([$3], [int \*], [&i_ret])], [float \*], [&f_ret])], [double \*], [&d_ret])], [long double \*], [&l_ret])], [int], [2])], [float], [1.618034f])], [long double], [1.618033988749894848L])], [double], [1.6180339887])[;
                return y < 0.3 || y > 1.7;
              ]])],
           [gl_cv_func_]func[_in_libm=yes],
--- a/modules/frexpf
+++ b/modules/frexpf
@@ -4,6 +4,7 @@
 Files:
 lib/frexpf.c
 m4/frexpf.m4
+m4/mathfunc.m4
 
 Depends-on:
 math