Re: [PATCH v2] Enable GDB build with in-tree GMP and MPFR

Bernd Edlinger
2020-12-25T12:05:17Z

[-- Attachment #1: Type: text/plain, Size: 679 bytes --]

Hi everybody,

I have now two possible ways to go forward with the configure options
for gmp and mpfr.

See the attached patches:

Variant 1: implements traditional configure options
--with-gmp-include=DIR, --with-gmp-lib=DIR, --with-gmp=DIR,
--with-mpfr-include=DIR, --with-mpfr-lib=DIR, --with-mpfr=DIR
but does additionally understand --with-libmpfr-prefix=DIR
and --with-mpfr=auto/yes/no.

Variant 2: (I already posted that one) keeps all configure options
as they are now, and just uses the presence of a ../gmp and ../mpfr
directory to override the gmp and mpfr configure flags.

I would be interested in what you think, and which variant you would
prefer.

Thanks
Bernd.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Enable-GDB-build-with-in-tree-GMP-and-MPFR-v1.patch --]
[-- Type: text/x-patch; name="0001-Enable-GDB-build-with-in-tree-GMP-and-MPFR-v1.patch", Size: 60440 bytes --]

From c4dfaa57bc2bfd34d4ea4f4de9148887b10150b6 Mon Sep 17 00:00:00 2001
From: Bernd Edlinger <bernd.edlinger@hotmail.de>
Date: Sun, 15 Nov 2020 15:37:22 +0100
Subject: [PATCH] Enable GDB build with in-tree GMP and MPFR

With this patch GDB can be built with in-tree GMP and/or
MPFR. This works also for cross-builds.

All that is needed, is a sym-link in the source tree,
like this:

gmp -> ../gmp-6.1.0
mpfr -> ../mpfr-3.1.4

2020-12-10 Bernd Edlinger <bernd.edlinger@hotmail.de>

* Makefile.def: Prepare for GDB build with intree GMP.
* Makefile.in: Regenerate.

gdb:
2020-12-10 Bernd Edlinger <bernd.edlinger@hotmail.de>

* configure.ac: Add --with-gmp=DIR, --with-gmp-include=DIR
and --with-gmp-lib=DIR
as well as --with-mpfr-include=DIR and --with-mpfr-lib=DIR
for compatibility with top level configure script.
* configure: Regenerate.
* README: Mention ./contrib/download_prerequisites.

contrib:
2020-12-10 Bernd Edlinger <bernd.edlinger@hotmail.de>

* download_prerequisites: New helper script.
* prerequisites.md5: checksums.
* prerequisites.sha512: checksums.
---
Makefile.def | 5 +-
Makefile.in | 4 +-
contrib/download_prerequisites | 263 ++++++++++
contrib/prerequisites.md5 | 2 +
contrib/prerequisites.sha512 | 2 +
gdb/README | 23 +-
gdb/configure | 1126 ++++++----------------------------------
gdb/configure.ac | 88 +++-
8 files changed, 522 insertions(+), 991 deletions(-)
create mode 100755 contrib/download_prerequisites
create mode 100644 contrib/prerequisites.md5
create mode 100644 contrib/prerequisites.sha512

