]> code.delx.au - gnu-emacs/blobdiff - configure.in
(Fringes): Fix a typo. Mention the fact that arrows on the fringes are
[gnu-emacs] / configure.in
index ea19efdb1839dc3dc8e2a4ac6bd6df7b59fd33a6..269b44c0cd66f26d5f226588b8be340f85aa4c7d 100644 (file)
@@ -3,7 +3,8 @@ dnl To rebuild the `configure' script from this, execute the command
 dnl    autoconf
 dnl in the directory containing this script.
 dnl
-dnl  Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+dnl  Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002
+dnl  Free Software Foundation, Inc.
 dnl
 dnl  This file is part of GNU Emacs.
 dnl
@@ -22,30 +23,73 @@ dnl  along with GNU Emacs; see the file COPYING.  If not, write to the
 dnl  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 dnl  Boston, MA 02111-1307, USA.
 
-AC_PREREQ(2.8)dnl
+AC_PREREQ(2.51)dnl
 AC_INIT(src/lisp.h)
 AC_CONFIG_HEADER(src/config.h:src/config.in)
 
+dnl Support for --program-prefix, --program-suffix and
+dnl --program-transform-name options
+AC_ARG_PROGRAM
+
 lispdir='${datadir}/emacs/${version}/lisp'
 locallisppath='${datadir}/emacs/${version}/site-lisp:'\
 '${datadir}/emacs/site-lisp:${datadir}/emacs/${version}/leim'
 lisppath='${locallisppath}:${lispdir}'
 etcdir='${datadir}/emacs/${version}/etc'
-lockdir='${sharedstatedir}/emacs/lock'
 archlibdir='${libexecdir}/emacs/${version}/${configuration}'
 docdir='${datadir}/emacs/${version}/etc'
+gamedir=yes
+
+AC_ARG_WITH(game-dir,
+[  --with-game-dir         use a shared game directory if possible],
+   [
+   gamedir="$withval"
+])
+if test "$gamedir" = yes; then
+  gamedir="${localstatedir}/games/emacs"
+fi
+eval tgamedir=\"$gamedir\"
+if test "$gamedir" != no; then
+  AC_DEFINE_UNQUOTED(HAVE_SHARED_GAME_DIR, "$tgamedir",
+                      [Define to the name of the shared game directory.])
+fi
+
+gameuser=games
+AC_ARG_WITH(game-user,
+[  --with-game-user        use specified user for game directory],
+   [gameuser="$withval"])
 
 AC_ARG_WITH(gcc,
-[  --with-gcc              use GCC to compile Emacs])
+[  --without-gcc           don't use GCC to compile Emacs if GCC is found])
 AC_ARG_WITH(pop,
-[  --with-pop              support POP for mail retrieval],
-[AC_DEFINE(MAIL_USE_POP)])
+[  --without-pop           don't support POP mail retrieval with movemail],
+[if test "$withval" = yes; then
+   AC_DEFINE(MAIL_USE_POP)
+else :
+fi],
+AC_DEFINE(MAIL_USE_POP))
+AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
 AC_ARG_WITH(kerberos,
 [  --with-kerberos         support Kerberos-authenticated POP],
 [AC_DEFINE(KERBEROS)])
+AH_TEMPLATE(KERBEROS,
+           [Define to support Kerberos-authenticated POP mail retrieval.])dnl
+AC_ARG_WITH(kerberos5,
+[  --with-kerberos5        support Kerberos version 5 authenticated POP],
+[if test "${with_kerberos5+set}" = set; then
+  if test "${with_kerberos+set}" != set; then
+    with_kerberos=yes
+    AC_DEFINE(KERBEROS)
+  fi
+fi
+AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])])
 AC_ARG_WITH(hesiod,
 [  --with-hesiod           support Hesiod to get the POP server host],
-[AC_DEFINE(HESIOD)])
+[AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])])
+
+AC_ARG_WITH(sound,
+[  --without-sound         don't compile with sound support])
+
 dnl This should be the last --with option, because --with-x is
 dnl added later on when we find the path of X, and it's best to
 dnl keep them together visually.
@@ -70,19 +114,39 @@ Currently, \`yes', \`athena' and \`lucid' are synonyms.])
          esac
          with_x_toolkit=$val
 ])
+AC_ARG_WITH(xpm,
+[  --with-xpm              use -lXpm for displaying XPM images])
+AC_ARG_WITH(jpeg,
+[  --with-jpeg             use -ljpeg for displaying JPEG images])
+AC_ARG_WITH(tiff,
+[  --with-tiff             use -ltiff for displaying TIFF images])
+AC_ARG_WITH(gif,
+[  --with-gif              use -lungif for displaying GIF images])
+AC_ARG_WITH(png,
+[  --with-png              use -lpng for displaying PNG images])
+AC_ARG_WITH(toolkit-scroll-bars,
+[  --without-toolkit-scroll-bars
+                          don't use Motif or Xaw3d scroll bars])
+AC_ARG_WITH(xim,
+[  --without-xim           don't use X11 XIM])
+AC_ARG_WITH(carbon,
+[  --without-carbon        don't use Carbon GUI on Mac OS X])
 
 #### Make srcdir absolute, if it isn't already.  It's important to
-#### avoid running the path through pwd unnecessary, since pwd can
+#### avoid running the path through pwd unnecessarily, since pwd can
 #### give you automounter prefixes, which can go away.  We do all this
 #### so Emacs can find its files when run uninstalled.
+## Make sure CDPATH doesn't affect cd (in case PWD is relative).
+unset CDPATH
 case "${srcdir}" in
   /* ) ;;
   . )
     ## We may be able to use the $PWD environment variable to make this
     ## absolute.  But sometimes PWD is inaccurate.
-    ## Make sure CDPATH doesn't affect cd (in case PWD is relative).
-    CDPATH=
-    if test "${PWD}" != "" && test "`(cd ${PWD} ; sh -c pwd)`" = "`pwd`"  ;
+    ## Note: we used to use ${PWD} at the end instead of `pwd`,
+    ## but that tested only for a well-formed and valid PWD,
+    ## it did not object when PWD was well-formed and valid but just wrong.
+    if test ".${PWD}" != "." && test ".`(cd ${PWD} ; sh -c pwd)`" = ".`pwd`"  ;
     then
       srcdir="$PWD"
     else
@@ -121,7 +185,7 @@ fi
 
 AC_CANONICAL_HOST
 canonical=$host
-configuration=$host_alias
+configuration=${host_alias-$host}
 
 changequote(, )dnl
 
@@ -151,18 +215,46 @@ changequote(, )dnl
 machine='' opsys='' unported=no
 case "${canonical}" in
 
+  ## FreeBSD ports
+  *-*-freebsd* )
+    opsys=freebsd
+    case "${canonical}" in
+      alpha*-*-freebsd*)       machine=alpha ;;
+      i[3456]86-*-freebsd*)    machine=intel386 ;;
+    esac
+  ;;
+
   ## NetBSD ports
   *-*-netbsd* )
     opsys=netbsd
     case "${canonical}" in
+      alpha*-*-netbsd*)        machine=alpha ;;
       i[3456]86-*-netbsd*) machine=intel386 ;;
       m68k-*-netbsd*)
                        # This is somewhat bogus.
                        machine=hp9000s300 ;;
+      powerpc-apple-netbsd*) machine=macppc ;;
       mips-*-netbsd*)  machine=pmax ;;
+      mipsel-*-netbsd*)        machine=pmax ;;
       ns32k-*-netbsd*) machine=ns32000 ;;
-      sparc-*-netbsd*) machine=sparc ;;
+      powerpc-*-netbsd*) machine=macppc ;;
+      sparc*-*-netbsd*)        machine=sparc ;;
       vax-*-netbsd*)   machine=vax ;;
+      arm-*-netbsd*)   machine=arm ;;
+    esac
+  ;;
+
+  ## OpenBSD ports
+  *-*-openbsd* )
+    opsys=openbsd
+    case "${canonical}" in
+      alpha*-*-openbsd*)       machine=alpha ;;
+      i386-*-openbsd*) machine=intel386 ;;
+      m68k-*-openbsd*)  machine=hp9000s300 ;;
+      mipsel-*-openbsd*) machine=pmax ;;
+      ns32k-*-openbsd*)        machine=ns32000 ;;
+      sparc-*-openbsd*)        machine=sparc ;;
+      vax-*-openbsd*)  machine=vax ;;
     esac
   ;;
 
@@ -176,6 +268,23 @@ case "${canonical}" in
     machine=acorn opsys=riscix12
   ;;
 
+  ## BSDI ports
+  *-*-bsdi* )
+    opsys=bsdi
+    case "${canonical}" in
+      i[345]86-*-bsdi*) machine=intel386 ;;
+      sparc-*-bsdi*)  machine=sparc ;;
+      powerpc-*-bsdi*)  machine=macppc ;;
+    esac
+    case "${canonical}" in
+      *-*-bsd386* | *-*-bsdi1* )       opsys=bsd386 ;;
+      *-*-bsdi2.0* )           opsys=bsdos2 ;;
+      *-*-bsdi2* )             opsys=bsdos2-1 ;;
+      *-*-bsdi3* )             opsys=bsdos3 ;;
+      *-*-bsdi[45]* )          opsys=bsdos4 ;;
+    esac
+  ;;
+
   ## Alliant machines
   ## Strictly speaking, we need the version of the alliant operating
   ## system to choose the right machine file, but currently the
@@ -190,17 +299,35 @@ case "${canonical}" in
   ;;
 
   ## Alpha (DEC) machines.
-  alpha-dec-osf* )
+  alpha*-dec-osf* )
     machine=alpha opsys=osf1
     # This is needed to find X11R6.1 libraries for certain tests.
     NON_GCC_LINK_TEST_OPTIONS=-Wl,-rpath,/usr/X11R6/lib
     GCC_LINK_TEST_OPTIONS=-Wl,-rpath,/usr/X11R6/lib
+    # NON_GNU_CPP is necessary on 5.0 to avoid mangling src/Makefile
+    # due to non-traditional preprocessing with the current compiler
+    # defaults.  OSF 4 can also have that compiler version, and there
+    # seems always to have been a usable /usr/bin/cpp.
+    NON_GNU_CPP=/usr/bin/cpp
+    case "${canonical}" in
+    alpha*-dec-osf[5-9]*)
+      opsys=osf5-0 ;;
+    esac
   ;;
 
-  alpha-*-linux-gnu* )
+  alpha*-*-linux-gnu* )
     machine=alpha opsys=gnu-linux
   ;;
 
+  arm*-*-linux-gnu* )
+    machine=arm opsys=gnu-linux
+  ;;
+
+  ppc-*-linux | \
+  powerpc-*-linux* )
+    machine=macppc opsys=gnu-linux
+  ;;
+
   ## Altos 3068
   m68*-altos-sysv* )
     machine=altos opsys=usg5-2
@@ -260,6 +387,11 @@ case "${canonical}" in
     ## operating system.
   ;;
 
+  ## Compaq Nonstop
+  mips-compaq-nonstopux* )
+    machine=nonstopux opsys=nonstopux
+    ;;
+
   ## Convex
   *-convex-bsd* | *-convex-convexos* )
     machine=convex opsys=bsd4-3
@@ -278,6 +410,14 @@ case "${canonical}" in
   ;;
 
   ## Data General AViiON Machines
+  ## DG changed naming conventions with the release of 5.4.4.10, they
+  ## dropped the initial 5.4 but left the intervening R.  Because of the
+  ## R this shouldn't conflict with older versions of the OS (which I
+  ## think were named like dgux4.*). In addition, DG new AViiONs series
+  ## uses either Motorola M88k or Intel Pentium CPUs.
+  m88k-dg-dguxR4.* | m88k-dg-dgux4* )
+    machine=aviion opsys=dgux4
+  ;;
   m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* )
     ## This name is dgux5-4-3 instead of dgux5-4r3
     ## to avoid a file name conflict on MSDOS.
@@ -290,6 +430,13 @@ case "${canonical}" in
     machine=aviion opsys=dgux
   ;;
 
+  ## Data General AViiON Intel (x86) Machines
+  ## Exists from 5.4.3 (current i586-dg-dguxR4.11)
+  ## Ehud Karni, 1998-may-30, ehud@unix.simonwiesel.co.il
+  i[345]86-dg-dguxR4* )
+    machine=aviion-intel opsys=dgux4
+  ;;
+
   ## DECstations
   mips-dec-ultrix[0-3].* | mips-dec-ultrix4.0* | mips-dec-bsd4.2* )
     machine=pmax opsys=bsd4-2
@@ -352,7 +499,8 @@ case "${canonical}" in
     machine=ns16000 opsys=umax
   ;;
 
-  ## The GEC 93 - apparently, this port isn't really finished yet.
+  ## The GEC 63 - apparently, this port isn't really finished yet.
+  #  I'm sure we finished off the last of the machines, though.  -- fx
 
   ## Gould Power Node and NP1
   pn-gould-bsd4.2* )
@@ -384,7 +532,13 @@ case "${canonical}" in
     machine=nh6000 opsys=powerunix
     NON_GNU_CPP="cc -Xo -E -P"
   ;;
-
+  ## SR2001/SR2201 running HI-UX/MPP
+  hppa1.1-hitachi-hiuxmpp* )
+    machine=sr2k opsys=hiuxmpp
+  ;;
+  hppa1.1-hitachi-hiuxwe2* )
+    machine=sr2k opsys=hiuxwe2
+  ;;
   ## Honeywell XPS100
   xps*-honeywell-sysv* )
     machine=xps100 opsys=usg5-2
@@ -402,7 +556,7 @@ case "${canonical}" in
       *.B8.* ) machine=hp9000s300 opsys=hpux8 ;;
       *.08.* ) machine=hp9000s300 opsys=hpux8 ;;
       *.09.* ) machine=hp9000s300 opsys=hpux9 ;;
-      *.10.* ) machine=hp9000s300 opsys=hpux9shr ;;
+      *.1[0-9].* ) machine=hp9000s300 opsys=hpux9shr ;;
       *) machine=hp9000s300 opsys=hpux ;;
     esac
   ;;
@@ -423,6 +577,13 @@ case "${canonical}" in
   hppa*-hp-hpux10* )
     machine=hp800 opsys=hpux10
   ;;
+  hppa*-hp-hpux1[1-9]* )
+    machine=hp800 opsys=hpux11
+  ;;
+
+  hppa*-*-linux-gnu* )
+    machine=hp800 opsys=gnu-linux
+  ;;
 
   ## HP 9000 series 700 and 800, running HP/UX
   hppa*-hp-hpux* )
@@ -433,7 +594,7 @@ case "${canonical}" in
       *.B8.* ) machine=hp800 opsys=hpux8 ;;
       *.08.* ) machine=hp800 opsys=hpux8 ;;
       *.09.* ) machine=hp800 opsys=hpux9 ;;
-      *) machine=hp800 opsys=hpux ;;
+      *) machine=hp800 opsys=hpux10 ;;
     esac
   ;;
   hppa*-*-nextstep* )
@@ -458,6 +619,9 @@ case "${canonical}" in
   i370-ibm-aix*)
     machine=ibm370aix opsys=usg5-3
   ;;
+  s390-*-linux-gnu)
+    machine=ibms390 opsys=gnu-linux
+  ;;
   rs6000-ibm-aix3.1* | powerpc-ibm-aix3.1*  )
     machine=ibmrs6000 opsys=aix3-1
   ;;
@@ -467,9 +631,18 @@ case "${canonical}" in
   rs6000-ibm-aix4.1* | powerpc-ibm-aix4.1*  )
     machine=ibmrs6000 opsys=aix4-1
   ;;
-  rs6000-ibm-aix4* | powerpc-ibm-aix4*  )
+  rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2*  )
+    machine=ibmrs6000 opsys=aix4-2
+  ;;
+  rs6000-ibm-aix5.1* | powerpc-ibm-aix5.1*  )
+    machine=ibmrs6000 opsys=aix4-2
+  ;;
+  rs6000-ibm-aix4.0* | powerpc-ibm-aix4.0*  )
     machine=ibmrs6000 opsys=aix4
   ;;
+  rs6000-ibm-aix4* | powerpc-ibm-aix4*  )
+    machine=ibmrs6000 opsys=aix4-1
+  ;;
   rs6000-ibm-aix* | powerpc-ibm-aix* )
     machine=ibmrs6000 opsys=aix3-2
   ;;
@@ -554,6 +727,11 @@ case "${canonical}" in
     NON_GNU_CPP="/usr/ccs/lib/cpp" # cc -E tokenizes macro expansion.
   ;;
 
+  ## Macintosh PowerPC
+  powerpc*-*-linux-gnu* )
+    machine=macppc opsys=gnu-linux
+  ;;
+
   ## Masscomp machines
   m68*-masscomp-rtu* )
     machine=masscomp opsys=rtu
@@ -614,6 +792,11 @@ case "${canonical}" in
     machine=tower32v3 opsys=usg5-3
   ;;
 
+  ## NEC EWS4800
+  mips-nec-sysv4*)
+  machine=ews4800 opsys=ux4800
+  ;;
+
   ## Nixdorf Targon 31
   m68*-nixdorf-sysv* )
     machine=targon31 opsys=usg5-2-2
@@ -629,6 +812,12 @@ case "${canonical}" in
     machine=plexus opsys=usg5-2
   ;;
 
+  ## PowerPC reference platform
+  powerpcle-*-solaris2* )
+    machine=prep
+    opsys=sol2-5
+  ;;
+
   ## 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.
@@ -666,9 +855,20 @@ case "${canonical}" in
   mips-sgi-irix4* )
     machine=iris4d opsys=irix4-0
   ;;
+  mips-sgi-irix6.5 )
+    machine=iris4d opsys=irix6-5
+    # Without defining _LANGUAGE_C, things get masked out in the headers
+    # so that, for instance, grepping for `free' in stdlib.h fails and
+    # AC_HEADER_STD_C fails.   (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
+    NON_GNU_CPP="/lib/cpp -D_LANGUAGE_C"
+    NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
+  ;;
   mips-sgi-irix6* )
     machine=iris4d opsys=irix6-0
