]> code.delx.au - gnu-emacs/blobdiff - configure1.in
(Fmove_overlay): Avoid initializer for Lisp_Object vars.
[gnu-emacs] / configure1.in
index 65159c0a68ae8517527f888621287421245eb4ba..5aefb917feb74b72aaa7a893f980c8ab150ba071 100755 (executable)
@@ -1,7 +1,22 @@
-#!/bin/sh
+dnl This is an autoconf script.
+dnl To rebuild the `configure' script from this, execute the command
+dnl    autoconf
+dnl in the directory containing this script.  You must have autoconf
+dnl version 1.4 or later.
+dnl
+dnl The following text appears in the resulting `configure' script,
+dnl explaining how to rebuild it.
+[#!/bin/sh
 #### Configuration script for GNU Emacs
 #### Copyright (C) 1992 Free Software Foundation, Inc.
 
+### Don't edit this script!
+### This script was automatically generated by the `autoconf' program
+### from the file `./configure.in'.
+### To rebuild it, execute the command
+###    autoconf
+### in the this directory.  You must have autoconf version 1.4 or later.
+
 ### This file is part of GNU Emacs.
 
 ### GNU Emacs is free software; you can redistribute it and/or modify
 ### along with GNU Emacs; see the file COPYING.  If not, write to
 ### the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 
-### Shell script to edit files and make symlinks in preparation for
-### compiling Emacs.
+
+### Since Emacs has configuration requirements that autoconf can't
+### meet, this file is an unholy marriage of custom-baked
+### configuration code and autoconf macros.
+###
+### We use the m4 quoting characters [ ] (as established by the
+### autoconf system) to include large sections of raw sewage - Oops, I
+### mean, shell code - in the final configuration script.
 ###
 ### Usage: configure config_name
 ###
 ### If configure succeeds, it leaves its status in config.status.
 ### If configure fails after disturbing the status quo,
 ###    config.status is removed.
-###
 
 
-### Remove any leading "." elements from the path name.  If we don't
-### remove them, then another "./" will be prepended to the file name
-### each time we use config.status, and the program name will get larger
-### and larger.  This wouldn't be a problem, except that since progname
-### gets recorded in all the Makefiles this script produces,
-### move-if-change thinks they're different when they're not.
+### Remove any more than one leading "." element from the path name.
+### If we don't remove them, then another "./" will be prepended to
+### the file name each time we use config.status, and the program name
+### will get larger and larger.  This wouldn't be a problem, except
+### that since progname gets recorded in all the Makefiles this script
+### produces, move-if-change thinks they're different when they're
+### not.
 ###
 ### It would be nice if we could put the ./ in a \( \) group and then
 ### apply the * operator to that, so we remove as many leading ./././'s
 ### as are present, but some seds (like Ultrix's sed) don't allow you to
 ### apply * to a \( \) group.  Bleah.
-progname="`echo $0 | sed 's:^\./::'`"
+progname="`echo $0 | sed 's:^\./\./:\./:'`"
 
 
 #### Usage messages.
 
-short_usage="Type \`${progname} --usage' for more information about options."
-
-long_usage="Usage: ${progname} CONFIGURATION [-OPTION[=VALUE] ...]
+short_usage="Usage: ${progname} CONFIGURATION [-OPTION[=VALUE] ...]
 
 Set compilation and installation parameters for GNU Emacs, and report.
 CONFIGURATION specifies the machine and operating system to build for.
-For example:
-        ${progname} sparc-sun-sunos4.1
-configures Emacs to build on a Sun Sparc machine running SunOS 4.1, and 
-        ${progname} decstation
-configures Emacs to run on a DECstation running Ultrix.  See \`etc/MACHINES'.
-
-The --with-x, --with-x11 and --with-x10 options specify what window
-       system to use; if all are omitted, use X11 if present.  If you
-       don't want X, specify \`--with-x=no'.
-
-The --srcdir=DIR option specifies that the configuration and build
-       processes should look for the Emacs source code in DIR, when
-       DIR is not the current directory.  This option doesn't work yet.
+--with-x               Support the X Window System.
+--with-x=no            Don't support X.
+--x-includes=DIR       Search for X header files in DIR.
+--x-libraries=DIR      Search for X libraries in DIR.
+--with-gcc             Use GCC to compile Emacs.
+--with-gcc=no          Don't use GCC to compile Emacs.
+--run-in-place         Use libraries and data files directly out of the 
+                       source tree.
+--srcdir=DIR           Look for source in DIR.
+--prefix=DIR           Install files below dir.
 
 If successful, ${progname} leaves its status in config.status.  If
 unsuccessful after disturbing the status quo, it removes config.status."
@@ -71,18 +87,26 @@ unsuccessful after disturbing the status quo, it removes config.status."
 
 #### Option processing.
 
-### These are the names of CPP symbols we want to define or leave undefined
-### in src/config.h; their values are given by the shell variables of the same
-### names.
-config_h_opts=" \
-HAVE_X_WINDOWS HAVE_X11 HAVE_X_MENU \
-SIGTYPE GNU_MALLOC REL_ALLOC LISP_FLOAT_TYPE "
-
 ### Record all the arguments, so we can save them in config.status.
 arguments="$@"
 
-while [ $# != 0 ]; do
-  arg="$1"
+### These values are used to comment and uncomment different values
+### for the path variables in the Makefile, to choose the installed
+### configuration or the run-in-place configuration.
+rip_paths='#disabled# '
+inst_paths=''
+
+### Establish some default values.
+prefix='/usr/local'
+exec_prefix='${prefix}'
+
+### Don't use shift -- that destroys the argument list, which autoconf needs
+### to produce config.status.  It turns out that "set - ${arguments}" doesn't
+### work portably.
+index=0
+while [ $index -lt $# ]; do
+  index=`expr $index + 1`
+  arg=`eval echo '$'$index`
   case "${arg}" in
 
     ## Anything starting with a hyphen we assume is an option.
@@ -106,6 +130,7 @@ while [ $# != 0 ]; do
       esac
 
       ## Change `-' in the option name to `_'.
+      optname="${opt}"
       opt="`echo ${opt} | tr - _`"
 
       ## Process the option.
@@ -118,7 +143,23 @@ while [ $# != 0 ]; do
            y | ye | yes )      val=yes ;;
            n | no )            val=no  ;;
            * )
