* configure: Fix bug put in by gremlins.
[deliverable/binutils-gdb.git] / configure
index 296576ca650f27e5ea425df9d15f081500f41ede..6b4d9b495623f5f4443c72b45c0809bd4a13c561 100755 (executable)
--- a/configure
+++ b/configure
@@ -3,7 +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 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
 # 
 # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-# Please email any bugs, comments, and/or additions to this file to:
-# configure@cygnus.com
-
-# This file was written by K. Richard Pixley.
+# This file was originally written by K. Richard Pixley.
 
 #
 # Shell script to create proper links to machine-dependent files in
@@ -48,20 +46,30 @@ symbolic_link='ln -s'
 
 Makefile=Makefile
 Makefile_in=Makefile.in
-arguments=$*
+arguments=
 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=
+gcc_version_trigger=
 host_alias=NOHOST
 host_makefile_frag=
 moveifchange=
 norecursion=
 other_options=
 package_makefile_frag=
+package_makefile_rules_frag=
 prefix=/usr/local
 progname=
 program_prefix=
@@ -70,22 +78,63 @@ program_suffix=
 program_suffixoption=
 program_transform_name=
 program_transform_nameoption=
-redirect=">/dev/null"
-removing=
+redirect=
 site=
 site_makefile_frag=
 site_option=
 srcdir=
 srctrigger=
-subdirs=
 target_alias=NOTARGET
 target_makefile_frag=
 undefs=NOUNDEFS
 version="$Revision$"
 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
-#
+
+### If we are on Windows, search for the shell.  This will permit people
+### to not have /bin/sh, but to be able to see /SOME/PATH/sh configure
+### without also having to set CONFIG_SHELL.  This code will work when
+### using bash, which sets OSTYPE.
+case "${OSTYPE}" in
+*win32*)
+  if [ x${CONFIG_SHELL} = x ]; then
+    if [ ! -f /bin/sh ]; then
+      if [ x${SHELL} != x ] && [ -f ${SHELL} ]; then
+       CONFIG_SHELL=${SHELL}
+       export CONFIG_SHELL
+      else
+       for prog in sh sh.exe bash bash.exe; do
+         IFS="${IFS=   }"; save_ifs="$IFS"; IFS="${IFS}:"
+         for dir in $PATH; do
+           test -z "$dir" && dir=.
+           if test -f $dir/$prog; then
+             CONFIG_SHELL=$dir/$prog
+             export CONFIG_SHELL
+             break
+           fi
+         done
+         IFS="$save_ifs"
+         test -n "${CONFIG_SHELL}" && break
+       done
+      fi
+    fi
+  fi
+  ;;
+esac
+
 config_shell=${CONFIG_SHELL-/bin/sh}
 
 NO_EDIT="This file was generated automatically by configure.  Do not edit."
@@ -101,16 +150,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 :
@@ -138,19 +191,31 @@ do
        case $option in
        --*=*)
                optarg=`echo $option | sed -e 's/^[^=]*=//'`
+               arguments="$arguments $option"
                ;;
 # These options have mandatory values.  Since we didn't find an = sign,
 # the value must be in the next argument
-       --b* | --ex* | --ho* | --pre* | --program-p* | --program-s* | --program-t* | --si* | --sr* | --ta* | --tm* | --x-*)
+       --bu* | --cache* | --ex* | --ho* | --pre* | --program-p* | --program-s* | --program-t* | --si* | --sr* | --ta* | --tm* | --x-* | --bi* | --sb* | --li* | --da* | --sy* | --sh* | --lo* | --in* | --ol* | --ma*)
                optarg=$1
                shift
+               arguments="$arguments $option=$optarg"
+               ;;
+       --v)
+               arguments="$arguments -v"
+               ;;
+       --*)
+               arguments="$arguments $option"
                ;;
        esac
 
 # Now, process the options
        case $option in
 
-       --build* | --b*)
+       --bi*)
+               bindir=$optarg
+               diroptions="$diroptions --bindir=$optarg"
+               ;;
+       --build* | --bu*)
                case "$build_alias" in
                "") build_alias=$optarg ;;
                *) echo '***' Can only configure for one build machine at a time.  1>&2
@@ -158,6 +223,13 @@ do
                   ;;
                esac
                ;;
+       --cache*)
+               cache_file=$optarg
+               ;;
+       --da*)
+               datadir=$optarg
+               diroptions="$diroptions --datadir=$optarg"
+               ;;
        --disable-*)
                enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
                eval $enableopt=no
@@ -170,8 +242,8 @@ do
                esac
 
                enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
-               eval $enableopt="$optarg"
-               enableoptions="$enableoptions $option"
+               eval "$enableopt=\$optarg"
+               enableoptions="$enableoptions '$option'"
                ;;
        --exec-prefix* | --ex*)
                exec_prefix=$optarg
@@ -191,12 +263,41 @@ 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"
                ;;
        --norecursion | --no*)
                norecursion=yes
                ;;
+       --ol*)
+               oldincludedir=$optarg
+               diroptions="$diroptions --oldincludedir=$optarg"
+               ;;
        --prefix* | --pre*)
                prefix=$optarg
                prefixoption="--prefix=$optarg"
@@ -214,8 +315,13 @@ do
                program_transform_name="${program_transform_name} -e `echo ${optarg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`"
                program_transform_nameoption="${program_transform_nameoption} --program-transform-name='$optarg'"
                ;;
-       --rm)
-               removing=--rm
+       --sb*)
+               sbindir=$optarg
+               diroptions="$diroptions --sbindir=$optarg"
+               ;;
+       --sh*)
+               sharedstatedir=$optarg
+               diroptions="$diroptions --sharedstatedir=$optarg"
                ;;
        --silent | --sil* | --quiet | --q*)
                redirect=">/dev/null"
@@ -235,6 +341,10 @@ do
        --srcdir* | --sr*)
                srcdir=$optarg
                ;;
+       --sy*)
+               sysconfdir=$optarg
+               diroptions="$diroptions --sysconfdir=$optarg"
+               ;;
        --target* | --ta*)
                case $target_alias in
                NOTARGET) target_alias=$optarg ;;
@@ -262,7 +372,7 @@ do
                esac
 
                withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
-               eval $withopt="$optarg"
+               eval $withopt="\$optarg"
                withoptions="$withoptions $option"
                ;;
        --without-*)
