X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Flogf.m4;h=87876cec5969d86569122faadb845b78e4b3b2ed;hb=5191b3546cfb6c163228c23f214e325ddf60d46f;hp=0e4fa5da63ed4971990bd512cf859d2e8ea18c35;hpb=7073cb033569232bd515271e99c5c7cba4ffbdf5;p=gnulib.git diff --git a/m4/logf.m4 b/m4/logf.m4 index 0e4fa5da6..87876cec5 100644 --- a/m4/logf.m4 +++ b/m4/logf.m4 @@ -1,11 +1,12 @@ -# logf.m4 serial 3 -dnl Copyright (C) 2011-2012 Free Software Foundation, Inc. +# logf.m4 serial 6 +dnl Copyright (C) 2011-2013 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_LOGF], [ + m4_divert_text([DEFAULTS], [gl_logf_required=plain]) AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_LOG]) @@ -20,6 +21,7 @@ AC_DEFUN([gl_FUNC_LOGF], LIBS="$save_LIBS" if test $ac_cv_func_logf = yes; then LOGF_LIBM="$LOG_LIBM" + save_LIBS="$LIBS" LIBS="$LIBS $LOGF_LIBM" gl_FUNC_LOGF_WORKS @@ -28,6 +30,58 @@ AC_DEFUN([gl_FUNC_LOGF], *yes) ;; *) REPLACE_LOGF=1 ;; esac + + m4_ifdef([gl_FUNC_LOGF_IEEE], [ + if test $gl_logf_required = ieee && test $REPLACE_LOGF = 0; then + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether logf works according to ISO C 99 with IEC 60559], + [gl_cv_func_logf_ieee], + [ + save_LIBS="$LIBS" + LIBS="$LIBS $LOGF_LIBM" + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#ifndef __NO_MATH_INLINES +# define __NO_MATH_INLINES 1 /* for glibc */ +#endif +#include +/* Compare two numbers with ==. + This is a separate function because IRIX 6.5 "cc -O" miscompiles an + 'x == x' test. */ +static int +numeric_equal (float x, float y) +{ + return x == y; +} +static float dummy (float x) { return 0; } +int main (int argc, char *argv[]) +{ + float (*my_logf) (float) = argc ? logf : dummy; + /* Test logf(negative). + This test fails on NetBSD 5.1. */ + float y = my_logf (-1.0f); + if (numeric_equal (y, y)) + return 1; + return 0; +} + ]])], + [gl_cv_func_logf_ieee=yes], + [gl_cv_func_logf_ieee=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_logf_ieee="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_logf_ieee="guessing no" ;; + esac + ]) + LIBS="$save_LIBS" + ]) + case "$gl_cv_func_logf_ieee" in + *yes) ;; + *) REPLACE_LOGF=1 ;; + esac + fi + ]) else HAVE_LOGF=0 fi