-    NON_GNU_CPP=/lib/cpp
+    # It's not clear whether -D_LANGUAGE_C is necessary as it is for 6.5,
+    # but presumably it does no harm.
+    NON_GNU_CPP="/lib/cpp -D_LANGUAGE_C"
+    # -32 probably isn't necessary in later v.6s -- anyone know which?
     NON_GCC_TEST_OPTIONS=-32
   ;;
   mips-sgi-irix5.[01]* )
@@ -691,6 +891,9 @@ case "${canonical}" in
   mips-sony-bsd* | mips-sony-newsos4* | mips-sony-news4*)
     machine=news-risc opsys=bsd4-3
   ;;
+  mips-sony-newsos6* )
+    machine=news-r6 opsys=newsos6
+  ;;
   mips-sony-news* )
     machine=news-risc opsys=newsos5
   ;;
@@ -701,11 +904,11 @@ case "${canonical}" in
   ;;
 
   ## Suns
-  sparc-*-linux-gnu* )
+  sparc-*-linux-gnu* | sparc64-*-linux-gnu* )
     machine=sparc opsys=gnu-linux
   ;;
 
-  *-sun-sunos* | *-sun-bsd* | *-sun-solaris* \
+  *-auspex-sunos* | *-sun-sunos* | *-sun-bsd* | *-sun-solaris* \
     | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* | powerpc*-*-solaris2* \
     | rs6000-*-solaris2*)
     case "${canonical}" in
@@ -714,6 +917,7 @@ case "${canonical}" in
       m68* )           machine=sun3 ;;
       i[3456]86-sun-sunos[34]* )       machine=sun386 ;;
       i[3456]86-*-* )     machine=intel386 ;;
+      powerpcle* )      machine=powerpcle ;;
       powerpc* | rs6000* )  machine=ibmrs6000 ;;
       sparc* )         machine=sparc ;;
       * )              unported=yes ;;
