Skip to content
Snippets Groups Projects
configure.in 79.5 KiB
Newer Older
Paolo Bonzini's avatar
Paolo Bonzini committed

if test "${build}" != "${host}" ; then
  # If we are doing a Canadian Cross, in which the host and build systems
  # are not the same, we set reasonable default values for the tools.

  CC=${CC-${host_alias}-gcc}
  CFLAGS=${CFLAGS-"-g -O2"}
  CXX=${CXX-${host_alias}-c++}
  CXXFLAGS=${CXXFLAGS-"-g -O2"}
  CC_FOR_BUILD=${CC_FOR_BUILD-gcc}

else
  # Set reasonable default values for some tools even if not Canadian.
  # Of course, these are different reasonable default values, originally
  # specified directly in the Makefile.
  # We don't export, so that autoconf can do its job.
  # Note that all these settings are above the fragment inclusion point
  # in Makefile.in, so can still be overridden by fragments.
  # This is all going to change when we autoconfiscate...

  CC_FOR_BUILD="\$(CC)"
Paolo Bonzini's avatar
Paolo Bonzini committed

  # We must set the default linker to the linker used by gcc for the correct
  # operation of libtool.  If LD is not defined and we are using gcc, try to
  # set the LD default to the ld used by gcc.
  if test -z "$LD"; then
Paolo Bonzini's avatar
Paolo Bonzini committed
      case $build in
      *-*-mingw*)
	gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
      *)
	gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
      esac
      case $gcc_prog_ld in
      # Accept absolute paths.
      [[\\/]* | [A-Za-z]:[\\/]*)]
        LD="$gcc_prog_ld" ;;
      esac
    fi
  fi

  CXX=${CXX-"c++"}
  CFLAGS=${CFLAGS-"-g"}
  CXXFLAGS=${CXXFLAGS-"-g -O2"}
fi

ACX_PROG_GNAT
ACX_PROG_CMP_IGNORE_INITIAL
Paolo Bonzini's avatar
Paolo Bonzini committed

# Check for GMP and MPFR
gmplibs=
gmpinc=
have_gmp=yes
# 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    Specify source directory for MPFR library])

if test "x$with_mpfr_dir" != x; then
  gmpinc="-I$with_mpfr_dir"
  gmplibs="$with_mpfr_dir/libmpfr.a"
else
  gmplibs="-lmpfr"
fi

AC_ARG_WITH(mpfr, [  --with-mpfr=PATH        Specify directory for installed MPFR library])

if test "x$with_mpfr" != x; then
  gmplibs="-L$with_mpfr/lib $gmplibs"
  gmpinc="-I$with_mpfr/include"
fi

# Specify a location for gmp
AC_ARG_WITH(gmp-dir, [  --with-gmp-dir=PATH     Specify source directory for GMP library])

if test "x$with_gmp_dir" != x; then
  gmpinc="$gmpinc -I$with_gmp_dir"
  if test -f "$with_gmp_dir/.libs/libgmp.a"; then
    gmplibs="$gmplibs $with_gmp_dir/.libs/libgmp.a"
  elif test -f "$with_gmp_dir/_libs/libgmp.a"; then
    gmplibs="$gmplibs $with_gmp_dir/_libs/libgmp.a"
  fi
  # One of the later tests will catch the error if neither library is present.
else
  gmplibs="$gmplibs -lgmp"
fi

AC_ARG_WITH(gmp, [  --with-gmp=PATH         Specify directory for installed GMP library])

if test "x$with_gmp" != x; then
  gmplibs="-L$with_gmp/lib $gmplibs"
  gmpinc="-I$with_gmp/include $gmpinc"
fi

saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $gmpinc"
# Check GMP actually works
AC_MSG_CHECKING([for correct version of gmp.h])
AC_TRY_COMPILE([#include "gmp.h"],[
#if __GNU_MP_VERSION < 3
choke me
#endif
], [AC_MSG_RESULT([yes])],
  [AC_MSG_RESULT([no]); have_gmp=no])

if test x"$have_gmp" = xyes; then
  AC_MSG_CHECKING([for MPFR])

  saved_LIBS="$LIBS"
  LIBS="$LIBS $gmplibs"
  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])
  LIBS="$saved_LIBS"