-             (echo "${progname}: the \`--${opt}' option is supposed to have a boolean value.
+             (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value.
+Set it to either \`yes' or \`no'."
+              echo "${short_usage}") >&2
+             exit 1
+           ;;
+         esac
+          eval "${opt}=\"${val}\""
+        ;;
+
+       ## Has the user specified whether or not they want GCC?
+       "with_gcc" | "with_gnu_cc" )
+         ## Make sure the value given was either "yes" or "no".
+         case "${val}" in
+           y | ye | yes )      val=yes ;;
+           n | no )            val=no  ;;
+           * )
+             (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value.
 Set it to either \`yes' or \`no'."
               echo "${short_usage}") >&2
              exit 1
@@ -132,22 +173,101 @@ Set it to either \`yes' or \`no'."
          ## If the value was omitted, get it from the next argument.
          if [ "${valomitted}" = "yes" ]; then
            ## Get the next argument from the argument list, if there is one.
-            if [ $# = 1 ]; then
-             (echo "${progname}: You must give a value for the \`--${opt}' option, as in
-    \`--${opt}=FOO'."
+            if [ $index = $# ]; then
+             (echo "${progname}: You must give a value for the \`--${optname}' option, as in
+    \`--${optname}=FOO'."
               echo "${short_usage}") >&2
              exit 1
            fi
-           shift; val="$1"
+            index=`expr $index + 1`
+            val=`eval echo '$'$index`
          fi
           srcdir="${val}"
+       ;;
 
-         echo "${progname}: Beware - the \`--srcdir' option doesn't work yet." >&2
+       ## Has the user tried to tell us where the X files are?
+       ## I think these are dopey, but no less than three alpha
+       ## testers, at large sites, have said they have their X files
+       ## installed in odd places.
+       "x_includes" )
+         ## If the value was omitted, get it from the next argument.
+         if [ "${valomitted}" = "yes" ]; then
+           ## Get the next argument from the argument list, if there is one.
+            if [ $index = $# ]; then
+             (echo "${progname}: You must give a value for the \`--${optname}' option, as in
+    \`--${optname}=FOO'."
+              echo "${short_usage}") >&2
+             exit 1
+           fi
+            index=`expr $index + 1`
+            val=`eval echo '$'$index`
+         fi
+         x_includes="${val}"
+        ;;
+       "x_libraries" )
+         ## If the value was omitted, get it from the next argument.
+         if [ "${valomitted}" = "yes" ]; then
+           ## Get the next argument from the argument list, if there is one.
+            if [ $index = $# ]; then
+             (echo "${progname}: You must give a value for the \`--${optname}' option, as in
+    \`--${optname}=FOO'."
+              echo "${short_usage}") >&2
+             exit 1
+           fi
+            index=`expr $index + 1`
+            val=`eval echo '$'$index`
+         fi
+         x_libraries="${val}"
+        ;;
+
+       ## Should this use the "development configuration"?
+       "run_in_place" )
+         rip_paths=''
+         inst_paths='#disabled# '
+       ;;
+
+       ## Has the user specified an installation prefix?
+       "prefix" )
+         ## If the value was omitted, get it from the next argument.
+         if [ "${valomitted}" = "yes" ]; then
+           ## Get the next argument from the argument list, if there is one.
+            if [ $index = $# ]; then
+             (echo "${progname}: You must give a value for the \`--${optname}' option, as in
+    \`--${optname}=FOO'."
+              echo "${short_usage}") >&2
+             exit 1
+           fi
+            index=`expr $index + 1`
+            val=`eval echo '$'$index`
+         fi
+         prefix="${val}"
+        ;;
+
+       ## Has the user specified an installation prefix?
+       "exec_prefix" )
+         ## If the value was omitted, get it from the next argument.
+         if [ "${valomitted}" = "yes" ]; then
+           ## Get the next argument from the argument list, if there is one.
+            if [ $index = $# ]; then
+             (echo "${progname}: You must give a value for the \`--${optname}' option, as in
+    \`--${optname}=FOO'."
+              echo "${short_usage}") >&2
+             exit 1
+           fi
+            index=`expr $index + 1`
+            val=`eval echo '$'$index`
+         fi
+         exec_prefix="${val}"
+        ;;
+
+       ## Verbose flag, tested by autoconf macros.
+       "verbose" )
+         verbose=yes
        ;;
 
        ## Has the user asked for some help?
        "usage" | "help" )
-         echo "${long_usage}" | more
+         echo "${short_usage}" | more
          exit
        ;;
 
@@ -162,35 +282,45 @@ Set it to either \`yes' or \`no'."
     ;;
 
   esac
-  shift
 done
 
 if [ "${configuration}" = "" ]; then
-  (echo "${progname}: You must specify a configuration name as an argument."
-   echo "${short_usage}") >&2
-  exit 1
+  echo '- You did not tell me what kind of host system you want to configure.
+- I will attempt to guess the kind of system this is.' 1>&2
+  guesssys=`echo ${progname} | sed 's/configure$/config.guess/'`
+  if configuration=`${guesssys}` ; then
+    echo "- Looks like this is a ${configuration}" 1>&2
+  else
+    echo '- Failed to guess the system type.  You need to tell me.' 1>&2
+    echo "${short_usage}" >&2
+    exit 1
+  fi
 fi
 
-
 #### Decide where the source is.
 case "${srcdir}" in
 
   ## If it's not specified, see if  `.' or `..' might work.
   "" )
-    if [ -f "./src/lisp.h" -a -f "./lisp/version.el" ]; then
-      srcdir=`pwd`
+    confdir=`echo $0 | sed 's|//|/|' | sed 's|/[^/]*$||'`
+    if [ -f $confdir/src/lisp.h -a -f $confdir/lisp/version.el ]; then
+      srcdir="${confdir}"
     else
-      if [ -f "../src/lisp.h" -a -f "../lisp/version.el" ]; then
-       srcdir=`(cd .. ; pwd)`
+      if [ -f "./src/lisp.h" -a -f "./lisp/version.el" ]; then
+        srcdir='.'
       else
-       (echo "\
+        if [ -f "../src/lisp.h" -a -f "../lisp/version.el" ]; then
+         srcdir='..'
+        else
+         (echo "\
 ${progname}: Neither the current directory nor its parent seem to
 contain the Emacs sources.  If you do not want to build Emacs in its
 source tree, you should run \`${progname}' in the directory in which
 you wish to build Emacs, using its \`--srcdir' option to say where the
 sources may be found."
-        echo "${short_usage}") >&2
-       exit 1
+           echo "${short_usage}") >&2
+         exit 1
+        fi
       fi
     fi
   ;;
@@ -208,33 +338,55 @@ are."
       exit 1
     fi
   ;;
+esac
 
+#### Make srcdir absolute, if it isn't already.  It's important to
+#### avoid running the path through pwd unnecessary, since pwd can
+#### give you automounter prefixes, which can go away.
+case "${srcdir}" in
+  /* ) ;;
+  . )
+    ## We may be able to use the $PWD environment variable to make this
+    ## absolute.  But sometimes PWD is inaccurate.
+    if [ "${PWD}" != "" ] && [ "`(cd ${PWD} ; pwd)`" = "`pwd`" ] ; then
+      srcdir="$PWD"
+    else
+      srcdir="`(cd ${srcdir}; pwd)`"
+    fi
+  ;;
+  *  ) srcdir="`(cd ${srcdir}; pwd)`" ;;
 esac
 
-### Make the necessary directories, if they don't exist.
-if [ ! -d ./src ]; then
-  mkdir ./src
-fi
-if [ ! -d ./lib-src ]; then
-  mkdir ./lib-src
-fi
-if [ ! -d ./cpp ]; then
-  mkdir ./cpp
-fi
-if [ ! -d ./oldXMenu ]; then
-  mkdir ./oldXMenu
+#### Make sure that the source directory doesn't already have a
+#### configured system in it.
+if [ `pwd` != `(cd ${srcdir} && pwd)` ] \
+   && [ -f "${srcdir}/src/config.h" ] ; then
+  (echo "${progname}: the directory tree \`${srcdir}' is being used"
+   echo "   as a build directory right now; it has been configured in its own"
+   echo "   right.  You can't use srcdir in this situation.") >&2
+  exit 1
 fi
 
+### Make the necessary directories, if they don't exist.
+for dir in ./src ./lib-src ./cpp ./oldXMenu ./etc ; do
+  if [ ! -d ${dir} ]; then
+    mkdir ${dir}
+  fi
+done
 
 #### Given the configuration name, set machfile and opsysfile to the
 #### names of the m/*.h and s/*.h files we should use.
 
 ### Canonicalize the configuration name.
 echo "Checking the configuration name."
-if configuration=`${srcdir}/config.sub "${configuration}"` ; then : ; else
+if canonical=`${srcdir}/config.sub "${configuration}"` ; then : ; else
   exit $?
 fi
 
+### If you add support for a new configuration, add code to this
+### switch statement to recognize your configuration name and select
+### the appropriate operating system and machine description files.
+
 ### You would hope that you could choose an m/*.h file pretty much
 ### based on the machine portion of the configuration name, and an s-
 ### file based on the operating system portion.  However, it turns out
@@ -243,14 +395,19 @@ fi
 ### all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
 ### machines.  So we basically have to have a special case for each
 ### configuration name.
-
+###
 ### As far as handling version numbers on operating systems is
 ### concerned, make sure things will fail in a fixable way.  If
 ### /etc/MACHINES doesn't say anything about version numbers, be
 ### prepared to handle anything reasonably.  If version numbers
 ### matter, be sure /etc/MACHINES says something about it.
+###
+### Eric Raymond says we should accept strings like "sysvr4" to mean
+### "System V Release 4"; he writes, "The old convention encouraged
+### confusion between `system' and `release' levels'."
+
 machine='' opsys='' unported='false'
-case "${configuration}" in
+case "${canonical}" in
 
   ## Alliant machines
   ## Strictly speaking, we need the version of the alliant operating
@@ -277,7 +434,7 @@ case "${configuration}" in
 
   ## Appallings - I mean, Apollos - running Domain
   m68*-apollo* )
-    machine=apollo opsysfile=bsd4-2.h
+    machine=apollo opsys=bsd4-2
   ;;
 
   ## AT&T 3b2, 3b5, 3b15, 3b20
@@ -290,8 +447,13 @@ case "${configuration}" in
     machine=7300 opsys=usg5-2-2
   ;;
 
+  ## Bull dpx2
+  m68*-bull-sysv3* )
+    machine=dpx2 opsys=usg5-3
+  ;;
+
   ## Bull sps7
-  m68*-bull-sysv* )
+  m68*-bull-sysv2* )
     machine=sps7 opsys=usg5-2
   ;;
 
