XEmacs 21.2.22 "Mercedes".
[chise/xemacs-chise.git.1] / configure.in
index 9b815df..2962071 100644 (file)
@@ -7,6 +7,7 @@ define([AC_INIT_NOTICE],
 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
 #### Copyright (C) 1995, 1996 Ben Wing.
+#### Copyright (C) 1998, 1999 J. Kean Johnston.
 
 ### Don't edit this script!
 ### This script was automatically generated by the `autoconf' program
@@ -230,7 +231,7 @@ define([XE_PREPEND],
  if test "$extra_verbose" = "yes"; then echo "    Prepending \"[$1]\" to \$[$2]"; fi])
 
 dnl XE_DIE(message)
-define([XE_DIE], [{ echo $1 >&2; exit 1; }])
+define([XE_DIE], [{ echo "Error:" $1 >&2; exit 1; }])
 
 dnl XE_STRIP_4TH_COMPONENT(var)
 dnl Changes i986-pc-linux-gnu to i986-pc-linux, as God (not RMS) intended.
@@ -344,25 +345,32 @@ datadir='${prefix}/lib'
 statedir='${prefix}/lib'
 libdir='${exec_prefix}/lib'
 mandir='${prefix}/man/man1'
-infodir='${datadir}/${PROGNAME}-${version}/info'
+inststaticdir='${PROGNAME}'
+instvardir='${PROGNAME}-${version}'
+infodir='${datadir}/${instvardir}/info'
 infopath=''
 install_pp=''
-lispdir='${datadir}/${PROGNAME}-${version}/lisp'
-dnl sitelispdir='${datadir}/xemacs/site-lisp'
-pkgdir='${datadir}/${PROGNAME}-${version}/lisp'
+lispdir='${datadir}/${instvardir}/lisp'
+moduledir='${datadir}/${instvardir}/${configuration}/modules'
+sitelispdir='${datadir}/${inststaticdir}/site-lisp'
+sitemoduledir='${datadir}/${inststaticdir}/site-modules'
+pkgdir='${datadir}/${instvardir}/lisp'
 package_path=''
-etcdir='${datadir}/${PROGNAME}-${version}/etc'
-lockdir='${statedir}/${PROGNAME}/lock'
-archlibdir='${libdir}/${PROGNAME}-${version}/${configuration}'
+etcdir='${datadir}/${instvardir}/etc'
+lockdir='${statedir}/${inststaticdir}/lock'
+archlibdir='${datadir}/${instvardir}/${configuration}'
+docdir='${archlibdir}'
+with_prefix='yes'
 with_site_lisp='no'
+with_site_modules='yes'
 with_menubars=''
 with_scrollbars=''
+with_widgets=''
 with_dialogs=''
 with_file_coding=''
 dnl const_is_losing is removed - we rely on AC_C_CONST instead.
 dnl We accept (and ignore) the --const-is-losing option for compatibility.
 dnl const_is_losing='yes'
-puresize=''
 cpp='' cppflags='' libs='' ldflags=''
 dynamic=''
 with_x11=''
@@ -380,6 +388,7 @@ with_toolbars=""
 with_tty=""
 use_union_type="no"
 with_dnet=""
+pdump="no"
 
 dnl ------------------
 dnl Options Processing
@@ -460,6 +469,8 @@ while test $# != 0; do
 
       dnl Process (many) boolean options
        with_site_lisp  | \
+       with_prefix     | \
+       with_site_modules | \
        with_x          | \
        with_x11        | \
        with_msw        | \
@@ -478,7 +489,7 @@ while test $# != 0; do
        with_jpeg       | \
        with_png        | \
        with_tiff       | \
-       with_session    | \
+       with_wmcommand  | \
        with_xmu        | \
        with_purify     | \
        with_quantify   | \
@@ -506,14 +517,12 @@ while test $# != 0; do
        const_is_losing | \
        usage_tracking  | \
        use_union_type  | \
+       pdump           | \
        debug           | \
        use_assertions  | \
-       gung_ho         | \
-       use_minimal_tagbits                     | \
-       use_indexed_lrecord_implementation      | \
        memory_usage_stats | \
        with_clash_detection | \
-       with_shlib | \
+       with_modules | \
        no_doc_file )
          dnl Make sure the value given was either "yes" or "no".
          case "$val" in
@@ -524,7 +533,7 @@ while test $# != 0; do
          eval "$opt=\"$val\"" ;;
 
 
-       dnl Options that take a user-supplied value, as in --puresize=8000000
+       dnl Options that take a user-supplied value, as in --x-includes=/usr/X11R6/include
        dnl The cache-file option is ignored (for compatibility with other configures)
        srcdir          | \
        compiler        | \
@@ -533,7 +542,6 @@ while test $# != 0; do
        cppflags        | \
        libs            | \
        ldflags         | \
-       puresize        | \
        cache_file      | \
        native_sound_lib| \
        site_lisp       | \
@@ -574,20 +582,20 @@ while test $# != 0; do
         "with_database" )
          with_database_berkdb=no
          with_database_dbm=no
-         with_database_gnudbm=no
+         with_database_gdbm=no
          for x in `echo "$val" | sed -e 's/,/ /g'` ; do
            case "$x" in