fi
CFLAGS="$saved_CFLAGS"
# Flags needed for both GMP and/or MPFR
AC_SUBST(gmplibs)
AC_SUBST(gmpinc)

# By default, C is the only stage 1 language.
stage1_languages=c
AC_SUBST(stage1_languages)

Paolo Bonzini's avatar
Paolo Bonzini committed
# 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
# go away some day.
# NB:  embedded tabs in this IF block -- do not untabify
if test -d ${srcdir}/gcc; then
  if test x"${enable_languages+set}" != xset; then
    if test x"${LANGUAGES+set}" = xset; then
      enable_languages="${LANGUAGES}"
        echo configure.in: warning: setting LANGUAGES is deprecated, use --enable-languages instead 1>&2
    else
      enable_languages=all
    fi
  else
    if test x"${enable_languages}" = x ||
       test x"${enable_languages}" = xyes;
       then
      echo configure.in: --enable-languages needs at least one language argument 1>&2
      exit 1
    fi
  fi
  enable_languages=`echo "${enable_languages}" | sed -e 's/[[ 	,]][[ 	,]]*/,/g' -e 's/,$//'`

  # 'f95' is the old name for the 'fortran' language. We issue a warning
  # and make the substitution.
  case ,${enable_languages}, in
    *,f95,*)
      echo configure.in: warning: 'f95' as language name is deprecated, use 'fortran' instead 1>&2
      enable_languages=`echo "${enable_languages}" | sed -e 's/f95/fortran/g'`
      ;;
  esac

Paolo Bonzini's avatar
Paolo Bonzini committed
  # First scan to see if an enabled language requires some other language.
  # We assume that a given config-lang.in will list all the language
  # front ends it requires, even if some are required indirectly.
  for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do
    case ${lang_frag} in
      ..) ;;
      # The odd quoting in the next line works around
      # an apparent bug in bash 1.12 on linux.
      ${srcdir}/gcc/[[*]]/config-lang.in) ;;
      *)
        # From the config-lang.in, get $language, $lang_requires
        language=
        lang_requires=
        . ${lang_frag}
        for other in ${lang_requires} ; do
          case ,${enable_languages}, in
	    *,$other,*) ;;
	    *,all,*) ;;
	    *,$language,*)
	      echo " \`$other' language required by \`$language'; enabling" 1>&2
	      enable_languages="${enable_languages},${other}"
	      ;;
	  esac
        done
        ;;
    esac
  done

  new_enable_languages=c
  missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ `
Paolo Bonzini's avatar
Paolo Bonzini committed

  for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do
    case ${lang_frag} in
      ..) ;;
      # The odd quoting in the next line works around
      # an apparent bug in bash 1.12 on linux.
      ${srcdir}/gcc/[[*]]/config-lang.in) ;;
      *)
        # From the config-lang.in, get $language, $target_libs, 
        # $lang_dirs, $boot_language, and $build_by_default
Paolo Bonzini's avatar
Paolo Bonzini committed
        language=
        target_libs=
        lang_dirs=
Paolo Bonzini's avatar
Paolo Bonzini committed
        build_by_default=
Paolo Bonzini's avatar
Paolo Bonzini committed
        . ${lang_frag}
        potential_languages="${potential_languages},${language}"
Paolo Bonzini's avatar
Paolo Bonzini committed
        # This is quite sensitive to the ordering of the case statement arms.
        case ,${enable_languages},:${language}:${have_gnat}:${build_by_default} in
          *::*:*)
            echo "${lang_frag} doesn't set \$language." 1>&2
            exit 1
Paolo Bonzini's avatar
Paolo Bonzini committed
          *:ada:no:*)
            # Ada was requested with no preexisting GNAT.  Disable unconditionally.
            add_this_lang=no
            ;;
          *,${language},*:*:*:*)
            # Language was explicitly selected; include it.
            add_this_lang=yes
            ;;
          *,all,*:*:*:no)
            # 'all' was selected, but this is not a default language
Paolo Bonzini's avatar
Paolo Bonzini committed
            add_this_lang=no
Paolo Bonzini's avatar
Paolo Bonzini committed
          *,all,*:*:*:*)
            # 'all' was selected and this is a default language; include it.
            add_this_lang=yes
            ;;
          *)
            add_this_lang=no
            ;;
        esac
        # Disable languages that need other directories if these aren't available.
	for i in $subdir_requires; do
	  test -f "$srcdir/gcc/$i/config-lang.in" && continue
	  case ,${enable_languages}, in
            *,${language},*)
              # Specifically requested language; tell them.
              AC_MSG_ERROR([The gcc/$i directory contains parts of $language but is missing])
              ;;
            *)
              # Silently disable.
              add_this_lang=no
              ;;
          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 with MPFR support is required to build $language])
            ;;
          *:no:yes)
            # Silently disable.
            add_this_lang=no
            ;;
        esac

	# Disable a language that is unsupported by the target.
	case " $unsupported_languages " in
	  *" $language "*)
	    add_this_lang=no
	    ;;
	esac

	case $add_this_lang in
Paolo Bonzini's avatar
Paolo Bonzini committed
	  no)
            # Remove language-dependent dirs.
            eval noconfigdirs='"$noconfigdirs "'\"$target_libs $lang_dirs\"
	    ;;
Paolo Bonzini's avatar
Paolo Bonzini committed
          *)
	    new_enable_languages="$new_enable_languages,$language"
	    missing_languages=`echo "$missing_languages" | sed "s/,$language,/,/"`
	    case ${boot_language} in
	      yes)
		# Add to (comma-separated) list of stage 1 languages.
		stage1_languages="${stage1_languages},${language}"
Paolo Bonzini's avatar
Paolo Bonzini committed
        esac
        ;;
    esac
  done

  missing_languages=`echo "$missing_languages" | sed -e "s/^,//" -e "s/,$//"`
Paolo Bonzini's avatar
Paolo Bonzini committed
  if test "x$missing_languages" != x; then
    AC_MSG_ERROR([
The following requested languages could not be built: ${missing_languages}
Recognised languages are: ${potential_languages}])
Paolo Bonzini's avatar
Paolo Bonzini committed
  fi

  if test "x$new_enable_languages" != "x$enable_languages"; then
    echo The following languages will be built: ${new_enable_languages}
  fi
  enable_languages="$new_enable_languages"
  ac_configure_args=`echo " $ac_configure_args" | sed -e 's/ --enable-languages=[[^ ]]*//' -e 's/$/ --enable-languages='"$enable_languages"/ `
Paolo Bonzini's avatar
Paolo Bonzini committed
fi

# Handle --disable-<component> generically.
for dir in $configdirs $build_configdirs $target_configdirs ; do
  dirname=`echo $dir | sed -e s/target-//g -e s/build-//g -e s/-/_/g`
  if eval test x\${enable_${dirname}} "=" xno ; then
    noconfigdirs="$noconfigdirs $dir"
  fi
