dnl Process this file with autoconf to produce a configure script. AC_INIT() mpfr_version=`cat $srcdir/VERSION` AM_INIT_AUTOMAKE(mpfr, $mpfr_version, [no-define]) AC_ARG_WITH(gmp_include, [ --with-gmp-include=DIR GMP include directory ], with_gmp_include=$withval) AC_ARG_WITH(gmp_lib, [ --with-gmp-lib=DIR GMP lib directory ], with_gmp_lib=$withval) AC_ARG_WITH(gmp, [ --with-gmp=DIR GMP directory ], with_gmp_include=$withval/include with_gmp_lib=$withval/lib) AC_ARG_WITH(irix64, [ --with-irix64=on/off Irix 32/64 bits support ], with_irix64=$withval, with_irix64=off) dnl Checks for programs. AC_PROG_CC AC_PROG_RANLIB AC_CHECK_OS AC_CHECK_MACHTYPE dnl If compiler is gcc, then use some specific flags. if test -n "$GCC"; then CFLAGS="-g -O2 -Wall -Wmissing-prototypes $CFLAGS" fi MISCFLAGS='$<' dnl Set the OS-dependent flags. case $OS_TYPE in HP-UX*) AC_CHECK_LIB(M, main) AC_DEFINE(hpux) LDFLAGS="$LDFLAGS -L/lib/pa1.1" ;; SunOS*) MISCFLAGS="trunc.c" AC_CHECK_LIB(m, main) ;; Linux*) AC_CHECK_LIB(m, main) if [[ "$MACHTYPE" = "alpha" ]]; then CFLAGS="$CFLAGS -mfp-rounding-mode=d -mieee-with-inexact" fi ;; IRIX64) AC_CHECK_LIB(m, main) if [[ "$irix64" = "on" ]]; then CFLAGS ="-mabi=64 $CFLAGS" else CFLAGS ="-mabi=n32 $CFLAGS" fi ;; OSF*) AC_CHECK_LIB(m, main) CFLAGS="$CFLAGS -mfp-rounding-mode=d -mieee-with-inexact -ffloat-store" AC_DEFINE(__STDC__) ;; *) AC_CHECK_LIB(m, main) ;; esac AC_CHECK_HEADERS(fpu_control.h) dnl Tests concerning the include directories. AC_MSG_CHECKING(for gmp files) if test -d "$with_gmp_include"; then CPPFLAGS="$CPPFLAGS -I$with_gmp_include" else with_gmp_include= fi AC_TRY_COMPILE([ #include "gmp.h" #include "gmp-impl.h" #include "longlong.h" ], , AC_MSG_RESULT(yes), [AC_MSG_RESULT(no) AC_MSG_ERROR(gmp.h or gmp-impl.h or config.h or gmp-mparam.h or longlong.h may be missing ${with_gmp_include:+in $with_gmp_include})] ) dnl Check BITS_PER_MP_LIMB and BYTES_PER_MP_LIMB AC_MSG_CHECKING(for valid BITS_PER_MP_LIMB and BYTES_PER_MP_LIMB) AC_TRY_RUN([ #include #include "gmp.h" #include "gmp-impl.h" int main() { return BITS_PER_MP_LIMB == BYTES_PER_MP_LIMB * CHAR_BIT && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ? 0 : 1; } ], AC_MSG_RESULT(yes), [AC_MSG_RESULT(no) dnl do not use the AC_MSG_ERROR macro because of message truncation... { echo "configure: error: BITS_PER_MP_LIMB and/or BYTES_PER_MP_LIMB are incorrect. You probably need to change some of the GMP or MPFR compile options: MPFR doesn't currently do as many architecture checks as GMP, so the default target architecture may be different, hence the error." 1>&2 exit 1; }]) dnl Check random functions AC_MSG_CHECKING(for rand48 functions) AC_TRY_RUN([#include int main() { long int l = lrand48 (); return 0; }], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_RAND48)], AC_MSG_RESULT(no), AC_MSG_RESULT(no) ) dnl Check for ISOC9X interface for rounding modes AC_MSG_CHECKING(for fenv.h) AC_TRY_CPP([#include ], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FENV)], AC_MSG_RESULT(no) ) dnl Check whether 0/0, 1/0, -1/0 are valid expressions AC_MSG_CHECKING(for 0/0 as a valid expression) AC_TRY_RUN([#include int main() { double x = 0.0/0.0; exit (0); }], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INFS)], AC_MSG_RESULT(no), AC_MSG_RESULT(no) ) dnl Check if denormalized numbers are supported AC_MSG_CHECKING(for denormalized numbers) AC_TRY_RUN([ #include #include int main() { double x = 2.22507385850720138309e-308; fprintf (stderr, "%e\n", x / 2.0); exit (2.0 * (x / 2.0) != x);}], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_DENORMS)], AC_MSG_RESULT(no), AC_MSG_RESULT(no) ) dnl Check for extended precision AC_MSG_CHECKING(for extended precision) AC_TRY_RUN([ int main() { double c, d, dj; int j; c = 1.46484375e-3; dj = 1.0; for (j=0; j<54; j++) dj *= 0.5; d = 0.75 + dj; d /= 1 << 9; exit (c == d); }], [AC_MSG_RESULT(yes) CFLAGS="$CFLAGS -ffloat-store" AC_DEFINE(USE_EXTENDED)], AC_MSG_RESULT(no), AC_MSG_RESULT(no) ) AC_MY_LIBS($with_gmp_lib, gmp) AC_SUBST(INCLUDES) AC_SUBST(LDADD) AC_SUBST(LDFLAGS) AC_SUBST(CFLAGS) AC_SUBST(MISCFLAGS) AC_OUTPUT(Makefile tests/Makefile) dnl NEWS README AUTHORS Changelog