This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Including GMP/MPFR in GCC repository?
- From: "Kaveh R. GHAZI" <ghazi at caip dot rutgers dot edu>
- To: DJ Delorie <dj at redhat dot com>
- Cc: sgk at troutmask dot apl dot washington dot edu, mark at codesourcery dot com, gcc at gcc dot gnu dot org, fortran at gcc dot gnu dot org, paul at codesourcery dot com, kargl at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Fri, 13 Oct 2006 15:05:47 -0400 (EDT)
- Subject: Re: Including GMP/MPFR in GCC repository?
- References: <Pine.GSO.4.58.0610062205240.2597@caipclassic.rutgers.edu> <452B11F1.8060406@codesourcery.com> <Pine.GSO.4.58.0610112313340.933@caipclassic.rutgers.edu> <20061012053416.GA5111@troutmask.apl.washington.edu> <Pine.GSO.4.58.0610121401520.7159@caipclassic.rutgers.edu> <200610122013.k9CKDb8f018163@greed.delorie.com>
On Thu, 12 Oct 2006, DJ Delorie wrote:
>
> > Okay for stage1?
>
> Ok, assuming everyone agrees to those versions ;-)
Great, thanks. I haven't heard anyone disagree with those versions, so
unless someone objects before stage1 starts I'll use those.
By the way, here is a more complete patch which adds the documentation
updates I promised. It also eliminates $need_gmp and $(F95_LIBS) as
followup cleanups.
Tested on sparc-sun-solaris2.10 via "make" with C & fortran enabled. I'll
do more extensive testing (full bootstrap, regtest and "make info")
shortly.
Ironically given the nature of this patch, configure is saying I need to
get a more recent makeinfo in order to build the docs. :-)
Thanks,
--Kaveh
2006-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* configure.in: Require GMP-4.1+ and MPFR-2.2+. Don't check
need_gmp anymore.
* configure: Regenerate.
gcc:
* Makefile.in (LIBS): Add $(GMPLIBS).
* doc/install.texi: Update GMP and MPFR requirements.
* doc/sourcebuild.texi (need_gmp): Delete.
gcc/fortran:
* Make-lang.in (F95_LIBS): Delete.
* f951$(exeext): Use $(LIBS) instead of $(F95_LIBS).
* config-lang.in (need_gmp): Delete.
diff -rup orig/egcc-SVN20061011/configure.in egcc-SVN20061011/configure.in
--- orig/egcc-SVN20061011/configure.in 2006-09-27 20:01:59.000000000 -0400
+++ egcc-SVN20061011/configure.in 2006-10-13 03:05:01.309928436 -0400
@@ -1103,24 +1103,24 @@ choke me
], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no])
if test x"$have_gmp" = xyes; then
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $gmplibs"
AC_MSG_CHECKING([for correct version of mpfr.h])
- AC_TRY_COMPILE([#include "gmp.h"
+ AC_TRY_LINK([#include <gmp.h>
#include <mpfr.h>],[
#if MPFR_VERSION_MAJOR < 2 || (MPFR_VERSION_MAJOR == 2 && MPFR_VERSION_MINOR < 2)
choke me
#endif
-], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy version of MPFR detected])])
-
- saved_LIBS="$LIBS"
- LIBS="$LIBS $gmplibs"
- AC_MSG_CHECKING([for any version of mpfr.h])
- AC_TRY_LINK([#include <gmp.h>
-#include <mpfr.h>], [mpfr_t n; mpfr_init(n);],
- [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no])
+ mpfr_t n; mpfr_init(n);
+], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no])
LIBS="$saved_LIBS"
fi
CFLAGS="$saved_CFLAGS"
+if test x$have_gmp != xyes; then
+ AC_MSG_ERROR([Building GCC requires GMP 4.1+ and MPFR 2.2+. Try the --with-gmp and/or --with-mpfr options.])
+fi
+
# Flags needed for both GMP and/or MPFR
AC_SUBST(gmplibs)
AC_SUBST(gmpinc)
@@ -1208,7 +1208,6 @@ if test -d ${srcdir}/gcc; then
subdir_requires=
boot_language=
build_by_default=
- need_gmp=
. ${lang_frag}
potential_languages="${potential_languages},${language}"
# This is quite sensitive to the ordering of the case statement arms.
@@ -1254,18 +1253,6 @@ if test -d ${srcdir}/gcc; then
esac
done
- # Disable languages that need GMP if it isn't available.
- case ,${enable_languages},:${have_gmp}:${need_gmp} in
- *,${language},*:no:yes)
- # Specifically requested language; tell them.
- AC_MSG_ERROR([GMP 4.1 and MPFR 2.2 or newer versions required by $language])
- ;;
- *:no:yes)
- # Silently disable.
- add_this_lang=no
- ;;
- esac
-
# Disable a language that is unsupported by the target.
case " $unsupported_languages " in
*" $language "*)
diff -rup orig/egcc-SVN20061011/gcc/Makefile.in egcc-SVN20061011/gcc/Makefile.in
--- orig/egcc-SVN20061011/gcc/Makefile.in 2006-10-10 20:01:28.000000000 -0400
+++ egcc-SVN20061011/gcc/Makefile.in 2006-10-13 03:00:25.192043515 -0400
@@ -846,7 +846,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
# How to link with both our special library facilities
# and the system's installed libraries.
-LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER)
+LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) $(GMPLIBS)
# Any system libraries needed just for GNAT.
SYSLIBS = @GNAT_LIBEXC@
diff -rup orig/egcc-SVN20061011/gcc/doc/install.texi egcc-SVN20061011/gcc/doc/install.texi
--- orig/egcc-SVN20061011/gcc/doc/install.texi 2006-10-03 20:00:51.000000000 -0400
+++ egcc-SVN20061011/gcc/doc/install.texi 2006-10-13 03:03:49.824512100 -0400
@@ -292,13 +292,13 @@ systems' @command{tar} programs will als
@item GNU Multiple Precision Library (GMP) version 4.1 (or later)
-Necessary to build the Fortran frontend. If you do not have it
-installed in your library search path, you will have to configure with
-the @option{--with-gmp} or @option{--with-gmp-dir} configure option.
+Necessary to build GCC. If you do not have it installed in your
+library search path, you will have to configure with the
+@option{--with-gmp} or @option{--with-gmp-dir} configure option.
@item MPFR Library version 2.2 (or later)
-Necessary to build the Fortran frontend. It can be downloaded from
+Necessary to build GCC. It can be downloaded from
@uref{http://www.mpfr.org/}. The version of MPFR that is bundled with
GMP 4.1.x contains numerous bugs. Although gfortran will appear
to function with the buggy versions of MPFR, there are a few gfortran bugs
diff -rup orig/egcc-SVN20061011/gcc/doc/sourcebuild.texi egcc-SVN20061011/gcc/doc/sourcebuild.texi
--- orig/egcc-SVN20061011/gcc/doc/sourcebuild.texi 2006-07-13 20:01:40.000000000 -0400
+++ egcc-SVN20061011/gcc/doc/sourcebuild.texi 2006-10-13 02:56:59.255701248 -0400
@@ -714,10 +714,6 @@ If defined, a space-separated list of fi
gengtype.c to generate the garbage collection tables and routines for
this language. This excludes the files that are common to all front
ends. @xref{Type Information}.
-@item need_gmp
-If defined to @samp{yes}, this frontend requires the GMP library.
-Enables configure tests for GMP, which set @code{GMPLIBS} and
-@code{GMPINC} appropriately.
@end table
diff -rup orig/egcc-SVN20061011/gcc/fortran/Make-lang.in egcc-SVN20061011/gcc/fortran/Make-lang.in
--- orig/egcc-SVN20061011/gcc/fortran/Make-lang.in 2006-10-10 20:01:17.000000000 -0400
+++ egcc-SVN20061011/gcc/fortran/Make-lang.in 2006-10-13 03:07:04.067551780 -0400
@@ -76,9 +76,6 @@ F95_OBJS = $(F95_PARSER_OBJS) \
fortran/trans-intrinsic.o fortran/trans-io.o fortran/trans-openmp.o \
fortran/trans-stmt.o fortran/trans-types.o
-# GFORTRAN uses GMP for its internal arithmetics.
-F95_LIBS = $(GMPLIBS) $(LIBS)
-
#
# Define the names for selecting gfortran in LANGUAGES.
fortran: f951$(exeext)
@@ -107,7 +104,7 @@ gfortran-cross$(exeext): gfortran$(exeex
f951$(exeext): $(F95_OBJS) \
$(BACKEND) $(LIBDEPS)
$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
- $(F95_OBJS) $(BACKEND) $(F95_LIBS)
+ $(F95_OBJS) $(BACKEND) $(LIBS)
gt-fortran-trans.h : s-gtype; @true
#
diff -rup orig/egcc-SVN20061011/gcc/fortran/config-lang.in egcc-SVN20061011/gcc/fortran/config-lang.in
--- orig/egcc-SVN20061011/gcc/fortran/config-lang.in 2006-01-23 00:20:04.000000000 -0500
+++ egcc-SVN20061011/gcc/fortran/config-lang.in 2006-10-13 02:57:45.513093474 -0400
@@ -16,5 +16,3 @@ target_libs=target-libgfortran
gtfiles="\$(srcdir)/fortran/f95-lang.c \$(srcdir)/fortran/trans-decl.c \$(srcdir)/fortran/trans-intrinsic.c \$(srcdir)/fortran/trans-io.c \$(srcdir)/fortran/trans-types.c \$(srcdir)/fortran/trans-types.h \$(srcdir)/fortran/trans.h \$(srcdir)/fortran/trans-const.h"
-need_gmp="yes"
-