Annotation of OpenXM_contrib/gmp/mpfr/acinclude.m4, Revision 1.1.1.1
1.1 ohara 1:
2: AC_DEFUN(AC_MY_LIBS,
3: [
4: if ` test "$1" `
5: then
6: AC_MSG_CHECKING(gmp library)
7: if test -r "$1/lib$2.a"
8: then
9: LDADD="$LDADD $1/lib$2.a"
10: else
11: AC_MSG_ERROR($2 not found)
12: fi
13: AC_MSG_RESULT(yes)
14: else
15: AC_CHECK_LIB($2, main, , AC_MSG_ERROR($2 not found))
16: fi
17: ]
18: )
19:
20: AC_DEFUN(AC_MY_HEADERS,
21: [
22: if test "$1"
23: then
24: AC_CHECK_HEADER($1/$2, INCLUDES="$INCLUDES -I$1",AC_MSG_ERROR(echo $2 not found in $1))
25: else
26: AC_CHECK_HEADER($2,, AC_MSG_ERROR($2 not found))
27: fi
28: ])
29:
30: AC_DEFUN(AC_CHECK_OS,
31: [
32: AC_CACHE_CHECK([OS type], mpfr_cv_os_type, [
33: mpfr_cv_os_type=`uname -s`
34: ])
35: OS_TYPE=$mpfr_cv_os_type
36: ])
37:
38: AC_DEFUN(AC_CHECK_MACHTYPE,
39: [
40: AC_CACHE_CHECK([Mach type], mpfr_cv_mach_type, [
41: mpfr_cv_mach_type=`uname -m`
42: ])
43: MACHTYPE=$mpfr_cv_mach_type
44: ])
45:
46: dnl ------------------------------------------------------------
47:
48: AC_DEFUN(MPFR_CONFIGS,
49: [
50: case $host in
51: *-*-solaris*)
52: LM9X="-lm9x"
53: ;;
54: esac
55:
56: AC_REPLACE_FUNCS(strcasecmp)
57:
58: dnl Check for IEEE-754 switches on Alpha
59: case $host in
60: alpha*-*-*)
61: saved_CFLAGS="$CFLAGS"
62: AC_CACHE_CHECK([for IEEE-754 switches], mpfr_cv_ieee_switches, [
63: if test -n "$GCC"; then
64: mpfr_cv_ieee_switches="-mfp-rounding-mode=d -mieee-with-inexact"
65: else
66: mpfr_cv_ieee_switches="-fprm d -ieee_with_inexact"
67: fi
68: CFLAGS="$CFLAGS $mpfr_cv_ieee_switches"
69: AC_TRY_COMPILE(,,, mpfr_cv_ieee_switches="none")
70: ])
71: if test "$mpfr_cv_ieee_switches" = "none"; then
72: CFLAGS="$saved_CFLAGS"
73: else
74: CFLAGS="$saved_CFLAGS $mpfr_cv_ieee_switches"
75: fi
76: esac
77:
78: AC_CHECK_HEADERS(fpu_control.h)
79:
80: dnl Check for fesetround
81: AC_CACHE_CHECK([for fesetround], mpfr_cv_have_fesetround, [
82: saved_LIBS="$LIBS"
83: LIBS="$LIBS $LM9X"
84: AC_TRY_LINK([#include <fenv.h>], [fesetround(FE_TONEAREST);],
85: mpfr_cv_have_fesetround=yes, mpfr_cv_have_fesetround=no)
86: LIBS="$saved_LIBS"
87: ])
88: if test "$mpfr_cv_have_fesetround" = "yes"; then
89: LIBS="$LIBS $LM9X"
90: AC_DEFINE(MPFR_HAVE_FESETROUND,1,[Define if you have the `fesetround' function via the <fenv.h> header file.])
91: fi
92:
93: dnl Check random functions
94: AC_CHECK_FUNCS(lrand48)
95:
96: dnl Check whether 0/0, 1/0, -1/0, sqrt(-1) are valid expressions
97: AC_CACHE_CHECK([for valid NaN], mpfr_cv_valid_nan, [
98: AC_TRY_RUN([
99: #include <math.h>
100: int main()
101: {
102: double x = (0.0/0.0) + sqrt(-1.0);
103: return x == 1.0/0.0;
104: }
105: ], mpfr_cv_valid_nan=yes, mpfr_cv_valid_nan=no, mpfr_cv_valid_nan=no)
106: ])
107: if test "$mpfr_cv_valid_nan" = "yes"; then
108: AC_DEFINE(HAVE_INFS,1,[Define if 0/0, 1/0, -1/0 and sqrt(-1) work to generate NaN/infinities.])
109: fi
110:
111: dnl Check for gcc float-conversion bug; if need be, -ffloat-store is used to
112: dnl force the conversion to the destination type when a value is stored to
113: dnl a variable (see ISO C99 standard 5.1.2.3#13, 6.3.1.5#2, 6.3.1.8#2). This
114: dnl is important concerning the exponent range. Note that this doesn't solve
115: dnl the double-rounding problem (x86 processors still have to be set to the
116: dnl IEEE-754 compatible rounding mode).
117: if test -n "$GCC"; then
118: AC_CACHE_CHECK([for gcc float-conversion bug], mpfr_cv_gcc_floatconv_bug, [
119: AC_TRY_RUN([
120: #include <float.h>
121: #ifdef MPFR_HAVE_FESETROUND
122: #include <fenv.h>
123: #endif
124: int main()
125: {
126: double x = 0.5;
127: int i;
128: for (i = 1; i <= 11; i++)
129: x *= x;
130: if (x != 0)
131: return 1;
132: #ifdef MPFR_HAVE_FESETROUND
133: /* Useful test for the G4 PowerPC */
134: fesetround(FE_TOWARDZERO);
135: x = DBL_MAX;
136: x *= 2.0;
137: if (x != DBL_MAX)
138: return 1;
139: #endif
140: return 0;
141: }
142: ], [mpfr_cv_gcc_floatconv_bug="no"],
143: [mpfr_cv_gcc_floatconv_bug="yes, use -ffloat-store"],
144: [mpfr_cv_gcc_floatconv_bug="cannot test, use -ffloat-store"])
145: ])
146: if test "$mpfr_cv_gcc_floatconv_bug" != "no"; then
147: CFLAGS="$CFLAGS -ffloat-store"
148: fi
149: fi
150:
151: dnl Check if denormalized numbers are supported
152: AC_CACHE_CHECK([for denormalized numbers], mpfr_cv_have_denorms, [
153: AC_TRY_RUN([
154: #include <math.h>
155: #include <stdio.h>
156: int main()
157: {
158: double x = 2.22507385850720138309e-308;
159: fprintf (stderr, "%e\n", x / 2.0);
160: return 2.0 * (x / 2.0) != x;
161: }
162: ], mpfr_cv_have_denorms=yes, mpfr_cv_have_denorms=no, mpfr_cv_have_denorms=no)
163: ])
164: if test "$mpfr_cv_have_denorms" = "yes"; then
165: AC_DEFINE(HAVE_DENORMS,1,[Define if denormalized floats work.])
166: fi
167:
168: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>