This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Including GMP/MPFR in GCC repository?


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"
-


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]