changeset 29131:7500299cdad2

New module 'frexp-nolibm'.
author Bruno Haible <bruno@clisp.org>
date Sat, 03 Nov 2007 16:35:53 +0100
parents 113c190cc217
children 9c8cd215636b
files ChangeLog m4/frexp.m4 modules/frexp-nolibm
diffstat 3 files changed, 63 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Nov 03 15:22:52 2007 +0100
+++ b/ChangeLog	Sat Nov 03 16:35:53 2007 +0100
@@ -1,3 +1,8 @@
+2007-11-03  Bruno Haible  <bruno@clisp.org>
+
+	* modules/frexp-nolibm: New file.
+	* m4/frexp.m4 (gl_FUNC_FREXP_NO_LIBM): New macro.
+
 2007-11-03  Bruno Haible  <bruno@clisp.org>
 
 	* lib/vasnprintf.c (VASNPRINTF): Don't assume that snprintf's return
--- a/m4/frexp.m4	Sat Nov 03 15:22:52 2007 +0100
+++ b/m4/frexp.m4	Sat Nov 03 16:35:53 2007 +0100
@@ -1,4 +1,4 @@
-# frexp.m4 serial 3
+# 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,6 +56,37 @@
   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],
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/frexp-nolibm	Sat Nov 03 16:35:53 2007 +0100
@@ -0,0 +1,26 @@
+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
+