@@ -329,6 +491,11 @@ case "${configuration}" in
     machine=cydra5 opsys=usg5-3
   ;;
 
+  ## Data General AViiON Machines
+  m88k-dg-dgux* )
+    machine=aviion opsys=dgux
+  ;;
+
   ## DECstations
   mips-dec-ultrix[0-3].* | mips-dec-ultrix4.0 | mips-dec-bsd4.2 )
     machine=pmax opsys=bsd4-2
@@ -344,6 +511,9 @@ case "${configuration}" in
   m68*-motorola-sysv* )
     machine=delta opsys=usg5-3
   ;;
+  m88k-motorola-sysv4* )
+    machine=delta88k opsys=usg5-4
+  ;;
   m88k-motorola-sysv* | m88k-motorola-m88kbcs* )
     machine=delta88k opsys=usg5-3
   ;;
@@ -388,15 +558,35 @@ case "${configuration}" in
   m68*-hp-bsd* )
     machine=hp9000s300 opsys=bsd4-3
   ;;
-  ## HP/UX 8 doesn't run on these machines, so use HP/UX 7.
+  ## HP/UX 7, 8 and 9 are supported on these machines.
   m68*-hp-hpux* )
-    machine=hp9000s300 opsys=hpux
+    case "`uname -r`" in
+      *.08.* ) machine=hp9000s300 opsys=hpux8 ;;
+      *.09.* ) machine=hp9000s300 opsys=hpux9 ;;
+      *) machine=hp9000s300 opsys=hpux ;;
+    esac
   ;;
 
