For the next patch to the *printf facilities, it is necessary to have a frexp() function that does not require linking with libm. This module provides it.
2007-11-03 Bruno Haible <[EMAIL PROTECTED]> * modules/frexp-nolibm: New file. * m4/frexp.m4 (gl_FUNC_FREXP_NO_LIBM): New macro. =========================== modules/frexp-nolibm ============================= Description: frexp() function: split a double into its constituents, without requiring libm. Files: lib/frexp.c m4/frexp.m4 Depends-on: math isnan-nolibm configure.ac: gl_FUNC_FREXP_NO_LIBM gl_MATH_MODULE_INDICATOR([frexp]) Makefile.am: Include: <math.h> License: LGPL Maintainer: Bruno Haible, Paolo Bonzini ============================================================================= *** m4/frexp.m4.orig 2007-11-03 16:32:30.000000000 +0100 --- m4/frexp.m4 2007-11-03 05:16:32.000000000 +0100 *************** *** 1,4 **** ! # frexp.m4 serial 3 dnl Copyright (C) 2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # frexp.m4 serial 4 dnl Copyright (C) 2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 56,61 **** --- 56,92 ---- AC_SUBST([FREXP_LIBM]) ]) + AC_DEFUN([gl_FUNC_FREXP_NO_LIBM], + [ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + AC_CACHE_CHECK([whether frexp() can be used without linking with libm], + [gl_cv_func_frexp_no_libm], + [ + AC_TRY_LINK([#include <math.h> + double x;], + [int e; return frexp (x, &e) > 0;], + [gl_cv_func_frexp_no_libm=yes], + [gl_cv_func_frexp_no_libm=no]) + ]) + if test $gl_cv_func_frexp_no_libm = yes; then + gl_FUNC_FREXP_WORKS + case "$gl_cv_func_frexp_works" in + *yes) gl_func_frexp_no_libm=yes ;; + *) gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;; + esac + else + gl_func_frexp_no_libm=no + dnl Set REPLACE_FREXP here because the system may have frexp in libm. + REPLACE_FREXP=1 + fi + if test $gl_func_frexp_no_libm = yes; then + AC_DEFINE([HAVE_FREXP_IN_LIBC], 1, + [Define if the frexp() function is available in libc.]) + else + AC_LIBOBJ([frexp]) + fi + ]) + dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on dnl NetBSD 3.0) and on infinite numbers (this fails e.g. on IRIX 6.5). AC_DEFUN([gl_FUNC_FREXP_WORKS],