OSDN Git Service

2002-09-10 Frank Ch. Eigler <fche@redhat.com>
[pf3gnuchains/gcc-fork.git] / configure
index 57f8c78..bb45d19 100755 (executable)
--- a/configure
+++ b/configure
@@ -3,8 +3,8 @@
 ### WARNING: this file contains embedded tabs.  Do not run untabify on this file.
 
 # Configuration script
-# Copyright (C) 1988, 90, 91, 92, 93, 94, 95, 96, 1997
-# Free Software Foundation, Inc.
+# Copyright (C) 1988, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999, 2000, 2001,
+# 2002 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -51,12 +51,18 @@ build_alias=
 cache_file=config.cache
 cache_file_option=
 configdirs=
+extraconfigdirs=
+diroptions=
+enable_threads=no
+enable_shared=no
+enable_libstdcxx_v3=yes
 exec_prefix=
 exec_prefixoption=
 fatal=
 floating_point=default
 gas=default
-gcc_version=UNKNOWN
+gcc_version=
+gcc_version_trigger=
 host_alias=NOHOST
 host_makefile_frag=
 moveifchange=
@@ -72,7 +78,7 @@ program_suffix=
 program_suffixoption=
 program_transform_name=
 program_transform_nameoption=
-redirect=">/dev/null"
+redirect=
 removing=
 site=
 site_makefile_frag=
@@ -83,8 +89,20 @@ subdirs=
 target_alias=NOTARGET
 target_makefile_frag=
 undefs=NOUNDEFS
-version="$Revision: 1.22 $"
+version="$Revision: 1.45 $"
 x11=default
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
 
 ### we might need to use some other shell than /bin/sh for running subshells
 
@@ -134,16 +152,20 @@ NO_EDIT="This file was generated automatically by configure.  Do not edit."
 
 progname=$0
 # if PWD already has a value, it is probably wrong.
-if [ -n "$PWD" ]; then PWD=`pwd`; fi
+if [ -n "$PWD" ]; then PWD=`${PWDCMD-pwd}`; fi
 
 case "${progname}" in
-/*) ;;
+/* | [A-Za-z]:[\\/]* ) ;;
 */*) ;;
 *)
-        PATH=$PATH:${PWD=`pwd`} ; export PATH
+        PATH=$PATH:${PWD=`${PWDCMD-pwd}`} ; export PATH
         ;;
 esac
 
+# Export original configure arguments for use by sub-configures.
+TOPLEVEL_CONFIGURE_ARGUMENTS="$progname $@"
+export TOPLEVEL_CONFIGURE_ARGUMENTS
+
 # Loop over all args
 
 while :
@@ -191,6 +213,10 @@ do
 # Now, process the options
        case $option in
 
+       --bi*)
+               bindir=$optarg
+               diroptions="$diroptions --bindir=$optarg"
+               ;;
        --build* | --bu*)
                case "$build_alias" in
                "") build_alias=$optarg ;;
@@ -202,6 +228,10 @@ do
        --cache*)
                cache_file=$optarg
                ;;
+       --da*)
+               datadir=$optarg
+               diroptions="$diroptions --datadir=$optarg"
+               ;;
        --disable-*)
                enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
                eval $enableopt=no
@@ -214,7 +244,7 @@ do
                esac
 
                enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
-               eval "$enableopt='$optarg'"
+               eval "$enableopt=\$optarg"
                enableoptions="$enableoptions '$option'"
                ;;
        --exec-prefix* | --ex*)
@@ -235,6 +265,30 @@ do
                   ;;
                esac
                ;;
+       --inc*)
+               includedir=$optarg
+               diroptions="$diroptions --includedir=$optarg"
+               ;;
+       --inf*)
+               infodir=$optarg
+               diroptions="$diroptions --infodir=$optarg"
+               ;;
+       --libd*)
+               libdir=$optarg
+               diroptions="$diroptions --libdir=$optarg"
+               ;;
+       --libe*)
+               libexecdir=$optarg
+               diroptions="$diroptions --libexecdir=$optarg"
+               ;;
+       --lo*)
+               localstatedir=$optarg
+               diroptions="$diroptions --localstatedir=$optarg"
+               ;;
+       --ma*)
+               mandir=$optarg
+               diroptions="$diroptions --mandir=$optarg"
+               ;;
        --nfp | --nf*)
                floating_point=no
                floating_pointoption="--nfp"
@@ -242,6 +296,10 @@ do
        --norecursion | --no*)
                norecursion=yes
                ;;