diff --git a/Makefile.def b/Makefile.def
index 089e70a..1b99b42 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -115,7 +115,8 @@ host_modules= { module= zlib; no_install=true; no_check=true;
host_modules= { module= gnulib; };
host_modules= { module= gdbsupport; };
host_modules= { module= gdbserver; };
-host_modules= { module= gdb; };
+host_modules= { module= gdb;
+ extra_configure_flags='@extra_mpfr_configure_flags@ @extra_mpc_mpfr_configure_flags@';};
host_modules= { module= expect; };
host_modules= { module= guile; };
host_modules= { module= tk; };
@@ -391,6 +392,8 @@ dependencies = { module=all-intl; on=all-libiconv; };

// Host modules specific to gdb.
dependencies = { module=configure-gdb; on=all-intl; };
+dependencies = { module=configure-gdb; on=all-gmp; };
+dependencies = { module=configure-gdb; on=all-mpfr; };
dependencies = { module=configure-gdb; on=configure-sim; };
dependencies = { module=configure-gdb; on=all-bfd; };
dependencies = { module=configure-gdb; on=all-gnulib; };
diff --git a/Makefile.in b/Makefile.in
index fe34132..738fd32 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -29491,7 +29491,7 @@ configure-gdb:
$$s/$$module_srcdir/configure \
--srcdir=$${topdir}/$$module_srcdir \
$(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- --target=${target_alias} \
+ --target=${target_alias} @extra_mpfr_configure_flags@ @extra_mpc_mpfr_configure_flags@ \
|| exit 1
@endif gdb

@@ -52449,6 +52449,8 @@ configure-libcc1: maybe-configure-gcc
all-libcc1: maybe-all-gcc
all-utils: maybe-all-libiberty
configure-gdb: maybe-all-intl
+configure-gdb: maybe-all-gmp
+configure-gdb: maybe-all-mpfr
configure-gdb: maybe-all-bfd
configure-gdb: maybe-all-libiconv
all-gdb: maybe-all-libiberty
diff --git a/contrib/download_prerequisites b/contrib/download_prerequisites
new file mode 100755
index 0000000..0d04030
--- /dev/null
+++ b/contrib/download_prerequisites
@@ -0,0 +1,263 @@
+#! /bin/sh
+#! -*- coding:utf-8; mode:shell-script; -*-
+
+# Download some prerequisites needed by GDB.
+# Run this from the top level of the GDB source tree and the GDB build will do
+# the right thing. Run it with the `--help` option for more information.
+#
+# (C) 2010-2020 Free Software Foundation
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see http://www.gnu.org/licenses/.
+
+program='download_prerequisites'
+version='(unversioned)'
+
+# MAINTAINERS: If you update the package versions below, please
+# remember to also update the files `contrib/prerequisites.sha512` and
+# `contrib/prerequisites.md5` with the new checksums.
+
+gmp='gmp-6.1.0.tar.bz2'
+mpfr='mpfr-3.1.4.tar.bz2'
+
+base_url='http://gcc.gnu.org/pub/gcc/infrastructure/'
+
+echo_archives() {
+ echo "${gmp}"
+ echo "${mpfr}"
+}
+
+verify=1
+force=0
+OS=$(uname)
+
+case $OS in
+ "Darwin"|"FreeBSD"|"DragonFly"|"AIX")
+ chksum='shasum -a 512 --check'
+ ;;
+ "OpenBSD")
+ chksum='sha512 -c'
+ ;;
+ *)
+ chksum='sha512sum -c'
+ ;;
+esac
+
+if type wget > /dev/null ; then
+ fetch='wget'
+else
+ fetch='curl -LO'
+fi
+chksum_extension='sha512'
+directory='.'
+
+helptext="usage: ${program} [OPTION...]
+
+Downloads some prerequisites needed by GDB. Run this from the top level of the
+GDB source tree and the GDB build will do the right thing.
+
+The following options are available:
+
+ --directory=DIR download and unpack packages into DIR instead of '.'
+ --force download again overwriting existing packages
+ --no-force do not download existing packages again (default)
+ --verify verify package integrity after download (default)
+ --no-verify don't verify package integrity
+ --sha512 use SHA512 checksum to verify package integrity (default)
+ --md5 use MD5 checksum to verify package integrity
+ --help show this text and exit
+ --version show version information and exit
+"
+
+versiontext="${program} ${version}
+Copyright (C) 2020 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+die() {
+ echo "error: $@" >&2
+ exit 1
+}
+
+for arg in "$@"
+do
+ case "${arg}" in
+ --help)
+ echo "${helptext}"
+ exit
+ ;;
+ --version)
+ echo "${versiontext}"
+ exit
+ ;;
+ esac
+done
+unset arg
+
+# Emulate Linux's 'md5 --check' on macOS
+md5_check() {
+ # Store the standard input: a line from contrib/prerequisites.md5:
+ md5_checksum_line=$(cat -)
+ # Grab the text before the first space
+ md5_checksum_expected="${md5_checksum_line%% *}"
+ # Grab the text after the first space
+ file_to_check="${md5_checksum_line##* }"
+ # Calculate the md5 checksum for the downloaded file
+ md5_checksum_output=$(md5 -r "${file_to_check}")
+ # Grab the text before the first space
+ md5_checksum_detected="${md5_checksum_output%% *}"
+ [ "${md5_checksum_expected}" == "${md5_checksum_detected}" ] \
+ || die "Cannot verify integrity of possibly corrupted file ${file_to_check}"
+ echo "${file_to_check}: OK"
+}
+
+
+argnext=
+for arg in "$@"
+do
+ if [ "x${argnext}" = x ]
+ then
+ case "${arg}" in
+ --directory)
+ argnext='directory'
+ ;;
+ --directory=*)
+ directory="${arg#--directory=}"
+ ;;
+ --force)
+ force=1
+ ;;
+ --no-force)
+ force=0
+ ;;
+ --verify)
+ verify=1
+ ;;
+ --no-verify)
+ verify=0
+ ;;
+ --sha512)
+ case $OS in
+ "Darwin")
+ chksum='shasum -a 512 --check'
+ ;;
+ *)
+ chksum='sha512sum --check'
+ ;;
+ esac
+ chksum_extension='sha512'
+ verify=1
+ ;;
+ --md5)
+ case $OS in
+ "Darwin")
+ chksum='md5_check'
+ ;;
+ *)
+ chksum='md5 --check'
+ ;;
+ esac
+ chksum_extension='md5'
+ verify=1
+ ;;
+ -*)
+ die "unknown option: ${arg}"
+ ;;
+ *)
+ die "too many arguments"
+ ;;
+ esac
+ else
+ case "${arg}" in
+ -*)
+ die "Missing argument for option --${argnext}"
+ ;;
+ esac
+ case "${argnext}" in
+ directory)
+ directory="${arg}"
+ ;;
+ *)
+ die "The impossible has happened"
+ ;;
+ esac
+ argnext=
+ fi
+done
+[ "x${argnext}" = x ] || die "Missing argument for option --${argnext}"
+unset arg argnext
+
+[ -e ./gdb/version.in ] \
+ || die "You must run this script in the top-level GDB source directory"
+
+[ -d "${directory}" ] \
+ || die "No such directory: ${directory}"
+
+for ar in $(echo_archives)
+do
+ if [ ${force} -gt 0 ]; then rm -f "${directory}/${ar}"; fi
+ [ -e "${directory}/${ar}" ] \
+ || ( cd "${directory}" && ${fetch} --no-verbose "${base_url}${ar}" ) \
+ || die "Cannot download ${ar} from ${base_url}"
+done
+unset ar
+
+if [ ${verify} -gt 0 ]
+then
+ chksumfile="contrib/prerequisites.${chksum_extension}"
+ [ -r "${chksumfile}" ] || die "No checksums available"
+ for ar in $(echo_archives)
+ do
+ grep "${ar}" "${chksumfile}" \
+ | ( cd "${directory}" && ${chksum} ) \
+ || die "Cannot verify integrity of possibly corrupted file ${ar}"
+ done
+ unset chksumfile
+fi
+unset ar
+
+for ar in $(echo_archives)
+do
+ package="${ar%.tar*}"
+ if [ ${force} -gt 0 ]; then rm -rf "${directory}/${package}"; fi
+ case $ar in
+ *.gz)
+ uncompress='gzip -d'
+ ;;
+ *.bz2)
+ uncompress='bzip2 -d'
+ ;;
+ *)
+ uncompress='cat'
+ ;;
+ esac
+ [ -e "${directory}/${package}" ] \
+ || ( cd "${directory}" && $uncompress <"${ar}" | tar -xf - ) \
+ || die "Cannot extract package from ${ar}"
+ unset package
+done
+unset ar
+
+for ar in $(echo_archives)
+do
+ target="${directory}/${ar%.tar*}/"
+ linkname="${ar%-*}"
+ if [ ${force} -gt 0 ]; then rm -f "${linkname}"; fi
+ [ -e "${linkname}" ] \
+ || ln -s "${target}" "${linkname}" \
+ || die "Cannot create symbolic link ${linkname} --> ${target}"
+ unset target linkname
+done
+unset ar
+
+echo "All prerequisites downloaded successfully."
diff --git a/contrib/prerequisites.md5 b/contrib/prerequisites.md5
new file mode 100644
index 0000000..cf7be0d
--- /dev/null
+++ b/contrib/prerequisites.md5
@@ -0,0 +1,2 @@
+86ee6e54ebfc4a90b643a65e402c4048 gmp-6.1.0.tar.bz2
+b8a2f6b0e68bef46e53da2ac439e1cf4 mpfr-3.1.4.tar.bz2
diff --git a/contrib/prerequisites.sha512 b/contrib/prerequisites.sha512
new file mode 100644
index 0000000..8f05aff
--- /dev/null
+++ b/contrib/prerequisites.sha512
@@ -0,0 +1,2 @@
+3c82aeab9c1596d4da8afac2eec38e429e84f3211e1a572cf8fd2b546493c44c039b922a1133eaaa48bd7f3e11dbe795a384e21ed95cbe3ecc58d7ac02246117 gmp-6.1.0.tar.bz2
+51066066ff2c12ed2198605ecf68846b0c96b548adafa5b80e0c786d0df488411a5e8973358fce7192dc977ad4e68414cf14500e3c39746de62465eb145bb819 mpfr-3.1.4.tar.bz2
diff --git a/gdb/README b/gdb/README
index e65c5ea..2146d80 100644
--- a/gdb/README
+++ b/gdb/README
@@ -484,21 +484,32 @@ more obscure GDB `configure' options are not listed here.
not have liblzma installed, you can get the latest version from
`https://tukaani.org/xz/'.