done

# Check for Boehm's garbage collector
AC_ARG_ENABLE(objc-gc,
[  --enable-objc-gc       enable the use of Boehm's garbage collector with
                          the GNU Objective-C runtime.],
[case ,${enable_languages},:${enable_objc_gc}:${noconfigdirs} in
  *,objc,*:*:yes:*target-boehm-gc*)
    AC_MSG_ERROR([Boehm's garbage collector was requested yet not supported in this configuration])
    ;;
esac])

# Make sure we only build Boehm's garbage collector if required.
case ,${enable_languages},:${enable_objc_gc} in
  *,objc,*:yes)
    # Keep target-boehm-gc if requested for Objective-C.
    ;;
  *)
    # Otherwise remove target-boehm-gc depending on target-libjava.
    if echo " ${noconfigdirs} " | grep "target-libjava" >/dev/null 2>&1; then
      noconfigdirs="$noconfigdirs target-boehm-gc"
    fi
# Remove the entries in $skipdirs and $noconfigdirs from $configdirs,
# $build_configdirs and $target_configdirs.
Paolo Bonzini's avatar
Paolo Bonzini committed
# If we have the source for $noconfigdirs entries, add them to $notsupp.

notsupp=""
for dir in . $skipdirs $noconfigdirs ; do
  dirname=`echo $dir | sed -e s/target-//g -e s/build-//g`
