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 <br...@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. --- 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>