annotate m4/logf.m4 @ 17476:6057744acd2c default tip master

autoupdate
author Karl Berry <karl@freefriends.org>
date Fri, 16 Aug 2013 06:32:22 -0700
parents e542fd46ad6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16811
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
1 # logf.m4 serial 6
17249
e542fd46ad6f maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents: 16811
diff changeset
2 dnl Copyright (C) 2011-2013 Free Software Foundation, Inc.
15863
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3 dnl This file is free software; the Free Software Foundation
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4 dnl gives unlimited permission to copy and/or distribute it,
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
5 dnl with or without modifications, as long as this notice is preserved.
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
7 AC_DEFUN([gl_FUNC_LOGF],
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8 [
16645
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
9 m4_divert_text([DEFAULTS], [gl_logf_required=plain])
15863
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10 AC_REQUIRE([gl_MATH_H_DEFAULTS])
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 AC_REQUIRE([gl_FUNC_LOG])
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12
16580
fdbe3125f81a math: Ensure declarations of math functions.
Bruno Haible <bruno@clisp.org>
parents: 16201
diff changeset
13 dnl Persuade glibc <math.h> to declare logf().
fdbe3125f81a math: Ensure declarations of math functions.
Bruno Haible <bruno@clisp.org>
parents: 16201
diff changeset
14 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
fdbe3125f81a math: Ensure declarations of math functions.
Bruno Haible <bruno@clisp.org>
parents: 16201
diff changeset
15
15863
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
16 dnl Test whether logf() exists. Assume that logf(), if it exists, is
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17 dnl defined in the same library as log().
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18 save_LIBS="$LIBS"
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19 LIBS="$LIBS $LOG_LIBM"
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
20 AC_CHECK_FUNCS([logf])
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
21 LIBS="$save_LIBS"
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
22 if test $ac_cv_func_logf = yes; then
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
23 LOGF_LIBM="$LOG_LIBM"
16645
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
24
16632
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
25 save_LIBS="$LIBS"
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
26 LIBS="$LIBS $LOGF_LIBM"
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
27 gl_FUNC_LOGF_WORKS
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
28 LIBS="$save_LIBS"
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
29 case "$gl_cv_func_logf_works" in
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
30 *yes) ;;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
31 *) REPLACE_LOGF=1 ;;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
32 esac
16645
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
33
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
34 m4_ifdef([gl_FUNC_LOGF_IEEE], [
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
35 if test $gl_logf_required = ieee && test $REPLACE_LOGF = 0; then
16811
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
36 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
16645
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
37 AC_CACHE_CHECK([whether logf works according to ISO C 99 with IEC 60559],
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
38 [gl_cv_func_logf_ieee],
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
39 [
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
40 save_LIBS="$LIBS"
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
41 LIBS="$LIBS $LOGF_LIBM"
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
42 AC_RUN_IFELSE(
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
43 [AC_LANG_SOURCE([[
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
44 #ifndef __NO_MATH_INLINES
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
45 # define __NO_MATH_INLINES 1 /* for glibc */
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
46 #endif
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
47 #include <math.h>
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
48 /* Compare two numbers with ==.
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
49 This is a separate function because IRIX 6.5 "cc -O" miscompiles an
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
50 'x == x' test. */
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
51 static int
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
52 numeric_equal (float x, float y)
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
53 {
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
54 return x == y;
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
55 }
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
56 static float dummy (float x) { return 0; }
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
57 int main (int argc, char *argv[])
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
58 {
16749
2c1499f688aa logf-ieee: Fix test whether logf works.
Bruno Haible <bruno@clisp.org>
parents: 16645
diff changeset
59 float (*my_logf) (float) = argc ? logf : dummy;
16645
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
60 /* Test logf(negative).
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
61 This test fails on NetBSD 5.1. */
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
62 float y = my_logf (-1.0f);
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
63 if (numeric_equal (y, y))
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
64 return 1;
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
65 return 0;
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
66 }
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
67 ]])],
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
68 [gl_cv_func_logf_ieee=yes],
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
69 [gl_cv_func_logf_ieee=no],
16811
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
70 [case "$host_os" in
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
71 # Guess yes on glibc systems.
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
72 *-gnu*) gl_cv_func_logf_ieee="guessing yes" ;;
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
73 # If we don't know, assume the worst.
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
74 *) gl_cv_func_logf_ieee="guessing no" ;;
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
75 esac
b187fc49964b Avoid "guessing no" guesses when cross-compiling to glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 16749
diff changeset
76 ])
16645
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
77 LIBS="$save_LIBS"
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
78 ])
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
79 case "$gl_cv_func_logf_ieee" in
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
80 *yes) ;;
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
81 *) REPLACE_LOGF=1 ;;
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
82 esac
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
83 fi
d7a6433b4967 logf-ieee: Work around test failure on NetBSD 5.1.
Bruno Haible <bruno@clisp.org>
parents: 16632
diff changeset
84 ])
15863
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
85 else
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
86 HAVE_LOGF=0
16632
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
87 fi
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
88 if test $HAVE_LOGF = 0 || test $REPLACE_LOGF = 1; then
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
89 dnl Find libraries needed to link lib/logf.c.
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
90 if test $HAVE_LOGF = 0; then
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
91 LOGF_LIBM="$LOG_LIBM"
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
92 fi
15863
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
93 fi
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
94 AC_SUBST([LOGF_LIBM])
c2fa2febdb1f New module 'logf'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
95 ])
16632
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
96
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
97 dnl Test whether logf() works.
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
98 dnl On OSF/1 5.1, logf(-0.0f) is NaN.
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
99 AC_DEFUN([gl_FUNC_LOGF_WORKS],
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
100 [
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
101 AC_REQUIRE([AC_PROG_CC])
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
102 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
103 AC_CACHE_CHECK([whether logf works], [gl_cv_func_logf_works],
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
104 [
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
105 AC_RUN_IFELSE(
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
106 [AC_LANG_SOURCE([[
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
107 #include <math.h>
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
108 volatile float x;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
109 float y;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
110 int main ()
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
111 {
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
112 x = -0.0f;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
113 y = logf (x);
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
114 if (!(y + y == y))
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
115 return 1;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
116 return 0;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
117 }
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
118 ]])],
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
119 [gl_cv_func_logf_works=yes],
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
120 [gl_cv_func_logf_works=no],
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
121 [case "$host_os" in
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
122 osf*) gl_cv_func_logf_works="guessing no";;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
123 *) gl_cv_func_logf_works="guessing yes";;
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
124 esac
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
125 ])
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
126 ])
2450f24b2cbc logf: Work around OSF/1 5.1 bug.
Bruno Haible <bruno@clisp.org>
parents: 16580
diff changeset
127 ])