-  ## HP 9000 series 800, running HP/UX
-  hppa1.0-hp-hpux* )
+  ## HP 9000 series 700 and 800, running HP/UX
+  hppa*-hp-hpux7* )
     machine=hp9000s800 opsys=hpux
   ;;
+  hppa*-hp-hpux8* )
+    machine=hp9000s800 opsys=hpux8
+  ;;
+  hppa*-hp-hpux9* )
+    machine=hp9000s800 opsys=hpux9
+  ;;
+
+  ## HP 9000 series 700 and 800, running HP/UX
+  hppa*-hp-hpux* )
+    ## Cross-compilation?  Nah!
+    case "`uname -r`" in
+      *.08.* ) machine=hp9000s800 opsys=hpux8 ;;
+      *.09.* ) machine=hp9000s800 opsys=hpux9 ;;
+      *) machine=hp9000s800 opsys=hpux ;;
+    esac
+  ;;
 
   ## Orion machines
   orion-orion-bsd* )
@@ -410,15 +600,33 @@ case "${configuration}" in
   i386-ibm-aix1.1 )
     machine=ibmps2-aix opsys=usg5-2-2
   ;;
-  i386-ibm-aix1.2 )
+  i386-ibm-aix1.[23] | i386-ibm-aix* )
     machine=ibmps2-aix opsys=usg5-3
   ;;
-  rs6000-ibm-aix* )
+  rs6000-ibm-aix3.1 )
     machine=ibmrs6000 opsys=aix3-1
   ;;
-  romp-ibm-bsd* )
+  rs6000-ibm-aix3.2 | rs6000-ibm-aix* )
+    machine=ibmrs6000 opsys=aix3-2
+  ;;
+  romp-ibm-bsd4-3 )
+    machine=ibmrt opsys=bsd4-3
+  ;;   
+  romp-ibm-bsd4-2 )
+    machine=ibmrt opsys=bsd4-2
+  ;;
+  romp-ibm-aos4-3 )
+    machine=ibmrt opsys=bsd4-3
+  ;;   
+  romp-ibm-aos4-2 )
     machine=ibmrt opsys=bsd4-2
   ;;
+  romp-ibm-aos* )
+    machine=ibmrt opsys=bsd4-3
+  ;;
+  romp-ibm-bsd* )
+    machine=ibmrt opsys=bsd4-3
+  ;;
   romp-ibm-aix* )
     machine=ibmrt-aix opsys=usg5-2-2
   ;;
@@ -435,16 +643,20 @@ case "${configuration}" in
   i[34]86-intsys-sysv* )
     machine=is386 opsys=usg5-2-2
   ;;
-  ## Intel 386 machines where we don't care about the manufacturer
-  i[34]86-* )
-    machine=intel386
-    case "${configuration}" in
-      *-isc1.* | *-isc2.[01]* )        opsys=386-ix ;;
-      *-isc* )                 opsys=isc2-2 ;;
-      *-esix* )                        opsys=esix ;;
-      *-xenix* )               opsys=xenix ;;
-      ## Otherwise, we'll fall through to the generic opsys code at the bottom.
-    esac
+
+  ## Prime EXL
+  i386-prime-sysv* )
+    machine=i386 opsys=usg5-3
+  ;;
+
+  ## Sequent Symmetry
+  i386-sequent-bsd* )
+    machine=symmetry opsys=bsd4-3
+  ;;
+
+  ## Intel 860
+  i860-*-sysvr4 )
+    machine=i860 opsys=usg5-4
   ;;
 
   ## Silicon Graphics machines
@@ -484,8 +696,12 @@ case "${configuration}" in
   ## the BSD world."  I'll assume that these are instructions for
   ## handling two odd situations, and that every other situation
   ## should use mips.h and usg5-2-2, they being listed first.
+  mips-mips-usg* )
+    machine=mips4
+    ## Fall through to the general code at the bottom to decide on the OS.
+  ;;
   mips-mips-riscos4* )
-    machine=mips4 opsys=usg5-2-2
+    machine=mips4 opsys=bsd4-3
   ;;
   mips-mips-bsd* )
     machine=mips opsys=bsd4-3
@@ -494,16 +710,21 @@ case "${configuration}" in
     machine=mips opsys=usg5-2-2
   ;;
 
+  ## NeXT
+  m68*-next-mach* | m68*-next-bsd* )
+    machine=next opsys=mach2
+  ;;
+
   ## The complete machine from National Semiconductor
   ns32k-ns-genix* )
     machine=ns32000 opsys=usg5-2
   ;;
 
   ## NCR machines
-  m68*-ncr-sysv2* )
+  m68*-ncr-sysv2* | m68*-ncr-sysvr2* )
     machine=tower32 opsys=usg5-2-2
   ;;
-  m68*-ncr-sysv3* )
+  m68*-ncr-sysv3* | m68*-ncr-sysvr3* )
     machine=tower32v3 opsys=usg5-3
   ;;
 
@@ -522,11 +743,6 @@ case "${configuration}" in
     machine=plexus opsys=usg5-2
   ;;
 
-  ## Prime EXL
-  i386-prime-sysv* )
-    machine=i386 opsys=usg5-3
-  ;;
-
   ## Pyramid machines
   ## I don't really have any idea what sort of processor the Pyramid has,
   ## so I'm assuming it is its own architecture.