Paolo Bonzini's avatar
Paolo Bonzini committed
  if test $dir != .  && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
    configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"`
    if test -r $srcdir/$dirname/configure ; then
      if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
	true
      else
	notsupp="$notsupp $dir"
      fi
    fi
  fi
  if test $dir != .  && echo " ${build_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
    build_configdirs=`echo " ${build_configdirs} " | sed -e "s/ ${dir} / /"`
    if test -r $srcdir/$dirname/configure ; then
      if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
	true
      else
	notsupp="$notsupp $dir"
      fi
    fi
  fi
Paolo Bonzini's avatar
Paolo Bonzini committed
  if test $dir != . && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
    target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"`
    if test -r $srcdir/$dirname/configure ; then
      if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
	true
      else
	notsupp="$notsupp $dir"
      fi
    fi
  fi
done

# Sometimes the tools are distributed with libiberty but with no other
# libraries.  In that case, we don't want to build target-libiberty.
if test -n "${target_configdirs}" ; then
  others=
  for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
    if test "$i" != "libiberty" ; then
      if test -r $srcdir/$i/configure ; then
	others=yes;
	break;
      fi
    fi
  done
  if test -z "${others}" ; then
    target_configdirs=
  fi
fi

# Quietly strip out all directories which aren't configurable in this tree.
# This relies on all configurable subdirectories being autoconfiscated, which
# is now the case.
build_configdirs_all="$build_configdirs"
build_configdirs=
for i in ${build_configdirs_all} ; do
  j=`echo $i | sed -e s/build-//g` 
  if test -f ${srcdir}/$j/configure ; then
    build_configdirs="${build_configdirs} $i"
  fi
done

Paolo Bonzini's avatar
Paolo Bonzini committed
configdirs_all="$configdirs"
configdirs=
for i in ${configdirs_all} ; do
  if test -f ${srcdir}/$i/configure ; then
    configdirs="${configdirs} $i"
  fi
done
Paolo Bonzini's avatar
Paolo Bonzini committed
target_configdirs_all="$target_configdirs"
target_configdirs=
for i in ${target_configdirs_all} ; do
  j=`echo $i | sed -e s/target-//g` 
  if test -f ${srcdir}/$j/configure ; then
    target_configdirs="${target_configdirs} $i"
  fi
done

# Produce a warning message for the subdirs we can't configure.
# This isn't especially interesting in the Cygnus tree, but in the individual
# FSF releases, it's important to let people know when their machine isn't
# supported by the one or two programs in a package.

if test -n "${notsupp}" && test -z "${norecursion}" ; then
  # If $appdirs is non-empty, at least one of those directories must still
  # be configured, or we error out.  (E.g., if the gas release supports a
  # specified target in some subdirs but not the gas subdir, we shouldn't
  # pretend that all is well.)
  if test -n "$appdirs" ; then
    for dir in $appdirs ; do
      if test -r $dir/Makefile.in ; then
	if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
	  appdirs=""
	  break
	fi
	if echo " ${target_configdirs} " | grep " target-${dir} " >/dev/null 2>&1; then
Paolo Bonzini's avatar
Paolo Bonzini committed
	  appdirs=""
	  break
	fi
      fi
    done
    if test -n "$appdirs" ; then
      echo "*** This configuration is not supported by this package." 1>&2
      exit 1
    fi
  fi
  # Okay, some application will build, or we don't care to check.  Still
  # notify of subdirs not getting built.
  echo "*** This configuration is not supported in the following subdirectories:" 1>&2
  echo "    ${notsupp}" 1>&2
  echo "    (Any other directories should still work fine.)" 1>&2
fi

case "$host" in
  *msdosdjgpp*)
    enable_gdbtk=no ;;
esac

copy_dirs=

AC_ARG_WITH([build-sysroot], 
  [  --with-build-sysroot=sysroot
                          use sysroot as the system root during the build],
  [if test x"$withval" != x ; then
     SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
   fi],
  [SYSROOT_CFLAGS_FOR_TARGET=])
AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)

Paolo Bonzini's avatar
Paolo Bonzini committed
# Handle --with-headers=XXX.  If the value is not "yes", the contents of
# the named directory are copied to $(tooldir)/sys-include.
if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
  if test x${is_cross_compiler} = xno ; then
    echo 1>&2 '***' --with-headers is only supported when cross compiling
    exit 1
  fi
  if test x"${with_headers}" != xyes ; then
    case "${exec_prefixoption}" in
    "") x=${prefix} ;;
    *) x=${exec_prefix} ;;
    esac
    copy_dirs="${copy_dirs} ${with_headers} $x/${target_alias}/sys-include"
  fi
