bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: new module 'frexpf'


From: Bruno Haible
Subject: Re: new module 'frexpf'
Date: Fri, 7 Oct 2011 00:12:01 +0200
User-agent: KMail/1.13.6 (Linux/2.6.37.6-0.5-desktop; KDE/4.6.0; x86_64; ; )

Oops, this module made the wrong assumption that 'frexp' and 'frexpf' are
defined in the same library. This is not true: On NetBSD and OpenBSD,
frexp is in libc but frexpf is in libm. So the configure test reports
  checking for frexpf... no
and arranges for a replacement, although it would not be necessary.

This fixes it:


2011-10-06  Bruno Haible  <address@hidden>

        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.

--- m4/frexpf.m4.orig   Fri Oct  7 00:11:11 2011
+++ m4/frexpf.m4        Thu Oct  6 23:11:32 2011
@@ -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
--- m4/mathfunc.m4.orig Fri Oct  7 00:11:11 2011
+++ m4/mathfunc.m4      Fri Oct  7 00:11:04 2011
@@ -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],
--- modules/frexpf.orig Fri Oct  7 00:11:11 2011
+++ modules/frexpf      Thu Oct  6 23:12:47 2011
@@ -4,6 +4,7 @@
 Files:
 lib/frexpf.c
 m4/frexpf.m4
+m4/mathfunc.m4
 
 Depends-on:
 math
-- 
In memoriam Bahriye Üçok <http://en.wikipedia.org/wiki/Bahriye_Üçok>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]