@@ -754,7 +958,7 @@ case "${canonical}" in
                RANLIB="ar -ts"
                ;;
       *-sunos5* | *-solaris* )
-               opsys=sol2-4
+               opsys=sol2-5
                NON_GNU_CPP=/usr/ccs/lib/cpp
                ;;
       *                          ) opsys=bsd4-2   ;;
@@ -845,10 +1049,16 @@ case "${canonical}" in
     machine=wicat opsys=usg5-2
   ;;
 
+  ## IA-64
+  ia64*-*-linux* )
+    machine=ia64 opsys=gnu-linux
+  ;;
+
   ## Intel 386 machines where we don't care about the manufacturer
   i[3456]86-*-* )
     machine=intel386
     case "${canonical}" in
+      *-lynxos* )               opsys=lynxos ;;
       *-isc1.* | *-isc2.[01]* )        opsys=386-ix ;;
       *-isc2.2* )              opsys=isc2-2 ;;
       *-isc4.0* )              opsys=isc4-0 ;;
@@ -868,21 +1078,47 @@ case "${canonical}" in
                                # /lib/cpp does not accept it.
                                OVERRIDE_CPPFLAGS=" "
                                ;;
-      *-bsd386* | *-bsdi1* )   opsys=bsd386 ;;
-      *-bsdi2.0* )             opsys=bsdos2 ;;
-      *-bsdi2* )               opsys=bsdos2-1 ;;
+      *-sysv4.2uw* )           opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
       *-386bsd* )              opsys=386bsd ;;
-      *-freebsd* )             opsys=freebsd ;;
       *-nextstep* )             opsys=nextstep ;;
       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
     esac
   ;;
 
-  ## Linux/68k-based GNU system
+  ## m68k Linux-based GNU system
   m68k-*-linux-gnu* )
     machine=m68k opsys=gnu-linux
   ;;
 
+  ## Mips Linux-based GNU system
+  mips-*-linux-gnu* )
+    machine=mips opsys=gnu-linux
+  ;;
+
+  ## UXP/DS
+  sparc-fujitsu-sysv4* )
+    machine=sparc opsys=uxpds
+    NON_GNU_CPP=/usr/ccs/lib/cpp
+    RANLIB="ar -ts"
+  ;;
+
+  ## UXP/V
+  f301-fujitsu-uxpv4.1)
+    machine=f301 opsys=uxpv
+  ;;
+
+  ## Darwin / Mac OS X
+  powerpc-apple-darwin* )
+    machine=powermac opsys=darwin
+    # Define CPP as follows to make autoconf work correctly.
+    CPP="cc -E -traditional-cpp"
+  ;;
+
+  ## AMD x86-64 Linux-based GNU system
+  x86_64-*-linux-gnu* )
+    machine=amdx86-64 opsys=gnu-linux 
+  ;;
+
   * )
     unported=yes
   ;;
@@ -904,6 +1140,7 @@ if test x"${opsys}" = x; then
     *-sysv2 | *-sysvr2 )               opsys=usg5-2 ;;
     *-sysv2.2 | *-sysvr2.2 )           opsys=usg5-2-2 ;;
     *-sysv3* | *-sysvr3* )             opsys=usg5-3 ;;
+    *-sysv4.2uw* )                     opsys=unixware ;;
     *-sysv4.1* | *-sysvr4.1* )
        NON_GNU_CPP=/usr/lib/cpp
        opsys=usg5-4 ;;
@@ -923,10 +1160,6 @@ if test x"${opsys}" = x; then
   esac
 fi
 
-if test "x$RANLIB" = x; then
-  RANLIB=ranlib
-fi
-
 changequote([, ])dnl
 
 if test $unported = yes; then
@@ -947,8 +1180,9 @@ SPECIFIED_CFLAGS="$CFLAGS"
 case ${with_gcc} in
   "yes" ) CC="gcc" GCC=yes ;;
   "no"  ) : ${CC=cc} ;;
-  * ) AC_PROG_CC
+  * )
 esac
+AC_PROG_CC
 
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
@@ -1001,145 +1235,13 @@ AC_PROG_LN_S
 AC_PROG_CPP
 AC_PROG_INSTALL
 AC_PROG_YACC
+if test "x$RANLIB" = x; then
+  AC_PROG_RANLIB
+fi
 
 dnl checks for Unix variants
 AC_AIX
 
