maint: update copyright
[gnulib.git] / m4 / float_h.m4
1 # float_h.m4 serial 9
2 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
6
7 AC_DEFUN([gl_FLOAT_H],
8 [
9   AC_REQUIRE([AC_PROG_CC])
10   AC_REQUIRE([AC_CANONICAL_HOST])
11   FLOAT_H=
12   REPLACE_FLOAT_LDBL=0
13   case "$host_os" in
14     aix* | beos* | openbsd* | mirbsd* | irix*)
15       FLOAT_H=float.h
16       ;;
17     freebsd*)
18       case "$host_cpu" in
19 changequote(,)dnl
20         i[34567]86 )
21 changequote([,])dnl
22           FLOAT_H=float.h
23           ;;
24         x86_64 )
25           # On x86_64 systems, the C compiler may still be generating
26           # 32-bit code.
27           AC_EGREP_CPP([yes],
28             [#if defined __LP64__ || defined __x86_64__ || defined __amd64__
29              yes
30              #endif],
31             [],
32             [FLOAT_H=float.h])
33           ;;
34       esac
35       ;;
36     linux*)
37       case "$host_cpu" in
38         powerpc*)
39           FLOAT_H=float.h
40           ;;
41       esac
42       ;;
43   esac
44   case "$host_os" in
45     aix* | freebsd* | linux*)
46       if test -n "$FLOAT_H"; then
47         REPLACE_FLOAT_LDBL=1
48       fi
49       ;;
50   esac
51
52   dnl Test against glibc-2.7 Linux/SPARC64 bug.
53   REPLACE_ITOLD=0
54   AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works],
55     [gl_cv_func_itold_works],
56     [
57       AC_RUN_IFELSE(
58         [AC_LANG_SOURCE([[
59 int i = -1;
60 volatile long double ld;
61 int main ()
62 {
63   ld += i * 1.0L;
64   if (ld > 0)
65     return 1;
66   return 0;
67 }]])],
68         [gl_cv_func_itold_works=yes],
69         [gl_cv_func_itold_works=no],
70         [case "$host" in
71            sparc*-*-linux*)
72              AC_EGREP_CPP([yes],
73                [#if defined __LP64__ || defined __arch64__
74                 yes
75                 #endif],
76                [gl_cv_func_itold_works="guessing no"],
77                [gl_cv_func_itold_works="guessing yes"])
78              ;;
79            *) gl_cv_func_itold_works="guessing yes" ;;
80          esac
81         ])
82     ])
83   case "$gl_cv_func_itold_works" in
84     *no)
85       REPLACE_ITOLD=1
86       dnl We add the workaround to <float.h> but also to <math.h>,
87       dnl to increase the chances that the fix function gets pulled in.
88       FLOAT_H=float.h
89       ;;
90   esac
91
92   if test -n "$FLOAT_H"; then
93     gl_NEXT_HEADERS([float.h])
94   fi
95   AC_SUBST([FLOAT_H])
96   AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"])
97   AC_SUBST([REPLACE_ITOLD])
98 ])