-`--with-libgmp-prefix=DIR'
+`--with-gmp=DIR'
Build GDB using the GMP library installed at the directory DIR.
If your host does not have GMP installed, you can get the latest
version at `https://gmplib.org/'.
-
-`--with-mpfr'
- Build GDB with GNU MPFR, a library for multiple-precision
- floating-point computation with correct rounding. (Done by
- default if GNU MPFR is installed and found at configure time.)
+ You can also build GMP in-tree when you use the script
+ ./contrib/download_prerequisites.
+ This must be done before configure. No --with-gmp options must
+ be used when invoking configure in this case.
+ Note however, that this does only work with a separate build
+ directory.
+
+`--with-mpfr=DIR (or auto/yes/no)'
+ Build GDB with GNU MPFR installed at the directory DIR.
+ For backward compatibility also DIR=auto/yes/no may be used.
This library is used to emulate target floating-point arithmetic
during expression evaluation when the target uses different
floating-point formats than the host. If GNU MPFR is not
available, GDB will fall back to using host floating-point
arithmetic. If your host does not have GNU MPFR installed, you
can get the latest version from `https://www.mpfr.org/'.
+ You can also build MPFR in-tree when you use the script
+ ./contrib/download_prerequisites.
+ This must be done before configure. No --with-mpfr options must
+ be used when invoking configure in this case.
+ Note however, that this does only work with a separate build
+ directory.