+       --ol*)
+               oldincludedir=$optarg
+               diroptions="$diroptions --oldincludedir=$optarg"
+               ;;
        --prefix* | --pre*)
                prefix=$optarg
                prefixoption="--prefix=$optarg"
@@ -262,6 +320,14 @@ do
        --rm)
                removing=--rm
                ;;
+       --sb*)
+               sbindir=$optarg
+               diroptions="$diroptions --sbindir=$optarg"
+               ;;
+       --sh*)
+               sharedstatedir=$optarg
+               diroptions="$diroptions --sharedstatedir=$optarg"
+               ;;
        --silent | --sil* | --quiet | --q*)
                redirect=">/dev/null"
                verbose=--silent
@@ -280,6 +346,10 @@ do
        --srcdir* | --sr*)
                srcdir=$optarg
                ;;
+       --sy*)
+               sysconfdir=$optarg
+               diroptions="$diroptions --sysconfdir=$optarg"
+               ;;
        --target* | --ta*)
                case $target_alias in
                NOTARGET) target_alias=$optarg ;;
@@ -307,7 +377,7 @@ do
                esac
 
                withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
-               eval $withopt="$optarg"
+               eval $withopt="\$optarg"
                withoptions="$withoptions $option"
                ;;
        --without-*)
@@ -320,9 +390,6 @@ do
                ;;
        --x-i* | --x-l*) other_options="$other_options $orig_option"
                ;;
-       --bi* | --sb* | --li* | --da* | --sy* | --sh* | --lo* | --in* | --ol* | --ma*)
-               # These options were added to autoconf for emacs.
-               ;;
        --*)
                echo "configure: Unrecognized option: \"$orig_option\"; use --help for usage." >&2
                exit 1
@@ -390,7 +457,7 @@ case "${fatal}" in
                                        fi
                                        ;;
                                esac
-                               echo "Configuring for a ${host_alias} host." 1>&2
+                               echo "Configuring for a ${host_alias} host."
                                arguments="--host=$host_alias $arguments"
                        else
                                echo 'Config.guess failed to determine the host type.  You need to specify one.' 1>&2
@@ -458,6 +525,9 @@ fi
 
 configsub=`echo ${progname} | sed 's/configure$/config.sub/'`
 moveifchange=`echo ${progname} | sed 's/configure$/move-if-change/'`
+## the sed command below emulates the dirname command
+topsrcdir=`cd \`echo ${progname} | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'\`; ${PWDCMD-pwd}`
+
 
 # this is a hack.  sun4 must always be a valid host alias or this will fail.
 if ${config_shell} ${configsub} sun4 >/dev/null 2>&1 ; then
@@ -496,8 +566,8 @@ case "${srcdir}" in
                echo "Invalid source directory ${srcdir}" >&2
                exit 1
        fi
-       pwd=`pwd`
-       srcpwd=`cd ${srcdir} ; pwd`
+       pwd=`${PWDCMD-pwd}`
+       srcpwd=`cd ${srcdir} ; ${PWDCMD-pwd}`
        if [ "${pwd}" = "${srcpwd}" ] ; then
                srcdir=.
        fi
@@ -509,7 +579,7 @@ case "${srcdir}" in
 ".") ;;
 *)
         if [ -f ${srcdir}/config.status ] ; then
-                echo '***' Cannot configure here in \"${PWD=`pwd`}\" when \"${srcdir}\" is currently configured. 1>&2
+                echo '***' Cannot configure here in \"${PWD=`${PWDCMD-pwd}`}\" when \"${srcdir}\" is currently configured. 1>&2
                 exit 1
         fi
 esac
@@ -520,6 +590,28 @@ case "${exec_prefixoption}" in
 *) ;;
 esac
 
+# Define the trigger file to make sure configure will re-run whenever
+# the gcc version number changes.
+if [ "${with_gcc_version_trigger+set}" = set ]; then
+    gcc_version_trigger="$with_gcc_version_trigger"
+    gcc_version=`grep version_string ${with_gcc_version_trigger} | sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/'`
+else
+    # If gcc's sources are available, define the trigger file.
+    if [ -f ${topsrcdir}/gcc/version.c ] ; then
+       gcc_version_trigger=${topsrcdir}/gcc/version.c
+       gcc_version=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/'`
+       case "$arguments" in
+         *--with-gcc-version-trigger=$gcc_version_trigger* )
+           ;;
+         * )
+           # Make sure configure.in knows about this.
+           arguments="--with-gcc-version-trigger=$gcc_version_trigger $arguments"
+           ;;
+       esac
+       withoptions="--with-gcc-version-trigger=$gcc_version_trigger $withoptions"
+    fi
+fi
+
 ### break up ${srcdir}/configure.in.
 case "`grep '^# per\-host:' ${srcdir}/configure.in`" in
 "")