@@ -541,10 +757,6 @@ case "${configuration}" in
   ns32k-sequent-bsd4.3 )
     machine=sequent opsys=bsd4-3
   ;;
-  ## Sequent Symmetry
-  i386-sequent-bsd* )
-    machine=symmetry opsys=bsd4-3
-  ;;
 
   ## SONY machines
   m68*-sony-bsd4.2 )
@@ -563,8 +775,8 @@ case "${configuration}" in
   ;;
 
   ## Suns
-  *-sun-sunos* | *-sun-bsd* )
-    case "${configuration}" in
+  *-sun-sunos* | *-sun-bsd* | *-sun-solaris* )
+    case "${canonical}" in
       m68*-sunos1* )   machine=sun1 ;;
       m68*-sunos2* )   machine=sun2 ;;
       m68* )           machine=sun3 ;;
@@ -572,9 +784,11 @@ case "${configuration}" in
       sparc* )         machine=sparc ;;
       * )              unported=true ;;
     esac
-    case "${configuration}" in
+    case "${canonical}" in
       *-sunos4.0*        ) opsys=sunos4-0 ;;
+      *-sunos4.1.3*      ) opsys=sunos4-1-3 ;;
       *-sunos4* | *-sunos ) opsys=sunos4-1 ;;
+      *-sunos5* | *-solaris* ) opsys=sol2 ;;
       *                          ) opsys=bsd4-2   ;;
     esac
   ;;
@@ -597,6 +811,11 @@ case "${configuration}" in
     machine=tandem-s2 opsys=usg5-3
   ;;
 
+  ## Tektronix XD88
+  m88k-tektronix-sysv3 )
+  machine=tekXD88 opsys=usg5-3
+  ;;
+
   ## Tektronix 16000 box (6130?)
   ns16k-tektronix-bsd* )
     machine=ns16000 opsys=bsd4-2
@@ -621,14 +840,15 @@ case "${configuration}" in
   ## Vaxen.
   vax-dec-* )
     machine=vax
-    case "${configuration}" in
-      *-bsd4.1 ) opsys=bsd4-1 ;;
-      *-bsd4.2 | *-ultrix[0-3].* | *-ultrix4.0 ) opsys=bsd4-2 ;;
-      *-bsd4.3 | *-ultrix* ) opsys=bsd4-3 ;;
-      *-sysv[01]* ) opsys=usg5-0 ;;
-      *-sysv2* ) opsys=usg5-2 ;;
-      *-vms* ) opsys=vms ;;
-      * ) unported=true
+    case "${canonical}" in
+      *-bsd4.1 )                                       opsys=bsd4-1 ;;
+      *-bsd4.2 | *-ultrix[0-3].* | *-ultrix4.0 )       opsys=bsd4-2 ;;
+      *-bsd4.3 | *-ultrix* )                           opsys=bsd4-3 ;;
+      *-bsd386 )                                       opsys=bsd386 ;;
+      *-sysv[01]* | *-sysvr[01]* )                     opsys=usg5-0 ;;
+      *-sysv2* | *-sysvr2* )                           opsys=usg5-2 ;;
+      *-vms* )                                                 opsys=vms ;;
+      * )                                              unported=true
     esac
   ;;
 
@@ -644,6 +864,24 @@ case "${configuration}" in
     machine=wicat opsys=usg5-2
   ;;
 
+  ## Intel 386 machines where we don't care about the manufacturer
+  i[34]86-*-* )
+    machine=intel386
+    case "${canonical}" in
+      *-isc1.* | *-isc2.[01]* )        opsys=386-ix ;;
+      *-isc2.2 )               opsys=isc2-2 ;;
+      *-isc* )                 opsys=isc3-0 ;;
+      *-esix5* )               opsys=esix5r4 ;;
+      *-esix* )                        opsys=esix ;;
+      *-xenix* )               opsys=xenix ;;
+      *-linux* )               opsys=linux ;;
+      *-sco3.2v4* )            opsys=sco4 ;;
+      *-bsd386* )              opsys=bsd386 ;;
+      *-386bsd )               opsys=386bsd ;;
+      ## Otherwise, we'll fall through to the generic opsys code at the bottom.
+    esac
+  ;;
+
   * )
     unported=true
   ;;
@@ -655,16 +893,17 @@ esac
 ### operating system is; if you know what operating systems a machine
 ### runs, it's cleaner to make it explicit in the case statement
 ### above.
-if [ ! "${opsys}" ]; then
-  case "${configuration}" in
+if [ x"${opsys}" = x ]; then
+  case "${canonical}" in
     *-bsd4.[01] )      opsys=bsd4-1 ;;
     *-bsd4.2 )         opsys=bsd4-2 ;;
     *-bsd4.3 )         opsys=bsd4-3 ;;
-    *-sysv0 )          opsys=usg5-0 ;;
-    *-sysv2 )          opsys=usg5-2 ;;
-    *-sysv2.2 )                opsys=usg5-2-2 ;;
-    *-sysv3 )          opsys=usg5-3 ;;
-    *-sysv4 )          opsys=usg5-4 ;;
+    *-sysv0 | *-sysvr0 )               opsys=usg5-0 ;;
+    *-sysv2 | *-sysvr2 )               opsys=usg5-2 ;;
+    *-sysv2.2 | *-sysvr2.2 )           opsys=usg5-2-2 ;;
+    *-sysv3 | *-sysvr3 )               opsys=usg5-3 ;;
+    *-sysv4 | *-sysvr4 )               opsys=usg5-4 ;;
+    *-sysv4.2 | *-sysvr4.2 )           opsys=usg5-4-2 ;;
     * )
       unported=true
     ;;
@@ -672,7 +911,7 @@ if [ ! "${opsys}" ]; then
 fi
 
 if $unported ; then