`--with-python[=PYTHON]'
Build GDB with Python scripting support. (Done by default if
diff --git a/gdb/configure b/gdb/configure
index 51b4d19..92e4b4d 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -729,12 +729,8 @@ PYTHON_LIBS
PYTHON_CPPFLAGS
PYTHON_CFLAGS
python_prog_path
-LTLIBMPFR
LIBMPFR
-HAVE_LIBMPFR
-LTLIBGMP
LIBGMP
-HAVE_LIBGMP
LTLIBEXPAT
LIBEXPAT
HAVE_LIBEXPAT
@@ -899,11 +895,13 @@ with_jit_reader_dir
with_expat
with_libexpat_prefix
with_libexpat_type
-with_libgmp_prefix
-with_libgmp_type
-with_mpfr
+with_gmp_include
+with_gmp_lib
+with_gmp
with_libmpfr_prefix
-with_libmpfr_type
+with_mpfr_include
+with_mpfr_lib
+with_mpfr
with_python
with_python_libdir
with_guile
@@ -1644,13 +1642,14 @@ Optional Packages:
--with-libexpat-prefix[=DIR] search for libexpat in DIR/include and DIR/lib
--without-libexpat-prefix don't search for libexpat in includedir and libdir
--with-libexpat-type=TYPE type of library to search for (auto/static/shared)
- --with-libgmp-prefix[=DIR] search for libgmp in DIR/include and DIR/lib
- --without-libgmp-prefix don't search for libgmp in includedir and libdir
- --with-libgmp-type=TYPE type of library to search for (auto/static/shared)
- --with-mpfr include MPFR support (auto/yes/no)
- --with-libmpfr-prefix[=DIR] search for libmpfr in DIR/include and DIR/lib
- --without-libmpfr-prefix don't search for libmpfr in includedir and libdir
- --with-libmpfr-type=TYPE type of library to search for (auto/static/shared)
+ --with-gmp-include=DIR GMP include directory
+ --with-gmp-lib=DIR GMP lib directory
+ --with-gmp=DIR GMP install directory
+ --with-libmpfr-prefix=DIR
+ this option has been DEPRECATED
+ --with-mpfr-include=DIR MPFR include directory
+ --with-mpfr-lib=DIR MPFR lib directory
+ --with-mpfr=DIR MFPR install directory (or auto/yes/no)
--with-python[=PYTHON] include python support
(auto/yes/no/<python-program>)
--with-python-libdir[=DIR]
@@ -9990,994 +9989,175 @@ done
fi
fi

-# Verify that we have a usable GMP library.

+# Check whether --with-gmp_include was given.
+if test "${with_gmp_include+set}" = set; then :
+ withval=$with_gmp_include; CPPFLAGS="$CPPFLAGS -I$withval"
+fi

+# Check whether --with-gmp_lib was given.
+if test "${with_gmp_lib+set}" = set; then :
+ withval=$with_gmp_lib; LIBGMP="-L$withval"
+fi

+# Check whether --with-gmp was given.
+if test "${with_gmp+set}" = set; then :
+ withval=$with_gmp;
+ if test -z "$with_gmp_lib" && test -z "$with_gmp_include" ; then
+ CPPFLAGS="$CPPFLAGS -I$withval/include"
+ LIBGMP="-L$withval/lib"
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Do not use --with-gmp and --with-gmp-include/--with-gmp-lib options simultaneously.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi

+fi

- use_additional=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMP" >&5
+$as_echo_n "checking for GMP... " >&6; }
+# Verify that we have a usable GMP library.
+save_LIBS=$LIBS
+LIBS="$LIBS $LIBGMP -lgmp"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <gmp.h>
+int
+main ()
+{
+mpz_t n;
+ mpz_init (n);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ HAVE_LIBGMP=yes
+else
+ HAVE_LIBGMP=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$save_LIBS
+if test "$HAVE_LIBGMP" != yes; then
+ as_fn_error $? "GMP is missing or unusable" "$LINENO" 5
+fi
+LIBGMP="$LIBGMP -lgmp"

- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"

- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
+$as_echo "#define HAVE_LIBGMP 1" >>confdefs.h

- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_LIBGMP" >&5
+$as_echo "$HAVE_LIBGMP" >&6; }

-# Check whether --with-libgmp-prefix was given.
-if test "${with_libgmp_prefix+set}" = set; then :
- withval=$with_libgmp_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
+# Check whether --with-libmpfr_prefix was given.
+if test "${with_libmpfr_prefix+set}" = set; then :
+ withval=$with_libmpfr_prefix;
+ if test -z "$with_mpfr" ; then
+ with_mpfr="auto"
+ fi
+ if test x"$with_mpfr" != xauto && test x"$with_mpfr" != xyes && test x"$with_mpfr" != xno ; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Do not use --with-mpfr=DIR and --with-libmpfr-prefix=DIR options simultaneously.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi

- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
+fi

- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
+save_CPPFLAGS=$CPPFLAGS

- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+# Check whether --with-mpfr_include was given.
+if test "${with_mpfr_include+set}" = set; then :
+ withval=$with_mpfr_include; CPPFLAGS="$CPPFLAGS -I$withval"
+fi

- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
+
+# Check whether --with-mpfr_lib was given.
+if test "${with_mpfr_lib+set}" = set; then :
+ withval=$with_mpfr_lib; LIBMPFR="-L$withval"
+fi
+
+
+# Check whether --with-mpfr was given.
+if test "${with_mpfr+set}" = set; then :
+ withval=$with_mpfr;
+ if test -n "$with_libmpfr_prefix" ; then
+ withval=$with_libmpfr_prefix
+ fi
+ if test -z "$with_mpfr_lib" && test -z "$with_mpfr_include" ; then
+ if test x"$withval" != xauto && test x"$withval" != xyes && test x"$withval" != xno ; then
+ CPPFLAGS="$CPPFLAGS -I$withval/include"
+ LIBMPFR="-L$withval/lib"
+ if test -z "$with_libmpfr_prefix" ; then
+ with_mpfr=yes
fi
fi
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Do not use --with-mpfr and --with-mpfr-include/--with-mpfr-lib options simultaneously.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi

fi

-# Check whether --with-libgmp-type was given.
-if test "${with_libgmp_type+set}" = set; then :
- withval=$with_libgmp_type; with_libgmp_type=$withval
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use MPFR" >&5
+$as_echo_n "checking whether to use MPFR... " >&6; }
+if test "${with_mpfr}" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MPFR support disabled; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: MPFR support disabled; some features may be unavailable." >&2;}
+ HAVE_LIBMPFR=no
+ LIBMPFR=
+ CPPFLAGS=$save_CPPFLAGS
+else
+ save_LIBS=$LIBS
+ LIBS="$LIBS $LIBMPFR -lmpfr $LIBGMP"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <mpfr.h>
+int
+main ()
+{
+mpfr_exp_t exp; mpfr_t x;
+ mpfr_frexp (&exp, x, x, MPFR_RNDN);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ HAVE_LIBMPFR=yes
else
- with_libgmp_type=auto
+ HAVE_LIBMPFR=no
fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$save_LIBS
+ if test "$HAVE_LIBMPFR" != yes; then
+ if test "$with_mpfr" = yes; then
+ as_fn_error $? "MPFR is missing or unusable" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MPFR is missing or unusable; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: MPFR is missing or unusable; some features may be unavailable." >&2;}
+ fi
+ LIBMPFR=
+ CPPFLAGS=$save_CPPFLAGS
+ else
+ LIBMPFR="$LIBMPFR -lmpfr"

- lib_type=`eval echo \$with_libgmp_type`
-
- LIBGMP=
- LTLIBGMP=
- INCGMP=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='gmp '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBGMP="${LIBGMP}${LIBGMP:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBGMP="${LTLIBGMP}${LTLIBGMP:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- if test $use_additional = yes; then
- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- elif test x$lib_type != xshared; then
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBGMP; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- elif test x$lib_type != xshared; then
- if test -f "$dir/lib$name.$libext"; then
- found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBGMP="${LTLIBGMP}${LTLIBGMP:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$hardcode_direct" = yes; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }$found_so"
- else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBGMP; do

- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+$as_echo "#define HAVE_LIBMPFR 1" >>confdefs.h

- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }-L$found_dir"
- fi
- if test "$hardcode_minus_L" != no; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }$found_so"
- else
- LIBGMP="${LIBGMP}${LIBGMP:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }$found_a"
- else
- LIBGMP="${LIBGMP}${LIBGMP:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCGMP; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCGMP="${INCGMP}${INCGMP:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBGMP; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBGMP; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBGMP="${LTLIBGMP}${LTLIBGMP:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBGMP="${LIBGMP}${LIBGMP:+ }$dep"
- LTLIBGMP="${LTLIBGMP}${LTLIBGMP:+ }$dep"
- ;;
- esac
- done
- fi
- else
- if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
- LIBGMP="${LIBGMP}${LIBGMP:+ }-l$name"
- LTLIBGMP="${LTLIBGMP}${LTLIBGMP:+ }-l$name"
- else
- LIBGMP="${LIBGMP}${LIBGMP:+ }-l:lib$name.$libext"
- LTLIBGMP="${LTLIBGMP}${LTLIBGMP:+ }-l:lib$name.$libext"
- fi
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBGMP="${LIBGMP}${LIBGMP:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBGMP="${LIBGMP}${LIBGMP:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBGMP="${LTLIBGMP}${LTLIBGMP:+ }-R$found_dir"
- done
- fi
-
-
- ac_save_CPPFLAGS="$CPPFLAGS"
-
- for element in $INCGMP; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgmp" >&5
-$as_echo_n "checking for libgmp... " >&6; }
-if ${ac_cv_libgmp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBGMP"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <gmp.h>
-int
-main ()
-{
-mpz_t n;
- mpz_init (n);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_libgmp=yes
-else
- ac_cv_libgmp=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$ac_save_LIBS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libgmp" >&5
-$as_echo "$ac_cv_libgmp" >&6; }
- if test "$ac_cv_libgmp" = yes; then
- HAVE_LIBGMP=yes
-
-$as_echo "#define HAVE_LIBGMP 1" >>confdefs.h
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libgmp" >&5
-$as_echo_n "checking how to link with libgmp... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGMP" >&5
-$as_echo "$LIBGMP" >&6; }
- else
- HAVE_LIBGMP=no
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIBGMP=
- LTLIBGMP=
- fi
-
-
-
-
-
-
-if test "$HAVE_LIBGMP" != yes; then
- as_fn_error $? "GMP is missing or unusable" "$LINENO" 5
-fi
-
-
-# Check whether --with-mpfr was given.
-if test "${with_mpfr+set}" = set; then :
- withval=$with_mpfr;
-else
- with_mpfr=auto
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use MPFR" >&5
-$as_echo_n "checking whether to use MPFR... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_mpfr" >&5
-$as_echo "$with_mpfr" >&6; }
-
-if test "${with_mpfr}" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MPFR support disabled; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: MPFR support disabled; some features may be unavailable." >&2;}
- HAVE_LIBMPFR=no
-else
-
-
-
-
-
-
-
-
- use_additional=yes
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-libmpfr-prefix was given.
-if test "${with_libmpfr_prefix+set}" = set; then :
- withval=$with_libmpfr_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-
-fi
-
-
-# Check whether --with-libmpfr-type was given.
-if test "${with_libmpfr_type+set}" = set; then :
- withval=$with_libmpfr_type; with_libmpfr_type=$withval
-else
- with_libmpfr_type=auto
-fi
-
- lib_type=`eval echo \$with_libmpfr_type`
-
- LIBMPFR=
- LTLIBMPFR=
- INCMPFR=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='mpfr gmp'
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- if test $use_additional = yes; then
- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- elif test x$lib_type != xshared; then
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBMPFR; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- elif test x$lib_type != xshared; then
- if test -f "$dir/lib$name.$libext"; then
- found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$hardcode_direct" = yes; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
- else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBMPFR; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-L$found_dir"
- fi
- if test "$hardcode_minus_L" != no; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
- else
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_a"
- else
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCMPFR; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCMPFR="${INCMPFR}${INCMPFR:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBMPFR; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBMPFR; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$dep"
- LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }$dep"
- ;;
- esac
- done
- fi
- else
- if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-l$name"
- LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-l$name"
- else
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-l:lib$name.$libext"
- LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-l:lib$name.$libext"
- fi
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-R$found_dir"
- done
- fi
-
-
- ac_save_CPPFLAGS="$CPPFLAGS"
-
- for element in $INCMPFR; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libmpfr" >&5
-$as_echo_n "checking for libmpfr... " >&6; }
-if ${ac_cv_libmpfr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBMPFR"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <mpfr.h>
-int
-main ()
-{
-mpfr_exp_t exp; mpfr_t x;
- mpfr_frexp (&exp, x, x, MPFR_RNDN);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_libmpfr=yes
-else
- ac_cv_libmpfr=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$ac_save_LIBS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libmpfr" >&5
-$as_echo "$ac_cv_libmpfr" >&6; }
- if test "$ac_cv_libmpfr" = yes; then
- HAVE_LIBMPFR=yes
-
-$as_echo "#define HAVE_LIBMPFR 1" >>confdefs.h
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libmpfr" >&5
-$as_echo_n "checking how to link with libmpfr... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBMPFR" >&5
-$as_echo "$LIBMPFR" >&6; }
- else
- HAVE_LIBMPFR=no
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIBMPFR=
- LTLIBMPFR=
- fi
-
-
-
-
-
-
- if test "$HAVE_LIBMPFR" != yes; then
- if test "$with_mpfr" = yes; then
- as_fn_error $? "MPFR is missing or unusable" "$LINENO" 5
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MPFR is missing or unusable; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: MPFR is missing or unusable; some features may be unavailable." >&2;}
- fi
fi
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_LIBMPFR" >&5
+$as_echo "$HAVE_LIBMPFR" >&6; }

# --------------------- #
# Check for libpython. #
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 28703d7..65e44d9 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -683,35 +683,103 @@ else
fi
fi

+AC_ARG_WITH(gmp_include,
+ AS_HELP_STRING([--with-gmp-include=DIR], [GMP include directory]),
+ [CPPFLAGS="$CPPFLAGS -I$withval"])
+AC_ARG_WITH(gmp_lib,
+ AS_HELP_STRING([--with-gmp-lib=DIR], [GMP lib directory]),
+ [LIBGMP="-L$withval"])
+AC_ARG_WITH(gmp,
+ AS_HELP_STRING([--with-gmp=DIR], [GMP install directory]), [
+ if test -z "$with_gmp_lib" && test -z "$with_gmp_include" ; then
+ CPPFLAGS="$CPPFLAGS -I$withval/include"
+ LIBGMP="-L$withval/lib"
+ else
+ AC_MSG_FAILURE([Do not use --with-gmp and --with-gmp-include/--with-gmp-lib options simultaneously.])
+ fi
+])
+
+AC_MSG_CHECKING([for GMP])
# Verify that we have a usable GMP library.
-AC_LIB_HAVE_LINKFLAGS([gmp], [], [#include <gmp.h>],
- [mpz_t n;
- mpz_init (n);])
+save_LIBS=$LIBS
+LIBS="$LIBS $LIBGMP -lgmp"
+AC_TRY_LINK([#include <gmp.h>],
+ [mpz_t n;
+ mpz_init (n);],
+ [HAVE_LIBGMP=yes], [HAVE_LIBGMP=no])
+LIBS=$save_LIBS
if test "$HAVE_LIBGMP" != yes; then
AC_MSG_ERROR([GMP is missing or unusable])
fi
+LIBGMP="$LIBGMP -lgmp"
+AC_SUBST(LIBGMP)
+AC_DEFINE(HAVE_LIBGMP, 1, [Define if you have the GMP library.])
+AC_MSG_RESULT([$HAVE_LIBGMP])

+AC_ARG_WITH(libmpfr_prefix,
+ AS_HELP_STRING([--with-libmpfr-prefix=DIR], [this option has been DEPRECATED]), [
+ if test -z "$with_mpfr" ; then
+ with_mpfr="auto"
+ fi
+ if test x"$with_mpfr" != xauto && test x"$with_mpfr" != xyes && test x"$with_mpfr" != xno ; then
+ AC_MSG_FAILURE([Do not use --with-mpfr=DIR and --with-libmpfr-prefix=DIR options simultaneously.])
+ fi
+])
+save_CPPFLAGS=$CPPFLAGS
+AC_ARG_WITH(mpfr_include,
+ AS_HELP_STRING([--with-mpfr-include=DIR], [MPFR include directory]),
+ [CPPFLAGS="$CPPFLAGS -I$withval"])
+AC_ARG_WITH(mpfr_lib,
+ AS_HELP_STRING([--with-mpfr-lib=DIR], [MPFR lib directory]),
+ [LIBMPFR="-L$withval"])
AC_ARG_WITH(mpfr,
- AS_HELP_STRING([--with-mpfr], [include MPFR support (auto/yes/no)]),
- [], [with_mpfr=auto])
-AC_MSG_CHECKING([whether to use MPFR])
-AC_MSG_RESULT([$with_mpfr])
+ AS_HELP_STRING([--with-mpfr=DIR],
+ [MFPR install directory (or auto/yes/no)]), [
+ if test -n "$with_libmpfr_prefix" ; then
+ withval=$with_libmpfr_prefix
+ fi
+ if test -z "$with_mpfr_lib" && test -z "$with_mpfr_include" ; then
+ if test x"$withval" != xauto && test x"$withval" != xyes && test x"$withval" != xno ; then
+ CPPFLAGS="$CPPFLAGS -I$withval/include"
+ LIBMPFR="-L$withval/lib"
+ if test -z "$with_libmpfr_prefix" ; then
+ with_mpfr=yes
+ fi
+ fi
+ else
+ AC_MSG_FAILURE([Do not use --with-mpfr and --with-mpfr-include/--with-mpfr-lib options simultaneously.])
+ fi
+])

+AC_MSG_CHECKING([whether to use MPFR])
if test "${with_mpfr}" = no; then
AC_MSG_WARN([MPFR support disabled; some features may be unavailable.])
HAVE_LIBMPFR=no
+ LIBMPFR=
+ CPPFLAGS=$save_CPPFLAGS
else
- AC_LIB_HAVE_LINKFLAGS([mpfr], [gmp], [#include <mpfr.h>],
- [mpfr_exp_t exp; mpfr_t x;
- mpfr_frexp (&exp, x, x, MPFR_RNDN);])
+ save_LIBS=$LIBS
+ LIBS="$LIBS $LIBMPFR -lmpfr $LIBGMP"
+ AC_TRY_LINK([#include <mpfr.h>],
+ [mpfr_exp_t exp; mpfr_t x;
+ mpfr_frexp (&exp, x, x, MPFR_RNDN);],
+ [HAVE_LIBMPFR=yes], [HAVE_LIBMPFR=no])
+ LIBS=$save_LIBS
if test "$HAVE_LIBMPFR" != yes; then
if test "$with_mpfr" = yes; then
AC_MSG_ERROR([MPFR is missing or unusable])
else
AC_MSG_WARN([MPFR is missing or unusable; some features may be unavailable.])
fi
+ LIBMPFR=
+ CPPFLAGS=$save_CPPFLAGS
+ else
+ LIBMPFR="$LIBMPFR -lmpfr"
+ AC_SUBST(LIBMPFR)
+ AC_DEFINE(HAVE_LIBMPFR, 1, [Define if you have the MPFR library.])
fi
fi
+AC_MSG_RESULT([$HAVE_LIBMPFR])

# --------------------- #
# Check for libpython. #
--
1.9.1

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-Enable-GDB-build-with-in-tree-GMP-and-MPFR-v2.patch --]
[-- Type: text/x-patch; name="0001-Enable-GDB-build-with-in-tree-GMP-and-MPFR-v2.patch", Size: 15197 bytes --]

From b7cd2ebb1f555397885279a2ace6bd46ca4f5643 Mon Sep 17 00:00:00 2001
From: Bernd Edlinger <bernd.edlinger@hotmail.de>
Date: Sun, 15 Nov 2020 15:37:22 +0100
Subject: [PATCH] Enable GDB build with in-tree GMP and MPFR

With this patch GDB can be built with in-tree GMP and/or
MPFR. This works also for cross-builds.

All that is needed, is a sym-link in the source tree,
like this:

gmp -> ../gmp-6.1.0
mpfr -> ../mpfr-3.1.4

2020-12-10 Bernd Edlinger <bernd.edlinger@hotmail.de>

* Makefile.def: Prepare for GDB build with intree GMP.
* Makefile.in: Regenerate.

gdb:
2020-12-10 Bernd Edlinger <bernd.edlinger@hotmail.de>

* configure.ac: Detect in-tree GMP and MPFR.
* configure: Regenerate.
* README: Mention ./contrib/download_prerequisites.

contrib:
2020-12-10 Bernd Edlinger <bernd.edlinger@hotmail.de>

* download_prerequisites: New helper script.
* prerequisites.md5: checksums.
* prerequisites.sha512: checksums.
---
Makefile.def | 2 +
Makefile.in | 2 +
contrib/download_prerequisites | 263 +++++++++++++++++++++++++++++++++++++++++
contrib/prerequisites.md5 | 2 +
contrib/prerequisites.sha512 | 2 +
gdb/README | 12 ++
gdb/configure | 20 +++-
gdb/configure.ac | 20 +++-
8 files changed, 315 insertions(+), 8 deletions(-)
create mode 100755 contrib/download_prerequisites
create mode 100644 contrib/prerequisites.md5
create mode 100644 contrib/prerequisites.sha512

diff --git a/Makefile.def b/Makefile.def
index 089e70a..b6872c9 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -391,6 +391,8 @@ dependencies = { module=all-intl; on=all-libiconv; };

// Host modules specific to gdb.
dependencies = { module=configure-gdb; on=all-intl; };
+dependencies = { module=configure-gdb; on=all-gmp; };
+dependencies = { module=configure-gdb; on=all-mpfr; };
dependencies = { module=configure-gdb; on=configure-sim; };
dependencies = { module=configure-gdb; on=all-bfd; };
dependencies = { module=configure-gdb; on=all-gnulib; };
diff --git a/Makefile.in b/Makefile.in
index fe34132..ead9430 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -52449,6 +52449,8 @@ configure-libcc1: maybe-configure-gcc
all-libcc1: maybe-all-gcc
all-utils: maybe-all-libiberty
configure-gdb: maybe-all-intl
+configure-gdb: maybe-all-gmp
+configure-gdb: maybe-all-mpfr
configure-gdb: maybe-all-bfd
configure-gdb: maybe-all-libiconv
all-gdb: maybe-all-libiberty
diff --git a/contrib/download_prerequisites b/contrib/download_prerequisites
new file mode 100755
index 0000000..0d04030
--- /dev/null
+++ b/contrib/download_prerequisites
@@ -0,0 +1,263 @@
+#! /bin/sh
+#! -*- coding:utf-8; mode:shell-script; -*-
+
+# Download some prerequisites needed by GDB.
+# Run this from the top level of the GDB source tree and the GDB build will do
+# the right thing. Run it with the `--help` option for more information.
+#
+# (C) 2010-2020 Free Software Foundation
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see http://www.gnu.org/licenses/.
+
+program='download_prerequisites'
+version='(unversioned)'
+
+# MAINTAINERS: If you update the package versions below, please
+# remember to also update the files `contrib/prerequisites.sha512` and
+# `contrib/prerequisites.md5` with the new checksums.
+
+gmp='gmp-6.1.0.tar.bz2'
+mpfr='mpfr-3.1.4.tar.bz2'
+
+base_url='http://gcc.gnu.org/pub/gcc/infrastructure/'
+
+echo_archives() {
+ echo "${gmp}"
+ echo "${mpfr}"
+}
+
+verify=1
+force=0
+OS=$(uname)
+
+case $OS in
+ "Darwin"|"FreeBSD"|"DragonFly"|"AIX")
+ chksum='shasum -a 512 --check'
+ ;;
+ "OpenBSD")
+ chksum='sha512 -c'
+ ;;
+ *)
+ chksum='sha512sum -c'
+ ;;
+esac
+
+if type wget > /dev/null ; then
+ fetch='wget'
+else
+ fetch='curl -LO'
+fi
+chksum_extension='sha512'
+directory='.'
+
+helptext="usage: ${program} [OPTION...]
+
+Downloads some prerequisites needed by GDB. Run this from the top level of the
+GDB source tree and the GDB build will do the right thing.
+
+The following options are available:
+
+ --directory=DIR download and unpack packages into DIR instead of '.'
+ --force download again overwriting existing packages
+ --no-force do not download existing packages again (default)
+ --verify verify package integrity after download (default)
+ --no-verify don't verify package integrity
+ --sha512 use SHA512 checksum to verify package integrity (default)
+ --md5 use MD5 checksum to verify package integrity
+ --help show this text and exit
+ --version show version information and exit
+"
+
+versiontext="${program} ${version}
+Copyright (C) 2020 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+die() {
+ echo "error: $@" >&2
+ exit 1
+}
+
+for arg in "$@"
+do
+ case "${arg}" in
+ --help)
+ echo "${helptext}"
+ exit
+ ;;
+ --version)
+ echo "${versiontext}"
+ exit
+ ;;
+ esac
+done
+unset arg
+
+# Emulate Linux's 'md5 --check' on macOS
+md5_check() {
+ # Store the standard input: a line from contrib/prerequisites.md5:
+ md5_checksum_line=$(cat -)
+ # Grab the text before the first space
+ md5_checksum_expected="${md5_checksum_line%% *}"
+ # Grab the text after the first space
+ file_to_check="${md5_checksum_line##* }"
+ # Calculate the md5 checksum for the downloaded file
+ md5_checksum_output=$(md5 -r "${file_to_check}")
+ # Grab the text before the first space
+ md5_checksum_detected="${md5_checksum_output%% *}"
+ [ "${md5_checksum_expected}" == "${md5_checksum_detected}" ] \
+ || die "Cannot verify integrity of possibly corrupted file ${file_to_check}"
+ echo "${file_to_check}: OK"
+}
+
+
+argnext=
+for arg in "$@"
+do
+ if [ "x${argnext}" = x ]
+ then
+ case "${arg}" in
+ --directory)
+ argnext='directory'
+ ;;
+ --directory=*)
+ directory="${arg#--directory=}"
+ ;;
+ --force)
+ force=1
+ ;;
+ --no-force)
+ force=0
+ ;;
+ --verify)
+ verify=1
+ ;;
+ --no-verify)
+ verify=0
+ ;;
+ --sha512)
+ case $OS in
+ "Darwin")
+ chksum='shasum -a 512 --check'
+ ;;
+ *)
+ chksum='sha512sum --check'
+ ;;
+ esac
+ chksum_extension='sha512'
+ verify=1
+ ;;
+ --md5)
+ case $OS in
+ "Darwin")
+ chksum='md5_check'
+ ;;
+ *)
+ chksum='md5 --check'
+ ;;
+ esac
+ chksum_extension='md5'
+ verify=1
+ ;;
+ -*)
+ die "unknown option: ${arg}"
+ ;;
+ *)
+ die "too many arguments"
+ ;;
+ esac
+ else
+ case "${arg}" in
+ -*)
+ die "Missing argument for option --${argnext}"
+ ;;
+ esac
+ case "${argnext}" in
+ directory)
+ directory="${arg}"
+ ;;
+ *)
+ die "The impossible has happened"
+ ;;
+ esac
+ argnext=
+ fi
+done
+[ "x${argnext}" = x ] || die "Missing argument for option --${argnext}"
+unset arg argnext
+
+[ -e ./gdb/version.in ] \
+ || die "You must run this script in the top-level GDB source directory"
+
+[ -d "${directory}" ] \
+ || die "No such directory: ${directory}"
+
+for ar in $(echo_archives)
+do
+ if [ ${force} -gt 0 ]; then rm -f "${directory}/${ar}"; fi
+ [ -e "${directory}/${ar}" ] \
+ || ( cd "${directory}" && ${fetch} --no-verbose "${base_url}${ar}" ) \
+ || die "Cannot download ${ar} from ${base_url}"
+done
+unset ar
+
+if [ ${verify} -gt 0 ]
+then
+ chksumfile="contrib/prerequisites.${chksum_extension}"
+ [ -r "${chksumfile}" ] || die "No checksums available"
+ for ar in $(echo_archives)
+ do
+ grep "${ar}" "${chksumfile}" \
+ | ( cd "${directory}" && ${chksum} ) \
+ || die "Cannot verify integrity of possibly corrupted file ${ar}"
+ done
+ unset chksumfile
+fi
+unset ar
+
+for ar in $(echo_archives)
+do
+ package="${ar%.tar*}"
+ if [ ${force} -gt 0 ]; then rm -rf "${directory}/${package}"; fi
+ case $ar in
+ *.gz)
+ uncompress='gzip -d'
+ ;;
+ *.bz2)
+ uncompress='bzip2 -d'
+ ;;
+ *)
+ uncompress='cat'
+ ;;
+ esac
+ [ -e "${directory}/${package}" ] \
+ || ( cd "${directory}" && $uncompress <"${ar}" | tar -xf - ) \
+ || die "Cannot extract package from ${ar}"
+ unset package
+done
+unset ar
+
+for ar in $(echo_archives)
+do
+ target="${directory}/${ar%.tar*}/"
+ linkname="${ar%-*}"
+ if [ ${force} -gt 0 ]; then rm -f "${linkname}"; fi
+ [ -e "${linkname}" ] \
+ || ln -s "${target}" "${linkname}" \
+ || die "Cannot create symbolic link ${linkname} --> ${target}"
+ unset target linkname
+done
+unset ar
+
+echo "All prerequisites downloaded successfully."
diff --git a/contrib/prerequisites.md5 b/contrib/prerequisites.md5
new file mode 100644
index 0000000..cf7be0d
--- /dev/null
+++ b/contrib/prerequisites.md5
@@ -0,0 +1,2 @@
+86ee6e54ebfc4a90b643a65e402c4048 gmp-6.1.0.tar.bz2
+b8a2f6b0e68bef46e53da2ac439e1cf4 mpfr-3.1.4.tar.bz2
diff --git a/contrib/prerequisites.sha512 b/contrib/prerequisites.sha512
new file mode 100644
index 0000000..8f05aff
--- /dev/null
+++ b/contrib/prerequisites.sha512
@@ -0,0 +1,2 @@
+3c82aeab9c1596d4da8afac2eec38e429e84f3211e1a572cf8fd2b546493c44c039b922a1133eaaa48bd7f3e11dbe795a384e21ed95cbe3ecc58d7ac02246117 gmp-6.1.0.tar.bz2
+51066066ff2c12ed2198605ecf68846b0c96b548adafa5b80e0c786d0df488411a5e8973358fce7192dc977ad4e68414cf14500e3c39746de62465eb145bb819 mpfr-3.1.4.tar.bz2
diff --git a/gdb/README b/gdb/README
index e65c5ea..2b9c382 100644
--- a/gdb/README
+++ b/gdb/README
@@ -488,6 +488,12 @@ more obscure GDB `configure' options are not listed here.
Build GDB using the GMP library installed at the directory DIR.
If your host does not have GMP installed, you can get the latest
version at `https://gmplib.org/'.
+ You can also build GMP in-tree when you use the script
+ ./contrib/download_prerequisites.
+ This must be done before configure. No --with-gmp options must
+ be used when invoking configure in this case.
+ Note however, that this does only work with a separate build
+ directory.

`--with-mpfr'
Build GDB with GNU MPFR, a library for multiple-precision
@@ -499,6 +505,12 @@ more obscure GDB `configure' options are not listed here.
available, GDB will fall back to using host floating-point
arithmetic. If your host does not have GNU MPFR installed, you
can get the latest version from `https://www.mpfr.org/'.
+ You can also build MPFR in-tree when you use the script
+ ./contrib/download_prerequisites.
+ This must be done before configure. No --with-mpfr options must
+ be used when invoking configure in this case.
+ Note however, that this does only work with a separate build
+ directory.

