Commit | Line | Data |
---|---|---|
88b48903 | 1 | # float_h.m4 serial 9 |
4a626d0a | 2 | dnl Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. |
88b48903 WN |
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 | ]) |