-dnl checks for header files
-AC_CHECK_HEADERS(sys/select.h sys/timeb.h sys/time.h unistd.h utime.h linux/version.h sys/systeminfo.h termios.h)
-AC_HEADER_STDC
-AC_HEADER_TIME
-AC_DECL_SYS_SIGLIST
-
-dnl Some systems have utime.h but don't declare the struct anyplace.
-AC_MSG_CHECKING(for struct utimbuf)
-AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif], [static struct utimbuf x; x.actime = x.modtime;],
-  [AC_MSG_RESULT(yes)
-   AC_DEFINE(HAVE_STRUCT_UTIMBUF)],
-  AC_MSG_RESULT(no))
-
-dnl checks for typedefs
-AC_TYPE_SIGNAL
-
-AC_MSG_CHECKING(for struct timeval)
-AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
-  [AC_MSG_RESULT(yes)
-   HAVE_TIMEVAL=yes
-   AC_DEFINE(HAVE_TIMEVAL)],
-  [AC_MSG_RESULT(no)
-   HAVE_TIMEVAL=no])
-
-dnl checks for structure members
-AC_STRUCT_TM
-AC_STRUCT_TIMEZONE
-
-dnl checks for compiler characteristics
-AC_C_CONST
-
-dnl check for Make feature
-AC_PROG_MAKE_SET
-
-dnl checks for operating system services
-AC_SYS_LONG_FILE_NAMES
-
-#### Choose a window system.
-
-AC_PATH_X
-if test "$no_x" = yes; then
-  window_system=none
-else
-  window_system=x11
-fi
-
-if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
-  LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
-  LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
-fi
-if test "${x_includes}" != NONE && test -n "${x_includes}"; then
-  C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
-fi
-
-if test x"${x_includes}" = x; then
-  bitmapdir=/usr/include/X11/bitmaps
-else
-  # accumulate include directories that have X11 bitmap subdirectories
-  bmd_acc="dummyval"
-  for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
-    if test -d "${bmd}/X11/bitmaps"; then
-      bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
-    elif test -d "${bmd}/bitmaps"; then
-      bmd_acc="${bmd_acc}:${bmd}/bitmaps"
-    fi
-  done
-  if test ${bmd_acc} != "dummyval"; then
-    bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
-  fi
-fi
-
-case "${window_system}" in
-  x11 )
-    HAVE_X_WINDOWS=yes
-    HAVE_X11=yes
-    case "${with_x_toolkit}" in
-      athena | lucid ) USE_X_TOOLKIT=LUCID ;;
-      motif ) USE_X_TOOLKIT=MOTIF ;;
-dnl      open-look ) USE_X_TOOLKIT=OPEN_LOOK ;;
-      no ) USE_X_TOOLKIT=none ;;
-dnl If user did not say whether to use a toolkit,
-dnl make this decision later: use the toolkit if we have X11R5 or newer.
-      * ) USE_X_TOOLKIT=maybe ;;
-    esac
-  ;;
-  none )
-    HAVE_X_WINDOWS=no
-    HAVE_X11=no
-    USE_X_TOOLKIT=none
-  ;;
-esac
-
-### If we're using X11, we should use the X menu package.
-HAVE_MENUS=no
-case ${HAVE_X11} in
-  yes ) HAVE_MENUS=yes ;;
-esac
-
-if test "${opsys}" = "hpux9"; then
-  case "${x_libraries}" in
-    *X11R4* )
-      opsysfile="s/hpux9-x11r4.h"
-      ;;
-  esac
-fi
-
-if test "${opsys}" = "hpux9shr"; then
-  case "${x_libraries}" in
-    *X11R4* )
-      opsysfile="s/hpux9shxr4.h"
-      ;;
-  esac
-fi
-
 #### Extract some information from the operating system and machine files.
 
 AC_CHECKING([the machine- and system-dependent files to find out
@@ -1205,13 +1307,23 @@ configure___ system_malloc=yes
 configure___ system_malloc=no
 #endif
 
+#ifdef USE_MMAP_FOR_BUFFERS
+configure___ use_mmap_for_buffers=yes
+#else
+configure___ use_mmap_for_buffers=no
+#endif
+
 #ifndef C_DEBUG_SWITCH
 #define C_DEBUG_SWITCH -g
 #endif
 
 #ifndef C_OPTIMIZE_SWITCH
+#ifdef __GNUC__
+#define C_OPTIMIZE_SWITCH -O2
+#else
 #define C_OPTIMIZE_SWITCH -O
 #endif
+#endif
 
 #ifndef LD_SWITCH_MACHINE
 #define LD_SWITCH_MACHINE
@@ -1266,26 +1378,7 @@ rm ${tempcname}
 
 ac_link="$ac_link $ld_switch_machine $ld_switch_system"
 
-### 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
-if test "${system_malloc}" = "yes"; then
-  GNU_MALLOC=no
-  GNU_MALLOC_reason="
-  (The GNU allocators don't work with this system configuration.)"
-fi
-
-if test x"${REL_ALLOC}" = x; then
-  REL_ALLOC=${GNU_MALLOC}
-fi
-
-LISP_FLOAT_TYPE=yes
-
-
-#### Add the libraries to LIBS and check for some functions.
+### Make sure subsequent tests use flags consistent with the build flags.
 
 if test x"${OVERRIDE_CPPFLAGS}" != x; then
   CPPFLAGS="${OVERRIDE_CPPFLAGS}"
@@ -1293,37 +1386,293 @@ else
   CPPFLAGS="$c_switch_system $c_switch_machine $CPPFLAGS"
 fi
 
-LIBS="$libsrc_libs $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_CHECK_LIB(dnet, dnet_ntoa)
-dnl This causes -lresolv to get used in subsequent tests,
-dnl which causes failures on some systems such as HPUX 9.
-dnl AC_CHECK_LIB(resolv, gethostbyname)
-
-dnl FIXME replace main with a function we actually want from this library.
-AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
-
-AC_CHECK_LIB(pthreads, cma_open)
+dnl Do this early because it can frob feature test macros for Unix-98 &c.
+AC_SYS_LARGEFILE
 
-AC_MSG_CHECKING(for XFree86)
-if test -d /usr/X386/include; then
-  HAVE_XFREE386=yes
-  : ${C_SWITCH_X_SITE="-I/usr/X386/include"}
-else
-  HAVE_XFREE386=no
+if test "${with_sound}" != "no"; then
+  # Sound support for GNU/Linux and the free BSDs.
+  AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h)
+  # Emulation library used on NetBSD.
+  AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
+  AC_SUBST(LIBSOUND)
 fi
-AC_MSG_RESULT($HAVE_XFREE386)
 
-# Change CFLAGS temporarily so that C_SWITCH_X_SITE gets used
-# for the tests that follow.  We set it back to REAL_CFLAGS later on.
-
-if test "${HAVE_X11}" = "yes"; then
-  DEFS="$C_SWITCH_X_SITE $DEFS"
-  LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
-  LIBS="$LIBX $LIBS"
-  CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
+dnl checks for header files
+AC_CHECK_HEADERS(sys/select.h sys/timeb.h sys/time.h unistd.h utime.h \
+  linux/version.h sys/systeminfo.h termios.h limits.h string.h stdlib.h \
+  termcap.h stdio_ext.h fcntl.h term.h strings.h coff.h)
+AC_HEADER_STDC
+AC_HEADER_TIME
+AC_DECL_SYS_SIGLIST
+AC_HEADER_SYS_WAIT
+
+dnl Some systems have utime.h but don't declare the struct anyplace.
+AC_CACHE_CHECK(for struct utimbuf, emacs_cv_struct_utimbuf,
+AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
+#include <sys/time.h>
+#include <time.h>
+#else
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#endif
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif], [static struct utimbuf x; x.actime = x.modtime;],
+  emacs_cv_struct_utimbuf=yes, emacs_cv_struct_utimbuf=no))
+if test $emacs_cv_struct_utimbuf = yes; then
+  AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1, [Define to 1 if `struct utimbuf' is declared by <utime.h>.])
+fi
+
+dnl checks for typedefs
+AC_TYPE_SIGNAL
+
+dnl Check for speed_t typedef.
+AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t,
+  [AC_TRY_COMPILE([#include <termios.h>], [speed_t x = 1;],
+    emacs_cv_speed_t=yes, emacs_cv_speed_t=no)])
+if test $emacs_cv_speed_t = yes; then
+  AC_DEFINE(HAVE_SPEED_T, 1, 
+          [Define to 1 if `speed_t' is declared by <termios.h>.])
+fi
+
+AC_CACHE_CHECK(for struct timeval, emacs_cv_struct_timeval,
+AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
+#include <sys/time.h>
+#include <time.h>
+#else
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
+  emacs_cv_struct_timeval=yes, emacs_cv_struct_timeval=no))
+HAVE_TIMEVAL=$emacs_cv_struct_timeval
+if test $emacs_cv_struct_timeval = yes; then
+  AC_DEFINE(HAVE_TIMEVAL, 1, [Define to 1 if `struct timeval' is declared by <sys/time.h>.])
+fi
+
+AC_CACHE_CHECK(for struct exception, emacs_cv_struct_exception,
+AC_TRY_COMPILE([#include <math.h>], 
+[static struct exception x; x.arg1 = x.arg2 = x.retval; x.name = ""; x.type = 1;],
+  emacs_cv_struct_exception=yes, emacs_cv_struct_exception=no))
+HAVE_EXCEPTION=$emacs_cv_struct_exception
+if test $emacs_cv_struct_exception != yes; then
+  AC_DEFINE(NO_MATHERR, 1, [Define to 1 if you don't have struct exception in math.h.])
+fi
+
+dnl checks for structure members
+AC_STRUCT_TM
+AC_STRUCT_TIMEZONE
+AC_CHECK_MEMBER(struct tm.tm_gmtoff,
+               [AC_DEFINE(HAVE_TM_GMTOFF, 1,
+                          [Define to 1 if `tm_gmtoff' is member of `struct tm'.])],,
+               [#include <time.h>])
+
+dnl checks for compiler characteristics
+
+dnl Testing __STDC__ to determine prototype support isn't good enough.
+dnl DEC C, for instance, doesn't define it with default options, and
+dnl is used on 64-bit systems (OSF Alphas).  Similarly for volatile
+dnl and void *.
+AC_C_PROTOTYPES
+AC_C_VOLATILE
+AC_C_CONST
+dnl This isn't useful because we can't turn on use of `inline' unless
+dnl the compiler groks `extern inline'.
+dnl AC_C_INLINE
+AC_CACHE_CHECK([for void * support], emacs_cv_void_star,
+  [AC_TRY_COMPILE(, [void * foo;], 
+                   emacs_cv_void_star=yes, emacs_cv_void_star=no)])
+if test $emacs_cv_void_star = yes; then
+  AC_DEFINE(POINTER_TYPE, void)
+else
+  AC_DEFINE(POINTER_TYPE, char)
+fi
+AH_TEMPLATE(POINTER_TYPE,
+           [Define as `void' if your compiler accepts `void *'; otherwise
+            define as `char'.])dnl
+
+dnl check for Make feature
+AC_PROG_MAKE_SET
+
+dnl checks for operating system services
+AC_SYS_LONG_FILE_NAMES
+
+#### Choose a window system.
+
+AC_PATH_X
+if test "$no_x" = yes; then
+  window_system=none
+else
+  window_system=x11
+fi
+
+if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
+  LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
+  LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
+  x_default_search_path=""
+  for x_library in `echo ${x_libraries} | sed -e "s/:/ /g"`; do
+    x_search_path="\
+${x_library}/X11/%L/%T/%N%C%S:\
+${x_library}/X11/%l/%T/%N%C%S:\
+${x_library}/X11/%T/%N%C%S:\
+${x_library}/X11/%L/%T/%N%S:\
+${x_library}/X11/%l/%T/%N%S:\
+${x_library}/X11/%T/%N%S"
+    if test x"${x_default_search_path}" = x; then
+      x_default_search_path=${x_search_path}
+    else
+      x_default_search_path="${x_search_path}:${x_default_search_path}"
+    fi
+  done
+fi
+if test "${x_includes}" != NONE && test -n "${x_includes}"; then
+  C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
+fi
+
+if test x"${x_includes}" = x; then
+  bitmapdir=/usr/include/X11/bitmaps
+else
+  # accumulate include directories that have X11 bitmap subdirectories
+  bmd_acc="dummyval"
+  for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
+    if test -d "${bmd}/X11/bitmaps"; then
+      bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
+    fi
+    if test -d "${bmd}/bitmaps"; then
+      bmd_acc="${bmd_acc}:${bmd}/bitmaps"
+    fi
+  done
+  if test ${bmd_acc} != "dummyval"; then
+    bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
+  fi
+fi
+
+case "${window_system}" in
+  x11 )
+    HAVE_X_WINDOWS=yes
+    HAVE_X11=yes
+    case "${with_x_toolkit}" in
+      athena | lucid ) USE_X_TOOLKIT=LUCID ;;
+      motif ) USE_X_TOOLKIT=MOTIF ;;
+dnl      open-look ) USE_X_TOOLKIT=OPEN_LOOK ;;
+      no ) USE_X_TOOLKIT=none ;;
+dnl If user did not say whether to use a toolkit,
+dnl make this decision later: use the toolkit if we have X11R5 or newer.
+      * ) USE_X_TOOLKIT=maybe ;;
+    esac
+  ;;
+  none )
+    HAVE_X_WINDOWS=no
+    HAVE_X11=no
+    USE_X_TOOLKIT=none
+  ;;
+esac
+
+### If we're using X11, we should use the X menu package.
+HAVE_MENUS=no
+case ${HAVE_X11} in
+  yes ) HAVE_MENUS=yes ;;
+esac
+  
+if test "${opsys}" = "hpux9"; then
+  case "${x_libraries}" in
+    *X11R4* )
+      opsysfile="s/hpux9-x11r4.h"
+      ;;
+  esac
+fi
+
+if test "${opsys}" = "hpux9shr"; then
+  case "${x_libraries}" in
+    *X11R4* )
+      opsysfile="s/hpux9shxr4.h"
+      ;;
+  esac
+fi
+
+### 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
+doug_lea_malloc=yes
+AC_CHECK_FUNC(malloc_get_state, ,doug_lea_malloc=no)
+AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
+AC_CACHE_CHECK(whether __after_morecore_hook exists,
+              emacs_cv_var___after_morecore_hook,
+[AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
+  emacs_cv_var___after_morecore_hook=yes,
+  emacs_cv_var___after_morecore_hook=no)])
+if test $emacs_cv_var___after_morecore_hook = no; then
+  doug_lea_malloc=no
+fi
+if test "${system_malloc}" = "yes"; then
+  GNU_MALLOC=no
+  GNU_MALLOC_reason="
+    (The GNU allocators don't work with this system configuration.)"
+fi
+if test "$doug_lea_malloc" = "yes" ; then
+  if test "$GNU_MALLOC" = yes ; then
+    GNU_MALLOC_reason="
+      (Using Doug Lea's new malloc from the GNU C Library.)"
+  fi
+  AC_DEFINE(DOUG_LEA_MALLOC, 1,
+           [Define to 1 if you are using the GNU C Library.])
+fi
+
+if test x"${REL_ALLOC}" = x; then
+  REL_ALLOC=${GNU_MALLOC}
+fi
+
+dnl For now, need to use an explicit `#define USE_MMAP_FOR_BUFFERS 1'
+dnl the system configuration file (s/*.h) to turn the use of mmap
+dnl in the relocating allocator on.
+
+AC_FUNC_MMAP
+if test $use_mmap_for_buffers = yes; then
+  REL_ALLOC=no
+fi
+
+LIBS="$libsrc_libs $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_CHECK_LIB(dnet, dnet_ntoa)
+dnl This causes -lresolv to get used in subsequent tests,
+dnl which causes failures on some systems such as HPUX 9.
+dnl AC_CHECK_LIB(resolv, gethostbyname)
+
+dnl FIXME replace main with a function we actually want from this library.
+AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
+
+AC_CHECK_LIB(pthreads, cma_open)
+
+AC_MSG_CHECKING(for XFree86 in /usr/X386)
+if test -d /usr/X386/include; then
+  HAVE_XFREE386=yes
+  : ${C_SWITCH_X_SITE="-I/usr/X386/include"}
+else
+  HAVE_XFREE386=no
+fi
+AC_MSG_RESULT($HAVE_XFREE386)
+
+# Change CFLAGS temporarily so that C_SWITCH_X_SITE gets used
+# for the tests that follow.  We set it back to REAL_CFLAGS later on.
+
+REAL_CPPFLAGS="$CPPFLAGS"
+
+if test "${HAVE_X11}" = "yes"; then
+  DEFS="$C_SWITCH_X_SITE $DEFS"
+  LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
+  LIBS="$LIBX $LIBS"
+  CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
+  CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
 
   # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
   # This is handled by LD_SWITCH_X_SITE_AUX during the real build,
@@ -1369,33 +1718,56 @@ if test "${HAVE_X11}" = "yes"; then
     fi
   fi
 
+  # Reportedly, some broken Solaris systems have XKBlib.h but are missing
+  # header files included from there.
+  AC_MSG_CHECKING(for Xkb)
+  AC_TRY_LINK([#include <X11/Xlib.h>
+#include <X11/XKBlib.h>],
+       [XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);],
+       emacs_xkb=yes, emacs_xkb=no)
+  AC_MSG_RESULT($emacs_xkb)
+  if test $emacs_xkb = yes; then
+    AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
+  fi
+
   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
 XScreenNumberOfScreen XSetWMProtocols)
 fi
 
 if test "${window_system}" = "x11"; then
   AC_MSG_CHECKING(X11 version 6)
-  AC_TRY_LINK([#include <X11/Xlib.h>],
+  AC_CACHE_VAL(emacs_cv_x11_version_6,
+  [AC_TRY_LINK([#include <X11/Xlib.h>],
 [#if XlibSpecificationRelease < 6
 fail;
 #endif
-], [AC_MSG_RESULT(6 or newer)
-    AC_DEFINE(HAVE_X11R6)],
-   [AC_MSG_RESULT(before 6)])
+], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
+  if test $emacs_cv_x11_version_6 = yes; then
+    AC_MSG_RESULT(6 or newer)
+    AC_DEFINE(HAVE_X11R6, 1,
+             [Define to 1 if you have the X11R6 or newer version of Xlib.])
+  else
+    AC_MSG_RESULT(before 6)
+  fi
 fi
 
 if test "${window_system}" = "x11"; then
   AC_MSG_CHECKING(X11 version 5)
-  AC_TRY_LINK([#include <X11/Xlib.h>],
+  AC_CACHE_VAL(emacs_cv_x11_version_5,
+  [AC_TRY_LINK([#include <X11/Xlib.h>],
 [#if XlibSpecificationRelease < 5
 fail;
 #endif
-], [AC_MSG_RESULT(5 or newer)
+], emacs_cv_x11_version_5=yes, emacs_cv_x11_version_5=no)])
+  if test $emacs_cv_x11_version_5 = yes; then
+    AC_MSG_RESULT(5 or newer)
     HAVE_X11R5=yes
-    AC_DEFINE(HAVE_X11R5)],
-   [
+    AC_DEFINE(HAVE_X11R5, 1,
+             [Define to 1 if you have the X11R5 or newer version of Xlib.])
+  else
     HAVE_X11R5=no
-    AC_MSG_RESULT(before 5)])
+    AC_MSG_RESULT(before 5)
+  fi
 fi
 
 dnl Do not put whitespace before the #include statements below.
@@ -1403,14 +1775,20 @@ dnl Older compilers (eg sunos4 cc) choke on it.
 if test x"${USE_X_TOOLKIT}" = xmaybe; then
   if test x"${HAVE_X11R5}" = xyes; then
     AC_MSG_CHECKING(X11 version 5 with Xaw)
-    AC_TRY_LINK([
+    AC_CACHE_VAL(emacs_cv_x11_version_5_with_xaw,
+    [AC_TRY_LINK([
 #include <X11/Intrinsic.h>
 #include <X11/Xaw/Simple.h>],
       [],
-      [AC_MSG_RESULT(5 or newer, with Xaw; use toolkit by default)
-       USE_X_TOOLKIT=LUCID],
-      [AC_MSG_RESULT(before 5 or no Xaw; do not use toolkit by default)
-       USE_X_TOOLKIT=none])
+      emacs_cv_x11_version_5_with_xaw=yes,
+      emacs_cv_x11_version_5_with_xaw=no)])
+    if test $emacs_cv_x11_version_5_with_xaw = yes; then
+      AC_MSG_RESULT([5 or newer, with Xaw; use toolkit by default])
+      USE_X_TOOLKIT=LUCID
+    else
+      AC_MSG_RESULT(before 5 or no Xaw; do not use toolkit by default)
+      USE_X_TOOLKIT=none
+    fi
   else
     USE_X_TOOLKIT=none
   fi
@@ -1420,15 +1798,20 @@ X_TOOLKIT_TYPE=$USE_X_TOOLKIT
 
 if test "${USE_X_TOOLKIT}" != "none"; then
   AC_MSG_CHECKING(X11 toolkit version)
-  AC_TRY_LINK([#include <X11/Intrinsic.h>],
+  AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
+  [AC_TRY_LINK([#include <X11/Intrinsic.h>],
 [#if XtSpecificationRelease < 6
 fail;
 #endif
-], [AC_MSG_RESULT(6 or newer)
-    HAVE_X11XTR6=yes
-    AC_DEFINE(HAVE_X11XTR6)],
-   [AC_MSG_RESULT(before 6)
-    HAVE_X11XTR6=no])
+], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
+  HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
+  if test $emacs_cv_x11_toolkit_version_6 = yes; then
+    AC_MSG_RESULT(6 or newer)
+    AC_DEFINE(HAVE_X11XTR6, 1,
+             [Define to 1 if you have the X11R6 or newer version of Xt.])
+  else
+    AC_MSG_RESULT(before 6)
+  fi
 
 dnl If using toolkit, check whether libXmu.a exists.
 dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
@@ -1439,16 +1822,211 @@ dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
     LIBS="-lXt $LIBS"
   fi
   AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
-  LIBS="$OLDLIBS"
+  test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
+fi
+
+# On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
+if test "${HAVE_X11}" = "yes"; then
+  if test "${USE_X_TOOLKIT}" != "none"; then
+    AC_CHECK_LIB(Xext, XShapeQueryExtension)
+  fi
+fi
+
+if test "${USE_X_TOOLKIT}" = "MOTIF"; then
+  AC_CACHE_CHECK(for Motif version 2.1, emacs_cv_motif_version_2_1,
+  [AC_TRY_COMPILE([#include <Xm/Xm.h>],
+    [#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
+int x = 5;
+#else
+Motif version prior to 2.1.
+#endif],
+    emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
+  HAVE_MOTIF_2_1=$emacs_cv_motif_version_2_1
+  if test $emacs_cv_motif_version_2_1 = yes; then
+    HAVE_LIBXP=no
+    AC_DEFINE(HAVE_MOTIF_2_1, 1,
+             [Define to 1 if you have Motif 2.1 or newer.])
+    AC_CHECK_LIB(Xp, XpCreateContext, HAVE_LIBXP=yes)
+    if test ${HAVE_LIBXP} = yes; then
+      AC_DEFINE(HAVE_LIBXP, 1,
+               [Define to 1 if you have the Xp library (-lXp).])
+    fi 
+  fi
+fi
+
+### Is -lXaw3d available?
+HAVE_XAW3D=no
+if test "${HAVE_X11}" = "yes"; then
+  if test "${USE_X_TOOLKIT}" != "none"; then
+    AC_CHECK_HEADER(X11/Xaw3d/Scrollbar.h,
+       AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb, HAVE_XAW3D=yes))
+    if test "${HAVE_XAW3D}" = "yes"; then
+       AC_DEFINE(HAVE_XAW3D, 1,
+                 [Define to 1 if you have the Xaw3d library (-lXaw3d).])
+    fi
+  fi
+fi
+  
+dnl Use toolkit scroll bars if configured for X toolkit and either
+dnl using Motif or Xaw3d is available, and unless
+dnl --with-toolkit-scroll-bars=no was specified.
+
+AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
+           [Define to 1 if we should use toolkit scroll bars.])dnl
+USE_TOOLKIT_SCROLL_BARS=no
+if test "${with_toolkit_scroll_bars}" != "no"; then
+  if test "${USE_X_TOOLKIT}" != "none"; then
+    if test "${USE_X_TOOLKIT}" = "MOTIF"; then
+      AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
+      HAVE_XAW3D=no
+      USE_TOOLKIT_SCROLL_BARS=yes
+    elif test "${HAVE_XAW3D}" = "yes"; then
+      AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
+      USE_TOOLKIT_SCROLL_BARS=yes
+    fi
+  fi
+fi
+
+dnl Don't use X11 input methods if user specifies he doesn't want it
+dnl with `--with-xim=no'.
+
+if test "${with_xim}" != "no"; then
+  AC_DEFINE(USE_XIM, 1,
+           [Define to 1 if we should use XIM, if it is available.])
 fi
 
+### Use -lXpm if available, unless `--with-xpm=no'.
+HAVE_XPM=no
+if test "${HAVE_X11}" = "yes"; then
+  if test "${with_xpm}" != "no"; then
+    AC_CHECK_HEADER(X11/xpm.h,
+      AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11))
+    if test "${HAVE_XPM}" = "yes"; then
+      AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
+      AC_EGREP_CPP(no_return_alloc_pixels,
+      [#include "X11/xpm.h"
+#ifndef XpmReturnAllocPixels
+no_return_alloc_pixels
+#endif
+      ], HAVE_XPM=no, HAVE_XPM=yes)
+
+      if test "${HAVE_XPM}" = "yes"; then
+       AC_MSG_RESULT(yes)
+      else
+       AC_MSG_RESULT(no)
+      fi
+    fi
+  fi
+
+  if test "${HAVE_XPM}" = "yes"; then
+    AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm libary (-lXpm).])
+  fi
+fi
+  
+### Use -ljpeg if available, unless `--with-jpeg=no'.
+HAVE_JPEG=no
+if test "${HAVE_X11}" = "yes"; then
+  if test "${with_jpeg}" != "no"; then
+    dnl Checking for jpeglib.h can lose becsue of a redefinition of
+    dnl  HAVE_STDLIB_H.
+    AC_CHECK_HEADER(jerror.h,
+      AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes))
+  fi
+
+  AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
+  if test "${HAVE_JPEG}" = "yes"; then
+    AC_DEFINE(HAVE_JPEG)
+    AC_EGREP_CPP(
+changequote({, })dnl avoid leadingspace on the next line
+{version= *(6[2-9]|[7-9][0-9])},
+changequote([, ])dnl
+        [#include <jpeglib.h>
+        version=JPEG_LIB_VERSION
+],    
+        AC_DEFINE(HAVE_JPEG),
+        [AC_MSG_WARN([libjpeg found, but not version 6b or later])
+        HAVE_JPEG=no])
+  fi
+fi
+  
+### Use -lpng if available, unless `--with-png=no'.
+HAVE_PNG=no
+if test "${HAVE_X11}" = "yes"; then
+  if test "${with_png}" != "no"; then
+    AC_CHECK_HEADER(png.h,
+      AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm))
+  fi
+
+  if test "${HAVE_PNG}" = "yes"; then
+    AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
+  fi
+fi
+  
+### Use -ltiff if available, unless `--with-tiff=no'.
+HAVE_TIFF=no
+if test "${HAVE_X11}" = "yes"; then
+  if test "${with_tiff}" != "no"; then
+    AC_CHECK_HEADER(tiffio.h,
+      tifflibs="-lz -lm"
+      # At least one tiff package requires the jpeg library.
+      if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
+      AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs))
+  fi
+
+  if test "${HAVE_TIFF}" = "yes"; then
+    AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
+  fi
+fi
+  
+### Use -lgif if available, unless `--with-gif=no'.
+HAVE_GIF=no
+if test "${HAVE_X11}" = "yes"; then
+  if test "${with_gif}" != "no"; then
+    AC_CHECK_HEADER(gif_lib.h,
+# EGifPutExtensionLast only exists from version libungif-4.1.0b1.
+# Earlier versions can crash Emacs.
+      AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes))
+  fi
+
+  if test "${HAVE_GIF}" = "yes"; then
+    AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have the ungif library (-lungif).])
+  fi
+fi
+
+### Use Mac OS X Carbon API to implement GUI.
+HAVE_CARBON=no
+if test "${with_carbon}" != "no"; then
+  AC_CHECK_HEADER(Carbon/Carbon.h, HAVE_CARBON=yes)
+fi
+
+if test "${HAVE_CARBON}" = "yes"; then
+  AC_DEFINE(HAVE_CARBON, 1, [Define to 1 if you are using the Carbon API on Mac OS X.])
+fi
+
+### Use session management (-lSM -lICE) if available
+HAVE_X_SM=no
+if test "${HAVE_X11}" = "yes"; then
+  AC_CHECK_HEADER(X11/SM/SMlib.h,
+    AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, -lICE))
+
+  if test "${HAVE_X_SM}" = "yes"; then
+    AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
+    case "$LIBS" in
+      *-lSM*) ;;
+      *)      LIBS="-lSM -lICE $LIBS" ;;
+    esac
+  fi
+fi
+  
 # If netdb.h doesn't declare h_errno, we must declare it by hand.
-AC_MSG_CHECKING(whether netdb declares h_errno)
-AC_TRY_LINK([#include <netdb.h>],
+AC_CACHE_CHECK(whether netdb declares h_errno,
+              emacs_cv_netdb_declares_h_errno,
+[AC_TRY_LINK([#include <netdb.h>],
   [return h_errno;],
-  [AC_MSG_RESULT(yes)
-   AC_DEFINE(HAVE_H_ERRNO)],
-  [AC_MSG_RESULT(no)])
+  emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
+if test $emacs_cv_netdb_declares_h_errno = yes; then
+  AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
+fi
 
 AC_FUNC_ALLOCA
 
@@ -1456,11 +2034,55 @@ AC_FUNC_ALLOCA
 # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
 AC_CHECK_LIB(m, sqrt)
 
-AC_CHECK_FUNCS(gettimeofday gethostname getdomainname dup2 \
+# Check for mail-locking functions in a "mail" library
+AC_CHECK_LIB(mail, maillock)
+dnl Debian, at least:
+dnl AC_CHECK_LIB(lockfile, maillock, [AC_DEFINE(HAVE_LIBMAIL)])
+AC_CHECK_LIB(lockfile, maillock)
+# If we have the shared liblockfile, assume we must use it for mail
+# locking (e.g. Debian).  If we couldn't link against liblockfile
+# (no liblockfile.a installed), ensure that we don't need to.
+if test "$ac_cv_lib_lockfile_maillock" = no; then
+  dnl This works for files generally, not just executables.
+  dnl Should we look elsewhere for it?  Maybe examine /etc/ld.so.conf?
+  AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
+                /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
+  if test $ac_cv_prog_liblockfile = yes; then
+    AC_MSG_ERROR([Shared liblockfile found but can't link against it.
+This probably means that movemail could lose mail.
+There may be a \`development' package to install containing liblockfile.])
+  else AC_DEFINE(LIBMAIL, -llockfile, [Define to -llockfile if it is usable.])
+  fi
+  else :
+fi
+AC_CHECK_FUNCS(touchlock)
+AC_CHECK_HEADERS(maillock.h)
+
+AC_CHECK_FUNCS(gethostname getdomainname dup2 \
 rename closedir mkdir rmdir sysinfo \
-random lrand48 bcopy bcmp logb frexp fmod ftime res_init setsid \
+random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \
 strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
-utimes setrlimit setpgid getcwd)
+utimes setrlimit setpgid getcwd getwd shutdown strftime getaddrinfo \
+__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
+sendto recvfrom getsockopt setsockopt getsockname getpeername \
+gai_strerror mkstemp getline getdelim)
+
+AC_CHECK_HEADERS(sys/un.h)
+
+AC_FUNC_MKTIME
+if test "$ac_cv_func_working_mktime" = no; then
+  AC_DEFINE(BROKEN_MKTIME, 1, [Define to 1 if the mktime function is broken.])
+fi
+
+AC_FUNC_GETLOADAVG
+
+AC_FUNC_FSEEKO
+
+# UNIX98 PTYs.
+AC_CHECK_FUNCS(grantpt)
+
+# PTY-related GNU extensions.
+AC_CHECK_FUNCS(getpt)
 
 # Check this now, so that we will NOT find the above functions in ncurses.
 # That is because we have not set up to link ncurses in lib-src.
@@ -1468,20 +2090,60 @@ utimes setrlimit setpgid getcwd)
 # than to expect to find it in ncurses.
 AC_CHECK_LIB(ncurses, tparm)
 
+# Do we need the Hesiod library to provide the support routines?
+if test "$with_hesiod" = yes ; then
+  # Don't set $LIBS here -- see comments above.
+  resolv=no
+  AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
+     [AC_CHECK_LIB(resolv, res_send, resolv=yes,
+                 [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
+  if test "$resolv" = yes ; then
+    RESOLVLIB=-lresolv
+    AC_DEFINE(HAVE_LIBRESOLV, 1,
+             [Define to 1 if you have the resolv library (-lresolv).])
+  else
+    RESOLVLIB=
+  fi
+  AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
+       AC_DEFINE(HAVE_LIBHESIOD, 1,
+                 [Define to 1 if you have the hesiod library (-lhesiod).]),
+       :, $RESOLVLIB)])
+fi
+
 # These tell us which Kerberos-related libraries to use.
 if test "${with_kerberos+set}" = set; then
-  AC_CHECK_LIB(krb, krb_get_cred)
-  AC_CHECK_LIB(des, des_cbc_encrypt)
   AC_CHECK_LIB(com_err, com_err)
+  AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt)
+  AC_CHECK_LIB(crypto, mit_des_cbc_encrypt)
+  AC_CHECK_LIB(krb5, krb5_init_context)
+  if test "${with_kerberos5+set}" != set; then
+    AC_CHECK_LIB(des425, des_cbc_encrypt,,
+                AC_CHECK_LIB(des, des_cbc_encrypt))
+    AC_CHECK_LIB(krb4, krb_get_cred,,
+                AC_CHECK_LIB(krb, krb_get_cred))
+  fi
+
+  if test "${with_kerberos5+set}" = set; then
+    AC_CHECK_HEADERS(krb5.h)
+  else
+    AC_CHECK_HEADERS(des.h,,
+                    [AC_CHECK_HEADERS(kerberosIV/des.h,,
+                                      [AC_CHECK_HEADERS(kerberos/des.h)])])
+    AC_CHECK_HEADERS(krb.h,,
+                    [AC_CHECK_HEADERS(kerberosIV/krb.h,,
+                                      [AC_CHECK_HEADERS(kerberos/krb.h)])])
+  fi
+  AC_CHECK_HEADERS(com_err.h)
 fi
 
+# Solaris requires -lintl if you want strerror (which calls dgettext)
+# to return localized messages.
+AC_CHECK_LIB(intl, dgettext)
+
 AC_MSG_CHECKING(whether localtime caches TZ)
 AC_CACHE_VAL(emacs_cv_localtime_cache,
 [if test x$ac_cv_func_tzset = xyes; then
 AC_TRY_RUN([#include <time.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
 extern char **environ;
 unset_TZ ()
 {
@@ -1519,12 +2181,46 @@ else
 fi])dnl
 AC_MSG_RESULT($emacs_cv_localtime_cache)
 if test $emacs_cv_localtime_cache = yes; then
-  AC_DEFINE(LOCALTIME_CACHE)
+  AC_DEFINE(LOCALTIME_CACHE, 1,
+           [Define to 1 if localtime caches TZ.])
 fi
 
 if test "x$HAVE_TIMEVAL" = xyes; then
-AC_MSG_CHECKING(whether gettimeofday can't accept two arguments)
-AC_TRY_LINK([
+  AC_CHECK_FUNCS(gettimeofday)
+  if test $ac_cv_func_gettimeofday = yes; then
+    AC_CACHE_CHECK(whether gettimeofday can accept two arguments,
+                  emacs_cv_gettimeofday_two_arguments,
+    [AC_TRY_COMPILE([
+#ifdef TIME_WITH_SYS_TIME
+#include <sys/time.h>
+#include <time.h>
+#else
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#endif],
+      [struct timeval time;
+       gettimeofday (&time, 0);],
+      emacs_cv_gettimeofday_two_arguments=yes,
+      emacs_cv_gettimeofday_two_arguments=no)])
+    if test $emacs_cv_gettimeofday_two_arguments = no; then
+      AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT, 1,
+               [Define to 1 if gettimeofday accepts only one argument.])
+    fi
+  fi
+fi
+
+dnl Note that AC_STRUCT_TIMEZONE doesn't do what you might expect.
+if test "$ac_cv_func_gettimeofday" = yes; then
+  AC_CACHE_CHECK([for struct timezone], emacs_cv_struct_timezone,
+    [AC_TRY_COMPILE([#include <sys/time.h>],
+    [struct timezone tz;],
+    dnl It may be that we can't call gettimeofday with a non-null pointer,
+    dnl even though we have struct timezone (e.g. HPUX).  In that case
+    dnl we'll lie about struct timezone.
+    [AC_TRY_RUN([
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
 #include <time.h>
@@ -1535,15 +2231,14 @@ AC_TRY_LINK([
 #include <time.h>
 #endif
 #endif
-  ],
-  [
+main () {
   struct timeval time;
   struct timezone dummy;
-  gettimeofday (&time, &dummy);
-],
-  [AC_MSG_RESULT(no)],
-  [AC_MSG_RESULT(yes)
-   AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
+  exit (gettimeofday (&time, &dummy));
+}],
+      emacs_cv_struct_timezone=yes,
+      emacs_cv_struct_timezone=no, emacs_cv_struct_timezone=yes)],
+    emacs_cv_struct_timezone=no)])
 fi
 
 ok_so_far=yes
@@ -1555,15 +2250,31 @@ if test $ok_so_far = yes; then
   AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
 fi
 if test $ok_so_far = yes; then
-  AC_DEFINE(HAVE_INET_SOCKETS)
+  AC_DEFINE(HAVE_INET_SOCKETS, 1,
+           [Define to 1 if you have inet sockets.])
 fi
 
 if test -f /usr/lpp/X11/bin/smt.exp; then
-  AC_DEFINE(HAVE_AIX_SMT_EXP)
+  AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
+           [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
+fi
+
+AC_MSG_CHECKING(whether system supports dynamic ptys)
+if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
+else
+  AC_MSG_RESULT(no)
 fi
 
+AC_FUNC_FORK
+
+# Fixme: This should be replaced when we have autoconf 2.14.
+AC_SIZE_T
+
 # Set up the CFLAGS for real compilation, so we can substitute it.
 CFLAGS="$REAL_CFLAGS"
+CPPFLAGS="$REAL_CPPFLAGS"
 
 changequote(, )dnl
 #### Find out which version of Emacs this is.
@@ -1591,11 +2302,13 @@ AC_SUBST(infodir)
 AC_SUBST(lispdir)
 AC_SUBST(locallisppath)
 AC_SUBST(lisppath)
+AC_SUBST(x_default_search_path)
 AC_SUBST(etcdir)
-AC_SUBST(lockdir)
 AC_SUBST(archlibdir)
 AC_SUBST(docdir)
 AC_SUBST(bitmapdir)
+AC_SUBST(gamedir)
+AC_SUBST(gameuser)
 AC_SUBST(c_switch_system)
 AC_SUBST(c_switch_machine)
 AC_SUBST(LD_SWITCH_X_SITE)
@@ -1605,42 +2318,299 @@ AC_SUBST(CFLAGS)
 AC_SUBST(X_TOOLKIT_TYPE)
 AC_SUBST(machfile)
 AC_SUBST(opsysfile)
-AC_SUBST(RANLIB)
-
-AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}")
-AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}")
-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(LD_SWITCH_X_SITE_AUX, ${LD_SWITCH_X_SITE_AUX})
-AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,  ${C_SWITCH_X_SITE})
-AC_DEFINE_UNQUOTED(UNEXEC_SRC,       ${UNEXEC_SRC})
+AC_SUBST(GETLOADAVG_LIBS)
+
+AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
+                  [Define to the canonical Emacs configuration name.])
+AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}",
+                  [Define to the options passed to configure.])
+AC_DEFINE_UNQUOTED(config_machfile,  "${machfile}",
+                  [Define to the used machine dependent file.])
+AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
+                  [Define to the used os dependent file.])
+AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE},
+[Define LD_SWITCH_X_SITE to contain any special flags your loader
+ may need to deal with X Windows.  For instance, if you've defined
+ HAVE_X_WINDOWS above and your X libraries aren't in a place that
+ your loader can find on its own, you might want to add "-L/..." or
+ something similar.])
+AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, ${LD_SWITCH_X_SITE_AUX},
+                  [Define LD_SWITCH_X_SITE_AUX with an -R option
+                   in case it's needed (for Solaris, for example).])
+AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,  ${C_SWITCH_X_SITE},
+[Define C_SWITCH_X_SITE to contain any special flags your compiler
+ may need to deal with X Windows.  For instance, if you've defined
+ HAVE_X_WINDOWS above and your X include files aren't in a place
+ that your compiler can find on its own, you might want to add
+ "-I/..." or something similar.])
+AC_DEFINE_UNQUOTED(UNEXEC_SRC,       ${UNEXEC_SRC},
+                  [Define to the unexec source file name.])
 
 if test "${HAVE_X_WINDOWS}" = "yes" ; then
-  AC_DEFINE(HAVE_X_WINDOWS)
+  AC_DEFINE(HAVE_X_WINDOWS, 1,
+           [Define to 1 if you want to use the X window system.])
 fi
 if test "${USE_X_TOOLKIT}" != "none" ; then
-  AC_DEFINE(USE_X_TOOLKIT)
+  AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
 fi
 if test "${HAVE_X11}" = "yes" ; then
-  AC_DEFINE(HAVE_X11)
+  AC_DEFINE(HAVE_X11, 1,
+           [Define to 1 if you want to use version 11 of X windows.
+            Otherwise, Emacs expects to use version 10.])
 fi
 if test "${HAVE_XFREE386}" = "yes" ; then
-  AC_DEFINE(HAVE_XFREE386)
+  AC_DEFINE(HAVE_XFREE386, 1, [Define to 1 if you're using XFree386.])
 fi
 if test "${HAVE_MENUS}" = "yes" ; then
-  AC_DEFINE(HAVE_MENUS)
+  AC_DEFINE(HAVE_MENUS, 1,
+           [Define to 1 if you have mouse menus.
+            (This is automatic if you use X, but the option to specify it remains.)
+            It is also defined with other window systems that support xmenu.c.])
 fi
 if test "${GNU_MALLOC}" = "yes" ; then
-  AC_DEFINE(GNU_MALLOC)
+  AC_DEFINE(GNU_MALLOC, 1,
+           [Define to 1 if you want to use the GNU memory allocator.])
 fi
 if test "${REL_ALLOC}" = "yes" ; then
-  AC_DEFINE(REL_ALLOC)
-fi
-if test "${LISP_FLOAT_TYPE}" = "yes" ; then
-  AC_DEFINE(LISP_FLOAT_TYPE)
+  AC_DEFINE(REL_ALLOC, 1,
+           [Define REL_ALLOC if you want to use the relocating allocator for
+            buffer space.])
 fi
 
+AC_CHECK_HEADERS(nlist.h, [AC_DEFINE(NLIST_STRUCT, 1,
+                 [Define to 1 if you have <nlist.h>.])])
+
+AH_TOP([/* GNU Emacs site configuration template file.  -*- C -*-
+   Copyright (C) 1988, 1993, 1994, 1999, 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+
+/* No code in Emacs #includes config.h twice, but some of the code
+   intended to work with other packages as well (like gmalloc.c) 
+   think they can include it as many times as they like.  */
+#ifndef EMACS_CONFIG_H
+#define EMACS_CONFIG_H
+])dnl
+
+AH_BOTTOM([
+/* If we're using any sort of window system, define some consequences.  */
+#ifdef HAVE_X_WINDOWS
+#define HAVE_WINDOW_SYSTEM
+#define MULTI_KBOARD
+#define HAVE_MOUSE
+#endif
+
+/* If we're using the Carbon API on Mac OS X, define a few more
+   variables as well.  */
+#ifdef HAVE_CARBON
+#define HAVE_WINDOW_SYSTEM
+#define HAVE_MOUSE
+#define HAVE_MENUS
+#endif
+
+/* Define USER_FULL_NAME to return a string
+   that is the user's full name.
+   It can assume that the variable `pw'
+   points to the password file entry for this user.
+
+   At some sites, the pw_gecos field contains
+   the user's full name.  If neither this nor any other
+   field contains the right thing, use pw_name,
+   giving the user's login name, since that is better than nothing.  */
+#define USER_FULL_NAME pw->pw_gecos
+
+/* Define AMPERSAND_FULL_NAME if you use the convention
+   that & in the full name stands for the login id.  */
+/* Turned on June 1996 supposing nobody will mind it.  */
+#define AMPERSAND_FULL_NAME
+
+/* Define HAVE_SOUND if we have sound support.  We know it works
+   and compiles only on the specified platforms.   For others,
+   it probably doesn't make sense to try.  */
+
+#if defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
+#ifdef HAVE_MACHINE_SOUNDCARD_H
+#define HAVE_SOUND 1
+#endif
+#ifdef HAVE_SYS_SOUNDCARD_H
+#define HAVE_SOUND 1
+#endif
+#ifdef HAVE_SOUNDCARD_H
+#define HAVE_SOUND 1
+#endif
+#endif /* __FreeBSD__ || __NetBSD__ || __linux__  */
+
+/* If using GNU, then support inline function declarations. */
+/* Don't try to switch on inline handling as detected by AC_C_INLINE
+   generally, because even if non-gcc compilers accept `inline', they
+   may reject `extern inline'.  */
+#ifdef __GNUC__
+#define INLINE __inline__
+#else
+#define INLINE
+#endif
+
+/* Include the os and machine dependent files.  */
+#include config_opsysfile
+#include config_machfile
+
+/* Load in the conversion definitions if this system
+   needs them and the source file being compiled has not
+   said to inhibit this.  There should be no need for you
+   to alter these lines.  */
+
+#ifdef SHORTNAMES
+#ifndef NO_SHORTNAMES
+#include "../shortnames/remap.h"
+#endif /* not NO_SHORTNAMES */
+#endif /* SHORTNAMES */
+
+/* If no remapping takes place, static variables cannot be dumped as
+   pure, so don't worry about the `static' keyword. */
+#ifdef NO_REMAP
+#undef static
+#endif
+
+/* Define `subprocesses' should be defined if you want to
+   have code for asynchronous subprocesses
+   (as used in M-x compile and M-x shell).
+   These do not work for some USG systems yet;
+   for the ones where they work, the s/SYSTEM.h file defines this flag.  */
+
+#ifndef VMS
+#ifndef USG
+/* #define subprocesses */
+#endif
+#endif
+
+/* SIGTYPE is the macro we actually use.  */
+#ifndef SIGTYPE
+#define SIGTYPE RETSIGTYPE
+#endif
+
+#ifdef emacs /* Don't do this for lib-src.  */
+/* Tell regex.c to use a type compatible with Emacs.  */
+#define RE_TRANSLATE_TYPE Lisp_Object
+#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
+#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0)
+#endif
+
+/* Avoid link-time collision with system mktime if we will use our own.  */
+#if ! HAVE_MKTIME || BROKEN_MKTIME
+#define mktime emacs_mktime
+#endif
+
+/* The rest of the code currently tests the CPP symbol BSTRING.
+   Override any claims made by the system-description files.
+   Note that on some SCO version it is possible to have bcopy and not bcmp.  */
+#undef BSTRING
+#if defined (HAVE_BCOPY) && defined (HAVE_BCMP)
+#define BSTRING
+#endif
+
+/* Some of the files of Emacs which are intended for use with other
+   programs assume that if you have a config.h file, you must declare
+   the type of getenv.
+
+   This declaration shouldn't appear when alloca.s or Makefile.in
+   includes config.h.  */
+#ifndef NOT_C_CODE
+extern char *getenv ();
+#endif
+
+#endif /* EMACS_CONFIG_H */
+
+/* These default definitions are good for almost all machines.
+   The exceptions override them in m/MACHINE.h.  */
+
+#ifndef BITS_PER_CHAR
+#define BITS_PER_CHAR 8
+#endif
+
+#ifndef BITS_PER_SHORT
+#define BITS_PER_SHORT 16
+#endif
+
+/* Note that lisp.h uses this in a preprocessor conditional, so it
+   would not work to use sizeof.  That being so, we do all of them
+   without sizeof, for uniformity's sake.  */
+#ifndef BITS_PER_INT
+#define BITS_PER_INT 32
+#endif
+
+#ifndef BITS_PER_LONG
+#ifdef _LP64
+#define BITS_PER_LONG 64
+#else
+#define BITS_PER_LONG 32
+#endif
+#endif
+
+/* Define if the compiler supports function prototypes.  It may do so
+   but not define __STDC__ (e.g. DEC C by default) or may define it as
+   zero.  */
+#undef PROTOTYPES
+/* For mktime.c:  */
+#ifndef __P
+# if defined PROTOTYPES
+#  define __P(args) args
+# else
+#  define __P(args) ()
+# endif  /* GCC.  */
+#endif /* __P */
+
+
+/* Don't include "string.h" or <stdlib.h> in non-C code.  */
+#ifndef NOT_C_CODE
+#ifdef HAVE_STRING_H
+#include "string.h"
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#endif
+
+/* Define HAVE_X_I18N if we have usable i18n support.  */
+
+#ifdef HAVE_X11R6
+#define HAVE_X_I18N
+#elif defined HAVE_X11R5 && !defined X11R5_INHIBIT_I18N
+#define HAVE_X_I18N
+#endif
+
+/* Define HAVE_X11R6_XIM if we have usable X11R6-style XIM support.  */
+
+#if defined HAVE_X11R6 && !defined INHIBIT_X11R6_XIM
+#define HAVE_X11R6_XIM
+#endif
+
+/* Should we enable expensive run-time checking of data types?  */
+#undef ENABLE_CHECKING
+
+#if defined __GNUC__ && (__GNUC__ > 2 \
+                         || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
+#define NO_RETURN      __attribute__ ((__noreturn__))
+#else
+#define NO_RETURN      /* nothing */
+#endif
+])dnl
+
 #### Report on what we decided to do.
 echo "
 Configured for \`${canonical}'.
@@ -1650,9 +2620,11 @@ Configured for \`${canonical}'.
         \`${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}
+  Should Emacs use a relocating allocator for buffers?    ${REL_ALLOC}
+  Should Emacs use mmap(2) for buffer allocation?         $use_mmap_for_buffers
   What window system should Emacs use?                    ${window_system}
-  What toolkit should Emacs use?                          ${USE_X_TOOLKIT}"
+  What toolkit should Emacs use?                          ${USE_X_TOOLKIT}
+  Should Emacs use a shared game state directory?         ${gamedir}"
 
 if test -n "${x_includes}"; then
 echo "  Where do we find X Windows header files?                ${x_includes}"
@@ -1665,6 +2637,13 @@ else
 echo "  Where do we find X Windows libraries?                   Standard dirs"
 fi
 
+echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
+echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
+echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
+echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
+echo "  Does Emacs use -lungif?                                 ${HAVE_GIF}"
+echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
+echo "  Does Emacs use X toolkit scroll bars?                   ${USE_TOOLKIT_SCROLL_BARS}"
 echo
 
 # Remove any trailing slashes in these variables.
@@ -1675,11 +2654,22 @@ test "${exec_prefix}" != NONE &&
   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
 changequote([, ])dnl
 
+## Check if the C preprocessor will convert `..' to `. .'.  If so, set
+## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
+## from Makefile.c can correctly provide the arg `-traditional' to the
+## C preprocessor.
+
+AC_EGREP_CPP(yes..yes,
+       [yes..yes],
+       CPP_NEED_TRADITIONAL=no,
+       CPP_NEED_TRADITIONAL=yes)
+
 AC_OUTPUT(Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile \
-       man/Makefile lwlib/Makefile src/Makefile.c:src/Makefile.in, [
+       man/Makefile lwlib/Makefile src/Makefile.c:src/Makefile.in \
+       lisp/Makefile lispref/Makefile lispintro/Makefile leim/Makefile, [
 
 ### Make the necessary directories, if they don't exist.
-for dir in cpp etc lisp ; do
+for dir in etc lisp ; do
   test -d ${dir} || mkdir ${dir}
 done
 
@@ -1700,8 +2690,15 @@ sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/  *$//' \
 `"
 changequote([, ])dnl
 
-echo creating src/paths.h
-make paths-force
+echo creating src/epaths.h
+${MAKE-make} epaths-force
+
+# As of 2000-11-19, newest development versions of GNU cpp preprocess
+# `..' to `. .'  unless invoked with -traditional
+
+if test "x$GCC" = xyes && test "x$CPP_NEED_TRADITIONAL" = xyes; then
+  CPPFLAGS="$CPPFLAGS -traditional"
+fi
 
 echo creating lib-src/Makefile
 ( cd lib-src
@@ -1709,9 +2706,9 @@ echo creating lib-src/Makefile
   sed -e '/start of cpp stuff/q' \
       < Makefile.c > junk1.c
   sed -e '1,/start of cpp stuff/d'\
-      -e 's@/\*\*/#\(.*\)$@/* \1 */@' \
+      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
       < Makefile.c > junk.c
-  $CPP $undefs -I. -I$top_srcdir/src $CPPFLAGS junk.c | \
+  $CPP $undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
       sed -e 's/^ /    /' -e '/^#/d' -e '/^[   \f]*$/d' > junk2.c
   cat junk1.c junk2.c > Makefile.new
   rm -f junk.c junk1.c junk2.c
@@ -1725,9 +2722,9 @@ echo creating src/Makefile
   sed -e '/start of cpp stuff/q' \
       < Makefile.c > junk1.c
   sed -e '1,/start of cpp stuff/d'\
-      -e 's@/\*\*/#\(.*\)$@/* \1 */@' \
+      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
       < Makefile.c > junk.c
-  $CPP $undefs -I. -I$top_srcdir/src $CPPFLAGS junk.c | \
+  $CPP $undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
       sed -e 's/^ /    /' -e '/^#/d' -e '/^[   \f]*$/d' > junk2.c
   cat junk1.c junk2.c > Makefile.new
   rm -f junk.c junk1.c junk2.c
@@ -1735,9 +2732,13 @@ echo creating src/Makefile
   mv -f Makefile.new Makefile
 )
 
-if test ! -f src/.gdbinit && test -f $top_srcdir/src/.gdbinit; then
+if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
   echo creating src/.gdbinit
-  echo source $top_srcdir/src/.gdbinit > src/.gdbinit
+  echo source $srcdir/src/.gdbinit > src/.gdbinit
 fi
 
-], [CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
+# This is how we know whether to re-run configure in certain cases.
+touch src/config.stamp
+
+], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS"])
+