X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=configure.ac;h=53ca32c3056d3af42d24b96306c37b2abc4516c7;hb=9037e078d45ef6c97475b74f46e017a33416f11c;hp=dcd9ced0b72fe9254aaf87dcb66fc8ee17e5abbd;hpb=25a07265bdbe07bd8ab88805b9136dc21179aa6c;p=deliverable%2Fbinutils-gdb.git diff --git a/configure.ac b/configure.ac index dcd9ced0b7..53ca32c305 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ # # This file 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 2 of the License, or +# 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 @@ -13,8 +13,8 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program; see the file COPYING3. If not see +# . ############################################################################## ### WARNING: this file contains embedded tabs. Do not run untabify on this file. @@ -24,7 +24,8 @@ m4_include(config/override.m4) m4_include(config/proginstall.m4) AC_INIT(move-if-change) -AC_PREREQ(2.59) +AC_PREREQ(2.64) +AC_DISABLE_OPTION_CHECKING progname=$0 # if PWD already has a value, it is probably wrong. @@ -78,6 +79,8 @@ m4_pattern_allow([^AS_FOR_BUILD$])dnl AC_PROG_INSTALL ACX_PROG_LN AC_PROG_LN_S +AC_PROG_SED +AC_PROG_AWK ### we might need to use some other shell than /bin/sh for running subshells ### If we are on Windows, search for the shell. This will permit people @@ -158,7 +161,7 @@ build_tools="build-texinfo build-byacc build-flex build-bison build-m4 build-fix # these libraries are used by various programs built for the host environment # -host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr ppl cloog libiconv" +host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv" # these tools are built for the host environment # Note, the powerpc-eabi build depends on sim occurring before gdb in order to @@ -232,6 +235,11 @@ fi # Find the build and target subdir names. GCC_TOPLEV_SUBDIRS +# Be sure to cover against remnants of an in-tree build. +if test $srcdir != . && test -d $srcdir/host-${host_noncanonical}; then + AC_MSG_ERROR([building out of tree but $srcdir contains host-${host_noncanonical}. +Use a pristine source tree when building in a separate tree]) +fi # Skipdirs are removed silently. skipdirs= @@ -252,6 +260,13 @@ if test x$with_gnu_as = xno ; then noconfigdirs="$noconfigdirs gas" fi +use_included_zlib= +# Make sure we don't let ZLIB be added if we didn't want it. +if test x$with_system_zlib = xyes ; then + use_included_zlib=no + noconfigdirs="$noconfigdirs zlib" +fi + # some tools are so dependent upon X11 that if we're not building with X, # it's not even worth trying to configure, much less build, that tool. @@ -454,7 +469,7 @@ case "${target}" in noconfigdirs="$noconfigdirs ld gprof" noconfigdirs="$noconfigdirs sim target-rda" ;; - x86_64-*-darwin9*) + x86_64-*-darwin[[912]]*) noconfigdirs="$noconfigdirs ld gas gprof" noconfigdirs="$noconfigdirs sim target-rda" ;; @@ -600,7 +615,8 @@ case "${target}" in noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" ;; bfin-*-*) - noconfigdirs="$noconfigdirs gdb" + unsupported_languages="$unsupported_languages java" + noconfigdirs="$noconfigdirs target-boehm-gc gdb" if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-bsp target-cygmon" fi @@ -725,24 +741,26 @@ case "${target}" in # if the --with-newlib option has been given, because otherwise # 'target-newlib' will appear in skipdirs. ;; - i[[3456789]]86-*-mingw32*) + i[[3456789]]86-w64-mingw*) + noconfigdirs="$noconfigdirs expect target-libgloss target-newlib ${libgcj}" + ;; + i[[3456789]]86-*-mingw*) target_configdirs="$target_configdirs target-winsup" noconfigdirs="$noconfigdirs expect target-libgloss target-newlib ${libgcj}" - ;; + ;; x86_64-*-mingw*) - target_configdirs="$target_configdirs target-winsup" noconfigdirs="$noconfigdirs expect target-libgloss target-newlib ${libgcj}" - ;; + ;; *-*-cygwin*) target_configdirs="$target_configdirs target-libtermcap target-winsup" - noconfigdirs="$noconfigdirs target-gperf target-libgloss ${libgcj}" + noconfigdirs="$noconfigdirs target-gperf target-libgloss" # always build newlib if winsup directory is present. if test -d "$srcdir/winsup/cygwin"; then skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'` elif test -d "$srcdir/newlib"; then echo "Warning: winsup/cygwin is missing so newlib can't be built." fi - ;; + ;; i[[3456789]]86-moss-msdos | i[[3456789]]86-*-moss* | \ i[[3456789]]86-*-uwin* | i[[3456789]]86-*-interix* ) ;; @@ -805,7 +823,7 @@ case "${target}" in ;; powerpc-*-aix*) # copied from rs6000-*-* entry - noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp ${libgcj}" + noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp target-newlib ${libgcj}" ;; powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe) target_configdirs="$target_configdirs target-winsup" @@ -832,7 +850,7 @@ case "${target}" in noconfigdirs="$noconfigdirs target-newlib gprof ${libgcj}" ;; rs6000-*-aix*) - noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp ${libgcj}" + noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp target-newlib ${libgcj}" ;; rs6000-*-*) noconfigdirs="$noconfigdirs gprof ${libgcj}" @@ -881,7 +899,12 @@ case "${target}" in i[[3456789]]86-*-msdosdjgpp*) ;; # don't add gprof back in *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;; esac - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" + case "${target}" in + sh*-*-elf) + noconfigdirs="$noconfigdirs ${libgcj}" ;; + *) + noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" ;; + esac ;; sparclet-*-aout* | sparc86x-*-*) libgloss_dir=sparc @@ -1198,11 +1221,46 @@ fi ACX_PROG_GNAT ACX_PROG_CMP_IGNORE_INITIAL -# Check for GMP and MPFR -gmplibs="-lmpfr -lgmp" +# See if we are building gcc with C++. +AC_ARG_ENABLE(build-with-cxx, +[ --enable-build-with-cxx build with C++ compiler instead of C compiler], +ENABLE_BUILD_WITH_CXX=$enableval, +ENABLE_BUILD_WITH_CXX=no) + +# Check for GMP, MPFR and MPC +gmplibs="-lmpc -lmpfr -lgmp" gmpinc= have_gmp=no +# Specify a location for mpc +# check for this first so it ends up on the link line before mpfr. +AC_ARG_WITH(mpc, [ --with-mpc=PATH specify prefix directory for installed MPC package. + Equivalent to --with-mpc-include=PATH/include + plus --with-mpc-lib=PATH/lib]) +AC_ARG_WITH(mpc_include, [ --with-mpc-include=PATH + specify directory for installed MPC include files]) +AC_ARG_WITH(mpc_lib, [ --with-mpc-lib=PATH specify directory for the installed MPC library]) + +if test "x$with_mpc" != x; then + gmplibs="-L$with_mpc/lib $gmplibs" + gmpinc="-I$with_mpc/include $gmpinc" +fi +if test "x$with_mpc_include" != x; then + gmpinc="-I$with_mpc_include $gmpinc" +fi +if test "x$with_mpc_lib" != x; then + gmplibs="-L$with_mpc_lib $gmplibs" +fi +if test "x$with_mpc$with_mpc_include$with_mpc_lib" = x && test -d ${srcdir}/mpc; then + gmplibs='-L$$r/$(HOST_SUBDIR)/mpc/src/.libs -L$$r/$(HOST_SUBDIR)/mpc/src/_libs '"$gmplibs" + gmpinc='-I$$s/mpc/src '"$gmpinc" + # Do not test the mpc version. Assume that it is sufficient, since + # it is in the source tree, and the library has not been built yet + # but it would be included on the link line in the version check below + # hence making the test fail. + have_gmp=yes +fi + # Specify a location for mpfr # check for this first so it ends up on the link line before gmp. AC_ARG_WITH(mpfr-dir, [ --with-mpfr-dir=PATH this option has been REMOVED], @@ -1218,10 +1276,10 @@ AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH specify directory for the insta if test "x$with_mpfr" != x; then gmplibs="-L$with_mpfr/lib $gmplibs" - gmpinc="-I$with_mpfr/include" + gmpinc="-I$with_mpfr/include $gmpinc" fi if test "x$with_mpfr_include" != x; then - gmpinc="-I$with_mpfr_include" + gmpinc="-I$with_mpfr_include $gmpinc" fi if test "x$with_mpfr_lib" != x; then gmplibs="-L$with_mpfr_lib $gmplibs" @@ -1229,6 +1287,7 @@ fi if test "x$with_mpfr$with_mpfr_include$with_mpfr_lib" = x && test -d ${srcdir}/mpfr; then gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/.libs -L$$r/$(HOST_SUBDIR)/mpfr/_libs '"$gmplibs" gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr -I$$s/mpfr '"$gmpinc" + extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr' # Do not test the mpfr version. Assume that it is sufficient, since # it is in the source tree, and the library has not been built yet # but it would be included on the link line in the version check below @@ -1261,6 +1320,8 @@ fi if test "x$with_gmp$with_gmp_include$with_gmp_lib" = x && test -d ${srcdir}/gmp; then gmplibs='-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/gmp/_libs '"$gmplibs" gmpinc='-I$$r/$(HOST_SUBDIR)/gmp -I$$s/gmp '"$gmpinc" + extra_mpfr_configure_flags='--with-gmp-build=$$r/$(HOST_SUBDIR)/gmp' + extra_mpc_gmp_configure_flags='--with-gmp-include=$$r/$(HOST_SUBDIR)/gmp' # Do not test the gmp version. Assume that it is sufficient, since # it is in the source tree, and the library has not been built yet # but it would be included on the link line in the version check below @@ -1280,51 +1341,82 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then #endif ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no]) + # If we have GMP, check the MPFR version. if test x"$have_gmp" = xyes; then - saved_LIBS="$LIBS" - LIBS="$LIBS $gmplibs" dnl MPFR 2.3.1 is acceptable, but MPFR 2.3.2 is better. AC_MSG_CHECKING([for correct version of mpfr.h]) - AC_TRY_LINK([#include + AC_TRY_COMPILE([#include #include ],[ #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,1) choke me #endif + ], AC_TRY_COMPILE([#include + #include ],[ + #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,2) + choke me + #endif + ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])]), + [AC_MSG_RESULT([no]); have_gmp=no]) + fi + + # Check for the MPC header version. + if test x"$have_gmp" = xyes ; then + AC_MSG_CHECKING([for the correct version of mpc.h]) + AC_TRY_COMPILE([#include ],[ + #if MPC_VERSION < MPC_VERSION_NUM (0,8,0) + choke me + #endif + ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no]) + fi + + # Now check the MPFR library. + if test x"$have_gmp" = xyes; then + saved_LIBS="$LIBS" + LIBS="$LIBS $gmplibs" + AC_MSG_CHECKING([for the correct version of the gmp/mpfr/mpc libraries]) + AC_TRY_LINK([#include ],[ mpfr_t n; mpfr_t x; + mpc_t c; int t; mpfr_init (n); mpfr_init (x); mpfr_atan2 (n, n, x, GMP_RNDN); mpfr_erfc (n, x, GMP_RNDN); mpfr_subnormalize (x, t, GMP_RNDN); - ], [AC_TRY_LINK([#include - #include ],[ - #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,2) - choke me - #endif - mpfr_t n; mpfr_init(n); - ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])])], - [AC_MSG_RESULT([no]); have_gmp=no]) - LIBS="$saved_LIBS" + mpfr_clear(n); + mpfr_clear(x); + mpc_init2 (c, 53); + mpc_set_ui_ui (c, 1, 1, MPC_RNDNN); + mpc_cosh (c, c, MPC_RNDNN); + mpc_pow (c, c, c, MPC_RNDNN); + mpc_acosh (c, c, MPC_RNDNN); + mpc_clear (c); + ], [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.2+ and MPFR 2.3.2+. -Try the --with-gmp and/or --with-mpfr options to specify their locations. -Copies of these libraries' source code can be found at their respective -hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/. -See also http://gcc.gnu.org/install/prerequisites.html for additional info. -If you obtained GMP and/or MPFR from a vendor distribution package, make -sure that you have installed both the libraries and the header files. -They may be located in separate packages.]) + AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 2.3.2+ and MPC 0.8.0+. +Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify +their locations. Source code for these libraries can be found at +their respective hosting sites as well as at +ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also +http://gcc.gnu.org/install/prerequisites.html for additional info. If +you obtained GMP, MPFR and/or MPC from a vendor distribution package, +make sure that you have installed both the libraries and the header +files. They may be located in separate packages.]) fi fi -# Flags needed for both GMP and/or MPFR +# Flags needed for both GMP, MPFR and/or MPC. AC_SUBST(gmplibs) AC_SUBST(gmpinc) +AC_SUBST(extra_mpfr_configure_flags) +AC_SUBST(extra_mpc_gmp_configure_flags) +AC_SUBST(extra_mpc_mpfr_configure_flags) # Allow host libstdc++ to be specified for static linking with PPL. AC_ARG_WITH(host-libstdcxx, [ --with-host-libstdcxx=L Use linker arguments L to link with libstdc++ @@ -1336,10 +1428,59 @@ case $with_host_libstdcxx in ;; esac +# Linker flags to use for stage1 or when not boostrapping. +AC_ARG_WITH(stage1-ldflags, +[ --with-stage1-ldflags=FLAGS Linker flags for stage1], +[if test "$withval" = "no" -o "$withval" = "yes"; then + stage1_ldflags= + else + stage1_ldflags=$withval + fi], +[stage1_ldflags=]) +AC_SUBST(stage1_ldflags) + +# Libraries to use for stage1 or when not bootstrapping. +AC_ARG_WITH(stage1-libs, +[ -with-stage1-libs=LIBS Libraries for stage1], +[if test "$withval" = "no" -o "$withval" = "yes"; then + stage1_libs= + else + stage1_libs=$withval + fi], +[stage1_libs=$with_host_libstdcxx]) +AC_SUBST(stage1_libs) + +# Linker flags to use for stage2 and later builds. +AC_ARG_WITH(boot-ldflags, +[ --with-boot-ldflags=FLAGS Linker flags for stage2 and later], +[if test "$withval" = "no" -o "$withval" = "yes"; then + poststage1_ldflags= + else + poststage1_ldflags=$withval + fi], +[if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then + poststage1_ldflags=-static-libstdc++ + else + poststage1_ldflags= + fi]) +AC_SUBST(poststage1_ldflags) + +# Libraries to use for stage2 and later builds. This defaults to the +# argument passed to --with-host-libstdcxx. +AC_ARG_WITH(boot-libs, +[ --with-boot-libs=LIBS Libraries for stage2 and later], +[if test "$withval" = "no" -o "$withval" = "yes"; then + poststage1_libs= + else + poststage1_libs=$withval + fi], +[poststage1_libs=$with_host_libstdcxx]) +AC_SUBST(poststage1_libs) + # Check for PPL ppl_major_version=0 ppl_minor_version=10 -ppllibs=" -lppl_c -lppl -lgmpxx $with_host_libstdcxx " +ppllibs=" -lppl_c -lppl -lgmpxx" pplinc= AC_ARG_WITH(ppl, [ --with-ppl=PATH Specify prefix directory for the installed PPL package @@ -1352,23 +1493,23 @@ case $with_ppl in no) ppllibs= ;; + "" | yes) + ;; *) - ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx $with_host_libstdcxx" + ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx" pplinc="-I$with_ppl/include $pplinc" - LIBS="$ppllibs $LIBS" ;; esac if test "x$with_ppl_include" != x; then pplinc="-I$with_ppl_include $pplinc" fi if test "x$with_ppl_lib" != x; then - ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx $with_host_libstdcxx" - LIBS="$ppllibs $LIBS" + ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx" fi if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then - ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx '"$with_host_libstdcxx " - pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include ' - LIBS="$ppllibs $LIBS" + ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/interfaces/C/.libs -L$$r/$(HOST_SUBDIR)/ppl/interfaces/C/_libs -L$$r/$(HOST_SUBDIR)/ppl/src/.libs -L$$r/$(HOST_SUBDIR)/ppl/src/_libs -lppl_c -lppl -lgmpxx ' + pplinc='-I$$r/$(HOST_SUBDIR)/ppl/src -I$$r/$(HOST_SUBDIR)/ppl/interfaces/C ' + enable_ppl_version_check=no fi AC_ARG_ENABLE(ppl-version-check, @@ -1376,7 +1517,7 @@ AC_ARG_ENABLE(ppl-version-check, ENABLE_PPL_CHECK=$enableval, ENABLE_PPL_CHECK=yes) -if test "${ENABLE_PPL_CHECK}" = "yes"; then +if test "x$with_ppl" != "xno" -a "${ENABLE_PPL_CHECK}" = "yes"; then saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $pplinc $gmpinc" AC_MSG_CHECKING([for version $ppl_major_version.$ppl_minor_version of PPL]) @@ -1384,7 +1525,7 @@ if test "${ENABLE_PPL_CHECK}" = "yes"; then #if PPL_VERSION_MAJOR != $ppl_major_version || PPL_VERSION_MINOR != $ppl_minor_version choke me #endif - ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ]) + ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ; with_ppl=no ]) CFLAGS="$saved_CFLAGS" fi @@ -1403,15 +1544,20 @@ AC_ARG_WITH(cloog, [ --with-cloog=PATH Specify prefix directory for the i AC_ARG_WITH(cloog_include, [ --with-cloog-include=PATH Specify directory for installed CLooG include files]) AC_ARG_WITH(cloog_lib, [ --with-cloog-lib=PATH Specify the directory for the installed CLooG library]) +if test "x$with_ppl" = "xno"; then + with_cloog=no +fi + case $with_cloog in no) clooglibs= clooginc= ;; + "" | yes) + ;; *) clooglibs="-L$with_cloog/lib -lcloog" clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND " - LIBS="$clooglibs $LIBS" ;; esac if test "x$with_cloog_include" != x; then @@ -1419,12 +1565,11 @@ if test "x$with_cloog_include" != x; then fi if test "x$with_cloog_lib" != x; then clooglibs="-L$with_cloog_lib -lcloog" - LIBS="$clooglibs $LIBS" fi if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/.libs -L$$r/$(HOST_SUBDIR)/cloog/_libs -lcloog ' clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND ' - LIBS="$clooglibs $LIBS" + enable_cloog_version_check=no fi AC_ARG_ENABLE(cloog-version-check, @@ -1432,7 +1577,7 @@ AC_ARG_ENABLE(cloog-version-check, ENABLE_CLOOG_CHECK=$enableval, ENABLE_CLOOG_CHECK=yes) -if test "${ENABLE_CLOOG_CHECK}" = "yes"; then +if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc" AC_MSG_CHECKING([for correct version of CLooG]) @@ -1448,10 +1593,137 @@ fi AC_SUBST(clooglibs) AC_SUBST(clooginc) +# Check for LTO support. +AC_ARG_ENABLE(lto, +[ --enable-lto enable link time optimization support], +enable_lto=$enableval, +enable_lto=yes; default_enable_lto=yes) + +if test x"$enable_lto" = x"yes" ; then + # Make sure that libelf.h and gelf.h are available. + AC_ARG_WITH(libelf, [ --with-libelf=PATH Specify prefix directory for the installed libelf package + Equivalent to --with-libelf-include=PATH/include + plus --with-libelf-lib=PATH/lib]) + + AC_ARG_WITH(libelf_include, [ --with-libelf-include=PATH Specify directory for installed libelf include files]) + + AC_ARG_WITH(libelf_lib, [ --with-libelf-lib=PATH Specify the directory for the installed libelf library]) + + saved_CFLAGS="$CFLAGS" + saved_CPPFLAGS="$CPPFLAGS" + saved_LIBS="$LIBS" + + case $with_libelf in + "") + libelflibs="-lelf" + libelfinc="-I/usr/include/libelf" + ;; + *) + libelflibs="-L$with_libelf/lib -lelf" + libelfinc="-I$with_libelf/include -I$with_libelf/include/libelf" + LIBS="$libelflibs $LIBS" + ;; + esac + + if test "x$with_libelf_include" != x; then + libelfinc="-I$with_libelf_include" + fi + + if test "x$with_libelf_lib" != x; then + libelflibs="-L$with_libelf_lib -lelf" + LIBS="$libelflibs $LIBS" + fi + + if test "x$with_libelf$with_libelf_include$with_libelf_lib" = x \ + && test -d ${srcdir}/libelf; then + libelflibs='-L$$r/$(HOST_SUBDIR)/libelf/lib -lelf ' + libelfinc='-D__LIBELF_INTERNAL__ -I$$r/$(HOST_SUBDIR)/libelf/lib -I$$s/libelf/lib' + LIBS="$libelflibs $LIBS" + + else + + CFLAGS="$CFLAGS $libelfinc" + CPPFLAGS="$CPPFLAGS $libelfinc" + LIBS="$LIBS $libelflibs" + + AC_CHECK_HEADERS(libelf.h, [have_libelf_h=yes]) + AC_CHECK_HEADERS(gelf.h, [have_gelf_h=yes]) + + AC_CHECK_HEADERS(libelf/libelf.h, [have_libelf_libelf_h=yes]) + AC_CHECK_HEADERS(libelf/gelf.h, [have_libelf_gelf_h=yes]) + + # If we couldn't find libelf.h and the user forced it, emit an error. + if test x"$have_libelf_h" != x"yes" \ + && test x"$have_libelf_libelf_h" != x"yes" ; then + if test x"$default_enable_lto" != x"yes" ; then + AC_MSG_ERROR([LTO support requires libelf.h or libelf/libelf.h.]) + else + enable_lto=no + libelflibs= + libelfinc= + fi + fi + + # If we couldn't find gelf.h and the user forced it, emit an error. + if test x"$have_gelf_h" != x"yes" \ + && test x"$have_libelf_gelf_h" != x"yes" ; then + if test x"$default_enable_lto" != x"yes" ; then + AC_MSG_ERROR([LTO support requires gelf.h or libelf/gelf.h.]) + else + enable_lto=no + libelflibs= + libelfinc= + fi + fi + + # Check that the detected libelf has the functions we need. We cannot + # rely on just detecting the headers since they do not include + # versioning information. Add functions, if needed. + if test x"$enable_lto" = x"yes" ; then + AC_MSG_CHECKING([for the correct version of libelf]) + AC_TRY_LINK( + [#include ],[ + elf_errmsg (0); + elf_getscn (0, 0); + elf_nextscn (0, 0); + elf_strptr (0, 0, 0); + elf_getident (0, 0); + elf_getshdrstrndx (0, 0); + elf_begin (0, 0, 0); + elf_ndxscn (0); + elf_end (0); + ], + [AC_MSG_RESULT([yes]);], + [AC_MSG_RESULT([no]); enable_lto=no; libelflibs= ; libelfinc= ] + ) + + # If we couldn't enable LTO and the user forced it, emit an error. + if test x"$enable_lto" = x"no" \ + && test x"$default_enable_lto" != x"yes" ; then + AC_MSG_ERROR([To enable LTO, GCC requires libelf v0.8.12+. +Try the --with-libelf, --with-libelf-include and --with-libelf-lib options +to specify its location.]) + fi + fi + + CFLAGS="$saved_CFLAGS" + CPPFLAGS="$saved_CPPFLAGS" + LIBS="$saved_LIBS" + + fi + + # Flags needed for libelf. + AC_SUBST(libelflibs) + AC_SUBST(libelfinc) +fi + # By default, C is the only stage 1 language. stage1_languages=,c, +# Target libraries that we bootstrap. +bootstrap_target_libs=,target-libgcc, + # Figure out what language subdirectories are present. # Look if the user specified --enable-languages="..."; if not, use # the environment variable $LANGUAGES if defined. $LANGUAGES might @@ -1513,6 +1785,21 @@ if test -d ${srcdir}/gcc; then done new_enable_languages=,c, + + # If LTO is enabled, add the LTO front end. + extra_host_libiberty_configure_flags= + if test "$enable_lto" = "yes" ; then + case ,${enable_languages}, in + *,lto,*) ;; + *) enable_languages="${enable_languages},lto" ;; + esac + if test "${ENABLE_GOLD}" = "yes" ; then + configdirs="$configdirs lto-plugin" + extra_host_libiberty_configure_flags=--enable-shared + fi + fi + AC_SUBST(extra_host_libiberty_configure_flags) + missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ ` potential_languages=,c, @@ -1537,6 +1824,11 @@ if test -d ${srcdir}/gcc; then exit 1 fi + if test "$language" = "c++" \ + && test "$ENABLE_BUILD_WITH_CXX" = "yes"; then + boot_language=yes + fi + case ,${enable_languages}, in *,${language},*) # Language was explicitly selected; include it. @@ -1599,10 +1891,15 @@ if test -d ${srcdir}/gcc; then new_enable_languages="${new_enable_languages}${language}," potential_languages="${potential_languages}${language}," missing_languages=`echo "$missing_languages" | sed "s/,$language,/,/"` - case ${boot_language} in - yes) + case "${boot_language}:,$enable_stage1_languages," in + yes:* | *:*,$language,* | *:*,yes, | *:*,all,) # Add to (comma-separated) list of stage 1 languages. - stage1_languages="${stage1_languages}${language}," + case ",$stage1_languages," in + *,$language,* | ,yes, | ,all,) ;; + *) stage1_languages="${stage1_languages}${language}," ;; + esac + # We need to bootstrap any supporting libraries. + bootstrap_target_libs="${bootstrap_target_libs}${target_libs}," ;; esac ;; @@ -1913,7 +2210,7 @@ if test x"${with_libs}" != x && test x"${with_libs}" != xno ; then fi fi -# Set with_gnu_as and with_gnu_ld as appropriate. +# Set with_gnu_as, with_gnu_ld, and with_system_zlib as appropriate. # # This is done by determining whether or not the appropriate directory # is available, and by checking whether or not specific configurations @@ -1924,7 +2221,9 @@ fi # # If the default for a toolchain is to use GNU as and ld, and you don't # want to do that, then you should use the --without-gnu-as and -# --without-gnu-ld options for the configure script. +# --without-gnu-ld options for the configure script. Similarly, if +# the default is to use the included zlib and you don't want to do that, +# you should use the --with-system-zlib option for the configure script. if test x${use_gnu_as} = x && echo " ${configdirs} " | grep " gas " > /dev/null 2>&1 ; then @@ -1938,6 +2237,14 @@ if test x${use_gnu_ld} = x && extra_host_args="$extra_host_args --with-gnu-ld" fi +if test x${use_included_zlib} = x && + echo " ${configdirs} " | grep " zlib " > /dev/null 2>&1 ; then + : +else + with_system_zlib=yes + extra_host_args="$extra_host_args --with-system-zlib" +fi + # If using newlib, add --with-newlib to the extra_host_args so that gcc/configure # can detect this case. @@ -2245,12 +2552,13 @@ INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g` # configuration, so that the top-level Makefile reconfigures them, # like we used to do when configure itself was recursive. -# Loop over modules. $extrasub must be used with care, limiting as -# much as possible the usage of range addresses. That's because autoconf -# splits the sed script to overcome limits in the number of commands, -# and relying on carefully-timed sed passes may turn out to be very hard -# to maintain later. In this particular case, you just have to be careful -# not to nest @if/@endif pairs, because configure will not warn you at all. +# Loop over modules. We used to use the "$extrasub" feature from Autoconf +# but now we're fixing up the Makefile ourselves with the additional +# commands passed to AC_CONFIG_FILES. Use separate variables +# extrasub-{build,host,target} not because there is any reason to split +# the substitutions up that way, but only to remain below the limit of +# 99 commands in a script, for HP-UX sed. +# Do not nest @if/@endif pairs, because configure will not warn you at all. AC_ARG_ENABLE([bootstrap], [ --enable-bootstrap enable bootstrapping @<:@yes if native build@:>@],, @@ -2293,26 +2601,78 @@ case "$have_compiler:$host:$target:$enable_bootstrap" in ;; esac +case ",$enable_languages,:$ENABLE_BUILD_WITH_CXX:$enable_bootstrap" in + *,c++,*:yes:yes) ;; + *:yes:yes) + AC_MSG_ERROR([bootstrapping with --enable-build-with-cxx requires c++ in --enable-languages]) + ;; +esac + +case "$enable_bootstrap:$ENABLE_GOLD: $configdirs :,$stage1_languages," in + yes:yes:*\ gold\ *:*,c++,*) ;; + yes:yes:*\ gold\ *:*) + AC_MSG_ERROR([in a combined tree, bootstrapping with --enable-gold requires c++ in stage1_languages]) + ;; +esac + # Adjust the toplevel makefile according to whether bootstrap was selected. -case "$enable_bootstrap" in +case $enable_bootstrap in yes) - bootstrap_suffix=bootstrap ;; + bootstrap_suffix=bootstrap + BUILD_CONFIG=bootstrap-debug + ;; no) - bootstrap_suffix=no-bootstrap ;; + bootstrap_suffix=no-bootstrap + BUILD_CONFIG= + ;; esac +AC_MSG_CHECKING(for default BUILD_CONFIG) + +AC_ARG_WITH([build-config], + [--with-build-config='NAME NAME2...' + Use config/NAME.mk build configuration], + [case $with_build_config in + yes) with_build_config= ;; + no) with_build_config= BUILD_CONFIG= ;; + esac]) + +if test "x${with_build_config}" != x; then + BUILD_CONFIG=$with_build_config +else + case $BUILD_CONFIG in + bootstrap-debug) + if echo "int f (void) { return 0; }" > conftest.c && + ${CC} -c conftest.c && + mv conftest.o conftest.o.g0 && + ${CC} -c -g conftest.c && + mv conftest.o conftest.o.g && + ${srcdir}/contrib/compare-debug conftest.o.g0 conftest.o.g; then + : + else + BUILD_CONFIG= + fi + rm -f conftest.c conftest.o conftest.o.g0 conftest.o.g + ;; + esac +fi +AC_MSG_RESULT($BUILD_CONFIG) +AC_SUBST(BUILD_CONFIG) + +extrasub_build= for module in ${build_configdirs} ; do if test -z "${no_recursion}" \ && test -f ${build_subdir}/${module}/Makefile; then echo 1>&2 "*** removing ${build_subdir}/${module}/Makefile to force reconfigure" rm -f ${build_subdir}/${module}/Makefile fi - extrasub="$extrasub + extrasub_build="$extrasub_build /^@if build-$module\$/d /^@endif build-$module\$/d /^@if build-$module-$bootstrap_suffix\$/d /^@endif build-$module-$bootstrap_suffix\$/d" done +extrasub_host= for module in ${configdirs} ; do if test -z "${no_recursion}"; then for file in stage*-${module}/Makefile prev-${module}/Makefile ${module}/Makefile; do @@ -2322,26 +2682,35 @@ for module in ${configdirs} ; do fi done fi - extrasub="$extrasub + extrasub_host="$extrasub_host /^@if $module\$/d /^@endif $module\$/d /^@if $module-$bootstrap_suffix\$/d /^@endif $module-$bootstrap_suffix\$/d" done +extrasub_target= for module in ${target_configdirs} ; do if test -z "${no_recursion}" \ && test -f ${target_subdir}/${module}/Makefile; then echo 1>&2 "*** removing ${target_subdir}/${module}/Makefile to force reconfigure" rm -f ${target_subdir}/${module}/Makefile fi - extrasub="$extrasub + + # We only bootstrap target libraries listed in bootstrap_target_libs. + case $bootstrap_target_libs in + *,target-$module,*) target_bootstrap_suffix=$bootstrap_suffix ;; + *) target_bootstrap_suffix=no-bootstrap ;; + esac + + extrasub_target="$extrasub_target /^@if target-$module\$/d /^@endif target-$module\$/d -/^@if target-$module-$bootstrap_suffix\$/d -/^@endif target-$module-$bootstrap_suffix\$/d" +/^@if target-$module-$target_bootstrap_suffix\$/d +/^@endif target-$module-$target_bootstrap_suffix\$/d" done -extrasub="$extrasub +# Do the final fixup along with target modules. +extrasub_target="$extrasub_target /^@if /,/^@endif /d" # Create the serialization dependencies. This uses a temporary file. @@ -2396,9 +2765,11 @@ AC_SUBST_FILE(serialization_dependencies) # Base args. Strip norecursion, cache-file, srcdir, host, build, # target, nonopt, and variable assignments. These are the ones we -# might not want to pass down to subconfigures. Also strip -# program-prefix, program-suffix, and program-transform-name, so that -# we can pass down a consistent program-transform-name. +# might not want to pass down to subconfigures. The exception being +# --cache-file=/dev/null, which is used to turn off the use of cache +# files altogether, and which should be passed on to subconfigures. +# Also strip program-prefix, program-suffix, and program-transform-name, +# so that we can pass down a consistent program-transform-name. baseargs= keep_next=no skip_next=no @@ -2437,6 +2808,13 @@ do esac case "$ac_arg" in + --cache-file=/dev/null | \ + -cache-file=/dev/null ) + # Handled here to avoid the test to skip args below. + baseargs="$baseargs '$ac_arg'" + # Assert: $separate_arg should always be no. + keep_next=$separate_arg + ;; --no*) continue ;; @@ -2493,6 +2871,7 @@ baseargs="$baseargs --program-transform-name='${gcc_transform_name}'" if test "$silent" = yes; then baseargs="$baseargs --silent" fi +baseargs="$baseargs --disable-option-checking" # For the build-side libraries, we just need to pretend we're native, # and not use the same cache file. Multilibs are neither needed nor @@ -2555,8 +2934,9 @@ case " $target_configdirs " in case " $target_configargs " in *" --with-newlib "*) case "$target" in - *-cygwin*) - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/include -isystem $$s/winsup/cygwin/include -isystem $$s/winsup/w32api/include' ;; + *-cygwin*) + FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/include -isystem $$s/winsup/cygwin/include -isystem $$s/winsup/w32api/include' + ;; esac # If we're not building GCC, don't discard standard headers. @@ -2612,10 +2992,17 @@ case " $target_configdirs " in esac ;; esac + case "$target" in -*-mingw*) - # Can't be handled as Cygwin above since Mingw does not use newlib. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup/mingw -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/mingw/include -isystem $$s/winsup/w32api/include' ;; + x86_64-*mingw* | *-w64-mingw*) + # MinGW-w64 does not use newlib, nor does it use winsup. It may, + # however, use a symlink named 'mingw' in ${prefix} . + FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L${prefix}/${target}/lib -L${prefix}/mingw/lib -isystem ${prefix}/${target}/include -isystem ${prefix}/mingw/include' + ;; + *-mingw*) + # MinGW can't be handled as Cygwin above since it does not use newlib. + FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup/mingw -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/mingw/include -isystem $$s/winsup/w32api/include' + ;; esac # Allow the user to override the flags for @@ -2902,7 +3289,7 @@ case $build in esac # This is aimed to mimic bootstrap with a non-GCC compiler to catch problems. -if test "$GCC" = yes; then +if test "$GCC" = yes -a "$ENABLE_BUILD_WITH_CXX" != yes; then saved_CFLAGS="$CFLAGS" # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it. @@ -2949,30 +3336,24 @@ case ${enable_werror} in esac AC_SUBST(stage2_werror_flag) -# Flags needed to enable html installing and building -AC_ARG_WITH(datarootdir, -[ --with-datarootdir use datarootdir as the data root directory.], -[datarootdir="\${prefix}/${withval}"], -[datarootdir="\${prefix}/share"]) - -AC_ARG_WITH(docdir, -[ --with-docdir install documentation in this directory.], -[docdir="\${prefix}/${withval}"], -[docdir="\${datarootdir}/doc"]) - -AC_ARG_WITH(pdfdir, -[ --with-pdfdir install pdf in this directory.], -[pdfdir="\${prefix}/${withval}"], -[pdfdir="\${docdir}"]) - -AC_ARG_WITH(htmldir, -[ --with-htmldir install html in this directory.], -[htmldir="\${prefix}/${withval}"], -[htmldir="\${docdir}"]) - -AC_SUBST(datarootdir) -AC_SUBST(docdir) -AC_SUBST(pdfdir) -AC_SUBST(htmldir) - -AC_OUTPUT(Makefile) +# Specify what files to not compare during bootstrap. + +compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*" +case "$target" in + hppa*64*-*-hpux*) ;; + hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/*" ;; +esac +case " $configdirs " in +*" ppl "*) compare_exclusions="$compare_exclusions | ppl/src/ppl-config.o" ;; +esac +AC_SUBST(compare_exclusions) + +AC_CONFIG_FILES([Makefile], + [sed "$extrasub_build" Makefile | + sed "$extrasub_host" | + sed "$extrasub_target" > mf$$ + mv -f mf$$ Makefile], + [extrasub_build="$extrasub_build" + extrasub_host="$extrasub_host" + extrasub_target="$extrasub_target"]) +AC_OUTPUT