fi

# Handle --with-libs=XXX.  If the value is not "yes", the contents of
# the name directories are copied to $(tooldir)/lib.  Multiple directories
# are permitted.
if test x"${with_libs}" != x && test x"${with_libs}" != xno ; then
  if test x${is_cross_compiler} = xno ; then
    echo 1>&2 '***' --with-libs is only supported when cross compiling
    exit 1
  fi
  if test x"${with_libs}" != xyes ; then
    # Copy the libraries in reverse order, so that files in the first named
    # library override files in subsequent libraries.
    case "${exec_prefixoption}" in
    "") x=${prefix} ;;
    *) x=${exec_prefix} ;;
    esac
    for l in ${with_libs}; do
      copy_dirs="$l $x/${target_alias}/lib ${copy_dirs}"
    done
  fi
fi

# Set with_gnu_as and with_gnu_ld as appropriate.
#
# This is done by determining whether or not the appropriate directory
# is available, and by checking whether or not specific configurations
# have requested that this magic not happen.
# 
# The command line options always override the explicit settings in 
# configure.in, and the settings in configure.in override this magic.
#
# 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.

if test x${use_gnu_as} = x &&
   echo " ${configdirs} " | grep " gas " > /dev/null 2>&1 ; then
  with_gnu_as=yes
  extra_host_args="$extra_host_args --with-gnu-as"
fi

if test x${use_gnu_ld} = x &&
   echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 ; then
  with_gnu_ld=yes
  extra_host_args="$extra_host_args --with-gnu-ld"
fi

# If using newlib, add --with-newlib to the extra_host_args so that gcc/configure
# can detect this case.

if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " target-newlib " > /dev/null 2>&1 ; then
  with_newlib=yes
  extra_host_args="$extra_host_args --with-newlib"
fi

Paolo Bonzini's avatar
Paolo Bonzini committed
# Handle ${copy_dirs}
set fnord ${copy_dirs}
shift
while test $# != 0 ; do
  if test -f $2/COPIED && test x"`cat $2/COPIED`" = x"$1" ; then
    :
  else
    echo Copying $1 to $2

    # Use the install script to create the directory and all required
    # parent directories.
    if test -d $2 ; then
      :
    else
      echo >config.temp
      ${srcdir}/install-sh -c -m 644 config.temp $2/COPIED
    fi

    # Copy the directory, assuming we have tar.
    # FIXME: Should we use B in the second tar?  Not all systems support it.
    (cd $1; tar -cf - .) | (cd $2; tar -xpf -)

    # It is the responsibility of the user to correctly adjust all
    # symlinks.  If somebody can figure out how to handle them correctly
    # here, feel free to add the code.

    echo $1 > $2/COPIED
  fi
  shift; shift
done

# Determine a target-dependent exec_prefix that the installed
# gcc will search in.  Keep this list sorted by triplet, with
# the *-*-osname triplets last.
md_exec_prefix=
case "${target}" in
  alpha*-*-*vms*)
    md_exec_prefix=/gnu/lib/gcc-lib
    ;;
  i[34567]86-pc-msdosdjgpp*)
    md_exec_prefix=/dev/env/DJDIR/bin
    ;;
  i[34567]86-*-sco3.2v5*)
    if test $with_gnu_as = yes; then
      md_exec_prefix=/usr/gnu/bin
    else
      md_exec_prefix=/usr/ccs/bin/elf
    fi
    ;;

  mn10300-*-* | \
  powerpc-*-chorusos* | \
  powerpc*-*-eabi* | \
  powerpc*-*-sysv* | \
  powerpc*-*-kaos* | \
  s390x-ibm-tpf*)
    md_exec_prefix=/usr/ccs/bin
    ;;
  sparc64-*-elf*)
    ;;
  v850*-*-*)
    md_exec_prefix=/usr/ccs/bin
    ;;
  xtensa-*-elf*)
    ;;

  *-*-beos* | \
  *-*-elf* | \
  *-*-hpux* | \
  *-*-netware* | \
  *-*-nto-qnx* | \
  *-*-rtems* | \
  *-*-solaris2* | \
  *-*-sysv[45]* | \
  *-*-vxworks* | \
  *-wrs-windiss)
    md_exec_prefix=/usr/ccs/bin
    ;;