-  (echo "${progname}: Emacs hasn't been ported to \`${configuration}' systems."
+  (echo "${progname}: Emacs hasn't been ported to \`${canonical}' systems."
    echo "${progname}: Check \`etc/MACHINES' for recognized configuration names."
   ) >&2
   exit 1
@@ -681,9 +920,56 @@ fi
 machfile="m/${machine}.h"
 opsysfile="s/${opsys}.h"
 
+]
+AC_PREPARE(lisp)
+AC_CONFIG_HEADER(src/config.h)
+[
+
+#### Choose a compiler.
+case ${with_gcc} in
+  "yes" ) CC="gcc" GCC=1 ;;
+  "no"  ) CC="cc"        ;;
+  * )
+    ] AC_PROG_CC [
+esac
+
+#### Some other nice autoconf tests.  If you add a test here which
+#### should make an entry in src/config.h, don't forget to add an
+#### #undef clause to src/config.h.in for autoconf to modify.
+]
+dnl checks for programs
+AC_LN_S
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_YACC
+
+dnl checks for UNIX variants that set `DEFS'
+
+dnl checks for header files
+AC_HAVE_HEADERS(sys/timeb.h sys/time.h)
+AC_STDC_HEADERS
+AC_TIME_WITH_SYS_TIME
+
+dnl checks for typedefs
+AC_RETSIGTYPE
+
+dnl checks for structure members
+AC_STRUCT_TM
+AC_TIMEZONE
+
+dnl checks for compiler characteristics
+AC_CONST
+
+dnl checks for operating system services
+AC_LONG_FILE_NAMES
+
+dnl other checks for UNIX variants
+[
+
 
 #### Choose a window system.
 echo "Checking window system."
+
 window_system=''
 case "${with_x}" in
   yes )
@@ -706,18 +992,46 @@ esac
 case "${window_system}" in
   "none" | "x11" | "x10" ) ;;
   "" )
-    echo "  No window system specifed.  Looking for X Windows."
-    window_system=none
-    if [ -r /usr/lib/libX11.a -o -d /usr/include/X11 ]; then
+    # --x-includes or --x-libraries implies --with-x11.
+    if [ -n "${x_includes}" ] || [ -n "${x_libraries}" ]; then
       window_system=x11
+    else
+      echo "  No window system specified.  Looking for X11."
+      # If the user didn't specify a window system and we found X11, use it.
+      if [ -r /usr/lib/libX11.a \
+        -o -d /usr/include/X11 \
+         -o -d /usr/X386/include \
+        -o -d ${x_includes}/X11 ]; then
+        window_system=x11
+      fi
     fi
   ;;
   * )
-    echo "Don\'t specify the window system more than once." >&2
+    echo "Don't specify a window system more than once." >&2
     exit 1
   ;;
 esac
 
+case "${window_system}" in
+  "" | "x11" )
+    ### If the user hasn't specified where we should find X, try
+    ### letting autoconf figure that out.
+    if [ -z "${x_includes}" ] && [ -z "${x_libraries}" ]; then
+      ]
+      AC_FIND_X
+      [
+    fi
+    if [ -n "${x_includes}" ] || [ -n "${x_libraries}" ]; then
+      window_system=x11
+    fi
+  ;;
+esac
+
+[ -z "${window_system}" ] && window_system=none
+
+[ -n "${x_libraries}" ] && LD_SWITCH_X_SITE="-L${x_libraries}"
+[ -n "${x_includes}" ] && C_SWITCH_X_SITE="-I${x_includes}"
+
 case "${window_system}" in
   x11 )
     HAVE_X_WINDOWS=yes
@@ -744,65 +1058,17 @@ case ${HAVE_X11} in
   ;;
 esac
 
-
-#### Choose a compiler.
-echo "Checking for GCC."
-temppath=`echo $PATH | sed 's/^:/.:/
-                           s/::/:.:/g
-                           s/:$/:./
-                           s/:/ /g'`
-default_cc=`(
-  for dir in ${temppath}; do
-    if [ -f ${dir}/gcc ]; then echo gcc; exit 0; fi
-  done
-  echo cc
-)`
-
-case "${default_cc}" in
-  "gcc" )
-    echo "  Using GCC."
-    default_cflags='-g -O'
-  ;;
-  "*" )
-    echo "  Using the system's CC."
-    default_cflags='-g'
-  ;;
-esac
-
-
-#### What is the return type of a signal handler?
-
-### We run /usr/include/signal.h through cpp and grep for the
-### declaration of the signal function.  Yuck.
-echo "Looking for return type of signal handler functions."
-signal_h_file=''
-if [ -r /usr/include/signal.h ]; then
-  signal_h_file=/usr/include/signal.h
-elif [ -r /usr/include/sys/signal.h ]; then
-  signal_h_file=/usr/include/sys/signal.h
-fi
-SIGTYPE=void
-if [ "${signal_h_file}" ]; then
-  sigpattern='[        ]*([    ]*\*[   ]*signal[       ]*('
-
-  ## We make a copy whose name ends in .c, so the compiler
-  ## won't complain about having only been given a .h file.
-  tempcname="configure.tmp.$$.c"
-  cp ${signal_h_file}  ${tempcname}
-  if ${default_cc} -E ${tempcname} | grep "int${sigpattern}" > /dev/null; then
-    SIGTYPE=int
-  fi
-  rm -f ${tempcname}
-fi
-echo "  Guessing that signals return \`${SIGTYPE}'."
-
-
 #### Extract some information from the operating system and machine files.
 
 echo "Examining the machine- and system-dependent files to find out"
 echo " - which libraries the lib-src programs will want, and"
 echo " - whether the GNU malloc routines are usable."
-tempcname="configure.tmp.$$.c"
+
+### It's not important that this name contain the PID; you can't run
+### two configures in the same directory and have anything work
+### anyway.
+tempcname="conftest.c"
+
 echo '
 #include "'${srcdir}'/src/'${opsysfile}'"
 #include "'${srcdir}'/src/'${machfile}'"
@@ -812,18 +1078,62 @@ echo '
 #ifndef LIBS_SYSTEM
 #define LIBS_SYSTEM
 #endif