@@ -326,7 +436,7 @@ case "${fatal}" in
                        # Neither --host option nor undefs were present.
                        # Call config.guess.
                        guesssys=`echo ${progname} | sed 's/configure$/config.guess/'`
-                       if host_alias=`${guesssys}`
+                       if host_alias=`${config_shell} ${guesssys}`
                        then
                                # If the string we are going to use for
                                # the target is a prefix of the string
@@ -334,17 +444,7 @@ case "${fatal}" in
                                # assume we are running native, and force
                                # the same string for both target and host.
                                case $target_alias in
-                               NOTARGET)
-                                       case $undefs in
-                                       NOUNDEFS) ;;
-                                       *)
-                                           if expr $host_alias : $undefs >/dev/null
-                                           then
-                                               host_alias=$undefs
-                                           fi
-                                           ;;
-                                       esac
-                                       ;;
+                               NOTARGET) ;;
                                *)
                                        if expr $host_alias : $target_alias >/dev/null
                                        then
@@ -352,7 +452,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
@@ -361,6 +461,8 @@ case "${fatal}" in
                        ;;
                *)
                        host_alias=$undefs
+                       arguments="--host=$host_alias $arguments"
+                       undefs=NOUNDEFS
                        ;;
                esac
        esac
@@ -375,6 +477,7 @@ case "${fatal}" in
                        ;;
                *)
                        target_alias=$undefs
+                       arguments="--target=$target_alias $arguments"
                        ;;
                esac
        esac
@@ -384,29 +487,29 @@ esac
 
 if [ -n "${fatal}" -o "${host_alias}" = "help" ] ; then
        exec 1>&2
-       echo Usage: configure [OPTIONS] HOST
+       echo Usage: configure [OPTIONS] [HOST]
        echo
        echo Options: [defaults in brackets]
-       echo ' --prefix=MYDIR            configure for installation of host independent files into MYDIR. ["/usr/local"]'
-       echo ' --exec-prefix=MYDIR       configure for installation of host dependent files into MYDIR. ["/usr/local"]'
-       echo ' --help                    print this message. [normal config]'
-       echo ' --build=BUILD             configure for building on BUILD [BUILD=HOST]'
-       echo ' --host=HOST               configure for HOST [determined via config.guess]'
-       echo ' --norecursion             configure this directory only. [recurse]'
-       echo ' --program-prefix=FOO      install programs with FOO prepended to their names. [ "" ]'
-       echo ' --program-suffix=FOO      install programs with FOO appended to their names. [ "" ]'
-       echo ' --program-transform-name=FOO install programs with names transformed by sed pattern FOO. [ "" ]'
-       echo ' --site=SITE               configure with site specific makefile for SITE'
-       echo ' --srcdir=DIR              find the sources in DIR. ["." or ".."]'
-       echo ' --target=TARGET   configure for TARGET.  [TARGET = HOST]'
-       echo ' --tmpdir=TMPDIR   create temporary files in TMPDIR.  [ TMPDIR = "/tmp" ]'
-       echo ' --nfp                     configure the compilers default to soft floating point. [hard float]'
+       echo ' --prefix=MYDIR            install into MYDIR [/usr/local]'
+       echo ' --exec-prefix=MYDIR       install host-dependent files into MYDIR [/usr/local]'
+       echo ' --help                    print this message [normal config]'
+       echo ' --build=BUILD             configure for building on BUILD [BUILD=HOST]'
+       echo ' --host=HOST               configure for HOST [determined via config.guess]'
+       echo ' --norecursion             configure this directory only [recurse]'
+       echo ' --program-prefix=FOO      prepend FOO to installed program names [""]'
+       echo ' --program-suffix=FOO      append FOO to installed program names [""]'
+       echo ' --program-transform-name=P transform installed names by sed pattern P [""]'
+       echo ' --site=SITE               configure with site-specific makefile for SITE'
+       echo ' --srcdir=DIR              find the sources in DIR [. or ..]'
+       echo ' --target=TARGET   configure for TARGET [TARGET=HOST]'
+       echo ' --tmpdir=TMPDIR   create temporary files in TMPDIR [/tmp]'
+       echo ' --nfp                     configure for software floating point [hard float]'
        echo ' --with-FOO, --with-FOO=BAR package FOO is available (parameter BAR)'
        echo ' --without-FOO             package FOO is NOT available'
        echo ' --enable-FOO, --enable-FOO=BAR include feature FOO (parameter BAR)'
        echo ' --disable-FOO             do not include feature FOO'
        echo
-       echo 'Where HOST and TARGET are something like "sun4", "decstation", "encore", etc.'
+       echo 'Where HOST and TARGET are something like "sparc-sunos", "mips-sgi-irix5", etc.'
        echo
        if [ -r config.status ] ; then
                cat config.status
@@ -417,9 +520,12 @@ 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 ${configsub} sun4 >/dev/null 2>&1 ; then
+if ${config_shell} ${configsub} sun4 >/dev/null 2>&1 ; then
         true
 else
         echo '***' cannot find config.sub.  1>&2
@@ -427,7 +533,7 @@ else
 fi
 
 touch config.junk
-if ${moveifchange} config.junk config.trash ; then
+if ${config_shell} ${moveifchange} config.junk config.trash ; then
         true
 else
         echo '***' cannot find move-if-change.  1>&2
@@ -448,7 +554,18 @@ case "${srcdir}" in
                 fi
         fi
         ;;
-*) ;;
+*)
+       # Set srcdir to "." if that's what it is.
+       # This is important for multilib support.
+       if [ ! -d ${srcdir} ] ; then
+               echo "Invalid source directory ${srcdir}" >&2
+               exit 1
+       fi
+       pwd=`${PWDCMD-pwd}`
+       srcpwd=`cd ${srcdir} ; ${PWDCMD-pwd}`
+       if [ "${pwd}" = "${srcpwd}" ] ; then
+               srcdir=.
+       fi
 esac
 
 ### warn about some conflicting configurations.
@@ -457,7 +574,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
@@ -472,6 +589,34 @@ esac
 case "`grep '^# per\-host:' ${srcdir}/configure.in`" in
 "")
         echo '***' ${srcdir}/configure.in has no \"per-host:\" line. 1>&2