esac

extra_arflags_for_target=
extra_nmflags_for_target=
extra_ranlibflags_for_target=
target_makefile_frag=/dev/null
case "${target}" in
    target_makefile_frag="config/mt-netware"
  *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu)
    target_makefile_frag="config/mt-gnu"
  *-*-aix4.[[3456789]]* | *-*-aix[[56789]].*)
    # nm and ar from AIX 4.3 and above require -X32_64 flag to all ar and nm 
    # commands to handle both 32-bit and 64-bit objects.  These flags are
    # harmless if we're using GNU nm or ar.
    extra_arflags_for_target=" -X32_64"
    extra_nmflags_for_target=" -B -X32_64"
  *-*-darwin*)
    # ranlib from Darwin requires the -c flag to look at common symbols.
    extra_ranlibflags_for_target=" -c"
    ;;
  mips*-*-pe | sh*-*-pe | *arm-wince-pe)
    target_makefile_frag="config/mt-wince"
    ;;
esac

alphaieee_frag=/dev/null
case $target in
  alpha*-*-*)
    # This just makes sure to use the -mieee option to build target libs.
    # This should probably be set individually by each library.
    alphaieee_frag="config/mt-alphaieee"
# If --enable-target-optspace always use -Os instead of -O2 to build
# the target libraries, similarly if it is not specified, use -Os
# on selected platforms.
ospace_frag=/dev/null
case "${enable_target_optspace}:${target}" in
  yes:*)
    ;;
  :m32r-* | :d10v-* | :fr30-*)
    ;;
  no:* | :*)
    ;;
  *)
    echo "*** bad value \"${enable_target_optspace}\" for --enable-target-optspace flag; ignored" 1>&2
    ;;
esac
Jason Merrill's avatar
Jason Merrill committed

# Default to using --with-stabs for certain targets.
if test x${with_stabs} = x ; then
  case "${target}" in
    ;;
  mips*-*-* | alpha*-*-osf*)
    with_stabs=yes;
    extra_host_args="${extra_host_args} --with-stabs"
    ;;
  esac
fi

# hpux11 in 64bit mode has libraries in a weird place.  Arrange to find
# them automatically.
case "${host}" in
  hppa*64*-*-hpux11*)	
    extra_host_args="$extra_host_args -x-libraries=/usr/lib/pa20_64 -x-includes=/usr/X11R6/include"
# Some systems (e.g., one of the i386-aix systems the gas testers are
# using) don't handle "\$" correctly, so don't use it here.
tooldir='${exec_prefix}'/${target_alias}
build_tooldir=${tooldir}

# Create a .gdbinit file which runs the one in srcdir
# and tells GDB to look there for source files.

if test -r ${srcdir}/.gdbinit ; then
  case ${srcdir} in
    .) ;;
    *) cat > ./.gdbinit <<EOF
# ${NO_EDIT}
dir ${srcdir}
dir .
source ${srcdir}/.gdbinit
EOF
    ;;
  esac
fi

Jason Merrill's avatar
Jason Merrill committed
# Make sure that the compiler is able to generate an executable.  If it
# can't, we are probably in trouble.  We don't care whether we can run the
# executable--we might be using a cross compiler--we only care whether it
# can be created.  At this point the main configure script has set CC.
Jason Merrill's avatar
Jason Merrill committed
echo "int main () { return 0; }" > conftest.c
${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c
if test $? = 0 ; then
  if test -s conftest || test -s conftest.exe ; then
    we_are_ok=yes
  fi
fi 
case $we_are_ok in
  no)
    echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed."
    echo 1>&2 "*** You must set the environment variable CC to a working compiler."
    rm -f conftest*
    exit 1
    ;;
esac
Jason Merrill's avatar
Jason Merrill committed
rm -f conftest*