+#ifndef C_SWITCH_SYSTEM
+#define C_SWITCH_SYSTEM
+#endif
 @configure@ libsrc_libs=LIBS_MACHINE LIBS_SYSTEM
+@configure@ c_switch_system=C_SWITCH_SYSTEM
+
+#ifndef LIB_X11_LIB
+#define LIB_X11_LIB
+#endif
+
+#ifndef LIBX11_MACHINE
+#define LIBX11_MACHINE
+#endif
+
+#ifndef LIBX11_SYSTEM
+#define LIBX11_SYSTEM
+#endif
+@configure@ LIBX=LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM
+
+#ifdef UNEXEC
+@configure@ unexec=UNEXEC
+#else
+@configure@ unexec=unexec.o
+#endif
+
 #ifdef SYSTEM_MALLOC
 @configure@ system_malloc=yes
 #else
 @configure@ system_malloc=no
 #endif
+
+#ifndef C_DEBUG_SWITCH
+#define C_DEBUG_SWITCH -g
+#endif
+
+#ifndef C_OPTIMIZE_SWITCH
+#define C_OPTIMIZE_SWITCH -O
+#endif
+
+#ifdef __GNUC__
+@configure@ CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH
+#else
+@configure@ CFLAGS=C_DEBUG_SWITCH
+#endif
 ' > ${tempcname}
-eval `${default_cc} -E ${tempcname} \
-      | grep '@configure@' \
-      | sed -e 's/^@configure@//'`
+# The value of CPP is a quoted variable reference, so we need to do this
+# to get its actual value...
+CPP=`eval "echo $CPP"`
+eval `${CPP} -Isrc ${tempcname} \
+       | grep '@configure@' \
+       | sed -e 's/^@configure@ \([^=]*=\)\(.*\)$/\1"\2"/'`
 rm ${tempcname}
 
+### Compute the unexec source name from the object name.
+UNEXEC_SRC="`echo ${unexec} | sed 's/\.o/.c/'`"
+
 # Do the opsystem or machine files prohibit the use of the GNU malloc?
 # Assume not, until told otherwise.
 GNU_MALLOC=yes