@@ -542,7 +634,7 @@ case "`grep '^# per\-host:' ${srcdir}/configure.in`" in
            eval exec ${config_shell} ${srcdir}/configure ${verbose} \
                ${buildopt} --host=${host_alias} --target=${target_alias} \
                ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
-               ${srcdiroption} \
+               ${srcdiroption} ${diroptions} \
                ${program_prefixoption} ${program_suffixoption} \
                ${program_transform_nameoption} ${site_option} \
                ${withoptions} ${withoutoptions} \
@@ -570,14 +662,16 @@ case "${TMPDIR}" in
 *) ;;
 esac
 
-# keep this filename short for &%*%$*# 14 char file names
-tmpfile=${TMPDIR}/cONf$$
+# keep this filename short for &%*%$*# 14 char file names and 8+3 file names
+tmpdir=${TMPDIR}/cNf$$
+mkdir ${tmpdir} || exit 1
+tmpfile=${tmpdir}/cNf$$
 # Note that under many versions of sh a trap handler for 0 will *override* any
 # exit status you explicitly specify!  At this point, the only non-error exit
 # is at the end of the script; these actions are duplicated there, minus
 # the "exit 1".  Don't use "exit 0" anywhere after this without resetting the
 # trap handler, or you'll lose.
-trap "rm -f Makefile.tem ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos; exit 1" 0 1 2 15
+trap "rm -rf Makefile.tem ${tmpdir}; exit 1" 0 1 2 15
 
 # split ${srcdir}/configure.in into common, per-host, per-target,
 # and post-target parts.  Post-target is optional.
@@ -593,12 +687,28 @@ fi
 
 ### do common part of configure.in
 
+# If the language specific compiler does not exist, but the "gcc" directory does,
+# we will skip this directory; in this case the sub-directory's common part
+# of configure.in will create a small shell script "skip-this-dir" containing
+# commands to completely clean up any temporary or created files.
+
 . ${tmpfile}.com
 
+if test -f skip-this-dir; then
+       # Perform the same cleanup as the trap handler, minus the "exit 1" of course,
+       # and reset the trap handler.
+       trap 0
+       rm -rf Makefile* ${tmpdir}
+       # Execute the final clean-up actions
+       ${config_shell} skip-this-dir
+       # and stop configuring this directory.
+       exit 0
+fi
+
 # some sanity checks on configure.in
 case "${srctrigger}" in
 "")
-        echo '***' srctrigger not set in ${PWD=`pwd`}/configure.in.  1>&2
+        echo '***' srctrigger not set in ${PWD=`${PWDCMD-pwd}`}/configure.in.  1>&2
         exit 1
         ;;
 *) ;;
@@ -668,8 +778,8 @@ esac
 
 if [ ! -r ${srcdir}/${srctrigger} ] ; then
         case "${srcdirdefaulted}" in
-        "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/${srcdir}" 1>&2 ;;
-        *)  echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/. or ${PWD=`pwd`}/.." 1>&2 ;;
+        "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`${PWDCMD-pwd}`}/${srcdir}" 1>&2 ;;
+        *)  echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`${PWDCMD-pwd}`}/. or ${PWD=`${PWDCMD-pwd}`}/.." 1>&2 ;;
         esac
 
         echo '***' \(At least ${srctrigger} is missing.\) 1>&2
@@ -701,37 +811,10 @@ if [ "${program_prefix}" != "" ] ; then
     program_transform_name="-e s,^,${program_prefix}, ${program_transform_name}"
 fi
 
