multilib for libgfortran

Andreas Jaeger aj@suse.de
Sun May 30 07:07:00 GMT 2004


I looked at Steven's question for multilibs in March and Jim Wilson's
useful comments and enhanced Steven's initial patch posted here:
http://gcc.gnu.org/ml/gcc/2004-03/msg01208.html

The majority of this was done by Steven (he converted to modern
autoconf style), I just fixed the multilib code.

Bootstrapped/regtested with C,C++ and Fortran on Linux/amd64 together
with my patch for config-ml.in in libgfortran (send separatly).

Ok to commit?

Andreas

2004-05-29  Andreas Jaeger  <aj@suse.de>, Steven Bosscher <stevenb@suse.de>

	* Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES.
	* configure.in: Rename to ...
	* configure.ac: this.  Update to modern autoconf style, enable
	multilibs.
	* Makefile.in: Regenerated.
	* configure: Regenerated.
	* aclocal.m4: Regenerated.
        * config.h.in: Regenerated.

============================================================
Index: Makefile.am
--- Makefile.am	22 May 2004 12:47:40 -0000	1.5
+++ Makefile.am	29 May 2004 20:11:20 -0000
@@ -10,7 +10,7 @@ lib_LTLIBRARIES = libgfortran.la libgfor
 libgfortranbegin_la_SOURCES = fmain.c
 libgfortranbegin_la_LDFLAGS = -static
 
-INCLUDES = -I$(srcdir)/io
+AM_CPPFLAGS = -I$(srcdir)/io
 
 libgfortranincludedir = $(includedir)/gforio
 
