X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=mpfr%2Fconfigure.in;fp=mpfr%2Fconfigure.in;h=bc2ea97fd0e87b07188da03da96679963b331b45;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=0000000000000000000000000000000000000000;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/mpfr/configure.in b/mpfr/configure.in new file mode 100644 index 00000000..bc2ea97f --- /dev/null +++ b/mpfr/configure.in @@ -0,0 +1,503 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_COPYRIGHT([ +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +Contributed by the Arenaire and Cacao projects, INRIA. + +This file is part of the GNU MPFR Library. + +The GNU MPFR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published +by the Free Software Foundation; either version 2.1 of the License, or (at +your option) any later version. + +The GNU MPFR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MPFR Library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, +MA 02110-1301, USA. +]) + +dnl Add check-news when it checks for more than 15 lines +AC_INIT([MPFR],[2.4.1]) +AM_INIT_AUTOMAKE([1.10.1 no-define dist-bzip2 dist-lzma dist-zip]) +dnl AM_MAINTAINER_MODE(enable) + +AC_CONFIG_MACRO_DIR([m4]) + +dnl FIXME: The AC_ARG_ENABLE(decimal-float...) part does things too +dnl early, even when this option is not used. In particular, it must +dnl be put after AC_PROG_CC; another problem is that the GMP CFLAGS +dnl and CC check may modify the compiler. + +test_CFLAGS=${CFLAGS+set} + +AC_CANONICAL_HOST + +dnl To use a separate config header. +dnl There is still some problem with GMP's HAVE_CONFIG +dnl AC_CONFIG_HEADERS([mpfrconf.h:mpfrconf.in]) + +dnl Extra arguments to configure +unset gmp_lib_path GMP_CFLAGS GMP_CC +AC_ARG_WITH(gmp_include, + [ --with-gmp-include=DIR GMP include directory ], + CPPFLAGS="$CPPFLAGS -I$withval") +AC_ARG_WITH(gmp_lib, + [ --with-gmp-lib=DIR GMP lib directory ], [ + LDFLAGS="$LDFLAGS -L$withval" + gmp_lib_path="$withval" + ]) +AC_ARG_WITH(gmp, + [ --with-gmp=DIR GMP install directory ], [ + if test -z "$with_gmp_lib" -a -z "$with_gmp_include" ; then + CPPFLAGS="$CPPFLAGS -I$withval/include" + LDFLAGS="$LDFLAGS -L$withval/lib" + gmp_lib_path="$withval/lib" + else + AC_MSG_FAILURE([Do not use --with-gmp and --with-gmp-include/--with-gmp-lib options simultaneously.]) + fi + ]) + +AC_ARG_WITH(gmp_build, + [ --with-gmp-build=DIR GMP build directory (please read INSTALL file)], + [ + if test -z "$gmp_lib_path" -a -z "$with_gmp_include" ; then + CPPFLAGS="$CPPFLAGS -I$withval -I$withval/tune" + LDFLAGS="$LDFLAGS -L$withval -L$withval/.libs -L$withval/tune/" + gmp_lib_path="$withval$PATH_SEPARATOR$withval/.libs$PATH_SEPARATOR$withval/tune" + if test -r $withval/Makefile ; then + GMP_CFLAGS=`grep -w "CFLAGS =" $withval/Makefile | sed 's/CFLAGS = //'` + GMP_CC=`grep -w "CC =" $withval/Makefile | sed 's/CC = //'` + fi + use_gmp_build=yes + else + AC_MSG_FAILURE([Do not use --with-gmp-build and other --with-gmp options simultaneously.]) + fi + ]) + +AC_ARG_WITH(mulhigh_size, + [ --with-mulhigh-size=NUM internal threshold table for mulhigh], + AC_DEFINE_UNQUOTED([MPFR_MULHIGH_SIZE],$withval, [Mulhigh size])) + +AC_ARG_ENABLE(assert, + [ --enable-assert enable ASSERT checking [[default=no]]], + [ case $enableval in + yes) AC_DEFINE([WANT_ASSERT],1,[Want assertion]) ;; + no) ;; + full) AC_DEFINE([WANT_ASSERT],2,[Want assertion]) ;; + *) AC_MSG_ERROR([bad value for --enable-assert: yes, no or full]) ;; + esac]) +AC_ARG_ENABLE(logging, + [ --enable-logging enable MPFR logging (the system must support it) + [[default=no]]], + [ disable_gcc_format_warning=yes + case $enableval in + yes) AC_DEFINE([MPFR_USE_LOGGING],1,[Log what MPFR does]) ;; + no) ;; + *) AC_MSG_ERROR([bad value for --enable-logging: yes or no]) ;; + esac]) +AC_ARG_ENABLE(thread-safe, + [ --enable-thread-safe build MPFR as thread safe (the system must support + it) [[default=no]]], + [ case $enableval in + yes) AC_DEFINE([MPFR_USE_THREAD_SAFE],1,[Build MPFR as thread safe]) ;; + no) ;; + *) AC_MSG_ERROR([bad value for --enable-thread-safe: yes or no]) ;; + esac]) +AC_ARG_ENABLE(warnings, + [ --enable-warnings allow MPFR to output warnings to stderr [[default=no]]], + [ case $enableval in + yes) AC_DEFINE([MPFR_USE_WARNINGS],1,[Allow MPFR to output warnings to stderr]) ;; + no) ;; + *) AC_MSG_ERROR([bad value for --enable-warnings: yes or no]) ;; + esac]) + +AC_ARG_ENABLE(tests-timeout, + [ --enable-tests-timeout=NUM enable timeout (NUM seconds) for test programs + (NUM <= 9999) [[default=no]]; if enabled, env variable + $MPFR_TESTS_TIMEOUT overrides NUM (0: no timeout).], + [ case $enableval in + no) ;; + yes) AC_DEFINE([MPFR_TESTS_TIMEOUT], 0, [timeout limit]) ;; + [[0-9]]|[[0-9]][[0-9]]|[[0-9]][[0-9]][[0-9]]|[[0-9]][[0-9]][[0-9]][[0-9]]) + AC_DEFINE_UNQUOTED([MPFR_TESTS_TIMEOUT], $enableval, [timeout limit]) ;; + *) AC_MSG_ERROR([bad value for --enable-tests-timeout]) ;; + esac]) + + +dnl +dnl Setup CC and CFLAGS +dnl + +dnl Check if user request its CC and CFLAGS +if test -n "$CFLAGS" || test -n "$CC" ; then + user_redefine_cc=yes +fi +dnl Autoconf detection +AC_PROG_CC +AC_PROG_CPP +AC_PROG_EGREP +AC_PROG_SED +AC_LANG(C) + +dnl Check for GMP CFLAGS in gmp.h +if test -z "$GMP_CFLAGS" -a -z "$user_redefine_cc" ; then + AC_MSG_CHECKING(for CC and CFLAGS in gmp.h) + # FIXME: Move this in aclocal ? + # Get CC + echo "#include \"gmp.h\"" > conftest.c + echo "MPFR_OPTION __GMP_CC" >> conftest.c + GMP_CC="`$CPP $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e 's/MPFR_OPTION //g' | $SED -e 's/"//g'`" + #Get CFLAGS + echo "#include \"gmp.h\"" > conftest.c + echo "MPFR_OPTION __GMP_CFLAGS" >> conftest.c + GMP_CFLAGS="`$CPP $CPPFLAGS conftest.c 2> /dev/null | $EGREP MPFR_OPTION | $SED -e 's/MPFR_OPTION //g'| $SED -e 's/"//g'`" + rm -f conftest* + if test "x$GMP_CFLAGS" = "x__GMP_CFLAGS" -o "x$GMP_CC" = "x__GMP_CC" ; then + AC_MSG_RESULT(no) + GMP_CFLAGS= + GMP_CC= + else + AC_MSG_RESULT(yes [CC=$GMP_CC CFLAGS=$GMP_CFLAGS]) + fi +fi + +dnl Check for GMP CFLAGS and CC (More optimized for the target) +dnl But they may be invalid, so we must check them first +dnl Don't redefine it if the user force them! +if test -n "$GMP_CFLAGS" && test -z "$user_redefine_cc" ; then + old_cflags=$CFLAGS + old_cc=$CC + CFLAGS=$GMP_CFLAGS + CC=$GMP_CC + AC_MSG_CHECKING(for CC=$GMP_CC and CFLAGS=$GMP_CFLAGS) + AC_RUN_IFELSE(AC_LANG_PROGRAM([[/*hello*/]],[[/*world*/]]), [ + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + CFLAGS=$old_cflags + CC=$old_cc + ], [ + AC_MSG_RESULT([can't test]) + CFLAGS=$old_cflags + CC=$old_cc + ]) + dnl CC may have change. Recheck for GCC. + GCC= + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#ifndef __GNUC__ +# error "GCC Not Found" +error +#endif + ]])], [ + GCC=yes + ]) +fi + +AC_ARG_ENABLE(decimal-float, + [ --enable-decimal-float build conversion functions from/to decimal floats + [[default=no]]], + [ case $enableval in + yes) AC_DEFINE([MPFR_WANT_DECIMAL_FLOATS],1, + [Build decimal float functions]) + AC_MSG_CHECKING(if compiler knows _Decimal64) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[_Decimal64 x;]])], + [AC_MSG_RESULT(yes) + if test "$use_gmp_build" != yes ; then + AC_MSG_ERROR([decimal float support requires --with-gmp-build]) + fi + AC_MSG_CHECKING(if _GMP_IEEE_FLOATS is defined) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +#include "gmp.h" +#include "gmp-impl.h" +#ifndef _GMP_IEEE_FLOATS +#error "_GMP_IEEE_FLOATS is not defined" +#endif]])],[AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no) + AC_MSG_ERROR([decimal float support requires _GMP_IEEE_FLOATS])]) + ], + [AC_MSG_ERROR([Compiler doesn't know _Decimal64; try GCC >= 4.2, configured with --enable-decimal-float] + )]) + AC_MSG_CHECKING(decimal float format) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +]], [[ +union { double d; _Decimal64 d64; } y; +y.d64 = 1234567890123456.0dd; +return y.d == 0.14894469406741037E-123 ? 0 : + y.d == 0.59075095508629822E-68 ? 1 : 2; +]])], [AC_MSG_RESULT(DPD) + AC_DEFINE([DPD_FORMAT],1,[])], + [if test "$?" != 1 ; then + AC_MSG_FAILURE(neither DPD nor BID) + fi + AC_MSG_RESULT(BID)], + [AC_MSG_RESULT(assuming DPD) + AC_DEFINE([DPD_FORMAT],1,[])]) + ;; + no) ;; + *) AC_MSG_ERROR([bad value for --enable-decimal-float: yes or no]) ;; + esac]) + +dnl Check if compiler is ICC, and if such a case, disable GCC +dnl And add some specific flags. +dnl Don't add Warnings Flags (Otherwise you'll get more than 20000 warnings). +dnl Add -long_double flags? Don't use -pc64 ! +dnl Notes (VL): +dnl * With icc 10.1 20080212 on itanium, the __ICC macro is not defined, +dnl even when the -icc option is used (contrary to what is documented +dnl on the icc man page). +dnl * When ICC is correctly detected (__ICC macro defined), unsetting +dnl the GCC variable confuses libtool. See: +dnl http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=485421 +dnl * If need be, the gcc predefined macros __GNUC_* can be disabled +dnl thanks to the -no-gcc option. +AC_MSG_CHECKING(for ICC) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#if !defined(__ICC) +# error "ICC Not Found" +error +#endif +]], [[]])],[ + AC_MSG_RESULT(yes) + CFLAGS="-fp_port -mp -wd1572 -wd265 -wd186 -wd239 $CFLAGS" +],[AC_MSG_RESULT(no)]) + +dnl If compiler is gcc, then use some specific flags. +dnl But don't touch user other flags. +if test "$test_CFLAGS" != set && test -n "$GCC"; then + CFLAGS="-Wall -Wmissing-prototypes -Wpointer-arith $CFLAGS" + if test -n "$disable_gcc_format_warning" ; then + CFLAGS="$CFLAGS -Wno-format" + fi +fi + +AM_PROG_CC_C_O +AM_C_PROTOTYPES + +case $host in + *-apple-darwin*) +dnl This allows to take the first GMP library in the library paths, +dnl whether it is dynamic or static. This behavior is more sensible, +dnl in particular because it is the only way to link with a version +dnl only available in static form when another version is available +dnl in dynamic, and also for consistency, because the compiler will +dnl take the first gmp.h found in the include paths (so, we need to +dnl take a library that corresponds to this header file). This is a +dnl common problem with darwin. + MPFR_LD_SEARCH_PATHS_FIRST ;; +esac + +AC_C_CONST +AC_C_VOLATILE +MPFR_CONFIGS + +dnl +dnl Setup LIBTOOL +dnl +dnl Currently libtool always want to detect a C++ and fortran compiler +dnl Remove this by hacking a few: AC_PROG_CXX, AC_PROG_F77 are defined +dnl but they are never called. Set with_tag to '' +dnl Set am__fastdepCXX to something +dnl Remove this when Libtool >= 2.0 is used +if test -n "$variable_indefinie" ; then + AC_PROG_CXX([g++]) + AC_PROG_F77([g77]) + AC_PROG_CXXCPP +fi +am__fastdepCXX_FALSE='#' +if test "${with_tags+set}" != set; then + with_tags= +fi + +dnl +dnl Setup GMP detection +dnl + +dnl Check GMP Header +AC_MSG_CHECKING(for gmp.h) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +#include "gmp.h" +]])],[AC_MSG_RESULT(yes)],[ + AC_MSG_RESULT(no) + AC_MSG_ERROR([gmp.h can't be found, or is unusable.]) +]) + +dnl Configs for Windows DLLs. +dnl libtool requires "-no-undefined" for win32 dll +dnl It also disables the tests involving the linking with LIBGMP if DLL +AC_LIBTOOL_WIN32_DLL +case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + AC_MSG_CHECKING(for DLL/static GMP) + if test "$enable_shared" = yes; then + LDFLAGS="$LDFLAGS -no-undefined" + dont_link_with_gmp="yes" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include "gmp.h" +#if !__GMP_LIBGMP_DLL +# error "Dead man" +error +#endif + ]], [[]])],[AC_MSG_RESULT(DLL)],[ + AC_MSG_RESULT(static) + AC_MSG_ERROR([gmp.h isn't a DLL: use --enable-static --disable-shared]) ]) + else + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include "gmp.h" +#if __GMP_LIBGMP_DLL +# error "Dead man" +error +#endif + ]], [[]])],[AC_MSG_RESULT(static)],[ + AC_MSG_RESULT(DLL) + AC_MSG_ERROR([gmp.h is a DLL: use --disable-static --enable-shared]) ]) + fi + ;; +esac +dnl Finally set up LibTool +AC_PROG_LIBTOOL + + +dnl +dnl For mpfr-longlong.h - TODO: should be replaced (see acinclude.m4). +dnl + +GMP_C_ATTRIBUTE_MODE + + +dnl +dnl Setup GMP detection (continued) +dnl + +AC_MSG_CHECKING(for recent GMP) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +#include "gmp.h" +#if (__GNU_MP_VERSION*100+__GNU_MP_VERSION_MINOR*10 < 410) +# error "min GMP version is 4.1.0" +error +#endif +]])],[AC_MSG_RESULT(yes)],[ + AC_MSG_RESULT(no) + AC_MSG_ERROR([GMP 4.1.0 min required]) +]) + +dnl Check if we can use internal header files of GMP. +AC_MSG_CHECKING(for gmp internal files) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +#include "gmp.h" +#include "gmp-impl.h" +#include "longlong.h" +]])],[ + AC_MSG_RESULT(yes) + AC_DEFINE([MPFR_HAVE_GMP_IMPL],1,[Use GMP Internal Files]) + gmp_internal_file_check=yes +],[ + AC_MSG_RESULT(no) + AC_FUNC_ALLOCA +]) + +dnl Check for valid BITS_PER_MP_LIMB and BYTES_PER_MP_LIMB +dnl This test doesn't need to link with libgmp (at least it shouldn't). +if test -n "$gmp_internal_file_check" ; then + AC_MSG_CHECKING(for valid BITS_PER_MP_LIMB and BYTES_PER_MP_LIMB) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include "gmp.h" +#include "gmp-impl.h" +]], [[ + 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) + AC_MSG_ERROR([BITS_PER_MP_LIMB or BYTES_PER_MP_LIMB are incorrect. +You probably need to change some of the GMP or MPFR compile options.])], + [AC_MSG_RESULT([can't test])]) +fi + + +dnl We really need to link using libtool. But it is impossible with the current +dnl libtool. +dnl The practical problems appear only under MS Windows since the library name +dnl is libgmp-3 (due to libtool versionning). The best solution +dnl is to believe it works under MS-Windows. +if test "$dont_link_with_gmp" = yes ; then +LIBS="-lgmp $LIBS" +else + +dnl Check if we can link with GMP +AC_CHECK_LIB(gmp, __gmpz_init, [LIBS="-lgmp $LIBS"], + [AC_MSG_ERROR(libgmp not found or uses a different ABI. +Please read the INSTALL file -- see "In case of problem".)]) + +dnl Check for corresponding 'gmp.h' and libgmp.a +AC_MSG_CHECKING(if gmp.h version and libgmp version are the same) +dnl We do not set LD_LIBRARY_PATH, as it is not possible to set it just +dnl before the test program is run, and we do not want to affect other +dnl programs (such as the compiler), because the behavior could be +dnl incorrect and even have security implications. +saved_LD_RUN_PATH="$LD_RUN_PATH" +LD_RUN_PATH="${LD_RUN_PATH:+$LD_RUN_PATH$PATH_SEPARATOR}$gmp_lib_path" +export LD_RUN_PATH +AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +#include "gmp.h" +]], [[ + char buffer[100]; + sprintf (buffer, "%d.%d.%d", __GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, + __GNU_MP_VERSION_PATCHLEVEL); + printf ("(%s/%s) ", buffer, gmp_version); + if (strcmp (buffer, gmp_version) == 0) + return 0; + if (__GNU_MP_VERSION_PATCHLEVEL != 0) + return 1; + sprintf (buffer, "%d.%d", __GNU_MP_VERSION, __GNU_MP_VERSION_MINOR); + return (strcmp (buffer, gmp_version) != 0) ? 1 : 0; +]])], + [AC_MSG_RESULT(yes) + MPFR_CHECK_PRINTF_SPEC], + [AC_MSG_RESULT(no) + AC_MSG_WARN(['gmp.h' and 'libgmp' seems to have different versions or]) + AC_MSG_WARN([we cannot run a program linked with GMP (if you cannot]) + AC_MSG_WARN([see the version numbers above).]) + AC_MSG_WARN([However since we can't use 'libtool' inside the configure,]) + AC_MSG_WARN([we can't be sure. See 'config.log' for details.]) + ],AC_MSG_RESULT([can not test]) +) +LD_RUN_PATH="$saved_LD_RUN_PATH" + +dnl End of tests which need to link with GMP. +fi + +dnl Remove also many MACROS (AC_DEFINE) which are unused by MPFR +dnl and polluate (and slow down because libtool has to parse them) the build. +if test -f confdefs.h; then + sed '/#define PACKAGE_/d' confdefs.tmp + sed '/#define HAVE_STRING/d' confdefs.h + sed '/#define HAVE_ALLOCA /d' confdefs.tmp + sed '/#define HAVE_DLFCN_H/d' confdefs.h + sed '/#define HAVE_MEM/d' confdefs.tmp + sed '/#define STDC_HEADERS/d' confdefs.h + sed '/#define HAVE_STRTOL/d' confdefs.tmp + sed '/#define HAVE_STDLIB_H/d' confdefs.h + sed '/#define HAVE_UNISTD_H/d' confdefs.tmp + sed '/#define HAVE_STDC_HEADERS/d' confdefs.h + sed '/#define HAVE_LONG_DOUBLE/d' confdefs.tmp + sed '/#define HAVE_SYS_STAT_H/d' confdefs.h + sed '/#define HAVE_SYS_TYPES_H/d' confdefs.tmp + sed '/#define PROTOTYPES/d' confdefs.h + sed '/#define __PROTOTYPES/d' confdefs.tmp + + mv confdefs.tmp confdefs.h +fi + +dnl Output +AC_CONFIG_FILES([Makefile tests/Makefile mparam.h:mparam_h.in]) +AC_OUTPUT + +dnl NEWS README AUTHORS Changelog