-# Check whether --with-gcc-version was given.
-if [ "${with_gcc_version+set}" = set ]; then
-    gcc_version="$with_gcc_version"
-else
-    if [ "${srcdir}" = "." ] ; then
-       if [ "${with_target_subdir}" != "." ] ; then
-           topsrcdir=${with_multisrctop}../..
-       else
-           topsrcdir=${with_multisrctop}..
-       fi
-    else
-       case ${srcdir} in
-           */*/* )     # Need to do this only in subdirectories.
-               topsrcdir=${srcdir}/..
-               ;;
-           * )         # We are already in the topsrcdir.
-               topsrcdir=${srcdir}
-               ;;
-       esac
-    fi
-    # If gcc's sources are available, extract its version number which is used by
-    # $libsubdir.
-    if [ -f ${topsrcdir}/gcc/version.c ] ; then
-       gcc_version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < ${topsrcdir}/gcc/version.c`
-    fi
-fi
-
 # If CC and CXX are not set in the environment, and the Makefile
 # exists, try to extract them from it.  This is to handle running
 # ./config.status by hand.
-if [ -z "${CC}" -a -r Makefile ]; then
+if [ -z "${CC}" ] && [ -r Makefile ]; then
   sed -n -e ':loop
 /\\$/ N
 s/\\\n//g
@@ -741,7 +824,7 @@ t loop
   rm -f Makefile.cc
 fi
 
-if [ -z "${CFLAGS}" -a -r Makefile ]; then
+if [ -z "${CFLAGS}" ] && [ -r Makefile ]; then
   sed -n -e ':loop
 /\\$/ N
 s/\\\n//g
@@ -751,7 +834,7 @@ t loop
   rm -f Makefile.cc
 fi
 
-if [ -z "${CXX}" -a -r Makefile ]; then
+if [ -z "${CXX}" ] && [ -r Makefile ]; then
   sed -n -e ':loop
 /\\$/ N
 s/\\\n//g
@@ -761,7 +844,7 @@ t loop
   rm -f Makefile.cc
 fi
 
-if [ -z "${CXXFLAGS}" -a -r Makefile ]; then
+if [ -z "${CXXFLAGS}" ] && [ -r Makefile ]; then
   sed -n -e ':loop
 /\\$/ N
 s/\\\n//g
@@ -833,14 +916,15 @@ if [ "${build}" != "${host}" ]; then
   # are not the same, we set reasonable default values for the tools.
 
   tools="AR AR_FOR_TARGET AS AS_FOR_TARGET BISON CC_FOR_BUILD"
-  tools="${tools} CC_FOR_TARGET CXX_FOR_TARGET"
-  tools="${tools} DLLTOOL DLLTOOL_FOR_TARGET GCC_FOR_TARGET HOST_PREFIX"
-  tools="${tools} HOST_PREFIX_1 LD LD_FOR_TARGET LEX MAKEINFO NM"
+  tools="${tools} CC_FOR_TARGET CXX_FOR_TARGET GCJ_FOR_TARGET"
+  tools="${tools} DLLTOOL DLLTOOL_FOR_TARGET GCC_FOR_TARGET BUILD_PREFIX"
+  tools="${tools} BUILD_PREFIX_1 LD LD_FOR_TARGET LEX MAKEINFO NM"
   tools="${tools} NM_FOR_TARGET RANLIB RANLIB_FOR_TARGET"
   tools="${tools} WINDRES WINDRES_FOR_TARGET YACC"
+  tools="${tools} OBJCOPY OBJDUMP"
 
   for var in ${tools}; do
-    if [ -z "`eval 'echo $'"${var}"`" -a -r Makefile ]; then
+    if eval [ -z \"\$${var}\" ] && [ -r Makefile ]; then
       sed -n -e ':loop
 /\\$/ N
 s/\\\n//g
@@ -849,7 +933,7 @@ t loop
        < Makefile > Makefile.v
       t=`tail -1 Makefile.v`
       if [ -n "${t}" ]; then
-       eval "${var}='${t}'"
+       eval "${var}=\${t}"
       fi
       rm -f Makefile.v
     fi
@@ -867,11 +951,12 @@ t loop
   CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
   CC_FOR_TARGET=${CC_FOR_TARGET-${target_alias}-gcc}
   CXX_FOR_TARGET=${CXX_FOR_TARGET-${target_alias}-c++}
+  GCJ_FOR_TARGET=${GCJ_FOR_TARGET-${target_alias}-gcj}
   DLLTOOL=${DLLTOOL-${host_alias}-dlltool}
   DLLTOOL_FOR_TARGET=${DLLTOOL_FOR_TARGET-${target_alias}-dlltool}
   GCC_FOR_TARGET=${GCC_FOR_TARGET-${CC_FOR_TARGET-${target_alias}-gcc}}
-  HOST_PREFIX=${build_alias}-
-  HOST_PREFIX_1=${build_alias}-
+  BUILD_PREFIX=${build_alias}-
+  BUILD_PREFIX_1=${build_alias}-
   LD=${LD-${host_alias}-ld}
   LD_FOR_TARGET=${LD_FOR_TARGET-${target_alias}-ld}
   MAKEINFO=${MAKEINFO-makeinfo}
@@ -881,6 +966,8 @@ t loop
   RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET-${target_alias}-ranlib}
   WINDRES=${WINDRES-${host_alias}-windres}
   WINDRES_FOR_TARGET=${WINDRES_FOR_TARGET-${target_alias}-windres}
+  OBJCOPY=${OBJCOPY-${host_alias}-objcopy}
+  OBJDUMP=${OBJDUMP-${host_alias}-objdump}
 
   if [ -z "${YACC}" ]; then
     IFS="${IFS=        }"; save_ifs="$IFS"; IFS="${IFS}:"
@@ -931,6 +1018,8 @@ t loop
   export NM
   export RANLIB
   export WINDRES
+  export OBJCOPY
+  export OBJDUMP
 else
   # If CC is still not set, try to get gcc.
   if [ -z "${CC}" ]; then
@@ -953,6 +1042,24 @@ else
     done
     IFS="$save_ifs"
     CC=${CC-cc}
+  else
+    if test -z "${CFLAGS}"; then
+      # Here CC is set but CFLAGS is not.  Use a quick hack to use -O2 if CC
+      # is set to a version of gcc.
+      case "${CC}" in
+      *gcc)
+       echo 'void f(){}' > conftest.c
+       if test -z "`${CC} -g -c conftest.c 2>&1`"; then
+         CFLAGS=${CFLAGS-"-g -O2"}
+         CXXFLAGS=${CXXFLAGS-"-g -O2"}
+       else
+         CFLAGS=${CFLAGS-"-O2"}
+         CXXFLAGS=${CXXFLAGS-"-O2"}
+       fi
+       rm -f conftest*
+       ;;
+      esac
+    fi
   fi
 
   CXX=${CXX-"c++"}
@@ -965,22 +1072,10 @@ export CXX
 export CFLAGS
 export CXXFLAGS
 
-# FIXME: This should be in configure.in, not configure
-case "$host" in
-       *go32*)
-           enable_gdbtk=no ;;
-       *msdosdjgpp*)
-           enable_gdbtk=no ;;
-       *cygwin32*)
-           enable_gdbtk=no ;;
-esac
-
-# FIXME: This should be in configure.in, not configure
-# Determine whether gdb needs tk/tcl or not.
-if [ "$enable_gdbtk" != "no" ]; then
-       GDB_TK="all-tcl all-tk all-itcl all-tix"
-else
-       GDB_TK=""
+all_build_modules=
+if test x"${build_alias}" != x"${host_alias}"
+then
+  all_build_modules='$(ALL_BUILD_MODULES_LIST)'
 fi
 
 for subdir in . ${subdirs} ; do
@@ -994,7 +1089,7 @@ for subdir in . ${subdirs} ; do
     case "${srcdir}" in
         ".")  # no -srcdir option.  We're building in place.
                 makesrcdir=. ;;
-        /*) # absolute path
+        /* | [A-Za-z]:[\\/]* ) # absolute path
                 makesrcdir=`echo ${srcdir}/${subdir} | sed -e 's|/\.$||'`
                 ;;
         *) # otherwise relative
@@ -1013,7 +1108,7 @@ for subdir in . ${subdirs} ; do
         if mkdir ${subdir} ; then
                 true
         else
-                echo '***' "${progname}: could not make ${PWD=`pwd`}/${subdir}" 1>&2
+                echo '***' "${progname}: could not make ${PWD=`${PWDCMD-pwd}`}/${subdir}" 1>&2
                 exit 1
         fi
     fi
@@ -1112,7 +1207,7 @@ EOF
                               sed -e "/^####/  r ${package_makefile_rules_frag}" ${srcdir}/${subdir}/${Makefile_in} > ${Makefile}.tem
                       else
                               echo '***' Expected package makefile rules fragment \"${package_makefile_rules_frag}\" 1>&2
-                              echo '***' is missing in ${PWD=`pwd`}. 1>&2
+                              echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2
                               cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem
                       fi
             esac
@@ -1148,7 +1243,7 @@ EOF
                               sed -e "/^####/  r ${host_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem
                       else
                               echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2
-                              echo '***' is missing in ${PWD=`pwd`}. 1>&2
+                              echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2
                               mv ${Makefile} ${subdir}/Makefile.tem
                       fi
             esac
@@ -1184,13 +1279,13 @@ EOF
                               sed -e "/^####/  r ${package_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem
                       else
                               echo '***' Expected package makefile fragment \"${package_makefile_rules_frag}\" 1>&2
-                              echo '***' is missing in ${PWD=`pwd`}. 1>&2
+                              echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2
                               mv ${Makefile} ${subdir}/Makefile.tem
                       fi
             esac
             # real copy now in ${subdir}/Makefile.tem
 
-            # prepend warning about editting, and a bunch of variables.
+            # prepend warning about editing, and a bunch of variables.
             rm -f ${Makefile}
             cat > ${Makefile} <<EOF
 # ${NO_EDIT}
@@ -1220,19 +1315,19 @@ EOF
 
             case "${package_makefile_frag}" in
               "") ;;
-              /*) echo package_makefile_frag = ${package_makefile_frag} >>${Makefile} ;;
+              /* | [A-Za-z]:[\\/]* ) echo package_makefile_frag = ${package_makefile_frag} >>${Makefile} ;;
               *)  echo package_makefile_frag = ${invsubdir}${package_makefile_frag} >>${Makefile} ;;
             esac
 
             case "${target_makefile_frag}" in
               "") ;;
-              /*) echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;;
+              /* | [A-Za-z]:[\\/]* ) echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;;
               *)  echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;;
             esac
 
             case "${host_makefile_frag}" in
               "") ;;
-              /*) echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;;
+              /* | [A-Za-z]:[\\/]* ) echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;;
               *)  echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;;
             esac
 
@@ -1240,25 +1335,8 @@ EOF
                 echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile}
             fi 
 
-           # provide a proper gxx_include_dir to all subdirs.
-           # Note, if you change the default, make sure to fix both here
-           # and in the gcc subdirectory.
-           if test -z "${with_gxx_include_dir}"; then
-               if test x${enable_version_specific_runtime_libs} = xyes; then
-                   echo gxx_include_dir = '${libsubdir}/include/g++' >> ${Makefile}
-               else
-                   echo gxx_include_dir = '${prefix}/include/g++' >> ${Makefile}
-               fi
-           else
-               echo gxx_include_dir = ${with_gxx_include_dir} >> ${Makefile}
-           fi
-
-           # record if we want to build shared libs.
-           if test -z "${enable_shared}"; then
-               echo enable_shared = no >> ${Makefile}
-           else
-               echo enable_shared = ${enable_shared} >> ${Makefile}
-           fi
+           echo enable_shared = ${enable_shared} >> ${Makefile}
+           echo enable_threads = ${enable_threads} >> ${Makefile}
            # record if we want to rumtime library stuff installed in libsubdir.
            if test -z "${enable_version_specific_runtime_libs}"; then
                echo enable_version_specific_runtime_libs = no >> ${Makefile}
@@ -1266,24 +1344,42 @@ EOF
                echo enable_version_specific_runtime_libs = ${enable_version_specific_runtime_libs} >> ${Makefile}
            fi
 
-           # Emit a macro which is used to build the libsubdir macro where
-           # compiler specific stuff can be found/installed.
-           # FIXME: This works only if gcc's sources are available in a gcc
-           # subdirectory!
+           # Emit a macro which describes the file containing gcc's
+           # version number.
+           echo gcc_version_trigger = ${gcc_version_trigger} >> ${Makefile}
+           # And emit a macro defining gcc's version number.
            echo gcc_version = ${gcc_version} >> ${Makefile}
 
             # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
             # remove any form feeds.
             if [ -z "${subdirs}" ]; then
                 rm -f ${subdir}/Makefile.tm2
-                sed -e "s:^SUBDIRS[    ]*=.*$:SUBDIRS = ${configdirs}:" \
-                    -e "s:^NONSUBDIRS[         ]*=.*$:NONSUBDIRS = ${noconfigdirs}:" \
+                sedtemp=sed.$$
+                cat >$sedtemp <<EOF
+s:^SUBDIRS[    ]*=.*$:SUBDIRS = ${configdirs}:
+s:^NONSUBDIRS[         ]*=.*$:NONSUBDIRS = ${noconfigdirs}:
+EOF
+                sed -f $sedtemp \
                     ${subdir}/Makefile.tem > ${subdir}/Makefile.tm2
+                rm -f $sedtemp
                 rm -f ${subdir}/Makefile.tem
                 mv ${subdir}/Makefile.tm2 ${subdir}/Makefile.tem
            fi
            sed     -e "s|^prefix[      ]*=.*$|prefix = ${prefix}|" \
                     -e "s|^exec_prefix[        ]*=.*$|exec_prefix = ${exec_prefix}|" \
+                    -e "s|^bindir[     ]*=.*$|bindir = ${bindir}|" \
+                    -e "s|^sbindir[    ]*=.*$|sbindir = ${sbindir}|" \
+                    -e "s|^libexecdir[         ]*=.*$|libexecdir = ${libexecdir}|" \
+                    -e "s|^datadir[    ]*=.*$|datadir = ${datadir}|" \
+                    -e "s|^sysconfdir[         ]*=.*$|sysconfdir = ${sysconfdir}|" \
+                    -e "s|^sharedstatedir[     ]*=.*$|sharedstatedir = ${sharedstatedir}|" \
+                    -e "s|^localstatedir[      ]*=.*$|localstatedir = ${localstatedir}|" \
+                    -e "s|^libdir[     ]*=.*$|libdir = ${libdir}|" \
+                    -e "s|^includedir[         ]*=.*$|includedir = ${includedir}|" \
+                    -e "s|^oldincludedir[      ]*=.*$|oldincludedir = ${oldincludedir}|" \
+                    -e "s|^infodir[    ]*=.*$|infodir = ${infodir}|" \
+                    -e "s|^mandir[     ]*=.*$|mandir = ${mandir}|" \
+                   -e "s|^ALL_BUILD_MODULES =.*|ALL_BUILD_MODULES =${all_build_modules}|" \
                    -e "/^CC[   ]*=/{
                        :loop1
                        /\\\\$/ N
@@ -1313,23 +1409,26 @@ EOF
                        s%^CXXFLAGS[    ]*=.*$%CXXFLAGS = ${CXXFLAGS}%
                        }" \
                    -e "s|^SHELL[        ]*=.*$|SHELL = ${config_shell}|" \
-                   -e "s:^GDB_TK[       ]*=.*$:GDB_TK = ${GDB_TK}:" \
                     -e "s|^srcdir[     ]*=.*$|srcdir = ${makesrcdir}|" \
                     -e "s/\f//" \
                     -e "s:^program_prefix[     ]*=.*$:program_prefix = ${program_prefix}:" \
                     -e "s:^program_suffix[     ]*=.*$:program_suffix = ${program_suffix}:" \
                     -e "s:^program_transform_name[     ]*=.*$:program_transform_name = ${program_transform_name}:" \
                     -e "s|^tooldir[    ]*=.*$|tooldir = ${tooldir}|" \
+                    -e "s|^build_tooldir[      ]*=.*$|build_tooldir = ${tooldir}|" \
                    -e "s:^DEFAULT_YACC[         ]*=.*$:DEFAULT_YACC = ${DEFAULT_YACC}:" \
                    -e "s:^DEFAULT_LEX[  ]*=.*$:DEFAULT_LEX = ${DEFAULT_LEX}:" \
                    -e "s:^DEFAULT_M4[  ]*=.*$:DEFAULT_M4 = ${DEFAULT_M4}:" \
                     ${subdir}/Makefile.tem >> ${Makefile}
+  
+           sed -e "s:^GDB_TK[   ]*=.*$:GDB_TK = ${GDB_TK}:" ${Makefile} >${Makefile}.tem
+           mv -f ${Makefile}.tem ${Makefile}
 
            # If this is a Canadian Cross, preset the values of many more
            # tools.
            if [ "${build}" != "${host}" ]; then
                for var in ${tools}; do
-                   val=`eval 'echo $'"${var}"`
+                   eval val=\$${var}
                    sed -e "/^${var}[   ]*=/{
                           :loop1
                           /\\\\$/ N
@@ -1366,7 +1465,7 @@ EOF
 
         newusing=`echo "${using}" | sed 's/and/using/'`
         using=${newusing}
-        echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using}
+        echo "Created \"${Makefile}\" in" ${PWD=`${PWDCMD-pwd}`} ${using}
 
         . ${tmpfile}.pos
 
@@ -1406,41 +1505,51 @@ ${progname}" ${arguments}  "
 done
 
 # If there are subdirectories, then recur.
-if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then 
-        for configdir in ${configdirs} ; do
+if [ -z "${norecursion}" ] && [ -n "${configdirs}" ] ; then 
+        for configdir in ${configdirs} ${extraconfigdirs} ; do
+
+               # If configdir contains ',' it is
+               # srcdir,builddir,target_alias
+               # These come from extraconfigdirs.
+               case ${configdir} in
+               *,*)
+                   eval `echo ${configdir} | sed -e 's/\([^,]*\),\([^,]*\),\(.*\)/cfg_dir=\1 bld_dir=\2 tgt_alias=\3/'`
+                   ;;
+               *)
+                   cfg_dir=${configdir}
+                   bld_dir=${configdir}
+                   tgt_alias=${target_alias}
+                   ;;
+               esac
 
-                if [ -d ${srcdir}/${configdir} ] ; then
+                if [ -d ${srcdir}/${cfg_dir} ] ; then
                         eval echo Configuring ${configdir}... ${redirect}
                         case "${srcdir}" in
                         ".") ;;
                         *)
-                                if [ ! -d ./${configdir} ] ; then
-                                        if mkdir ./${configdir} ; then
+                                if [ ! -d ./${bld_dir} ] ; then
+                                        if mkdir ./${bld_dir} ; then
                                                 true
                                         else
-                                                echo '***' "${progname}: could not make ${PWD=`pwd`}/${configdir}" 1>&2
+                                                echo '***' "${progname}: could not make ${PWD=`${PWDCMD-pwd}`}/${bld_dir}" 1>&2
                                                 exit 1
                                         fi
                                 fi
                                 ;;
                         esac
 
-                        POPDIR=${PWD=`pwd`}
-                        cd ${configdir} 
+                        POPDIR=${PWD=`${PWDCMD-pwd}`}
+                        cd ${bld_dir} 
 
 ### figure out what to do with srcdir
                         case "${srcdir}" in
                         ".") newsrcdir=${srcdir} ;; # no -srcdir option.  We're building in place.
-                        /*) # absolute path
-                                newsrcdir=${srcdir}/${configdir}
-                                srcdiroption="--srcdir=${newsrcdir}"
-                                ;;
-                        ?:*) # absolute path on win32
-                                newsrcdir=${srcdir}/${configdir}
+                        /* | [A-Za-z]:[\\/]* ) # absolute path
+                                newsrcdir=${srcdir}/${cfg_dir}
                                 srcdiroption="--srcdir=${newsrcdir}"
                                 ;;
                         *) # otherwise relative
-                                newsrcdir=../${srcdir}/${configdir}
+                                newsrcdir=../${srcdir}/${cfg_dir}
                                 srcdiroption="--srcdir=${newsrcdir}"
                                 ;;
                         esac
@@ -1449,10 +1558,7 @@ if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then
                        case "${cache_file}" in
                        "") # empty
                                ;;
-                       /*) # absolute path
-                               cache_file_option="--cache-file=${cache_file}"
-                               ;;
-                       ?:*) # absolute path on win32
+                       /* | [A-Za-z]:[\\/]* ) # absolute path
                                cache_file_option="--cache-file=${cache_file}"
                                ;;
                        *) # relative path
@@ -1465,23 +1571,22 @@ if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then
                                 recprog=${newsrcdir}/configure
                         elif [ -f ${newsrcdir}/configure.in ] ; then
                                 case "${progname}" in
-                                /*)     recprog=${progname} ;;
-                                ?:*)    recprog=${progname} ;;
-                                *)      recprog=../${progname} ;;
+                                /* | [A-Za-z]:[\\/]* )  recprog=${progname} ;;
+                                *)                      recprog=../${progname} ;;
                                 esac
                        else
-                               eval echo No configuration information in ${configdir} ${redirect}
+                               eval echo No configuration information in ${cfg_dir} ${redirect}
                                recprog=
                         fi
 
 ### The recursion line is here.
                        if [ ! -z "${recprog}" ] ; then
-                               if eval ${config_shell} ${recprog} ${verbose} ${buildopt} --host=${host_alias} --target=${target_alias} \
+                               if eval ${config_shell} ${recprog} ${verbose} ${buildopt} --host=${host_alias} --target=${tgt_alias} \
                                        ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
-                                       ${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} --with-gcc-version=${gcc_version} ${withoptions} ${withoutoptions} ${enableoptions} ${disableoptions} ${floating_pointoption} ${cache_file_option} ${removing} ${other_options} ${redirect} ; then
+                                       ${srcdiroption} ${diroptions} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${enableoptions} ${disableoptions} ${floating_pointoption} ${cache_file_option} ${removing} ${other_options} ${redirect} ; then
                                        true
                                else
-                                       echo Configure in `pwd` failed, exiting. 1>&2
+                                       echo Configure in `${PWDCMD-pwd}` failed, exiting. 1>&2
                                        exit 1
                                fi
                        fi
@@ -1493,7 +1598,7 @@ fi
 
 # Perform the same cleanup as the trap handler, minus the "exit 1" of course,
 # and reset the trap handler.
-rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos
+rm -rf ${tmpdir}
 trap 0
 
 exit 0