From 12eef17ca76576859dbf462f2e4a3f940f3698ae Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 12 Jul 2010 23:36:34 +0200 Subject: [PATCH] Unify tests that set gl_cv_func_ldexp_no_libm. --- ChangeLog | 9 +++++++++ m4/ldexp.m4 | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ m4/strtod.m4 | 14 ++------------ modules/ldexp | 4 ++-- modules/strtod | 1 + 5 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 m4/ldexp.m4 diff --git a/ChangeLog b/ChangeLog index c3f530b5d..234af7425 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2010-07-12 Bruno Haible + Unify tests that set gl_cv_func_ldexp_no_libm. + * m4/ldexp.m4: New file, based on m4/mathfunc.m4. + * m4/strtod.m4 (gl_PREREQ_STRTOD): Require gl_CHECK_LDEXP_NO_LIBM. + * modules/ldexp (Files): Remove m4/mathfunc.m4. Add m4/ldexp.m4. + (configure.ac): Simply invoke gl_FUNC_LDEXP. + * modules/strtod (Files): Add m4/ldexp.m4. + +2010-07-12 Bruno Haible + Unify tests that set gl_cv_func_frexpl_no_libm. * m4/frexpl.m4 (gl_CHECK_FREXPL_NO_LIBM): New macro, extracted from gl_FUNC_FREXPL_NO_LIBM. diff --git a/m4/ldexp.m4 b/m4/ldexp.m4 new file mode 100644 index 000000000..7484cb7e3 --- /dev/null +++ b/m4/ldexp.m4 @@ -0,0 +1,54 @@ +# ldexp.m4 serial 1 +dnl Copyright (C) 2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_LDEXP], +[ + AC_REQUIRE([gl_CHECK_LDEXP_NO_LIBM]) + LDEXP_LIBM= + if test $gl_cv_func_ldexp_no_libm = no; then + AC_CACHE_CHECK([whether ldexp() can be used with libm], + [gl_cv_func_ldexp_in_libm], + [ + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + double (*funcptr) (double, int) = ldexp; + double x;]], + [[return ldexp (x, -1) > 0;]])], + [gl_cv_func_ldexp_in_libm=yes], + [gl_cv_func_ldexp_in_libm=no]) + LIBS="$save_LIBS" + ]) + if test $gl_cv_func_ldexp_in_libm = yes; then + LDEXP_LIBM=-lm + fi + fi + AC_SUBST([LDEXP_LIBM]) +]) + +dnl Test whether ldexp() can be used without linking with libm. +dnl Set gl_cv_func_ldexp_no_libm to 'yes' or 'no' accordingly. +AC_DEFUN([gl_CHECK_LDEXP_NO_LIBM], +[ + AC_CACHE_CHECK([whether ldexp() can be used without linking with libm], + [gl_cv_func_ldexp_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + double (*funcptr) (double, int) = ldexp; + double x;]], + [[return ldexp (x, -1) > 0;]])], + [gl_cv_func_ldexp_no_libm=yes], + [gl_cv_func_ldexp_no_libm=no]) + ]) +]) diff --git a/m4/strtod.m4 b/m4/strtod.m4 index 05d36bd4b..8f90ed790 100644 --- a/m4/strtod.m4 +++ b/m4/strtod.m4 @@ -1,4 +1,4 @@ -# strtod.m4 serial 15 +# strtod.m4 serial 16 dnl Copyright (C) 2002-2003, 2006-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -119,18 +119,8 @@ numeric_equal (double x, double y) ]) # Prerequisites of lib/strtod.c. -# FIXME: This implementation is a copy of printf-frexp.m4 and should be shared. AC_DEFUN([gl_PREREQ_STRTOD], [ - AC_CACHE_CHECK([whether ldexp can be used without linking with libm], - [gl_cv_func_ldexp_no_libm], - [ - AC_TRY_LINK([#include - double x; - int y;], - [return ldexp (x, y) < 1;], - [gl_cv_func_ldexp_no_libm=yes], - [gl_cv_func_ldexp_no_libm=no]) - ]) + AC_REQUIRE([gl_CHECK_LDEXP_NO_LIBM]) if test $gl_cv_func_ldexp_no_libm = yes; then AC_DEFINE([HAVE_LDEXP_IN_LIBC], [1], [Define if the ldexp function is available in libc.]) diff --git a/modules/ldexp b/modules/ldexp index 20818eded..025d9817f 100644 --- a/modules/ldexp +++ b/modules/ldexp @@ -2,12 +2,12 @@ Description: ldexp() function: multiply a 'double' by a power of 2. Files: -m4/mathfunc.m4 +m4/ldexp.m4 Depends-on: configure.ac: -gl_MATHFUNC([ldexp], [double], [(double, int)]) +gl_FUNC_LDEXP Makefile.am: diff --git a/modules/strtod b/modules/strtod index d4f64c13d..056ff4263 100644 --- a/modules/strtod +++ b/modules/strtod @@ -4,6 +4,7 @@ strtod() function: convert string to 'double'. Files: lib/strtod.c m4/strtod.m4 +m4/ldexp.m4 Depends-on: c-ctype -- 2.11.0