-               no ) ;;
-               b | be | ber | berk | berkd | berkdb )  with_database_berkdb=yes ;;
-               d | db | dbm )                          with_database_dbm=yes    ;;
-               g | gn | gnu | gnud | gnudb | gnudbm )  with_database_gnudbm=yes ;;
-               * ) USAGE_ERROR(["The \`--$optname' option value
+             no ) ;;
+             b | be | ber | berk | berkd | berkdb )       with_database_berkdb=yes ;;
+             d | db | dbm )                               with_database_dbm=yes    ;;
+             g | gn | gnu | gnud | gnudb | gnudbm | gdbm) with_database_gdbm=yes   ;;
+             * ) USAGE_ERROR(["The \`--$optname' option value
   must be either \`no' or a comma-separated list
   of one or more of \`berkdb' and either \`dbm' or \`gnudbm'."]) ;;
             esac
          done
-         if test "$with_database_dbm"    = "yes" -a \
-                 "$with_database_gnudbm" = "yes"; then
+         if test "$with_database_dbm"  = "yes" -a \
+                 "$with_database_gdbm" = "yes"; then
          USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified
   with the \`--$optname' option.")
          fi
@@ -595,18 +603,39 @@ while test $# != 0; do
 
         dnl Has the user requested sound support?
        "with_sound" )
-         dnl value can be native, nas or both. yes is allowed
-         dnl as a backwards compatible synonym for native
-         case "$val" in
-           y | ye | yes )                      val=native ;;
-           n | no | non | none )               val=no;;
-           na | nat | nati | nativ | native )  val=native  ;;
-           ne | net | neta | netau | netaud | netaudi | netaudio | nas ) val=nas  ;;
-           b | bo | bot | both )               val=both;;
-           * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
-  \`native', \`nas', \`both', or \`none'."]) ;;
-         esac
-          eval "$opt=\"$val\""
+       dnl values is a subset of all,native,nas,esd
+        dnl or their negatives: none,nonative,nonas,noesd
+         for x in `echo "$val" | sed -e 's/,/ /g'` ; do
+           case "$x" in
+             dnl all and none are only permitted as the first in the list.
+             n | no | non | none ) new_sdefault=no ;;
+             a | al | all | both ) new_sdefault=yes ;;
+
+             native )       with_native_sound=yes ;;
+             nonative )     with_native_sound=no ;;
+
+             nas )          with_nas_sound=yes ;;
+             nonas )        with_nas_sound=no ;;
+
+             esd )          with_esd=yes ;;
+             noesd )        with_esh=no ;;
+
+             * ) bogus_sound=yes ;;
+           esac
+           if test "$bogus_sound" -o \
+                \( -n "$new_sdefault" -a -n "$sound_notfirst" \) ; then
+               types="\`all', \`none', \`(no)native', \`no(nas)', \`(no)esd'."
+               USAGE_ERROR(["Valid types for the \`--$optname' option are:
+  $types.
+The default is native,esd."])
+           elif test -n "$new_sdefault" ; then
+               with_native_sound=$new_sdefault
+               with_nas_sound=$new_sdefault
+               with_esd=$new_sdefault
+               new_sdefault=   # reset this
+           fi
+           sound_notfirst=true
+         done
         ;;
 
         dnl Has the user requested XIM support?
@@ -661,14 +690,17 @@ while test $# != 0; do
              malloc )        error_check_malloc=yes ;;
              nomalloc )      error_check_malloc=no ;;
 
+             byte_code )     error_check_byte_code=yes ;;
+             nobyte_code )   error_check_byte_code=no ;;
+
              * ) bogus_error_check=yes ;;
            esac
            if test "$bogus_error_check" -o \
                 \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
                if test "$error_check_default" = yes ; then
-                 types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'."
+                 types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', and \`nobyte-code'."
                else
-                 types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'."
+                 types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', and \`byte-code'."
                fi
                USAGE_ERROR(["Valid types for the \`--$optname' option are:
   $types."])
@@ -678,6 +710,7 @@ while test $# != 0; do
                error_check_bufpos=$new_default
                error_check_gc=$new_default
                error_check_malloc=$new_default
+               error_check_byte_code=$new_default
                new_default=    # reset this
            fi
            echeck_notfirst=true
@@ -705,8 +738,11 @@ while test $# != 0; do
            dnl You need to synchronize this with the way the
            dnl default values are built.
           case "$opt" in
+            dnl prefix is taken care of by --with-prefix
+            exec_prefix ) AC_DEFINE(EXEC_PREFIX_USER_DEFINED) ;;
              lispdir ) AC_DEFINE(LISPDIR_USER_DEFINED) ;;
-dnl             sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
+             sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
+             moduledir ) AC_DEFINE(MODULEDIR_USER_DEFINED) ;;
              etcdir  )  AC_DEFINE(ETCDIR_USER_DEFINED) ;;
              infodir ) AC_DEFINE(INFODIR_USER_DEFINED) ;;
              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
@@ -714,8 +750,10 @@ dnl             sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
              datadir )
                AC_DEFINE(INFODIR_USER_DEFINED)
                AC_DEFINE(LISPDIR_USER_DEFINED)
+            AC_DEFINE(MODULEDIR_USER_DEFINED)
                AC_DEFINE(ETCDIR_USER_DEFINED) ;;
              statedir | lockdir ) AC_DEFINE(LOCKDIR_USER_DEFINED) ;;
+            docdir ) AC_DEFINE(DOCDIR_USER_DEFINED) ;;
              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
            esac
        ;;
@@ -729,7 +767,8 @@ dnl             sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
        dnl Has the user specified the toolkit(s) to use for GUI elements?
        "with_menubars"   | \
        "with_scrollbars" | \
-       "with_dialogs" )
+       "with_dialogs" | \
+       "with_widgets" )
          case "$val" in
            l | lu | luc | luci | lucid )               val=lucid  ;;
            m | mo | mot | moti | motif )               val=motif  ;;
@@ -743,6 +782,8 @@ dnl             sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
        ;;
 
        dnl Obsolete legacy argument?  Warn, but otherwise ignore.
+       "use_minimal_tagbits" | \
+       "use_indexed_lrecord_implementation" | \
        "run_in_place"  | \
        "with_gnu_make" )
          AC_MSG_WARN([Obsolete option \`--$optname' ignored.])
@@ -787,19 +828,6 @@ if test "$with_purify" = "yes" -o "$with_quantify" = "yes"; then
   test "$with_system_malloc" = "default" && with_system_malloc=yes
 fi
 
-dnl --gung-ho=val is a synonym for
-dnl --use-minimal-tagbits=val --use-indexed-lrecord-implementation=val
-if test -n "$gung_ho"; then
-  test -z "$use_minimal_tagbits" && use_minimal_tagbits="$gung_ho"
-  test -z "$use_indexed_lrecord_implementation" && \
-    use_indexed_lrecord_implementation="$gung_ho"
-fi
-if test "$use_minimal_tagbits" = "no"; then
-  test "$with_dlmalloc" = "yes" && \
-    USAGE_ERROR("--with-dlmalloc requires --use-minimal-tagbits")
-  with_dlmalloc=no
-fi
-
 dnl XE_CHECK_FEATURE_DEPENDENCY(feature1, feature2)
 define([XE_CHECK_FEATURE_DEPENDENCY],
 [if test "$with_$1 $with_$2" = "yes no"; then
@@ -869,13 +897,22 @@ for dir in lisp etc man info; do
   fi
 done
 
+dnl Do our best to deal with automounter brokenness
+dnl CANONICALIZE_PATH(varname)
+define([CANONICALIZE_PATH],
+[if test -d "/net"; then
+  if test -d "/tmp_mnt/net"; then tdir="tmp_mnt/net"; else tdir="tmp_mnt"; fi
+  $1=`echo "[$]$1" | \
+   sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e "s|^/amd/|/net/|"`
+fi])dnl
+
 dnl Calculate canonical name for blddir (i.e. current directory).
 dnl PWD may already be the preferable absolute name for ".",
 dnl but we can't trust it - it is sometimes inaccurate.
 absolute_pwd="`pwd`";
 if test -n "$PWD" -a "`cd $PWD && pwd`" = "$absolute_pwd"
 then blddir="$PWD"
-else blddir="$absolute_pwd"
+else blddir="$absolute_pwd"; CANONICALIZE_PATH(blddir)
 fi
 AC_SUBST(blddir)
 
@@ -885,7 +922,7 @@ dnl give you automounter prefixes, which can go away.
 case "$srcdir" in
   /* ) ;;
   .  ) srcdir="$blddir" ;;
-  *  ) srcdir="`cd $srcdir && pwd`" ;;
+  *  ) srcdir="`cd $srcdir && pwd`"; CANONICALIZE_PATH(srcdir) ;;
 esac
 
 dnl Check if the source directory already has a configured system in it.
@@ -911,20 +948,25 @@ dnl Find out which version of XEmacs this is
 dnl ----------------------------------------
 . "$srcdir/version.sh" || exit 1;
 dnl Must do the following first to determine verbosity for AC_DEFINE
-if test -n "$emacs_beta_version"; then beta=yes; else beta=no; fi
+if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
 : "${extra_verbose=$beta}"
 version="${emacs_major_version}.${emacs_minor_version}"
 AC_DEFINE_UNQUOTED(EMACS_MAJOR_VERSION, $emacs_major_version)
 AC_DEFINE_UNQUOTED(EMACS_MINOR_VERSION, $emacs_minor_version)
-if test -n "$emacs_beta_version"; then
-  version="${version}-b${emacs_beta_version}"
-  AC_DEFINE_UNQUOTED(EMACS_BETA_VERSION, $emacs_beta_version)
+if test -n "$emacs_beta_version" ; then
+  if test "$beta" = "yes"; then
+       version="${version}-b${emacs_beta_version}"
+       AC_DEFINE_UNQUOTED(EMACS_BETA_VERSION, $emacs_beta_version)
+  else
+       version="${version}.${emacs_beta_version}"
+       AC_DEFINE_UNQUOTED(EMACS_PATCH_LEVEL, $emacs_beta_version)
+  fi
 fi
 AC_DEFINE_UNQUOTED(XEMACS_CODENAME, "$xemacs_codename")
 AC_DEFINE_UNQUOTED(EMACS_VERSION, "$version")
 
 if test "$with_infodock" = "yes"; then
-  if test ! -f ../ID-INSTALL; then
+  if test ! -f ../../ID-INSTALL; then
     echo "Cannot build InfoDock without InfoDock sources"
     with_infodock=no
   fi
@@ -948,12 +990,13 @@ dnl Error checking and debugging flags
 dnl ----------------------------------
 dnl Error checking default to "yes" in beta versions, to "no" in releases.
 dnl Same goes for --debug and --extra-verbosity.
-if test -n "$emacs_beta_version"; then beta=yes; else beta=no; fi
+if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
 test "${error_check_extents=$beta}"   = yes && AC_DEFINE(ERROR_CHECK_EXTENTS)
 test "${error_check_typecheck=$beta}" = yes && AC_DEFINE(ERROR_CHECK_TYPECHECK)
 test "${error_check_bufpos=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_BUFPOS)
 test "${error_check_gc=$beta}"        = yes && AC_DEFINE(ERROR_CHECK_GC)
 test "${error_check_malloc=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_MALLOC)
+test "${error_check_byte_code=$beta}" = yes && AC_DEFINE(ERROR_CHECK_BYTE_CODE)
 dnl debug=yes must be set when error checking is present.  This should be
 dnl fixed up.
 dnl debug implies other options
@@ -1012,6 +1055,7 @@ case "$canonical" in
   vax-*-*          ) machine=vax ;;
   mips-dec-*       ) machine=pmax ;;
   mips-sgi-*       ) machine=iris4d ;;
+  mips*-linux      ) machine=mips ;;
   romp-ibm-*       ) machine=ibmrt ;;
   rs6000-ibm-aix*  ) machine=ibmrs6000 ;;
   powerpc-ibm-aix* ) machine=ibmrs6000 ;;
@@ -1449,6 +1493,7 @@ case "$canonical" in
       *-xenix* )               opsys=xenix ;;
       *-sco3.2v4* )            opsys=sco4 NON_GNU_CPP=/lib/cpp  ;;
       *-bsd386* | *-bsdi1* )   opsys=bsd386 ;;
+      *-bsdi4* )               opsys=bsdos4 ;;
       *-bsdi3* )               opsys=bsdos3 ;;
       *-bsdi2.1* )             opsys=bsdos2-1 ;;
       *-bsdi2* )               opsys=bsdos2 ;;
@@ -1464,10 +1509,13 @@ case "$canonical" in
        else
                NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
        fi ;;
+      *-sysv5* )               opsys=sco7 ;;
       *-386bsd* )              opsys=386bsd ;;
       *-freebsd* )             opsys=freebsd ;;
       *-nextstep* )            opsys=nextstep ;;
-      *-pc-cygwin32 )          opsys=cygwin32 ;;
+      *-pc-cygwin* )           opsys=cygwin32 ;;
+      *-pc-mingw* )            opsys=mingw32 ;
+                               test -z "$with_tty" && with_tty="no";;
       dnl Otherwise, we fall through to the generic opsys code at the bottom.
     esac
   ;;
@@ -1486,7 +1534,7 @@ fi
 
 if test -z "$dynamic"; then
   case "$opsys" in
-    hpux* | sunos4* | sco5 ) dynamic=no ;;
+    hpux* | sunos4* ) dynamic=no ;;
     *) dynamic=yes ;;
   esac
 fi
@@ -1707,6 +1755,7 @@ CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
 CPP_boolean_to_sh(TERMINFO, have_terminfo)
 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
+CPP_boolean_to_sh(HAVE_WIN32_PROCESSES, win32_processes)
 EOF
 
 dnl The value of CPP is a quoted variable reference, so we need to do this
@@ -1745,9 +1794,6 @@ if test "$cflags_specified" = "no"; then
     dnl I'm not convinced this is a good idea any more. -sb
     dnl test "$opsys $machine" = "linux intel386" && \
     dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2"
-    dnl cygwin can't cope with -O3
-    test "$opsys $machine" = "cygwin32 intel386" && \
-      CFLAGS="-g -O2 -Wall -Wno-switch"
   elif test "$__SUNPRO_C" = "yes"; then
     case "$opsys" in
       sol2    ) CFLAGS="-v -xO4" ;;
@@ -1883,16 +1929,16 @@ dnl site-includes and site-libraries.
 COLON_TO_SPACE(site_prefixes)
 if test -n "$site_prefixes"; then
   for dir in $site_prefixes; do
-    inc_dir="${dir}/include"
     lib_dir="${dir}/lib"
+    inc_dir="${dir}/include"
     if test ! -d "$dir"; then
       XE_DIE("Invalid site prefix \`$dir': no such directory")
-    elif test ! -d "$inc_dir"; then
-      XE_DIE("Invalid site prefix \`$dir': no such directory \`$inc_dir'")
     elif test ! -d "$lib_dir"; then
       XE_DIE("Invalid site prefix \`$dir': no such directory \`$lib_dir'")
     else
-      XE_APPEND("-I$inc_dir", c_switch_site)
+      if test -d "$inc_dir"; then
+       XE_APPEND("-I$inc_dir", c_switch_site)
+      fi
       XE_APPEND("-L$lib_dir", ld_switch_site)
     fi
   done
@@ -1934,7 +1980,7 @@ if test "$add_runtime_path" = "yes"; then
   AC_MSG_CHECKING("for runtime libraries flag")
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
-    decosf* | linux* ) dash_r="-rpath " ;;
+    decosf* | linux* | irix*) dash_r="-rpath " ;;
     *)
       dash_r=""
       for try_dash_r in "-R" "-R " "-rpath "; do
@@ -2022,6 +2068,9 @@ fi
 ])dnl
 XE_COMPUTE_RUNPATH()
 
+dnl JKJ REMOVEME
+dnl XE_SHLIB_STUFF
+
 dnl -----------------------------------
 dnl Do some misc autoconf-special tests
 dnl -----------------------------------
@@ -2130,6 +2179,7 @@ AC_TYPE_PID_T
 AC_TYPE_UID_T
 AC_TYPE_MODE_T
 AC_TYPE_OFF_T
+AC_CHECK_TYPE(ssize_t, int)
 
 AC_MSG_CHECKING(for struct timeval)
 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
@@ -2178,7 +2228,7 @@ dnl check for long file names
 AC_SYS_LONG_FILE_NAMES
 
 dnl -lm is required by LISP_FLOAT_TYPE, among other things
-AC_CHECK_LIB(m, sin)
+AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin))
 
 dnl Floating operation support is now unconditional
 AC_DEFINE(LISP_FLOAT_TYPE)
@@ -2196,12 +2246,6 @@ elif test "$mail_locking" = "flock"; then AC_DEFINE(REAL_MAIL_USE_FLOCK)
 else mail_locking="dot-locking"
 fi
 
-dnl Used by getloadavg() - does not require root priveleges
-AC_CHECK_LIB(kstat, kstat_open)
-
-dnl Another way to get the load average
-AC_CHECK_LIB(kvm, kvm_read)
-
 case "$opsys" in decosf*)
   AC_CHECK_LIB(pthreads, cma_open)
   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
@@ -2469,6 +2513,7 @@ if test "$with_msw" != "no"; then
            && XE_ADD_OBJS(toolbar-msw.o)
        test "$with_dialogs"   != "no" && with_dialogs=msw \
            && XE_ADD_OBJS(dialog-msw.o)
+       test "$with_widgets"   != "no" && with_widgets=msw
     else
        test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
        test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
@@ -2481,9 +2526,7 @@ if test "$with_msw" != "no"; then
     [AC_DEFINE(HAVE_MSG_SELECT)])
     const_is_losing=no
     with_file_coding=yes
-    use_minimal_tagbits=yes
-    use_indexed_lrecord_implementation=yes
-    XE_ADD_OBJS(console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o)
+    XE_ADD_OBJS(console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o gui-msw.o)
   fi
 fi
 
@@ -2493,7 +2536,7 @@ test -z "$window_system" && window_system="none"
 
 dnl Test for features that require a window system - ANY window system
 if test "$window_system" = "none"; then
-  for feature in menubars scrollbars toolbars dialogs dragndrop
+  for feature in menubars scrollbars toolbars dialogs dragndrop xface
   do
     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
@@ -2525,8 +2568,7 @@ if test "$with_x11" != "yes"; then
   dnl if test "$with_tty" = "no" ; then
   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
   dnl fi
-  for feature in tooltalk cde offix session xim xmu \
-                 xface
+  for feature in tooltalk cde offix wmcommand xim xmu
   do
     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
@@ -2549,11 +2591,11 @@ case "$x_libraries" in *X11R4* )
   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
 esac
 
-dnl Enable or disable proper session-management
-AC_CHECKING(for session-management option);
-dnl if test "$with_session" = "yes"; then
-if test "$with_session" != "no"; then
-  AC_DEFINE(HAVE_SESSION)
+dnl Enable or disable proper handling of WM_COMMAND
+AC_CHECKING(for WM_COMMAND option);
+dnl if test "$with_wmcommand" = "yes"; then
+if test "$with_wmcommand" != "no"; then
+  AC_DEFINE(HAVE_WMCOMMAND)
 fi
 
 dnl Autodetect Xauth
@@ -2667,23 +2709,29 @@ AC_CHECKING(for LDAP)
 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
 if test "$with_ldap" != "no"; then
-  test -z "$with_umich_ldap" && { AC_CHECK_LIB(ldap, ldap_open, with_umich_ldap=yes, with_umich_ldap=no, -llber) }
-  test "$with_umich_ldap" = "no" && { AC_CHECK_LIB(ldap10, ldap_set_option, with_ns_ldap=yes, with_ns_ldap=no) }
-  test -z "$with_ldap" -a \( "$with_umich_ldap" = "yes" -o "$with_ns_ldap" = "yes" \) && with_ldap=yes
+  AC_CHECK_LIB(ldap, ldap_search, with_ldap_nolber=yes, with_ldap_nolber=no)
+  test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
+  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krb=yes, with_ldap_krb=no, -llber -lkrb) }
+  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krbdes=yes, with_ldap_krbdes=no, -llber -lkrb -ldes) }
+  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes
 fi
 if test "$with_ldap" = "yes"; then
   AC_DEFINE(HAVE_LDAP)
   XE_ADD_OBJS(eldap.o)
-  if test "$with_umich_ldap" = "yes" ; then
-    AC_DEFINE(HAVE_UMICH_LDAP)
-    XE_PREPEND(-llber, LIBS)
+  if test "$with_ldap_nolber" = "yes" ; then
     XE_PREPEND(-lldap, LIBS)
-  elif test "$with_ldap" = "yes" -a "$with_ns_ldap" = "yes" ; then
-    AC_DEFINE(HAVE_NS_LDAP)
-    XE_PREPEND(-lldap10, LIBS)
-  elif test "$with_ldap" = "yes" ; then
+  else
+    if test "$with_ldap_krb" = "yes" ; then
+      XE_PREPEND(-lkrb, LIBS)
+    fi
+    if test "$with_ldap_krbdes" = "yes" ; then
+      XE_PREPEND(-ldes, LIBS)
+      XE_PREPEND(-lkrb, LIBS)
+    fi
+    XE_PREPEND(-llber, LIBS)
     XE_PREPEND(-lldap, LIBS)
   fi
+  AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
 fi
 
 dnl ----------------------
@@ -2740,6 +2788,15 @@ if test "$window_system" != "none"; then
     fi
   fi
 
+  dnl Autodetect XFACE
+  test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
+  test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
+  test -z "$with_xface" && with_xface=yes
+  if test "$with_xface" = "yes"; then
+    AC_DEFINE(HAVE_XFACE)
+    XE_PREPEND(-lcompface, libs_x)
+  fi
+
   dnl For a brief period we had the GIF code split out into a separate library,
   dnl but patent problems, etc. sort of squashed that idea.
   dnl We default to building with builtin GIF decoding
@@ -2822,15 +2879,6 @@ if test "$with_x11" = "yes"; then
 
   AC_CHECKING(for X11 graphics libraries)
 
-  dnl Autodetect XFACE
-  test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
-  test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
-  test -z "$with_xface" && with_xface=yes
-  if test "$with_xface" = "yes"; then
-    AC_DEFINE(HAVE_XFACE)
-    XE_PREPEND(-lcompface, libs_x)
-  fi
-
   dnl Autodetect -lXaw
   AC_CHECK_LIB(Xaw, XawScrollbarSetThumb, have_xaw=yes, have_xaw=no)
   dnl if test "$have_xaw" = "yes"; then
@@ -2839,6 +2887,9 @@ if test "$with_x11" = "yes"; then
       dnl XE_APPEND(pkg-src/tree-x, INSTALL_ARCH_DEP_SUBDIR)])
   dnl fi
 
+  dnl Autodetect -lXaw3d
+  AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb, have_xaw3d=yes, have_xaw3d=no)
+
   dnl autodetect Motif - but only add to libs_x later (if necessary)
   AC_CHECK_HEADER(Xm/Xm.h,
    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
@@ -2867,6 +2918,7 @@ case "$with_menubars" in "" | "yes" | "athena" | "athena3d" )
 esac
 case "$with_dialogs" in "" | "yes" | "lucid" )
   if   test "$have_motif" = "yes"; then with_dialogs="motif"
+  elif test "$have_xaw3d" = "yes"; then with_dialogs="athena3d"
   elif test "$have_xaw"   = "yes"; then with_dialogs="athena"
   else with_dialogs=no
   fi ;;
@@ -2874,10 +2926,27 @@ esac
 case "$with_scrollbars" in "" | "yes" )
   with_scrollbars="lucid" ;;
 esac
+case "$with_widgets" in "" | "yes" | "lucid")
+  if   test "$have_motif" = "yes"; then with_widgets="motif"
+  elif test "$have_xaw3d" = "yes"; then with_widgets="athena3d"
+  elif test "$have_xaw"   = "yes"; then with_widgets="athena"
+  else with_widgets=no
+  fi ;;
+esac
 
-all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars"
+all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
 
-case "$all_widgets" in *athena* )
+case "$all_widgets" in
+ *athena*3d )
+  AC_DEFINE(LWLIB_USES_ATHENA)
+  AC_DEFINE(NEED_ATHENA)
+  XE_APPEND(lwlib-Xaw.o, lwlib_objs)
+  if test "$have_xaw3d"; then
+    XE_PREPEND(-lXaw3d, libs_x) 
+  else
+    XE_PREPEND(-lXaw, libs_x)
+  fi ;;
+ *athena* )
   AC_DEFINE(LWLIB_USES_ATHENA)
   AC_DEFINE(NEED_ATHENA)
   XE_APPEND(lwlib-Xaw.o, lwlib_objs)
@@ -2894,6 +2963,11 @@ esac
 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
+test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
+       XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
+case "$with_widgets" in athena* )
+       XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
+esac
 case "$all_widgets" in *lucid* )
   AC_DEFINE(NEED_LUCID)
   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
@@ -2905,11 +2979,15 @@ case "$with_scrollbars" in athena* ) AC_DEFINE(LWLIB_SCROLLBARS_ATHENA);; esac
 case "$with_dialogs"    in athena* ) AC_DEFINE(LWLIB_DIALOGS_ATHENA)   ;; esac
 test "$with_scrollbars" = "athena3d" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
 test "$with_dialogs"    = "athena3d" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
+case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
+test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
+       AC_DEFINE(LWLIB_TABS_LUCID)
 
 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
+test "$with_widgets"   != "no"    && AC_DEFINE(HAVE_WIDGETS)
 
 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
@@ -2917,31 +2995,27 @@ test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
+test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
 
 test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar.o)
 test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar.o)
 test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog.o)
 test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar.o)
-test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui.o)
 
 if test "$with_x11" = "yes"; then
   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-x.o)
   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-x.o)
   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-x.o)
   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-x.o)
-  test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui-x.o)
+  test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
 else
-  if test \( "$with_sound" = "nas" \) -o \( "$with_sound" = "both" \); then
+  if test "$with_nas_sound" = "nas"; then
     echo "Attempt to Build NAS sound without X"
     echo "Please remove NAS configuration or build with X"
     exit 1
   fi
 fi
 
-test "$use_minimal_tagbits" = "yes" && AC_DEFINE(USE_MINIMAL_TAGBITS)
-test "$use_indexed_lrecord_implementation" = "yes" && \
-  AC_DEFINE(USE_INDEXED_LRECORD_IMPLEMENTATION)
-
 dnl ----------------------
 dnl Mule-dependent options
 dnl ----------------------
@@ -2965,7 +3039,7 @@ if test "$with_mule" = "yes" ; then
   AC_CHECKING(for Mule-related features)
   AC_DEFINE(MULE)
   AC_DEFINE(FILE_CODING)
-  XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o mule-coding.o file-coding.o)
+  XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o file-coding.o)
 
   dnl Use -lintl to get internationalized strerror for Mule
   AC_CHECK_HEADERS(libintl.h)
@@ -2977,10 +3051,11 @@ if test "$with_mule" = "yes" ; then
   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
   case "$with_xim" in "" | "yes" )
     AC_CHECKING(for XIM)
+    AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
     dnl XIM + Lesstif is not (yet?) usable
-    if test "$have_lesstif" = "yes"; then with_xim=xlib
-    else AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif, with_xim=xlib)
-    fi
+    if test "$have_motif $have_lesstif" = "yes no"; then
+      AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
+    fi ;;
   esac
   if test "$with_xim" != "no"; then
     AC_DEFINE(HAVE_XIM)
@@ -2998,7 +3073,7 @@ if test "$with_mule" = "yes" ; then
     fi
   fi
 
-  dnl "with_xim" = "yes"
+  dnl "with_xfs" = "yes"
   if test "$with_xfs" = "yes" ; then
     AC_CHECKING(for XFontSet)
     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
@@ -3008,7 +3083,7 @@ if test "$with_mule" = "yes" ; then
         XE_ADD_OBJS(input-method-xfs.o)
       fi
     fi
-  fi dnl with_xim
+  fi dnl with_xfs
 
   dnl Autodetect WNN
   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
@@ -3080,7 +3155,7 @@ if test "$need_motif" = "yes" ; then
   XE_COMPUTE_RUNPATH()
 fi
 
-AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf)
+AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf)
 
 dnl realpath is buggy on linux, decosf and aix4
 
@@ -3100,6 +3175,20 @@ case "$opsys" in
     esac ;;
 esac
 
+dnl Check whether the system provides getloadavg (Solaris 7 has it)
+AC_CHECK_FUNCS(getloadavg)
+
+if test "$ac_cv_func_getloadavg" != "yes"
+then
+  XE_ADD_OBJS(getloadavg.o)
+
+  dnl Used by getloadavg() - does not require root priveleges
+  AC_CHECK_LIB(kstat, kstat_open)
+
+  dnl Another way to get the load average
+  AC_CHECK_LIB(kvm, kvm_read)
+fi
+
 dnl If netdb.h does not declare h_errno, we must declare it by hand.
 AC_MSG_CHECKING(whether netdb declares h_errno)
 AC_TRY_LINK([#include <netdb.h>],
@@ -3253,7 +3342,6 @@ int main (int argc, char *argv[])
 esac
 AC_MSG_RESULT($have_mmap)
 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
-AC_FUNC_MMAP
 
 dnl rel_alloc requires either GNU malloc or system malloc with mmap
 dnl We only turn rel_alloc on by default if mmap is available.
@@ -3310,10 +3398,6 @@ dnl Check for sound of various sorts.
 
 dnl Autodetect native sound
 AC_CHECKING("for sound support")
-case "$with_sound" in
-  native | both ) with_native_sound=yes;;
-  nas    | no   ) with_native_sound=no;;
-esac
 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
 
 if test "$with_native_sound" != "no"; then
@@ -3371,6 +3455,7 @@ if test "$with_native_sound" != "no"; then
     for dir in "machine" "sys" "linux"; do
       AC_CHECK_HEADER(${dir}/soundcard.h,
         sound_found=yes
+       need_miscplay=yes
         XE_ADD_OBJS(linuxplay.o)
         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_PATH, "${dir}/soundcard.h")]
         break)
@@ -3380,25 +3465,40 @@ if test "$with_native_sound" != "no"; then
   test "$sound_found" = "yes" && with_native_sound=yes
 fi
 
-if test -z "$with_sound"; then
-  if test "$with_native_sound" = "yes" -o -n "$native_sound_lib"; then
-    with_sound=native
-  fi
-fi
-
 if test "$with_native_sound" = "yes"; then
   AC_DEFINE(HAVE_NATIVE_SOUND)
   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
 fi
 
-case "$with_sound" in both | nas )
+if test "$with_nas_sound" = "yes"; then
   AC_DEFINE(HAVE_NAS_SOUND)
   XE_ADD_OBJS(nas.o)
   XE_PREPEND(-laudio, libs_x)
   dnl If the nas library does not contain the error jump point,
   dnl then we force safer behavior.
   AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[AC_DEFINE(NAS_NO_ERROR_JUMP)])
-esac
+fi
+
+AC_CHECK_PROG(have_esd_config, esd-config, yes, no)
+if test -z "$with_esd"; then
+  with_esd=$have_esd_config
+fi
+
+if test "$with_esd" = "yes"; then
+  if test "$have_esd_config" = "no"; then
+    echo "*** esd-config was not found in your PATH. Disabling esd support."
+    with_esd=no
+  else
+    AC_DEFINE(HAVE_ESD_SOUND)
+    need_miscplay=yes
+    XE_ADD_OBJS(esd.o)
+    XE_PREPEND(`esd-config --libs`, libs_x)
+  fi
+fi
+
+if test "$need_miscplay" = "yes"; then
+  XE_ADD_OBJS(miscplay.o)
+fi
 
 dnl ---------------------
 dnl TTY-dependent options
@@ -3485,45 +3585,48 @@ dnl Do we need event-unixoid.o ?
 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
 
 dnl Database support
-dnl <mdiers@logware.de>
 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
 dnl On FreeBSD, both DB and DBM are part of libc.
-dnl Note that unless support for DB/(G)DBM is explicitly disabled, we always
-dnl want to check for libdb/lib(g)dbm. Also note that libc will not be
-dnl checked if we have the libraries.
-dnl If support for DB/(G)DBM is requested, but we neither have libdb/lib(g)dbm,
-dnl nor does libc implement it, we are a bit lost :)
-
-AC_CHECKING(for database support)
-
-if test "$with_database_gnudbm" != "no"; then
-  AC_CHECK_HEADERS(ndbm.h, have_ndbm_h=yes)
-  if test "$have_ndbm_h" = "yes"; then
-    AC_CHECK_LIB(gdbm, dbm_open, with_database_gnudbm=yes have_libgdbm=yes)
-  fi
-  if test "$with_database_gnudbm" != "yes"; then
-    AC_CHECK_FUNC(dbm_open, with_database_gnudbm=yes)
-      fi
-  if test "$with_database_gnudbm" = "yes"; then
-    AC_DEFINE(HAVE_DBM)
-    test "$have_libgdbm" = "yes" && XE_PREPEND(-lgdbm, LIBS)
-    with_database_dbm=no
-  else with_database_gnudbm=no
-  fi
+dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
+
+test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
+  != "no no no" && AC_CHECKING(for database support)
+
+dnl Check for ndbm.h, required for either kind of DBM support.
+if test "$with_database_gdbm $with_database_dbm" != "no no"; then
+  AC_CHECK_HEADER(ndbm.h, [:], [
+    test "$with_database_gdbm" = "yes" -o \
+         "$with_database_dbm"  = "yes" && \
+      XE_DIE("Required DBM support cannot be provided.")
+    with_database_gdbm=no with_database_dbm=no])
 fi
 
+dnl Check for DBM support in libgdbm.
+if test "$with_database_gdbm" != "no"; then
+  AC_CHECK_LIB(gdbm, dbm_open, [
+   with_database_gdbm=yes with_database_dbm=no libdbm=-lgdbm], [
+   if test "$with_database_gdbm" = "yes"; then
+     XE_DIE("Required GNU DBM support cannot be provided.")
+   fi
+   with_database_gdbm=no])
+fi
+
+dnl Check for DBM support in libc and libdbm.
 if test "$with_database_dbm" != "no"; then
-  AC_CHECK_FUNC(dbm_open, with_database_dbm=yes need_libdbm=no)
-  if test "$need_libdbm" != "no"; then
-    AC_CHECK_LIB(dbm, dbm_open, with_database_dbm=yes need_libdbm=yes)
-  fi
-  if test "$with_database_dbm" = "yes"; then
-    AC_DEFINE(HAVE_DBM)
-    test "$need_libdbm" = "yes" && XE_PREPEND(-ldbm, LIBS)
-  else with_database_dbm=no
-  fi
+  AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
+    AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
+      test "$with_database_dbm" = "yes" && \
+        XE_DIE("Required DBM support cannot be provided.")
+      with_database_dbm=no])])
 fi
 
+dnl Tell make about the DBM support we detected.
+test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
+test "$with_database_gdbm" = "yes" -o \
+     "$with_database_dbm"  = "yes" && \
+  AC_DEFINE(HAVE_DBM)
+
+dnl Check for Berkeley DB.
 if test "$with_database_berkdb" != "no"; then
   AC_MSG_CHECKING(for Berkeley db.h)
   for path in "db/db.h" "db.h"; do
@@ -3565,7 +3668,7 @@ yes
   fi
 fi
 
-if test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \
+if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
      != "no no no"; then
   AC_DEFINE(HAVE_DATABASE)
   XE_ADD_OBJS(database.o)
@@ -3583,30 +3686,27 @@ if test "$usage_tracking" = "yes"; then
   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
 fi
 
-dnl cygwin can't cope with dlfcn at the moment
-test -z "$with_shlib" && test "$opsys $machine" = "cygwin32 intel386" && with_shlib=no
-
 dnl autodetect dll support
-AC_CHECK_HEADERS(dlfcn.h, have_dlfcn=yes)
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_shlib=yes]) }
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
-test -z "$with_shlib" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_shlib=yes]) }
-test -z "$with_shlib" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_shlib=yes]) }
-if test "$with_shlib" = "yes"; then
-  AC_DEFINE(HAVE_SHLIB)
-  XE_ADD_OBJS(sysdll.o)
-  XE_ADD_OBJS(dll.o)
-  test ! -z "$DLL_LIB" && XE_PREPEND(-l${DLL_LIB}, LIBS)
-  XE_MAKE_SHAREDLIB
-  AC_CHECK_FUNCS(dlerror)
-  ld_dynamic_link_flags=
-  dnl Fill this in with other values as this gets more testing
-  case "$opsys" in
-  hpux*)  ld_dynamic_link_flags="-Wl,-E" ;;
-  linux*) ld_dynamic_link_flags="-rdynamic" ;;
-  *) ;;
-  esac
+AC_CHECK_HEADERS(dlfcn.h, [have_dlfcn=yes
+  AC_DEFINE(HAVE_DLFCN_H)])
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_modules=yes]) }
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_modules=yes]) }
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_modules=yes]) }
+test -z "$with_modules" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_modules=yes]) }
+test -z "$with_modules" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_modules=yes]) }
+if test "$with_modules" = "yes"; then
+  XE_SHLIB_STUFF
+  if test "$can_build_shared" = "yes"; then
+    AC_DEFINE(HAVE_SHLIB)
+    XE_ADD_OBJS(sysdll.o)
+    XE_ADD_OBJS(emodules.o)
+    XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
+    test ! -z "$DLL_LIB" && XE_PREPEND(-l${DLL_LIB}, LIBS)
+    AC_CHECK_FUNCS(dlerror _dlerror)
+  else
+    AC_MSG_WARN(disabling shared library support)
+    with_modules=no
+  fi
 fi
 
 dnl Unfortunately, just because we can link doesn't mean we can run.
@@ -3630,12 +3730,13 @@ AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
   echo "*** PANIC *** on your system.  Don't do that."
   exit 1])
 
-dnl Process support (hardcoded)
-dnl every system that supports this runs configure, the others don't
-
-dnl We're not ready for this yet.
-AC_DEFINE(HAVE_UNIX_PROCESSES)
-XE_ADD_OBJS(process-unix.o)
+dnl Process support
+if test "$win32_processes" = "yes"; then
+  XE_ADD_OBJS(process-nt.o)
+else
+  AC_DEFINE(HAVE_UNIX_PROCESSES)
+  XE_ADD_OBJS(process-unix.o)
+fi
 
 dnl --------------------------------
 dnl Compute SUBST-itutable variables
@@ -3668,7 +3769,7 @@ for dir in $MAKE_SUBDIR; do
       done ) ;;
    * ) test -d "$dir" || mkdir "$dir" ;;
   esac
-  XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile)
+  XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
 done
 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
@@ -3721,6 +3822,8 @@ AC_SUBST(PROGNAME)
 AC_SUBST(version)
 AC_SUBST(configuration)
 AC_SUBST(canonical)
+AC_SUBST(inststaticdir)
+AC_SUBST(instvardir)
 AC_SUBST(srcdir)
 AC_SUBST(bindir)
 AC_SUBST(datadir)
@@ -3730,6 +3833,7 @@ AC_SUBST(libdir)
 AC_SUBST(mandir)
 
 AC_SUBST(prefix)
+AC_SUBST(PREFIX_USER_DEFINED)
 dnl Yo, Stephen Bourne!  I want to marry you!
 PREFIX=$prefix
 while true; do
@@ -3741,6 +3845,7 @@ done
 AC_SUBST(PREFIX)
 
 AC_SUBST(exec_prefix)
+AC_SUBST(EXEC_PREFIX_USER_DEFINED)
 EXEC_PREFIX=$exec_prefix
 while true; do
   case "$EXEC_PREFIX" in
@@ -3794,16 +3899,38 @@ while true; do
 done
 AC_SUBST(LISPDIR)
 
-dnl AC_SUBST(sitelispdir)
-dnl AC_SUBST(SITELISPDIR_USER_DEFINED)
-dnl SITELISPDIR=$sitelispdir
-dnl while true; do
-dnl   case "$SITELISPDIR" in
-dnl     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
-dnl     *) break ;;
-dnl   esac
-dnl done
-dnl AC_SUBST(SITELISPDIR)
+AC_SUBST(moduledir)
+AC_SUBST(MODULEDIR_USER_DEFINED)
+MODULEDIR=$moduledir
+while true; do
+  case "$MODULEDIR" in
+    *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
+    *) break ;;
+  esac
+done
+AC_SUBST(MODULEDIR)
+
+AC_SUBST(sitelispdir)
+AC_SUBST(SITELISPDIR_USER_DEFINED)
+SITELISPDIR=$sitelispdir
+while true; do
+  case "$SITELISPDIR" in
+    *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
+    *) break ;;
+  esac
+done
+AC_SUBST(SITELISPDIR)
+
+AC_SUBST(sitemoduledir)
+AC_SUBST(SITEMODULEDIR_USER_DEFINED)
+SITEMODULEDIR=$sitemoduledir
+while true; do
+  case "$SITEMODULEDIR" in
+    *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
+    *) break ;;
+  esac
+done
+AC_SUBST(SITEMODULEDIR)
 
 AC_SUBST(etcdir)
 AC_SUBST(ETCDIR_USER_DEFINED)
@@ -3827,6 +3954,17 @@ while true; do
 done
 AC_SUBST(LOCKDIR)
 
+AC_SUBST(docdir)
+AC_SUBST(DOCDIR_USER_DEFINED)
+DOCDIR=$docdir
+while true; do
+  case "$DOCDIR" in
+    *\$* ) eval "DOCDIR=$DOCDIR" ;;
+    *) break ;;
+  esac
+done
+AC_SUBST(DOCDIR)
+
 AC_SUBST(archlibdir)
 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
 ARCHLIBDIR=$archlibdir
@@ -3841,13 +3979,12 @@ AC_SUBST(ARCHLIBDIR)
 AC_SUBST(docdir)
 AC_SUBST(bitmapdir)
 AC_SUBST(extra_objs)
-AC_SUBST(ld_dynamic_link_flags)
 
 dnl The following flags combine all the information from:
 dnl - command line options (user always gets priority)
 dnl - user environment variables
 dnl - determined by configure
-dnl - the s&m header files (deprecated)
+dnl - the s&m header files (required for ellcc)
 AC_SUBST(machfile)
 AC_SUBST(opsysfile)
 AC_SUBST(c_switch_general)
@@ -3875,14 +4012,22 @@ dnl Useful for building XEmacs with a C++ or 64-bit compiler.
 : ${XEMACS_CC:=$CC}
 AC_SUBST(XEMACS_CC)
 
-
 dnl The default is yes
+if test "$with_prefix" = "yes"; then
+  AC_DEFINE(PREFIX_USER_DEFINED)
+fi
+
+dnl The default is no
 if test "$with_site_lisp" = "no"; then
   AC_DEFINE(INHIBIT_SITE_LISP)
 fi
+dnl The default is yes
+if test "$with_site_modules" = "no"; then
+  AC_DEFINE(INHIBIT_SITE_MODULES)
+fi
 
 XE_SPACE(ac_configure_args, $ac_configure_args)
-AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$canonical")
+AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
 AC_DEFINE_UNQUOTED(config_machfile,  "$machfile")
 AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
@@ -3902,8 +4047,6 @@ dnl at the point where the autodetection occurs or would occur,
 dnl so that the user gets immediate feedback on the results of the
 dnl autodetection.
 
-test -n "$puresize" && AC_DEFINE_UNQUOTED(RAW_PURESIZE, $puresize)
-
 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
@@ -3920,6 +4063,7 @@ test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
+test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
 
 dnl -------------------------------
 dnl Report on what we decided to do
@@ -3936,8 +4080,15 @@ echo ""
 echo "$0 $quoted_arguments"
 ) > Installation
 
-xemacs_betaname=""
-test ! -z "${emacs_beta_version}" && xemacs_betaname="-b${emacs_beta_version}"
+if test ! -z ${emacs_beta_version} ; then
+  if test -z "${emacs_is_beta}" ; then
+       xemacs_betaname=".${emacs_beta_version}"
+  else
+       xemacs_betaname="-b${emacs_beta_version}"
+  fi
+else
+  xemacs_betaname=""   
+fi
 
 dnl Start stdout redirection to '| tee -a Installation'
 (
@@ -4006,20 +4157,16 @@ test "$with_gif"   = yes && echo "  Compiling in support for (builtin) GIF image
 test "$with_jpeg"  = yes && echo "  Compiling in support for JPEG image handling."
 test "$with_tiff"  = yes && echo "  Compiling in support for TIFF image handling."
 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
-case "$with_sound" in
-  nas    ) echo "  Compiling in network sound (NAS) support." ;;
-  native ) echo "  Compiling in native sound support." ;;
-  both   ) echo "  Compiling in both network and native sound support." ;;
-esac
+test "$with_native_sound" = yes && echo "  Compiling in native sound support."
+test "$with_nas_sound" = yes && echo "  Compiling in network sound (NAS) support." 
 test "$old_nas" = yes && echo "        nas library lacks error trapping, will play synchronously."
+test "$with_esd" = yes && echo "  Compiling in support for Enlightened Sound Daemon."
 
 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley DB."
 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
-test "$with_database_gnudbm" = yes && echo "  Compiling in support for GNU DBM."
+test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
 
-test "$with_umich_ldap"             = yes && echo "  Compiling in support for LDAP (UMich libs)."
-test "$with_ns_ldap"        = yes && echo "  Compiling in support for LDAP (Netscape SDK)."
-test "$with_ldap" = yes -a "$with_umich_ldap" = no -a "$with_ns_ldap" = no && echo "  Compiling in support for LDAP (Generic)."
+test "$with_ldap"           = yes && echo "  Compiling in support for LDAP."
 
 test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
 test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
@@ -4042,26 +4189,43 @@ test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
 test "$with_offix"    = yes && echo "  Compiling in support for OffiX."
 test "$with_dragndrop" = yes && echo "  Compiling in EXPERIMENTAL support for Drag'n'Drop ($dragndrop_proto )."
 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
-test "$with_session"  != no && echo "  Compiling in support for proper session-management."
+test "$with_wmcommand"  != no && echo "  Compiling in support for proper WM_COMMAND handling."
 case "$with_menubars" in
   lucid ) echo "  Using Lucid menubars." ;;
   motif ) echo "  Using Motif menubars."
           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
           echo "             We recommend using the Lucid menubar instead."
           echo "             Re-run configure with --with-menubars='lucid'." ;;
+  msw ) echo "  Using MS-Windows menubars." ;;
 esac
 case "$with_scrollbars" in
   lucid    ) echo "  Using Lucid scrollbars."     ;;
   motif    ) echo "  Using Motif scrollbars."     ;;
   athena   ) echo "  Using Athena scrollbars."    ;;
   athena3d ) echo "  Using Athena-3d scrollbars." ;;
+  msw ) echo "  Using MS-Windows scrollbars." ;;
+esac
+case "$with_widgets" in
+  motif    ) echo "  Using Motif native widgets."     ;;
+  athena   ) echo "  Using Athena native widgets."    ;;
+  athena3d ) echo "  Using Athena-3d native widgets." ;;
+  msw ) echo "  Using MS-Windows native widgets." ;;
 esac
 case "$with_dialogs" in
-  motif    ) echo "  Using Motif dialog boxes."     ;;
+  motif    )
+    echo "  Using Motif dialog boxes."
+    if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
+      echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
+      echo "             We recommend using the Athena dialog boxes instead."
+      echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
+      echo "             Read the PROBLEMS file for more information."
+    fi; fi
+    ;;
   athena   ) echo "  Using Athena dialog boxes."    ;;
   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
+  msw ) echo "  Using MS-Windows dialog boxes." ;;
 esac
-test "$with_shlib" = "yes" && echo "  Compiling in DLL support."
+test "$with_modules" = "yes" && echo "  Compiling in DSO module support."
 test "$with_clash_detection" = yes && \
   echo "  Clash detection will use \"$lockdir\" for locking files."
 echo "  movemail will use \"$mail_locking\" for locking mail spool files."
@@ -4069,11 +4233,9 @@ test "$with_pop" = yes && echo "  Using POP for mail access."
 test "$with_kerberos"  = yes && echo "  Using Kerberos for POP authentication."
 test "$with_hesiod"    = yes && echo "  Using Hesiod to get POP server host."
 test "$use_union_type"  = yes && echo "  Using the union type for Lisp_Objects."
-test "$use_minimal_tagbits" = yes && echo "  Using Lisp_Objects with minimal tagbits."
-test "$use_indexed_lrecord_implementation" = yes && echo "  Using indexed lrecord implementation."
-test "$debug"              = yes && echo "  Compiling in extra code for debugging."
-test "$memory_usage_stats" = yes && echo "  Compiling in code for checking XEmacs memory usage."
-test "$usage_tracking"     = yes && echo "  Compiling with usage tracking active (Sun internal)."
+test "$pdump"           = yes && echo "  Using the new portable dumper (wishful thinking)."
+test "$debug"           = yes && echo "  Compiling in extra code for debugging."
+test "$usage_tracking"  = yes && echo "  Compiling with usage tracking active (Sun internal)."
 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc" \
   != "no no no no no"; then
   echo "  WARNING: ---------------------------------------------------------"
@@ -4087,11 +4249,6 @@ echo ""
 dnl echo "The above configure report is appended to \"Installation\" file."
 echo ""
 
-dnl Generate Installation.el
-echo '(setq Installation-string "' > Installation.el
-sed 's/"/\\"/g' Installation >> Installation.el
-echo '")' >> Installation.el
-
 dnl -----------------------------------
 dnl Now generate config.h and Makefiles
 dnl -----------------------------------
@@ -4112,6 +4269,9 @@ for file in $internal_makefile_list; do
   ac_output_files="${ac_output_files+$ac_output_files }$file"
 done
 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
+if test "$with_modules" = "yes"; then
+  ac_output_files="$ac_output_files lib-src/ellcc.h"
+fi
 
 AC_OUTPUT($ac_output_files,
 [for dir in . $MAKE_SUBDIR; do