Annotation of OpenXM_contrib/gmp/mpfr/acinclude.m4, Revision 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>