# The Solaris /usr/ucb/cc compiler does not appear to work.
case "${host}" in
  sparc-sun-solaris2*)
      CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`"
      if test "`type $CCBASE | sed 's/^[[^/]]*//'`" = "/usr/ucb/cc" ; then
Jason Merrill's avatar
Jason Merrill committed
          could_use=
          test -d /opt/SUNWspro/bin && could_use="/opt/SUNWspro/bin"
          if test -d /opt/cygnus/bin ; then
              if test "$could_use" = "" ; then
Jason Merrill's avatar
Jason Merrill committed
                  could_use="/opt/cygnus/bin"
              else
                  could_use="$could_use or /opt/cygnus/bin"
              fi
          fi
        if test "$could_use" = "" ; then
Jason Merrill's avatar
Jason Merrill committed
            echo "Warning: compilation may fail because you're using"
            echo "/usr/ucb/cc.  You should change your PATH or CC "
            echo "variable and rerun configure."
        else
            echo "Warning: compilation may fail because you're using"
            echo "/usr/ucb/cc, when you should use the C compiler from"
            echo "$could_use.  You should change your"
            echo "PATH or CC variable and rerun configure."
        fi
      fi
  ;;
esac

case "${host}" in
  *-*-hpux*) RPATH_ENVVAR=SHLIB_PATH ;;
  *-*-darwin* | *-*-rhapsody* ) RPATH_ENVVAR=DYLD_LIBRARY_PATH ;;
  *) RPATH_ENVVAR=LD_LIBRARY_PATH ;;
esac

# Record target_configdirs and the configure arguments for target and
# build configuration in Makefile.
target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
build_configdirs=`echo "${build_configdirs}" | sed -e 's/build-//g'`

# Determine whether gdb needs tk/tcl or not.
# Use 'maybe' since enable_gdbtk might be true even if tk isn't available
# and in that case we want gdb to be built without tk.  Ugh!
# In fact I believe gdb is the *only* package directly dependent on tk,
# so we should be able to put the 'maybe's in unconditionally and
# leave out the maybe dependencies when enable_gdbtk is false.  I'm not
# 100% sure that that's safe though.
gdb_tk="maybe-all-tcl maybe-all-tk maybe-all-itcl maybe-all-libgui"
case "$enable_gdbtk" in
  no)
    GDB_TK="" ;;
    # Only add the dependency on gdbtk when GDBtk is part of the gdb
    # distro.  Eventually someone will fix this and move Insight, nee
    # gdbtk to a separate directory.
    if test -d ${srcdir}/gdb/gdbtk ; then
      GDB_TK="${gdb_tk}"
    else
      GDB_TK=""
    fi
    ;;
CONFIGURE_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-configure-/g`
INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
# Strip out unwanted targets.
Nathanael Nerode's avatar
Nathanael Nerode committed

# While at that, we remove Makefiles if we were started for recursive
# 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.
Nathanael Nerode's avatar
Nathanael Nerode committed

[  --enable-bootstrap           Enable bootstrapping [yes if native build]],,
enable_bootstrap=default)
# Issue errors and warnings for invalid/strange bootstrap combinations.
case "$configdirs" in
  *gcc*) have_compiler=yes ;;
  *) have_compiler=no ;;
esac

case "$have_compiler:$host:$target:$enable_bootstrap" in
  *:*:*:no) ;;

  # Default behavior.  Enable bootstrap if we have a compiler
  # and we are in a native configuration.
  yes:$build:$build:default)
    enable_bootstrap=yes ;;

  *:*:*:default)
    enable_bootstrap=no ;;

  # We have a compiler and we are in a native configuration, bootstrap is ok
    ;;

  # Other configurations, but we have a compiler.  Assume the user knows
  # what he's doing.
    AC_MSG_WARN([trying to bootstrap a cross compiler])
    ;;

  # No compiler: if they passed --enable-bootstrap explicitly, fail
    AC_MSG_ERROR([cannot bootstrap without a compiler]) ;;

  # Fail if wrong command line
  *)
    AC_MSG_ERROR([invalid option for --enable-bootstrap])
    ;;
esac

# Adjust the toplevel makefile according to whether bootstrap was selected.
case "$enable_bootstrap" in
  yes)
    bootstrap_suffix=bootstrap ;;
  no)
    bootstrap_suffix=no-bootstrap ;;
esac

for module in ${build_configdirs} ; do
Nathanael Nerode's avatar
Nathanael Nerode committed
  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