`--with-python[=PYTHON]'
Build GDB with Python scripting support. (Done by default if
diff --git a/gdb/configure b/gdb/configure
index 51b4d19..5819002 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -9991,6 +9991,13 @@ done
fi

# Verify that we have a usable GMP library.
+if test -d "../gmp"; then
+ CPPFLAGS="$CPPFLAGS -I../gmp"
+ LIBGMP="../gmp/.libs/libgmp.a"
+
+$as_echo "#define HAVE_LIBGMP 1" >>confdefs.h
+
+else

@@ -10431,7 +10438,7 @@ int
main ()
{
mpz_t n;
- mpz_init (n);
+ mpz_init (n);
;
return 0;
}
@@ -10469,8 +10476,9 @@ $as_echo "$LIBGMP" >&6; }

-if test "$HAVE_LIBGMP" != yes; then
- as_fn_error $? "GMP is missing or unusable" "$LINENO" 5
+ if test "$HAVE_LIBGMP" != yes; then
+ as_fn_error $? "GMP is missing or unusable" "$LINENO" 5
+ fi
fi

@@ -10490,6 +10498,12 @@ if test "${with_mpfr}" = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MPFR support disabled; some features may be unavailable." >&5
$as_echo "$as_me: WARNING: MPFR support disabled; some features may be unavailable." >&2;}
HAVE_LIBMPFR=no
+elif test -d "../mpfr"; then
+ CPPFLAGS="$CPPFLAGS -I${srcdir}/../mpfr/src"
+ LIBMPFR="../mpfr/src/.libs/libmpfr.a"
+
+$as_echo "#define HAVE_LIBMPFR 1" >>confdefs.h
+
else

diff --git a/gdb/configure.ac b/gdb/configure.ac
index 28703d7..f1c233c 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -684,11 +684,17 @@ else
fi

# Verify that we have a usable GMP library.
-AC_LIB_HAVE_LINKFLAGS([gmp], [], [#include <gmp.h>],
- [mpz_t n;
- mpz_init (n);])
-if test "$HAVE_LIBGMP" != yes; then
- AC_MSG_ERROR([GMP is missing or unusable])
+if test -d "../gmp"; then
+ CPPFLAGS="$CPPFLAGS -I../gmp"
+ LIBGMP="../gmp/.libs/libgmp.a"
+ AC_DEFINE(HAVE_LIBGMP, 1, [Define if you have the GMP library.])
+else
+ AC_LIB_HAVE_LINKFLAGS([gmp], [], [#include <gmp.h>],
+ [mpz_t n;
+ mpz_init (n);])
+ if test "$HAVE_LIBGMP" != yes; then
+ AC_MSG_ERROR([GMP is missing or unusable])
+ fi
fi

AC_ARG_WITH(mpfr,
@@ -700,6 +706,10 @@ AC_MSG_RESULT([$with_mpfr])
if test "${with_mpfr}" = no; then
AC_MSG_WARN([MPFR support disabled; some features may be unavailable.])
HAVE_LIBMPFR=no
+elif test -d "../mpfr"; then
+ CPPFLAGS="$CPPFLAGS -I${srcdir}/../mpfr/src"
+ LIBMPFR="../mpfr/src/.libs/libmpfr.a"
+ AC_DEFINE(HAVE_LIBMPFR, 1, [Define if you have the MPFR library.])
else
AC_LIB_HAVE_LINKFLAGS([mpfr], [gmp], [#include <mpfr.h>],
[mpfr_exp_t exp; mpfr_t x;
--
1.9.1