+       # Check for a directory that's been converted to use autoconf since
+       # it was last configured.
+       if grep AC_OUTPUT ${srcdir}/configure.in >/dev/null ; then
+         echo '***' Hmm, looks like this directory has been autoconfiscated. 1>&2
+         if [ -r ${srcdir}/configure ] ; then
+           echo '***' Running the local configure script. 1>&2
+           case "${cache_file}" in
+           "") cache_file_option= ;;
+           *)  cache_file_option="--cache-file=${cache_file}" ;;
+           esac
+           srcdiroption="--srcdir=${srcdir}"
+           case "${build_alias}" in
+           "") buildopt= ;;
+           *)  buildopt="--build=${build_alias}" ;;
+           esac
+           eval exec ${config_shell} ${srcdir}/configure ${verbose} \
+               ${buildopt} --host=${host_alias} --target=${target_alias} \
+               ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
+               ${srcdiroption} ${diroptions} \
+               ${program_prefixoption} ${program_suffixoption} \
+               ${program_transform_nameoption} ${site_option} \
+               ${withoptions} ${withoutoptions} \
+               ${enableoptions} ${disableoptions} ${floating_pointoption} \
+               ${cache_file_option} ${other_options} ${redirect}
+         else
+           echo '***' There is no configure script present though. 1>&2
+         fi
+       fi
         exit 1
         ;;
 *) ;;
@@ -490,10 +635,16 @@ case "${TMPDIR}" in
 *) ;;
 esac
 
-# keep this filename short for &%*%$*# 14 char file names
-tmpfile=${TMPDIR}/cONf$$
-trap "rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos; exit 1" 1 2 15
-trap "rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos" 0
+# 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 -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.
@@ -514,36 +665,58 @@ 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
         ;;
 *) ;;
 esac
 
 case "${build_alias}" in
-"")    ;;
+"")
+       if result=`${config_shell} ${configsub} ${host_alias}` ; then
+           build_cpu=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+           build_vendor=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+           build_os=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+           build=${build_cpu}-${build_vendor}-${build_os}
+           build_alias=${host_alias}
+       fi
+       ;;
 *)
-       result=`${configsub} ${build_alias}`
-        buildopt="--build=${build_alias}"
-       build_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
-       build_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
-       build_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
-       build=${build_cpu}-${build_vendor}-${build_os}
+       if result=`${config_shell} ${configsub} ${build_alias}` ; then
+           buildopt="--build=${build_alias}"
+           build_cpu=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+           build_vendor=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+           build_os=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+           build=${build_cpu}-${build_vendor}-${build_os}
+       else
+           echo "Unrecognized build system name ${build_alias}." 1>&2
+           exit 1
+       fi
        ;;
 esac
 
-result=`${configsub} ${host_alias}`
-host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
-host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
-host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
+if result=`${config_shell} ${configsub} ${host_alias}` ; then
+    true
+else
+    echo "Unrecognized host system name ${host_alias}." 1>&2
+    exit 1
+fi
+host_cpu=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 host=${host_cpu}-${host_vendor}-${host_os}
 
 . ${tmpfile}.hst
 
-result=`${configsub} ${target_alias}`
-target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
-target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
-target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
+if result=`${config_shell} ${configsub} ${target_alias}` ; then
+    true
+else
+    echo "Unrecognized target system name ${target_alias}." 1>&2
+    exit 1
+fi
+target_cpu=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 target=${target_cpu}-${target_vendor}-${target_os}
 
 . ${tmpfile}.tgt
@@ -562,8 +735,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
@@ -584,407 +757,625 @@ if [ "${host_alias}" != "${target_alias}" ] ; then
     fi
 fi
 
-# Merge program_prefix and program_suffix onto program_transform_name
-# Use a double $ so that make ignores it
+# Merge program_prefix and program_suffix onto program_transform_name.
+# (program_suffix used to use $, but it's hard to preserve $ through both
+# make and sh.)
 if [ "${program_suffix}" != "" ] ; then
-    program_transform_name="-e s,\$\$,${program_suffix}, ${program_transform_name}"
+    program_transform_name="-e s,\\\\(.*\\\\),\\\\1${program_suffix}, ${program_transform_name}"
 fi
 
 if [ "${program_prefix}" != "" ] ; then
     program_transform_name="-e s,^,${program_prefix}, ${program_transform_name}"
 fi
 