============================================================
Index: configure.ac
--- configure.ac	created
+++ configure.ac	2004-05-29 21:53:51.547845248 +0200	1.1
@@ -0,0 +1,142 @@
+# Process this file with autoconf to produce a configure script, like so:
+# aclocal && autoconf && autoheader && automake
+
+AC_PREREQ(2.59)
+AC_INIT([GNU Fortran Runtime Library], 0.2,,[libgfortran])
+AC_CONFIG_HEADER(config.h)
+
+# For libtool versioning info, format is CURRENT:REVISION:AGE
+libtool_VERSION=6:0:0
+AC_SUBST(libtool_VERSION)
+
+# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
+#
+# You will slowly go insane if you do not grok the following fact:  when
+# building this library, the top-level /target/ becomes the library's /host/.
+#
+# configure then causes --target to default to --host, exactly like any
+# other package using autoconf.  Therefore, 'target' and 'host' will
+# always be the same.  This makes sense both for native and cross compilers
+# just think about it for a little while.  :-)
+#
+# Also, if this library is being configured as part of a cross compiler, the
+# top-level configure script will pass the "real" host as $with_cross_host.
+#
+# Do not delete or change the following two lines.  For why, see
+# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
+AC_CANONICAL_SYSTEM
+target_alias=${target_alias-$host_alias}
+
+# Sets up automake.  Must come after AC_CANONICAL_SYSTEM.  Each of the
+# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
+#  1.8.2:  minimum required version
+#  no-define:  PACKAGE and VERSION will not be #define'd in config.h (a bunch
+#              of other PACKAGE_* variables will, however, and there's nothing
+#              we can do about that; they come from AC_INIT).
+#  foreign:  we don't follow the normal rules for GNU packages (no COPYING
+#            file in the top srcdir, etc, etc), so stop complaining.
+#  no-dependencies:  turns off auto dependency generation (just for now)
+#  -Wall:  turns on all automake warnings...
+#  -Wno-portability:  ...except this one, since GNU make is required.
+AM_INIT_AUTOMAKE([1.8.2 no-define foreign no-dependencies -Wall -Wno-portability])
+
+AM_MAINTAINER_MODE
+AM_ENABLE_MULTILIB(, ..)
+
+# Handy for debugging:
+#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
+
+# Are we being configured with some form of cross compiler?
+# NB: We don't actually need to know this just now, but when, say, a test
+#     suite is included, we'll have to know.
+if test "$build" != "$host"; then
+  LIBGFOR_IS_NATIVE=false
+  GCC_NO_EXECUTABLES
+else
+  LIBGFOR_IS_NATIVE=true
+fi
+
+
+# Check the compiler.
+# The same as in boehm-gc and libstdc++. Have to borrow it from there.
+# We must force CC to /not/ be precious variables; otherwise
+# the wrong, non-multilib-adjusted value will be used in multilibs.
+# As a side effect, we have to subst CFLAGS ourselves.
+
+m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
+m4_define([_AC_ARG_VAR_PRECIOUS],[])
+AC_PROG_CC
+m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+
+# Add -Wall if we are using GCC.
+if test "x$GCC" = "xyes"; then
+  CFLAGS="$CFLAGS -Wall"
+fi
+
+# Find other programs we need.
+AC_CHECK_TOOL(AS, as)
+AC_CHECK_TOOL(AR, ar)
+AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+
+# Configure libtool
+#AC_MSG_NOTICE([====== Starting libtool configuration])
+AC_LIBTOOL_DLOPEN
+AM_PROG_LIBTOOL
+AC_SUBST(enable_shared)
+AC_SUBST(enable_static)
+#AC_MSG_NOTICE([====== Finished libtool configuration]) ; sleep 10
+
+# We need gfortran to compile parts of the library
+# We can't use AC_PROG_F77 because it expects a fully working gfortran. 
+#AC_PROG_F77(gfortran)
+F77="$GFORTRAN"
+AC_PROG_F77(gfortran)
+FFLAGS="$FFLAGS -Wall -fno-repack-arrays -fno-underscoring"
+
+AC_FUNC_MMAP
+AC_TYPE_OFF_T
+
+# check header files
+AC_STDC_HEADERS
+AC_HAVE_HEADERS(stdlib.h stdio.h string.h stddef.h math.h unistd.h)
+AC_CHECK_HEADERS(time.h sys/params.h sys/time.h sys/times.h sys/resource.h)
+AC_CHECK_HEADER([complex.h],[AC_DEFINE([HAVE_COMPLEX_H], [1], [complex.h exists])])
+
+# Check for complex math functions
+AC_CHECK_LIB([m],[csin],[need_math="no"],[need_math="yes"])
+
+# Check for complex math functions in -lmx also
+AC_CHECK_LIB([mx],[csin],[need_math="no"],[need_math="yes"])
+
+# Check for library functions.
+AC_CHECK_FUNCS(getrusage times)
+
+# Let the user override this
+AC_ARG_ENABLE(cmath,
+	AC_HELP_STRING([--enable-cmath],[Include complex math functions]),
+	[need_math=$enableval])
+if test "$need_math" = "yes"; then
+	AC_MSG_NOTICE([Including complex math functions in libgfor]);
+  extra_math_obj='$(gfor_cmath_obj)'
+fi
+
+AC_SUBST([MATH_OBJ],["$extra_math_obj"])
+
+# The standard autoconf HAVE_STRUCT_TIMEZONE doesn't actually check
+# for struct timezone, as you might think.  We also need to check how
+# to call gettimeofday if we have it.
+LIBGFOR_GETTIMEOFDAY
+
+AC_CACHE_SAVE
+
+if test ${multilib} = yes; then
+  multilib_arg="--enable-multilib"
+else
+  multilib_arg=
+fi
+
+# Write our Makefile.
+AC_CONFIG_FILES(Makefile)
+AC_OUTPUT
============================================================
Index: configure.in
--- configure.in	2004-05-29 22:11:13.469626144 +0200	1.2
+++ configure.in	removed
@@ -1,88 +0,0 @@
-dnl configure.in for libgfor
-dnl Copyright Free Software Foundation
-dnl Released under the LGPL
-
-dnl The rest of gcc uses autoconf 2.13, but we really need more, hence:
-AC_PREREQ(2.54)
-
-AC_INIT([GNU Fortran Runtime Library], 0.2,,[libgfortran])
-AM_INIT_AUTOMAKE()
-AM_CONFIG_HEADER(config.h)
-AM_MAINTAINER_MODE
-
-AC_SUBST(enable_shared)
-AC_SUBST(enable_static)
-
-# check for compiler
-AC_PROG_CC
-dnl Add -Wall if using gcc
-if test "x$GCC" = "xyes"; then
- CFLAGS="$CFLAGS -Wall"
-fi
-
-# We need gfortran to compile parts of the library
-# We can't use AC_PROG_F77 because it expects a fully working gfortran. 
-#AC_PROG_F77(gfortran)
-F77="$GFORTRAN"
-AC_PROG_F77(gfortran)
-FFLAGS="$FFLAGS -Wall -fno-repack-arrays -fno-underscoring"
-
-AC_FUNC_MMAP
-AC_TYPE_OFF_T
-
-# Check for install
-AC_PROG_INSTALL
-
-# check header files
-AC_STDC_HEADERS
-AC_HAVE_HEADERS(stdlib.h stdio.h string.h stddef.h math.h unistd.h)
-AC_CHECK_HEADERS(time.h sys/params.h sys/time.h sys/times.h sys/resource.h)
-AC_CHECK_HEADER([complex.h],[AC_DEFINE([HAVE_COMPLEX_H], [1], [complex.h exists])])
-# Check for complex math functions
-AC_CHECK_LIB([m],[csin],[need_math="no"],[need_math="yes"])
-
-# Check for complex math functions in -lmx also
-AC_CHECK_LIB([mx],[csin],[need_math="no"],[need_math="yes"])
-
-dnl Checks for library functions.
-AC_CHECK_FUNCS(getrusage times)
-
-# Let the user override this
-AC_ARG_ENABLE(cmath,
-	AC_HELP_STRING([--enable-cmath],[Include complex math functions]),
-    [need_math=$enableval])
-if test "$need_math" = "yes"; then
-	AC_MSG_NOTICE([Including complex math functions in libgfor]);
-  extra_math_obj='$(gfor_cmath_obj)'
-fi
-
-AC_SUBST([MATH_OBJ],["$extra_math_obj"])
-
-dnl The standard autoconf HAVE_STRUCT_TIMEZONE doesn't actually check
-dnl for struct timezone, as you might think.  We also need to check how
-dnl to call gettimeofday if we have it.
-LIBGFOR_GETTIMEOFDAY
-
-dnl These should be inherited in the recursive make, but ensure they are
-dnl defined:
-test "$AR" || AR=ar
-AC_SUBST(AR)
-if test "$RANLIB"; then :
-  AC_SUBST(RANLIB)
-else
-  AC_PROG_RANLIB
-fi
-
-dnl Don't pull is system libtool.m4, it conflicts with the gcc version.
-dnl if test "$LIBTOOL"; then :
-dnl   AC_SUBST(LIBTOOL)
-dnl else
-dnl   AC_PROG_LIBTOOL
-dnl fi
-AM_PROG_LIBTOOL
-
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-
-AC_OUTPUT(Makefile)
-

-- 
 Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
  SUSE Linux AG, Maxfeldstr. 5, 90409 Nürnberg, Germany
   GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 188 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20040530/56817ba3/attachment.sig>


More information about the Gcc-patches mailing list