/^@if build-$module\$/d
/^@endif build-$module\$/d
/^@if build-$module-$bootstrap_suffix\$/d
/^@endif build-$module-$bootstrap_suffix\$/d"
Nathanael Nerode's avatar
Nathanael Nerode committed
done
for module in ${configdirs} ; do
  if test -z "${no_recursion}"; then
    for file in stage*-${module}/Makefile ${module}/Makefile; do
      if test -f ${file}; then
	echo 1>&2 "*** removing ${file} to force reconfigure"
	rm -f ${file}
      fi
    done
Nathanael Nerode's avatar
Nathanael Nerode committed
  fi
  extrasub="$extrasub
/^@if $module\$/d
/^@endif $module\$/d
/^@if $module-$bootstrap_suffix\$/d
/^@endif $module-$bootstrap_suffix\$/d"
Nathanael Nerode's avatar
Nathanael Nerode committed
done
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
/^@if target-$module\$/d
/^@endif target-$module\$/d
/^@if target-$module-$bootstrap_suffix\$/d
/^@endif target-$module-$bootstrap_suffix\$/d"
extrasub="$extrasub
/^@if /,/^@endif /d"

# Create the serialization dependencies.  This uses a temporary file.

[  --enable-serial-[{host,target,build}-]configure
                          Force sequential configuration of
                          sub-packages for the host, target or build
			  machine, or all sub-packages])

case ${enable_serial_configure} in
  yes)
    enable_serial_build_configure=yes
    enable_serial_host_configure=yes
    enable_serial_target_configure=yes
    ;;
esac
# These force 'configure's to be done one at a time, to avoid problems
# with contention over a shared config.cache.
rm -f serdep.tmp
test "x${enable_serial_build_configure}" = xyes &&
for item in ${build_configdirs} ; do
  case ${olditem} in
    "") ;;
    *) echo "configure-build-${item}: configure-build-${olditem}" >> serdep.tmp ;;
  esac
  olditem=${item}
done
olditem=
test "x${enable_serial_host_configure}" = xyes &&
for item in ${configdirs} ; do
  case ${olditem} in
    "") ;;
    *) echo "configure-${item}: configure-${olditem}" >> serdep.tmp ;;
  esac
  olditem=${item}
done
olditem=
test "x${enable_serial_target_configure}" = xyes &&
for item in ${target_configdirs} ; do
  case ${olditem} in
    "") ;;
    *) echo "configure-target-${item}: configure-target-${olditem}" >> serdep.tmp ;;
  esac
  olditem=${item}
done
serialization_dependencies=serdep.tmp
AC_SUBST_FILE(serialization_dependencies)
# Base args.  Strip norecursion, cache-file, srcdir, host, build,
# target and nonopt.  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.  If autoconf has put single quotes around
# any of these arguments (because they contain shell metacharacters)
# then this will fail; in practice this only happens for
# --program-transform-name, so be sure to override --program-transform-name
# at the end of the argument list.
# These will be expanded by make, so quote '$'.
s/ --no[[^ ]]*/ /g
s/ --c[[a-z-]]*[[= ]][[^ ]]*//g
s/ --sr[[a-z-]]*[[= ]][[^ ]]*//g
s/ --ho[[a-z-]]*[[= ]][[^ ]]*//g
s/ --bu[[a-z-]]*[[= ]][[^ ]]*//g
s/ --t[[a-z-]]*[[= ]][[^ ]]*//g
s/ --program-[[pst]][[a-z-]]*[[= ]][[^ ]]*//g
s/ -cache-file[[= ]][[^ ]]*//g
s/ -srcdir[[= ]][[^ ]]*//g
s/ -host[[= ]][[^ ]]*//g
s/ -build[[= ]][[^ ]]*//g
s/ -target[[= ]][[^ ]]*//g
s/ -program-prefix[[= ]][[^ ]]*//g
s/ -program-suffix[[= ]][[^ ]]*//g
s/ -program-transform-name[[= ]][[^ ]]*//g
s,\$,$$,g
EOF_SED
sed -f conftestsed <<EOF_SED > conftestsed.out
 ${ac_configure_args} 
baseargs=`cat conftestsed.out`
rm -f conftestsed conftestsed.out
Jason Merrill's avatar
Jason Merrill committed

# Add in --program-transform-name, after --program-prefix and
# --program-suffix have been applied to it.  Autoconf has already