@@ -833,131 +1143,133 @@ if [ "${system_malloc}" = "yes" ]; then
   (The GNU allocators don't work with this system configuration.)"
 fi
 
-if [ ! "${REL_ALLOC}" ]; then
+if [ x"${REL_ALLOC}" = x ]; then
   REL_ALLOC=${GNU_MALLOC}
 fi
 
 LISP_FLOAT_TYPE=yes
 
 
+#### Add the libraries to LIBS and check for some functions.
+
+]
+DEFS="$c_switch_system $DEFS"
+LIBS="$libsrc_libs"
+
+dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
+dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
+AC_HAVE_LIBRARY(-ldnet)
+
+AC_HAVE_LIBRARY(-lXbsd, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd"
+    if test -d /usr/X386/include; then
+      HAVE_XFREE386=yes
+      test -z "${C_SWITCH_X_SITE}" && C_SWITCH_X_SITE="-I/usr/X386/include"
+    fi)
+
+if test "${HAVE_X11}" = "yes"; then
+  DEFS="$C_SWITCH_X_SITE $DEFS"
+  LIBS="$LD_SWITCH_X_SITE $LIBX $LIBS"
+  AC_HAVE_FUNCS(XrmSetDatabase XScreenResourceString random bcopy)
+fi
+
+AC_ALLOCA
+AC_HAVE_FUNCS(gettimeofday gethostname dup2 rename closedir)
+
+ok_so_far=true
+AC_FUNC_CHECK(socket, , ok_so_far=)
+if test -n "$ok_so_far"; then
+  AC_HEADER_CHECK(netinet/in.h, , ok_so_far=)
+fi
+if test -n "$ok_so_far"; then
+  AC_HEADER_CHECK(arpa/inet.h, , ok_so_far=)
+fi
+if test -n "$ok_so_far"; then
+  AC_DEFINE(HAVE_INET_SOCKETS)
+fi
+[
 #### Find out which version of Emacs this is.
 version=`grep 'defconst[        ]*emacs-version' ${srcdir}/lisp/version.el \
         | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\)\..*$/\1/'`
-if [ ! "${version}" ]; then
+if [ x"${version}" = x ]; then
   echo "${progname}: can't find current emacs version in
        \`${srcdir}/lisp/version.el'." >&2
   exit 1
 fi
 
+if [ -f /usr/lpp/X11/bin/smt.exp ]; then
+  ]
+  AC_DEFINE(HAVE_AIX_SMT_EXP)
+  [
+fi
 
-#### Make the proper settings in `src/config.h'.
-rm -f config.status
-set -e
 
-echo "Making \`./src/config.h' from \`${srcdir}/src/config.h.in'."
-sed_flags="-e 's:@machine@:${machfile}:' -e 's:@opsystem@:${opsysfile}:'"
+#### Specify what sort of things we'll be editing into Makefile and config.h.
+### Use configuration here uncanonicalized to avoid exceeding size limits.
+]
+AC_SUBST(configuration)
+AC_SUBST(version)
+AC_SUBST(srcdir)
+AC_SUBST(c_switch_system)
+AC_SUBST(libsrc_libs)
+AC_SUBST(rip_paths)
+AC_SUBST(inst_paths)
+AC_SUBST(LD_SWITCH_X_SITE)
+AC_SUBST(C_SWITCH_X_SITE)
+AC_SUBST(CFLAGS)
+AC_SUBST(prefix)
+AC_SUBST(exec_prefix)
+
+AC_DEFINE_UNQUOTED(config_machfile,  "\"${machfile}\"")
+AC_DEFINE_UNQUOTED(config_opsysfile, "\"${opsysfile}\"")
+AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE})
+AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,  ${C_SWITCH_X_SITE})
+AC_DEFINE_UNQUOTED(UNEXEC_SRC,       ${UNEXEC_SRC})
+
+[
+if [ "${HAVE_X_WINDOWS}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_X_WINDOWS) [
+fi
+if [ "${HAVE_X11}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_X11) [
+fi
+if [ "${HAVE_XFREE386}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_XFREE386) [
+fi
+if [ "${HAVE_X_MENU}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_X_MENU) [
+fi
+if [ "${GNU_MALLOC}" = "yes" ] ; then
+  ] AC_DEFINE(GNU_MALLOC) [
+fi
+if [ "${REL_ALLOC}" = "yes" ] ; then
+  ] AC_DEFINE(REL_ALLOC) [
+fi
+if [ "${LISP_FLOAT_TYPE}" = "yes" ] ; then
+  ] AC_DEFINE(LISP_FLOAT_TYPE) [
+fi
+
 
-for flag in ${config_h_opts}; do
-  val=`eval echo '$'${flag}`
-  case ${val} in
-    no | "")
-      f="-e 's:.*#define ${flag}.*:/\\* #define ${flag} \\*/:'"
-    ;;
-    yes)
-      f="-e 's:.*#define ${flag}.*:#define ${flag}:'"
-    ;;
-    *)
-      f="-e 's:.*#define ${flag}.*:#define ${flag} ${val}:'"
-    ;;
-  esac
-  sed_flags="${sed_flags} ${f}"
-done
+#### Report on what we decided to do.
+echo "
 
-rm -f ./src/config.h.tmp
-(echo "/* This file is generated by \`${progname}' from"
- echo "   \`${srcdir}/src/config.h.in'."
- echo "   If you are thinking about editing it, you should seriously consider"
- echo "   running \`${progname} instead, or editing"
- echo "   \`${srcdir}/src/config.h.in' itself." 
- eval '/bin/sed '${sed_flags}' < "${srcdir}/src/config.h.in"'
-) > src/config.h.tmp
-${srcdir}/move-if-change src/config.h.tmp src/config.h
-### Remind people not to edit this.
-chmod -w src/config.h
-
-
-#### Modify the parameters in the top-level Makefile.
-echo "Producing \`Makefile' from \`${srcdir}/Makefile.in'."
-rm -f Makefile.tmp
-(echo "\
-# This file is generated by \`${progname}' from
-# \`${srcdir}/Makefile.in'.
-# If you are thinking about editing it, you should seriously consider
-# running \`${progname}' instead, or editing
-# \`${srcdir}/Makefile.in' itself."
- /bin/sed < ${srcdir}/Makefile.in                              \
- -e 's|^configname *=.*$|configname='"${configuration}"'|'     \
- -e 's|^version *=.*$|version='"${version}"'|'                 \
- -e 's|^srcdir *=.*$|srcdir='"${srcdir}"'|'                    \
- -e 's|^CC *=.*$|CC='"${default_cc}"'|'                        \
- -e 's|^CONFIG_CFLAGS *=.*$|CONFIG_CFLAGS='"${default_cflags}"'|'      \
- -e 's|^LOADLIBES *=.*$|LOADLIBES='"${libsrc_libs}"'|' \
- -e '/^# DIST: /d') > Makefile.tmp
-${srcdir}/move-if-change Makefile.tmp Makefile
-
-### I'm commenting out this section until I bring the `build-install' script
-### into line with the rest of the configuration stuff.
-
-### # Modify the parameters in the `build-install' script.
-### echo "Producing \`./build-install' from \`${srcdir}/build-install.in'."
-### rm -f ./build-install.tmp
-### (echo "\
-### # This file is generated by \`${progname}' from \`${srcdir}/build-install.in'.
-### # If you are thinking about editing it, you should seriously consider
-### # editing \`./build-install.in' itself, or running \`${progname}' instead."
-###  /bin/sed < ${srcdir}/build-install.in                     \
-###  -e 's;^\(prefix=\).*$;\1'"${prefix};"                     \
-###  -e 's;^\(bindir=\).*$;\1'"${bindir};"                     \
-###  -e 's;^\(lisppath=\).*$;\1'"${lisppath};"         \
-###  -e 's;^\(datadir=\).*$;\1'"${datadir};"           \
-###  -e 's;^\(lockdir=\).*$;\1'"${lockdir};"           \
-###  -e 's;^\(libdir=\).*$;\1'"${libdir};") > ./build-install.tmp
-### ${srcdir}/move-if-change build-install.tmp build-install
-### # Remind people not to edit this.
-### chmod -w build-install
-### chmod +x build-install
-
-
-#### Describe the results.
-
-### Create a verbal description of what we have done.
-message="Configured for \`${configuration}'.
+Configured for \`${canonical}'.
 
+  Where should the build process find the source code?    ${srcdir}
   What operating system and machine description files should Emacs use?
         \`${opsysfile}' and \`${machfile}'
+  What compiler should emacs be built with?               ${CC} ${CFLAGS}
   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
   Should Emacs use the relocating allocator for buffers?  ${REL_ALLOC}
-  What window system should Emacs use?                    ${window_system}
-  What compiler should emacs be built with?               ${default_cc}
-  Should the compilation use \`-g' and/or \`-O'?            ${default_cflags- neither}"
+  What window system should Emacs use?                    ${window_system}${x_includes+
+  Where do we find X Windows header files?                }${x_includes}${x_libraries+
+  Where do we find X Windows libraries?                   }${x_libraries}
 
-### Write config.status, documenting the damage we have done.
-
-(echo "\
-#!/bin/sh
-### This file is generated by \`${progname}.'
-### If you are thinking about editing it, you should seriously consider
-### running \`${progname}' instead.
 "
- echo "${message}" | sed -e 's/^/# /'
- echo "exec '${progname}' ${arguments} "'$@') > config.status
-
-### Remind people not to edit this.
-chmod -w config.status
-chmod +x config.status
-
-### Print the description.
-echo
-echo "${message}"
 
-exit 0
+# Remove any trailing slashes in these variables.
+test -n "${prefix}" &&
+  prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
+test -n "${exec_prefix}" &&
+  exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
+]
+AC_OUTPUT(Makefile)