-for subdir in . ${subdirs} ; do
-
-    # ${subdir} is relative path from . to the directory we're currently
-    # configuring.
-    # ${invsubdir} is inverse of ${subdir), *with* trailing /, if needed.
-    invsubdir=`echo ${subdir}/ | sed -e 's|\./||g' -e 's|[^/]*/|../|g'`
-
-    ### figure out what to do with srcdir
-    case "${srcdir}" in
-        ".")  # no -srcdir option.  We're building in place.
-                makesrcdir=. ;;
-        /*) # absolute path
-                makesrcdir=`echo ${srcdir}/${subdir} | sed -e 's|/\.$||'`
-                ;;
-        *) # otherwise relative
-                case "${subdir}" in
-                .) makesrcdir=${srcdir} ;;
-                *) makesrcdir=${invsubdir}${srcdir}/${subdir} ;;
-                esac
-                ;;
-    esac
-
-    if [ "${subdir}/" != "./" ] ; then
-        Makefile=${subdir}/Makefile
+# 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}" ] && [ -r Makefile ]; then
+  sed -n -e ':loop
+/\\$/ N
+s/\\\n//g
+t loop
+/^CC[  ]*=/ s/CC[      ]*=[    ]*\(.*\)/\1/p' < Makefile > Makefile.cc
+  CC=`tail -1 Makefile.cc`
+  rm -f Makefile.cc
+fi
+
+if [ -z "${CFLAGS}" ] && [ -r Makefile ]; then
+  sed -n -e ':loop
+/\\$/ N
+s/\\\n//g
+t loop
+/^CFLAGS[      ]*=/ s/CFLAGS[  ]*=[    ]*\(.*\)/\1/p' < Makefile > Makefile.cc
+  CFLAGS=`tail -1 Makefile.cc`
+  rm -f Makefile.cc
+fi
+
+if [ -z "${CXX}" ] && [ -r Makefile ]; then
+  sed -n -e ':loop
+/\\$/ N
+s/\\\n//g
+t loop
+/^CXX[         ]*=/ s/CXX[     ]*=[    ]*\(.*\)/\1/p' < Makefile > Makefile.cc
+  CXX=`tail -1 Makefile.cc`
+  rm -f Makefile.cc
+fi
+
+if [ -z "${CXXFLAGS}" ] && [ -r Makefile ]; then
+  sed -n -e ':loop
+/\\$/ N
+s/\\\n//g
+t loop
+/^CXXFLAGS[    ]*=/ s/CXXFLAGS[        ]*=[    ]*\(.*\)/\1/p' < Makefile > Makefile.cc
+  CXXFLAGS=`tail -1 Makefile.cc`
+  rm -f Makefile.cc
+fi
+
+# Generate a default definition for YACC.  This is used if the makefile can't
+# locate bison or byacc in objdir.
+
+for prog in 'bison -y' byacc yacc
+do
+  set dummy $prog; tmp=$2
+  IFS="${IFS=  }"; save_ifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$tmp; then
+      DEFAULT_YACC="$prog"
+      break
     fi
+  done
+  IFS="$save_ifs"
 
-    if [ ! -d ${subdir} ] ; then
-        if mkdir ${subdir} ; then
-                true
-        else
-                echo '***' "${progname}: could not make ${PWD=`pwd`}/${subdir}" 1>&2
-                exit 1
-        fi
+  test -n "$DEFAULT_YACC" && break
+done
+
+# Generate a default definition for M4.  This is used if the makefile can't
+# locate m4 in objdir.
+
+for prog in gm4 gnum4 m4
+do
+  set dummy $prog; tmp=$2
+  IFS="${IFS=   }"; save_ifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$tmp; then
+      DEFAULT_M4="$prog"
+      break
     fi
+  done
+  IFS="$save_ifs"
 
-    case "${removing}" in
-    "")
-        case "${subdir}" in
-        .) ;;
-        *) eval echo Building in ${subdir} ${redirect} ;;
-        esac
+  test -n "$DEFAULT_M4" && break
+done
 
-        # FIXME Should this be done recursively ??? (Useful for e.g. gdbtest)
-        # Set up the list of links to be made.
-        # ${links} is the list of link names, and ${files} is the list of names to link to.
+# Generate a default definition for LEX.  This is used if the makefile can't
+# locate flex in objdir.
 
-        # Make the links.
-        configlinks="${links}"
-        if [ -r ${subdir}/config.status ] ; then
-                mv -f ${subdir}/config.status ${subdir}/config.back
-        fi
-        while [ -n "${files}" ] ; do
-                # set file to car of files, files to cdr of files
-                set ${files}; file=$1; shift; files=$*
-                set ${links}; link=$1; shift; links=$*
-
-                if [ ! -r ${srcdir}/${file} ] ; then
-                        echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2
-                        echo '***' "since the file \"${srcdir}/${file}\" does not exist." 1>&2
-                        exit 1
-                fi
+for prog in flex lex
+do
+  set dummy $prog; tmp=$2
+  IFS="${IFS=  }"; save_ifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$tmp; then
+      DEFAULT_LEX="$prog"
+      break
+    fi
+  done
+  IFS="$save_ifs"
 
-                ${remove} -f ${link}
-               # Make a symlink if possible, otherwise try a hard link
-               if ${symbolic_link} ${srcdir}/${file} ${link} >/dev/null 2>&1 ; then
-                       true
-               else
-                       # We need to re-remove the file because Lynx leaves a 
-                       # very strange directory there when it fails an NFS symlink.
-                       ${remove} -r -f ${link}
-                       ${hard_link} ${srcdir}/${file} ${link}
-               fi
-                if [ ! -r ${link} ] ; then
-                        echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2
-                        exit 1
-                fi
+  test -n "$DEFAULT_LEX" && break
+done
+
+
+if [ "${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.
+  tools="AR AR_FOR_TARGET AS AS_FOR_TARGET BISON CC_FOR_BUILD"
+  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 eval [ -z \"\$${var}\" ] && [ -r Makefile ]; then
+      sed -n -e ':loop
+/\\$/ N
+s/\\\n//g
+t loop
+/^'"${var}"'[  ]*=/ s/'"${var}"'[      ]*=[    ]*\(.*\)/\1/p' \
+       < Makefile > Makefile.v
+      t=`tail -1 Makefile.v`
+      if [ -n "${t}" ]; then
+       eval "${var}=\${t}"
+      fi
+      rm -f Makefile.v
+    fi
+  done
+
+  AR=${AR-${host_alias}-ar}
+  AR_FOR_TARGET=${AR_FOR_TARGET-${target_alias}-ar}
+  AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target}
+  AS=${AS-${host_alias}-as}
+  AS_FOR_TARGET=${AS_FOR_TARGET-${target_alias}-as}
+  BISON=${BISON-bison}
+  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}
+  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}}
+  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}
+  NM=${NM-${host_alias}-nm}
+  NM_FOR_TARGET=${NM_FOR_TARGET-${target_alias}-nm}
+  NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target}
+  RANLIB=${RANLIB-${host_alias}-ranlib}
+  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}:"
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/bison; then
+       YACC="bison -y"
+       break
+      fi
+      if test -f $dir/byacc; then
+       YACC=byacc
+       break
+      fi
+      if test -f $dir/yacc; then
+       YACC=yacc
+       break
+      fi
+    done
+    IFS="$save_ifs"
+    if [ -z "${YACC}" ]; then
+      YACC="bison -y"
+    fi
+  fi
+
+  if [ -z "${LEX}" ]; then
+    IFS="${IFS=        }"; save_ifs="$IFS"; IFS="${IFS}:"
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/flex; then
+       LEX=flex
+       break
+      fi
+      if test -f $dir/lex; then
+       LEX=lex
+       break
+      fi
+    done
+    IFS="$save_ifs"
+    LEX=${LEX-flex}
+  fi
+
+  # Export variables which autoconf might try to set.
+  export AS
+  export AR
+  export CC_FOR_BUILD
+  export DLLTOOL
+  export LD
+  export NM
+  export RANLIB
+  export WINDRES
+  export OBJCOPY
+  export OBJDUMP
+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...
+
+  tools="AR AR_FOR_TARGET AS AS_FOR_TARGET BISON CC_FOR_BUILD"
+  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_FOR_TARGET"
+  tools="${tools} WINDRES WINDRES_FOR_TARGET YACC"
+
+  AR=ar
+  AR_FOR_TARGET='\$(USUAL_AR_FOR_TARGET)'
+  AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target}
+  AS=as
+  AS_FOR_TARGET='\$(USUAL_AS_FOR_TARGET)'
+  BISON='$(USUAL_BISON)'
+  CC_FOR_BUILD='\$(CC)'
+  DLLTOOL=dlltool
+  DLLTOOL_FOR_TARGET='\$(USUAL_DLLTOOL_FOR_TARGET)'
+  GCC_FOR_TARGET='\$(USUAL_GCC_FOR_TARGET)'
+  BUILD_PREFIX=
+  BUILD_PREFIX_1=loser-
+  LD=ld
+  LD_FOR_TARGET='\$(USUAL_LD_FOR_TARGET)'
+  MAKEINFO='\$(USUAL_MAKEINFO)'
+  NM=nm
+  NM_FOR_TARGET='\$(USUAL_NM_FOR_TARGET)'
+  NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target}
+  RANLIB_FOR_TARGET='\$(USUAL_RANLIB_FOR_TARGET)'
+  WINDRES=windres
+  WINDRES_FOR_TARGET='\$(USUAL_WINDRES_FOR_TARGET)'
+  LEX='\$(USUAL_LEX)'
+  YACC='\$(USUAL_YACC)'
+
+  # If CC is still not set, try to get gcc.
+  if [ -z "${CC}" ]; then
+    IFS="${IFS=        }"; save_ifs="$IFS"; IFS="${IFS}:"
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/gcc; then
+       CC="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*
+       break
+      fi
+    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
 
-                echo "Linked \"${link}\" to \"${srcdir}/${file}\"."
-        done
+  CXX=${CXX-"c++"}
+  CFLAGS=${CFLAGS-"-g"}
+  CXXFLAGS=${CXXFLAGS-"-g -O2"}
+fi
 
-        # Create a .gdbinit file which runs the one in srcdir
-        # and tells GDB to look there for source files.
+export CC
+export CXX
+export CFLAGS
+export CXXFLAGS
 
-        if [ -r ${srcdir}/${subdir}/.gdbinit ] ; then
-                case ${srcdir} in
-                .) ;;
-                *) cat > ${subdir}/.gdbinit <<EOF
-# ${NO_EDIT}
-dir ${makesrcdir}
-dir .
-source ${makesrcdir}/.gdbinit
-EOF
-                        ;;
-                esac
-        fi
+# FIXME Should this be done recursively ??? (Useful for e.g. gdbtest)
+# Set up the list of links to be made.
+# ${links} is the list of link names, and ${files} is the list of names to link to.
 
-        # Install a makefile, and make it set VPATH
-        # if necessary so that the sources are found.
-        # Also change its value of srcdir.
-        # NOTE: Makefile generation constitutes the majority of the time in configure.  Hence, this section has
-        # been somewhat optimized and is perhaps a bit twisty.
-
-        # code is order so as to try to sed the smallest input files we know.
-
-        # the four makefile fragments MUST end up in the resulting Makefile in this order: 
-        # package, target, host, and site.  so do these separately because I don't trust the
-        #  order of sed -e expressions.
-
-        if [ -f ${srcdir}/${subdir}/${Makefile_in} ] ; then
-
-            # Conditionalize for this site from "Makefile.in" (or whatever it's called) into Makefile.tem
-            rm -f ${subdir}/Makefile.tem
-              case "${site}" in
-              "") cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem ;;
-              *)
-                      site_makefile_frag=${srcdir}/config/ms-${site}
-
-                      if [ -f ${site_makefile_frag} ] ; then
-                              sed -e "/^####/  r ${site_makefile_frag}" ${srcdir}/${subdir}/${Makefile_in} \
-                                      > ${subdir}/Makefile.tem
-                      else
-                              cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem
-                              site_makefile_frag=
-                      fi
-                      ;;
-            esac
-            # working copy now in ${subdir}/Makefile.tem
-
-            # Conditionalize the makefile for this host.
-            rm -f ${Makefile}
-            case "${host_makefile_frag}" in
-              "") mv ${subdir}/Makefile.tem ${Makefile} ;;
-              *)
-                      if [ ! -f ${host_makefile_frag} ] ; then
-                              host_makefile_frag=${srcdir}/${host_makefile_frag}
-                      fi
-                      if [ -f ${host_makefile_frag} ] ; then
-                              sed -e "/^####/  r ${host_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile}
-                      else
-                              echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2
-                              echo '***' is missing in ${PWD=`pwd`}. 1>&2
-                              mv ${subdir}/Makefile.tem ${Makefile}
-                      fi
-            esac
-            # working copy now in ${Makefile}
-
-            # Conditionalize the makefile for this target.
-            rm -f ${subdir}/Makefile.tem
-            case "${target_makefile_frag}" in
-              "") mv ${Makefile} ${subdir}/Makefile.tem ;;
-              *)
-                      if [ ! -f ${target_makefile_frag} ] ; then
-                              target_makefile_frag=${srcdir}/${target_makefile_frag}
-                      fi
-                      if [ -f ${target_makefile_frag} ] ; then
-                              sed -e "/^####/  r ${target_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem
-                      else
-                              mv ${Makefile} ${subdir}/Makefile.tem
-                              target_makefile_frag=
-                      fi
-                      ;;
-            esac
-            # real copy now in ${subdir}/Makefile.tem
-
-            # Conditionalize the makefile for this package.
-            rm -f ${Makefile}
-            case "${package_makefile_frag}" in
-              "") mv ${subdir}/Makefile.tem ${Makefile} ;;
-              *)
-                      if [ ! -f ${package_makefile_frag} ] ; then
-                              package_makefile_frag=${srcdir}/${package_makefile_frag}
-                      fi
-                      if [ -f ${package_makefile_frag} ] ; then
-                              sed -e "/^####/  r ${package_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile}
-                             rm -f ${subdir}/Makefile.tem
-                      else
-                              echo '***' Expected package makefile fragment \"${package_makefile_frag}\" 1>&2
-                              echo '***' is missing in ${PWD=`pwd`}. 1>&2
-                              mv ${subdir}/Makefile.tem ${Makefile}
-                      fi
-            esac
-            # working copy now in ${Makefile}
-
-            mv ${Makefile} ${subdir}/Makefile.tem
-
-            # real copy now in ${subdir}/Makefile.tem
-
-            # prepend warning about editting, and a bunch of variables.
-            rm -f ${Makefile}
-            cat > ${Makefile} <<EOF
+# Make the links.
+configlinks="${links}"
+if [ -r ./config.status ] ; then
+  mv -f ./config.status ./config.back
+fi
+while [ -n "${files}" ] ; do
+  # set file to car of files, files to cdr of files
+  set ${files}; file=$1; shift; files=$*
+  set ${links}; link=$1; shift; links=$*
+
+  if [ ! -r ${srcdir}/${file} ] ; then
+    if [ ! -r ${file} ] ; then
+      echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2
+      echo '***' "since the file \"${srcdir}/${file}\" does not exist." 1>&2
+      exit 1
+    else
+      srcfile=${file}
+    fi
+  else
+    srcfile=${srcdir}/${file}
+  fi
+
+  ${remove} -f ${link}
+  # Make a symlink if possible, otherwise try a hard link
+  if ${symbolic_link} ${srcfile} ${link} >/dev/null 2>&1 ; then
+    true
+  else
+    # We need to re-remove the file because Lynx leaves a 
+    # very strange directory there when it fails an NFS symlink.
+    ${remove} -r -f ${link}
+    ${hard_link} ${srcfile} ${link}
+  fi
+  if [ ! -r ${link} ] ; then
+    echo '***' "${progname}: unable to link \"${link}\" to \"${srcfile}\"." 1>&2
+    exit 1
+  fi
+
+  echo "Linked \"${link}\" to \"${srcfile}\"."
+done
+
+# Create a .gdbinit file which runs the one in srcdir
+# and tells GDB to look there for source files.
+
+if [ -r ${srcdir}/.gdbinit ] ; then
+  case ${srcdir} in
+    .) ;;
+    *) cat > ./.gdbinit <<EOF
 # ${NO_EDIT}
-VPATH = ${makesrcdir}
-links = ${configlinks}
-host_alias = ${host_alias}
-host_cpu = ${host_cpu}
-host_vendor = ${host_vendor}
-host_os = ${host_os}
-host_canonical = ${host_cpu}-${host_vendor}-${host_os}
-target_alias = ${target_alias}
-target_cpu = ${target_cpu}
-target_vendor = ${target_vendor}
-target_os = ${target_os}
-target_canonical = ${target_cpu}-${target_vendor}-${target_os}
-EOF
-           case "${build}" in
-             "") ;;
-             *)  cat >> ${Makefile} << EOF
-build_alias = ${build_alias}
-build_cpu = ${build_cpu}
-build_vendor = ${build_vendor}
-build_os = ${build_os}
-build_canonical = ${build_cpu}-${build_vendor}-${build_os}
+dir ${srcdir}
+dir .
+source ${srcdir}/.gdbinit
 EOF
-           esac
+    ;;
+  esac
+fi
 
-            case "${package_makefile_frag}" in
-              "") ;;
-              /*) 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} ;;
-              *)  echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;;
-            esac
-
-            case "${host_makefile_frag}" in
-              "") ;;
-              /*) echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;;
-              *)  echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;;
-            esac
-
-            if [ "${site_makefile_frag}" != "" ] ; then
-                echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile}
-            fi 
-
-           # make sure that some sort of reasonable default exists for these 
-           # two variables
-           CXX=${CXX-"g++ -O"}
-           CC=${CC-cc}
-
-            # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
-            # remove any form feeds.
-            if [ -z "${subdirs}" ]; then
-                rm -f ${subdir}/Makefile.tem2
-                sed -e "s:^SUBDIRS[    ]*=.*$:SUBDIRS = ${configdirs}:" \
-                    -e "s:^NONSUBDIRS[         ]*=.*$:NONSUBDIRS = ${noconfigdirs}:" \
-                    ${subdir}/Makefile.tem > ${subdir}/Makefile.tem2
-                rm -f ${subdir}/Makefile.tem
-                mv ${subdir}/Makefile.tem2 ${subdir}/Makefile.tem
-            fi
-            sed -e "s:^prefix[         ]*=.*$:prefix = ${prefix}:" \
-                    -e "s:^exec_prefix[        ]*=.*$:exec_prefix = ${exec_prefix}:" \
-                   -e "s:^SHELL[        ]*=.*$:SHELL = ${config_shell}:" \
-                    -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}:" \
-                    ${subdir}/Makefile.tem >> ${Makefile}
-            # final copy now in ${Makefile}
+# Install a makefile, and make it set VPATH
+# if necessary so that the sources are found.
+# Also change its value of srcdir.
+# NOTE: Makefile generation constitutes the majority of the time in configure.  Hence, this section has
+# been somewhat optimized and is perhaps a bit twisty.
+
+# code is order so as to try to sed the smallest input files we know.
+# so do these separately because I don't trust the order of sed -e expressions.
+
+# the five makefile fragments MUST end up in the resulting Makefile in this order: 
+# package macros, target, host, site, and package rules.
+
+if [ -f ${srcdir}/${Makefile_in} ] ; then
+
+  # Conditionalize the makefile for this package from "Makefile.in" (or whatever it's called) into Makefile.tem.
+  rm -f ./${Makefile}.tem
+  case "${package_makefile_rules_frag}" in
+    "") cp ${srcdir}/${Makefile_in} ./Makefile.tem ;;
+    *)
+      if [ ! -f ${package_makefile_rules_frag} ] ; then
+        package_makefile_rules_frag=${srcdir}/${package_makefile_rules_frag}
+      fi
+      if [ -f ${package_makefile_rules_frag} ] ; then
+        sed -e "/^####/  r ${package_makefile_rules_frag}" ${srcdir}/${Makefile_in} > ${Makefile}.tem
+      else
+        echo '***' Expected package makefile rules fragment \"${package_makefile_rules_frag}\" 1>&2
+        echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2
+        cp ${srcdir}/${Makefile_in} ./Makefile.tem
+      fi
+  esac
+  # working copy now in ${Makefile}.tem
+
+  # Conditionalize for this site.
+  rm -f ${Makefile}
+  case "${site}" in
+    "") mv ./Makefile.tem ${Makefile} ;;
+    *)
+      site_makefile_frag=${srcdir}/config/ms-${site}
+
+      if [ -f ${site_makefile_frag} ] ; then
+        sed -e "/^####/  r ${site_makefile_frag}" ./Makefile.tem > ${Makefile}
+      else
+        mv ./Makefile.tem ${Makefile}
+        site_makefile_frag=
+      fi
+      ;;
+  esac
+  # working copy now in ${Makefile}
+
+  # Conditionalize the makefile for this host.
+  rm -f ./Makefile.tem
+  case "${host_makefile_frag}" in
+    "") mv ${Makefile} ./Makefile.tem ;;
+    *)
+      if [ ! -f ${host_makefile_frag} ] ; then
+        host_makefile_frag=${srcdir}/${host_makefile_frag}
+      fi
+      if [ -f ${host_makefile_frag} ] ; then
+        sed -e "/^####/  r ${host_makefile_frag}" ${Makefile} > ./Makefile.tem
+      else
+        echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2
+        echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2
+        mv ${Makefile} ./Makefile.tem
+      fi
+  esac
+  # working copy now in ./Makefile.tem
+
+  # Conditionalize the makefile for this target.
+  rm -f ${Makefile}
+  case "${target_makefile_frag}" in
+    "") mv ./Makefile.tem ${Makefile} ;;
+    *)
+      if [ ! -f ${target_makefile_frag} ] ; then
+        target_makefile_frag=${srcdir}/${target_makefile_frag}
+      fi
+      if [ -f ${target_makefile_frag} ] ; then
+        sed -e "/^####/  r ${target_makefile_frag}" ./Makefile.tem > ${Makefile}
+      else
+        mv ./Makefile.tem ${Makefile}
+        target_makefile_frag=
+      fi
+      ;;
+  esac
+  # working copy now in ${Makefile}
+
+  # Emit the default values of this package's macros.
+  rm -f ./Makefile.tem
+  case "${package_makefile_frag}" in
+    "") mv ${Makefile} ./Makefile.tem ;;
+    *)
+      if [ ! -f ${package_makefile_frag} ] ; then
+        package_makefile_frag=${srcdir}/${package_makefile_frag}
+      fi
+      if [ -f ${package_makefile_frag} ] ; then
+        sed -e "/^####/  r ${package_makefile_frag}" ${Makefile} > ./Makefile.tem
+      else
+        echo '***' Expected package makefile fragment \"${package_makefile_rules_frag}\" 1>&2
+        echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2
+        mv ${Makefile} ./Makefile.tem
+      fi
+  esac
+  # real copy now in ./Makefile.tem
+
+  # record if we want runtime library stuff installed in libsubdir.
+  # Blank means no.
+  if test -z "${enable_version_specific_runtime_libs}"; then
+    enable_version_specific_runtime_libs=no
+  fi
+
+  sed -e "s|@configlinks@|${configlinks}|" \
+      -e "s|@build_alias@|${build_alias}|" \
+      -e "s|@build_cpu@|${build_cpu}|" \
+      -e "s|@build_vendor@|${build_vendor}|" \
+      -e "s|@build_os@|${build_os}|" \
+      -e "s|@host_alias@|${host_alias}|" \
+      -e "s|@host_cpu@|${host_cpu}|" \
+      -e "s|@host_vendor@|${host_vendor}|" \
+      -e "s|@host_os@|${host_os}|" \
+      -e "s|@target_alias@|${target_alias}|" \
+      -e "s|@target_cpu@|${target_cpu}|" \
+      -e "s|@target_vendor@|${target_vendor}|" \
+      -e "s|@target_os@|${target_os}|" \
+      -e "s|@target_makefile_frag@|${target_makefile_frag}|" \
+      -e "s|@host_makefile_frag@|${host_makefile_frag}|" \
+      -e "s|@enable_shared@|${enable_shared}|" \
+      -e "s|@enable_threads@|${enable_threads}|" \
+      -e "s|@enable_version_specific_runtime_libs@|${enable_version_specific_runtime_libs}|" \
+      -e "s|@gcc_version_trigger@|${gcc_version_trigger}|" \
+      -e "s|@gcc_version@|${gcc_version}|" \
+      ./Makefile.tem > ${Makefile}
+  mv -f ${Makefile} ./Makefile.tem
+  # Real copy now in Makefile.tem; no prologue.
+
+  # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
+  # remove any form feeds.
+  sed -e "s|@configdirs@|${configdirs}|" \
+      -e "s|@prefix@|${prefix}|" \
+      -e "s|@exec_prefix@|${exec_prefix}|" \
+      -e "s|@bindir@|${bindir}|" \
+      -e "s|@sbindir@|${sbindir}|" \
+      -e "s|@libexecdir@|${libexecdir}|" \
+      -e "s|@datadir@|${datadir}|" \
+      -e "s|@sysconfdir@|${sysconfdir}|" \
+      -e "s|@sharedstatedir@|${sharedstatedir}|" \
+      -e "s|@localstatedir@|${localstatedir}|" \
+      -e "s|@libdir@|${libdir}|" \
+      -e "s|@includedir@|${includedir}|" \
+      -e "s|@oldincludedir@|${oldincludedir}|" \
+      -e "s|@infodir@|${infodir}|" \
+      -e "s|@mandir@|${mandir}|" \
+      -e "s|@CC@|${CC}|" \
+      -e "s|@CXX@|${CXX}|" \
+      -e "s|@CFLAGS@|${CFLAGS}|" \
+      -e "s|@CXXFLAGS@|${CXXFLAGS}|" \
+      -e "s|@config_shell@|${config_shell}|" \
+      -e "s|@srcdir@|${srcdir}|" \
+      -e "s/\f//" \
+      -e "s:@program_transform_name@:${program_transform_name}:" \
+      -e "s|@tooldir@|${tooldir}|" \
+      -e "s|@build_tooldir@|${tooldir}|" \
+      -e "s:@DEFAULT_YACC@:${DEFAULT_YACC}:" \
+      -e "s:@DEFAULT_LEX@:${DEFAULT_LEX}:" \
+      -e "s:@DEFAULT_M4@:${DEFAULT_M4}:" \
+          ./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
+      eval val=\$${var}
+      sed -e "/^${var}[        ]*=/{
+              :loop1
+              /\\\\$/ N
+              /\\\\$/ b loop1
+              s/\\\\\\n//g
+              s%^${var}[       ]*=.*$%${var} = ${val}%
+              }" ${Makefile} > ${Makefile}.tem
+      mv -f ${Makefile}.tem ${Makefile}
+    done
+  fi
+  # If this is NOT a Canadian Cross, preset the values of some more
+  # tools.  The above line should get merged into this, but this
+  # substitutes *once* where the above substitutes *globally*; that
+  # needs to be worked out before the merger.  The issue is in Makefile
+  # fragment elements (ick, yuck, ugh).
+  if [ "${build}" = "${host}" ]; then
+    for var in ${tools}; do
+      eval val=\$${var}
+      sed -e "s%@${var}@%${val}%" ${Makefile} > ${Makefile}.tem
+      mv -f ${Makefile}.tem ${Makefile}
+    done
+  fi
+
+  # final copy now in ${Makefile}
 
-        else
-           echo "No Makefile.in found in ${srcdir}/${subdir}, unable to configure" 1>&2
-        fi
+else
+  echo "No Makefile.in found in ${srcdir}/., unable to configure" 1>&2
+fi
 
-        rm -f ${subdir}/Makefile.tem
+rm -f ./Makefile.tem
 
-        case "${host_makefile_frag}" in
-        "") using= ;;
-        *) using="and \"${host_makefile_frag}\"" ;;
-        esac
+case "${host_makefile_frag}" in
+  "") using= ;;
+  *) using="and \"${host_makefile_frag}\"" ;;
+esac
 
-        case "${target_makefile_frag}" in
-        "") ;;
-        *) using="${using} and \"${target_makefile_frag}\"" ;;
-        esac
+case "${target_makefile_frag}" in
+  "") ;;
+  *) using="${using} and \"${target_makefile_frag}\"" ;;
+esac
 
-        case "${site_makefile_frag}" in
-        "") ;;
-        *) using="${using} and \"${site_makefile_frag}\"" ;;
-        esac
+case "${site_makefile_frag}" in
+  "") ;;
+  *) using="${using} and \"${site_makefile_frag}\"" ;;
+esac
 
-        newusing=`echo "${using}" | sed 's/and/using/'`
-        using=${newusing}
-        echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using}
+newusing=`echo "${using}" | sed 's/and/using/'`
+using=${newusing}
+echo "Created \"${Makefile}\" in" ${PWD=`${PWDCMD-pwd}`} ${using}
 
-        . ${tmpfile}.pos
+. ${tmpfile}.pos
 
-        # describe the chosen configuration in config.status.
-        # Make that file a shellscript which will reestablish
-        # the same configuration.  Used in Makefiles to rebuild
-        # Makefiles.
+# describe the chosen configuration in config.status.
+# Make that file a shellscript which will reestablish
+# the same configuration.  Used in Makefiles to rebuild
+# Makefiles.
 
-        case "${norecursion}" in
-        "") arguments="${arguments} --norecursion" ;;
-        *) ;;
-        esac
+case "${norecursion}" in
+  "") arguments="${arguments} --norecursion" ;;
+  *) ;;
+esac
 
-        if [ ${subdir} = . ] ; then
-            echo "#!/bin/sh
+echo "#!/bin/sh
 # ${NO_EDIT}
 # This directory was configured as follows:
 ${progname}" ${arguments}  "
-# ${using}" > ${subdir}/config.new
-        else
-            echo "#!/bin/sh
-# ${NO_EDIT}
-# This directory was configured as follows:
-cd ${invsubdir}
-${progname}" ${arguments}  "
-# ${using}" > ${subdir}/config.new
-        fi
-        chmod a+x ${subdir}/config.new
-        if [ -r ${subdir}/config.back ] ; then
-                mv -f ${subdir}/config.back ${subdir}/config.status
-        fi
-        ${moveifchange} ${subdir}/config.new ${subdir}/config.status
-        ;;
-
-    *)  rm -f ${Makefile} ${subdir}/config.status ${links} ;;
-    esac
-done
-
-# If there are subdirectories, then recur. 
-if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then 
-        for configdir in ${configdirs} ; do
-
-                if [ -d ${srcdir}/${configdir} ] ; then
-                        eval echo Configuring ${configdir}... ${redirect}
-                        case "${srcdir}" in
-                        ".") ;;
-                        *)
-                                if [ ! -d ./${configdir} ] ; then
-                                        if mkdir ./${configdir} ; then
-                                                true
-                                        else
-                                                echo '***' "${progname}: could not make ${PWD=`pwd`}/${configdir}" 1>&2
-                                                exit 1
-                                        fi
-                                fi
-                                ;;
-                        esac
-
-                        POPDIR=${PWD=`pwd`}
-                        cd ${configdir} 
-
-### 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}"
-                                ;;
-                        *) # otherwise relative
-                                newsrcdir=../${srcdir}/${configdir}
-                                srcdiroption="--srcdir=${newsrcdir}"
-                                ;;
-                        esac
-
-### check for guested configure, otherwise fix possibly relative progname
-                        if [ -f ${newsrcdir}/configure ] ; then
-                                recprog=${newsrcdir}/configure
-                        elif [ -f ${newsrcdir}/configure.in ] ; then
-                                case "${progname}" in
-                                /*)     recprog=${progname} ;;
-                                *)      recprog=../${progname} ;;
-                                esac
-                       else
-                               eval echo No configuration information in ${configdir} ${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} \
-                                       ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
-                                       ${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${enableoptions} ${disableoptions} ${removing} ${other_options} ${redirect} ; then
-                                       true
-                               else
-                                       echo Configure in `pwd` failed, exiting. 1>&2
-                                       exit 1
-                               fi
-                       fi
-
-                        cd ${POPDIR}
-                fi
-        done
+# ${using}" > ./config.new
+chmod a+x ./config.new
+if [ -r ./config.back ] ; then
+  mv -f ./config.back ./config.status
 fi
+${config_shell} ${moveifchange} ./config.new ./config.status
+
+# Perform the same cleanup as the trap handler, minus the "exit 1" of course,
+# and reset the trap handler.
+rm -rf ${tmpdir}
+trap 0
 
 exit 0
 
This page took 0.04166 seconds and 4 git commands to generate.