XEmacs 21.4.7 "Economic Science".
[chise/xemacs-chise.git.1] / configure.in
index dbbcaf6..f5b12f8 100644 (file)
@@ -3,10 +3,11 @@ define([AC_INIT_NOTICE],
 [#### Configuration script for XEmacs.  Largely divergent from FSF.
 #### Guess values for system-dependent variables and create Makefiles.
 #### Generated automatically using autoconf version] AC_ACVERSION [
-#### Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#### Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 #### 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) 2000, 2001 Martin Buchholz.
 #### Copyright (C) 1998, 1999 J. Kean Johnston.
 
 ### Don't edit this script!
@@ -15,6 +16,7 @@ define([AC_INIT_NOTICE],
 ### To rebuild it, execute the command
 ###    autoconf
 ### in the this directory.  You must have autoconf version 2.13 or later.
+### Note: this script has not yet been ported to autoconf version 2.5x.
 
 ### This file is part of XEmacs.
 
@@ -55,9 +57,9 @@ dnl Redefine some standard autoconf macros
 dnl here is how XEmacs is different:
 dnl - no cache file
 dnl - non-standard options
-dnl - suport for extra-verbosity
+dnl - support for extra-verbosity
 dnl - ordinary libs are handled separately from X libs (might be a mistake)
-dnl - various random kludges (e.g. -with-dnet=no
+dnl - various random kludges (e.g. -with-dnet=no)
 
 dnl PRINT_VAR(var var ...)  prints values of shell variables
 define([PRINT_VAR],[for var in patsubst([$1],[[
@@ -124,7 +126,7 @@ EOF
 
 dnl redefine AC_CHECK_LIB in accordance with our own value of ac_link
 dnl Add in extra kludgy check to support with_dnet=no
-dnl Add in extra LDFLAGS arg, which PRECEDE libs
+dnl Add in extra LDFLAGS arg, which PRECEDES libs
 dnl Support --with-dnet=no
 
 dnl AC_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
@@ -197,7 +199,7 @@ dnl ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC'
 dnl ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC'
@@ -284,26 +286,6 @@ verbose=
 x_includes=NONE
 x_libraries=NONE
 
-dnl Installation directory options.
-dnl These are left unexpanded so users can "make install exec_prefix=/foo"
-dnl and all the variables that are supposed to be based on exec_prefix
-dnl by default will actually change.
-dnl Use braces instead of parens because sh, perl, etc. also accept them.
-dnl If you change these, you need to synchronize with the settings of the
-dnl various ..._USER_DEFINED variables further down.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${{exec_prefix}}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
 dnl Initialize some other variables.
 subdirs=
 MFLAGS= MAKEFLAGS=
@@ -352,14 +334,15 @@ infodir='${datadir}/${instvardir}/info'
 infopath=''
 install_pp=''
 lispdir='${datadir}/${instvardir}/lisp'
-moduledir='${datadir}/${instvardir}/${configuration}/modules'
+moduledir='${libdir}/${instvardir}/${configuration}/modules'
 sitelispdir='${datadir}/${inststaticdir}/site-lisp'
-sitemoduledir='${datadir}/${inststaticdir}/site-modules'
+sitemoduledir='${libdir}/${inststaticdir}/site-modules'
 pkgdir='${datadir}/${instvardir}/lisp'
 package_path=''
 etcdir='${datadir}/${instvardir}/etc'
-archlibdir='${datadir}/${instvardir}/${configuration}'
+archlibdir='${libdir}/${instvardir}/${configuration}'
 docdir='${archlibdir}'
+with_netinstall="no"
 with_prefix='yes'
 with_site_lisp='no'
 with_site_modules='yes'
@@ -369,13 +352,20 @@ with_widgets=''
 with_dialogs=''
 with_file_coding=''
 cpp='' cppflags='' libs='' ldflags=''
+extra_includes=''
 dynamic=''
 with_x11=''
 with_msw=''
 rel_alloc='default'
 with_system_malloc='default'
 with_dlmalloc='default'
+dnl ESD is associated with crashes and lockups due to incorrect signal use.
+with_esd_sound='no'
 native_sound_lib=''
+dnl These should be set to the empty string when we want gtk / gnome to
+dnl be auto-detected instead of manually specified.
+with_gtk='no'
+with_gnome='no'
 dnl use_assertions should be 'yes' by default.  Too many people in this
 dnl world have core dumps turned off by default or \"cannot find where the
 dnl core file went\".  At least we should get some useful output ...
@@ -388,6 +378,8 @@ with_dnet=""
 pdump="no"
 dnl dragndrop is still experimental.  When it is stable, comment out the following line:
 with_dragndrop="no"
+dnl Too annoying, even if mandated by IPv6 (and I'm not even sure of that)
+with_ipv6_cname="no"
 
 dnl ------------------
 dnl Options Processing
@@ -472,6 +464,8 @@ while test $# != 0; do
        with_site_modules | \
        with_x          | \
        with_x11        | \
+       with_gtk        | \
+       with_gnome      | \
        with_msw        | \
        with_gcc        | \
        dynamic         | \
@@ -511,6 +505,8 @@ while test $# != 0; do
        with_hesiod     | \
        with_dnet       | \
        with_infodock   | \
+       with_netinstall | \
+       with_ipv6_cname | \
        external_widget | \
        verbose         | \
        extra_verbose   | \
@@ -626,7 +622,8 @@ while test $# != 0; do
                types="\`all', \`none', \`(no)native', \`no(nas)', \`(no)esd'."
                USAGE_ERROR(["Valid types for the \`--$optname' option are:
   $types.
-The default is to autodetect all sound support."])
+Option \`all' or \`none' must be first in the list.
+The default is to autodetect native and NAS sound support."])
            elif test -n "$new_sdefault" ; then
                with_native_sound=$new_sdefault
                with_nas_sound=$new_sdefault
@@ -746,7 +743,7 @@ The default is to autodetect all sound support."])
        dnl Has the user specified one of the path options?
        prefix | exec_prefix | bindir | datadir | statedir | libdir | \
        mandir | infodir | infopath | lispdir | etcdir | pkgdir | \
-       archlibdir | docdir | package_path )
+       archlibdir | docdir | package_path | moduledir )
           dnl If the value was omitted, get it from the next argument.
           if test "$valomitted" = "yes"; then
             if test "$#" = 0; then
@@ -769,10 +766,12 @@ The default is to autodetect all sound support."])
              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
              datadir )
-               AC_DEFINE(INFODIR_USER_DEFINED)
-               AC_DEFINE(LISPDIR_USER_DEFINED)
-            AC_DEFINE(MODULEDIR_USER_DEFINED)
-               AC_DEFINE(ETCDIR_USER_DEFINED) ;;
+               AC_DEFINE(INFODIR_USER_DEFINED)
+               AC_DEFINE(LISPDIR_USER_DEFINED)
+               AC_DEFINE(MODULEDIR_USER_DEFINED)
+               AC_DEFINE(ETCDIR_USER_DEFINED)
+               AC_DEFINE(DOCDIR_USER_DEFINED)
+                AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
             docdir ) AC_DEFINE(DOCDIR_USER_DEFINED) ;;
              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
            esac
@@ -791,12 +790,16 @@ The default is to autodetect all sound support."])
        "with_widgets" )
          case "$val" in
            l | lu | luc | luci | lucid )               val=lucid  ;;
-           m | mo | mot | moti | motif )               val=motif  ;;
+           mo | mot | moti | motif )                   val=motif  ;;
            a | at | ath | athe | athen | athena )      val=athena ;;
            n | no | non | none )                       val=no     ;;
            y | ye | yes )                              val=yes    ;;
+           dnl Explicit --with-widgets on command line means yes.
+            "")                                                val=yes    ;;
+           g | gt | gtk )                              val=gtk    ;;
+           ms | msw )                                  val=msw    ;;
            * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
-  \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;;
+  \`gtk', \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;;
          esac
          eval "$opt=\"$val\""
        ;;
@@ -1108,7 +1111,7 @@ case "$canonical" in
   *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;;
   *-dec-osf3.[[2-9]]         ) opsys=decosf3-2 ;;
   *-dec-osf3*                ) opsys=decosf3-1 ;;
-  *-dec-osf4*                ) opsys=decosf4-0 ;;
+  *-dec-osf[[4-9]]*          ) opsys=decosf4-0 ;;
 
   dnl DEC Ultrix
   *-*-ultrix[[0-3]].* | *-*-ultrix4.0* ) opsys=bsd4-2 ;;
@@ -1211,6 +1214,13 @@ case "$canonical" in
   dnl Cubix QBx/386
   i[[3-9]]86-cubix-sysv* ) machine=intel386 opsys=usg5-3 ;;
 
+  dnl Darwin, a.k.a. MacOS X (based on Mach and Freebsd)
+  *-*-darwin*)
+    opsys=darwin
+    RANLIB="ranlib -c" dnl Avoids a link error with lwlib-config.c
+    pdump=yes          dnl No "native" working dumper available
+    ;;
+
   dnl Data General AViiON Machines
   i586-dg-dgux*R4*   | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;;
   m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) opsys=dgux5-4r3 ;;
@@ -1523,18 +1533,7 @@ case "$canonical" in
       *-bsdi3* )               opsys=bsdos3 ;;
       *-bsdi2.1* )             opsys=bsdos2-1 ;;
       *-bsdi2* )               opsys=bsdos2 ;;
-      *-sco3.2v5* )            opsys=sco5 ;
-       dnl This is a pain.  Like the current USL cc, SCO cc -E
-       dnl tokenizes as it preprocesses, making configure very
-       dnl unhappy.  Unfortunately, /lib/cpp does not understand
-       dnl flags like "-b elf", so we have to cheat in order to
-       dnl pick up the right defines for UNEXEC from the s-file.
-       dnl 01/05/95 robertl@dgii.com
-       if test "$dynamic" = "yes" ; then
-               NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE -D_SCO_ELF"  ;
-       else
-               NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
-       fi ;;
+      *-sco3.2v5* )            opsys=sco5 ;;
       *-sysv5* )               opsys=sco7 ;;
       *-386bsd* )              opsys=386bsd ;;
       *-freebsd* )             opsys=freebsd ;;
@@ -1551,9 +1550,11 @@ case "$canonical" in
 
 esac
 
-dnl Initialize machine and opsys from $canonical if not in our database above.
+dnl Initialize machine from $canonical if not in our database above.
 test -z "$machine" && machine=`echo $canonical | sed 's/-.*$//'`
-test -z "$opsys"   && opsys=`echo $canonical | sed 's/^[^-]*-[^-]*-//'`
+
+dnl Initialize opsys from `uname -s` if not in our database above.
+test -z "$opsys"   && opsys=`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
 
 dnl Use configure-time autodetection if s&m not available
 if test -r "${srcdir}/src/m/${machine}.h"; then
@@ -1863,11 +1864,19 @@ test "$extra_verbose" = "yes" && \
   ld lib_gcc ld_text_start_addr start_files ordinary_link
   have_terminfo mail_use_flock mail_use_lockf) && echo ""
 
-dnl Pick up mingw32 include path
-case "$opsys" in mingw*) mingw_include=`eval "gcc -print-file-name=libc.a"` ;
-       mingw_include=`eval "dirname $mingw_include"` ;
-       mingw_include="-I$mingw_include/../include/mingw32" ;
-       XE_APPEND($mingw_include, c_switch_system) ;;
+dnl Pick up mingw include path
+dnl We only cope with headers in mingw, not mingw32: no previous version of
+dnl XEmacs supported mingw and cygnus have made this incompatible change
+dnl so we just go with the flow.
+case "$opsys" in mingw* | cygwin*)
+  cygwin_include=`eval "gcc -print-file-name=libc.a"` ;
+  cygwin_include=`eval "dirname $cygwin_include"` ;
+  cygwin_include="-I$cygwin_include/../include" ;
+  extra_includes="$cygwin_include/mingw $cygwin_include" ;
+  case "$opsys" in mingw*)
+    XE_APPEND($extra_includes, c_switch_system) ;;
+  esac
+  ;;
 esac
 
 dnl Non-ordinary link usually requires -lc
@@ -1893,13 +1902,24 @@ if test "$__USLC__" = yes; then
   test "$need_kalloca" = "yes" && XE_APPEND(-Kalloca,c_switch_system)
 fi
 
-dnl Calculalate value of CFLAGS:
+dnl Calculate value of CFLAGS:
 dnl Use either command line flag, environment var, or autodetection
 if test "$cflags_specified" = "no"; then
   dnl Following values of CFLAGS are known to work well.
   dnl Should we take debugging options into consideration?
   if   test "$GCC" = "yes"; then
-    CFLAGS="-g -O3 -Wall -Wno-switch -Wpointer-arith -Winline -Wmissing-prototypes -Wshadow"
+    CFLAGS="-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes"
+    dnl Yuck, bad compares have been worth at least 3 crashes!
+    CFLAGS="$CFLAGS -Wsign-compare"
+    dnl You get five zillion shadowing warnings with g++.
+    dnl Even with gcc, -Wshadow is questionable because of its complaints
+    dnl about parameters with the same names as global functions.
+    if test "$xemacs_compiler" != "g++"; then
+      CFLAGS="$CFLAGS -Wshadow"
+    fi
+    dnl glibc is intentionally not `-Wpointer-arith'-clean.
+    dnl Ulrich Drepper has rejected patches to fix the glibc header files.
+    test "$have_glibc" != "yes" && CFLAGS="$CFLAGS -Wpointer-arith"
     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"
@@ -1951,10 +1971,10 @@ case `uname -s`:`uname -m`:$GCC_VERSION in
         AC_MSG_ERROR(Aborting due to known problem)
         ;;
     *:i*86*:2.7.2*)
-       case "$GCC_VERSION" in
-           2.7.2)
-               case "$CFLAGS" in
-                   *-O2*|*-O3*)
+       case "$CFLAGS" in
+            *-O2*|*-O3*)
+               case "$GCC_VERSION" in
+                   2.7.2)
                        case "$CFLAGS" in
                            *-fno-strength-reduce*) ;;
                            *)
@@ -1966,17 +1986,17 @@ case `uname -s`:`uname -m`:$GCC_VERSION in
                        esac
                        ;;
                esac
+               case "$CFLAGS" in
+                *-fno-caller-saves*) ;;
+                *)
+                   AC_MSG_RESULT(yes)
+                   AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
+                   AC_MSG_WARN(-fno-caller-saves.)
+                   AC_MSG_ERROR(Aborting due to known problem)
+                   ;;
+               esac
                ;;
        esac
-        case "$CFLAGS" in
-        *-fno-caller-saves*) ;;
-        *)
-            AC_MSG_RESULT(yes)
-           AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
-           AC_MSG_WARN(-fno-caller-saves.)
-            AC_MSG_ERROR(Aborting due to known problem)
-           ;;
-        esac
        ;;
 esac
 AC_MSG_RESULT(no)
@@ -2146,7 +2166,7 @@ dnl #### Unfortunately, there are horrible libc4 and libc5 libraries
 dnl listed in /etc/ld.so.conf on some systems, and including them on
 dnl the link path leads to linking in utterly broken libc's.
 dnl There are many clever ways of approaching this problem,
-dnl but finding out that actually works...
+dnl but finding one that actually works...
 
 dnl if test -z "$LD_RUN_PATH" -a -r "/etc/ld.so.conf"; then
 dnl   for dir in `cat /etc/ld.so.conf`; do
@@ -2262,9 +2282,6 @@ fi
 ])dnl
 XE_COMPUTE_RUNPATH()
 
-dnl JKJ REMOVEME
-dnl XE_SHLIB_STUFF
-
 dnl -----------------------------------
 dnl Do some misc autoconf-special tests
 dnl -----------------------------------
@@ -2337,6 +2354,7 @@ AC_PROG_YACC
 dnl checks for header files
 AC_CHECK_HEADERS(dnl
   a.out.h dnl
+  elf.h dnl
   cygwin/version.h dnl
   fcntl.h dnl
   inttypes.h dnl
@@ -2350,31 +2368,29 @@ AC_CHECK_HEADERS(dnl
   sys/un.h dnl
   ulimit.h dnl
   unistd.h dnl
-  utime.h dnl
 )
 AC_HEADER_SYS_WAIT
 AC_HEADER_STDC
 AC_HEADER_TIME
 AC_DECL_SYS_SIGLIST
 
-dnl Some systems have utime.h but do not 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;],
+
+dnl ----------------------------------------------------------------
+dnl Checking for utime() or utimes().
+dnl We prefer utime, since it is more standard.
+dnl Some systems have utime.h but do not declare the struct anyplace,
+dnl so we use a more sophisticated test for utime than AC_CHECK_FUNCS.
+dnl ----------------------------------------------------------------
+AC_MSG_CHECKING(for utime)
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <utime.h>],
+[struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);],
   [AC_MSG_RESULT(yes)
-   AC_DEFINE(HAVE_STRUCT_UTIMBUF)],
-  AC_MSG_RESULT(no))
+   AC_DEFINE(HAVE_UTIME)],
+  [AC_MSG_RESULT(no)
+   dnl We don't have utime(); how about utimes()?
+   AC_CHECK_FUNCS(utimes)])
+
 
 dnl checks for typedefs
 AC_TYPE_SIGNAL
@@ -2488,6 +2504,10 @@ case "$opsys" in decosf*)
     c_switch_site="$c_switch_site -threads" ;;
 esac
 
+dnl ----------------------------------------------------------------
+dnl Miscellaneous flags
+dnl ----------------------------------------------------------------
+
 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
@@ -2509,12 +2529,142 @@ if test "$opsys" = "sol2"; then
   fi
 fi
 
+dnl GNU ld now defaults to combreloc, which screws up unexec, but not pdump.
+dnl Note that it's OK if the GNU style long option causes non-GNU ld to barf
+dnl a usage message, that's often good enough.  Please report it, though.
+dnl #### Should make this Solaris-friendly.
+dnl Link with -z nocombreloc for now.
+if test "$pdump" != "yes"; then
+  AC_MSG_CHECKING(for \"-z nocombreloc\" linker flag)
+  case "`ld --help 2>&1`" in
+    *-z\ nocombreloc* ) AC_MSG_RESULT(yes)
+      XE_PREPEND(-z nocombreloc, ld_switch_site) ;;
+    *) AC_MSG_RESULT(no) ;;
+  esac
+fi
+
 dnl ----------------------
 dnl Choose a window system
 dnl ----------------------
 
 AC_CHECKING("for specified window system")
 
+dnl Autodetection of Gdk libraries and includes
+dnl -------------------------------------------
+dnl On some systems (FreeBSD springs to mind), they use
+dnl versions on the utility routines, so instead of gtk-config
+dnl you must use gtk12-config, etc, etc.
+
+GNOME_CONFIG=no
+GTK_CONFIG=no
+
+if test "$with_gnome" != "no"; then
+   AC_MSG_CHECKING(for GNOME configuration script)
+   for possible in gnome-config
+   do
+      possible_version=`${possible} --version 2> /dev/null`
+      if test "x${possible_version}" != "x"; then
+              GNOME_CONFIG="${possible}"
+              with_gnome=yes
+              with_gtk=yes
+              break
+      fi
+   done
+   AC_MSG_RESULT([${GNOME_CONFIG}])
+fi
+
+if test "${GNOME_CONFIG}" != "no"; then
+      GNOME_LIBS=`${GNOME_CONFIG} --libs gnomeui`
+      GNOME_CFLAGS=`${GNOME_CONFIG} --cflags gnomeui`
+      AC_DEFINE(HAVE_GNOME)
+      XE_APPEND(${GNOME_LIBS}, libs_gtk)
+      XE_APPEND(${GNOME_CFLAGS}, c_switch_gtk)
+fi
+
+if test "$with_gtk" != "no";then
+   AC_MSG_CHECKING(for GTK configuration script)
+   for possible in gtk12-config gtk14-config gtk-config
+   do
+      possible_version=`${possible} --version 2> /dev/null`
+      if test "x${possible_version}" != "x"; then
+              GTK_CONFIG="${possible}"
+      fi
+      case "${possible_version}" in
+        1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;;
+        1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;;
+       1.2.*)
+               with_gtk=yes
+               break
+               ;;
+        *)     AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);;
+      esac
+   done
+   AC_MSG_RESULT([${GTK_CONFIG}])
+fi
+
+if test "${GTK_CONFIG}" != "no"; then
+      AC_MSG_CHECKING(gtk version)
+      GTK_VERSION=`${GTK_CONFIG} --version`
+      AC_MSG_RESULT(${GTK_VERSION})
+
+      AC_MSG_CHECKING(gtk libs)
+      GTK_LIBS=`${GTK_CONFIG} --libs`
+      XE_APPEND(${GTK_LIBS}, libs_gtk)
+      AC_MSG_RESULT(${GTK_LIBS})
+
+      AC_MSG_CHECKING(gtk cflags)
+      GTK_CFLAGS=`${GTK_CONFIG} --cflags`
+      if test "$GCC" = "yes"; then
+       GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow"
+      fi
+      XE_APPEND(${GTK_CFLAGS}, c_switch_gtk)
+      AC_MSG_RESULT(${GTK_CFLAGS})
+
+      AC_CHECK_LIB(gdk_imlib, main, XE_PREPEND(-lgdk_imlib, libs_gtk))
+      AC_CHECK_LIB(Imlib, Imlib_init, XE_APPEND(-lImlib, libs_gtk))
+      AC_CHECK_FUNCS(gdk_imlib_init)
+
+      AC_DEFINE(HAVE_XPM)
+      AC_DEFINE(HAVE_GTK)
+      AC_SUBST(GTK_CONFIG)
+
+      window_system=gtk
+      with_gtk=yes
+      with_x11=no
+
+      test "${with_scrollbars}" != "no" && with_scrollbars=gtk
+      test "${with_toolbars}" != no && with_toolbars=gtk
+      test "${with_menubars}" != "no" && with_menubars=gtk
+      test "${with_dialogs}" != "no" && with_dialogs=gtk
+      test "${with_widgets}" != "no" && with_widgets=gtk
+
+      XE_ADD_OBJS(console-gtk.o device-gtk.o event-gtk.o frame-gtk.o)
+      XE_ADD_OBJS(objects-gtk.o redisplay-gtk.o glyphs-gtk.o)
+      XE_ADD_OBJS(select-gtk.o gccache-gtk.o)
+      XE_ADD_OBJS(gtk-xemacs.o ui-gtk.o)
+
+      dnl Check for libglade support (it rocks)
+      OLD_CFLAGS="${CFLAGS}"
+      OLD_CPPFLAGS="${CPPFLAGS}"
+      OLD_LDFLAGS="${LDFLAGS}"
+      CFLAGS="${GTK_CFLAGS} ${CFLAGS}"
+      CPPFLAGS="${GTK_CFLAGS} ${CFLAGS}"
+      LDFLAGS="${LDFLAGS} ${GTK_LIBS}"
+      AC_CHECK_HEADERS(glade/glade.h glade.h)
+      AC_CHECK_LIB(xml, main, XE_PREPEND(-lxml, libs_gtk))
+      AC_CHECK_LIB(glade, main, XE_PREPEND(-lglade, libs_gtk))
+      AC_CHECK_LIB(glade-gnome, main, XE_PREPEND(-lglade-gnome, libs_gtk))
+      AC_EGREP_HEADER([char \*txtdomain;], [glade/glade-xml.h],
+                      [AC_MSG_RESULT(yes)
+                       AC_DEFINE(LIBGLADE_XML_TXTDOMAIN,1)],
+                      [AC_MSG_RESULT(no)])
+      CFLAGS="${OLD_CFLAGS}"
+      CPPFLAGS="${OLD_CPPFLAGS}"
+      LDFLAGS="${OLD_LDFLAGS}"
+fi
+
+dnl We may eventually prefer gtk/gdk over vanilla X11...
+
 if test "$with_x11" != "no"; then
   dnl User-specified --x-includes or --x-libraries implies --with-x11.
   test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -2559,10 +2709,11 @@ if test "$with_x11" != "no"; then
   fi
 fi
 
-case "$with_x11" in
-  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
-  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
-esac
+dnl #### wmperry:: !x11 != NONE
+dnl case "$with_x11" in
+dnl  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
+dnl  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
+dnl esac
 
 if test "$with_x11" = "yes"; then
   AC_DEFINE(HAVE_X_WINDOWS)
@@ -2652,7 +2803,9 @@ EOF
     cd ..
     rm -fr conftestdir
     for word in $xmkmf_defines; do
-      case "$word" in -D* )
+      case "$word" in 
+      -D__STDC__*) ;;
+      -D* )
        sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
        case "$word" in
          -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
@@ -2710,17 +2863,18 @@ dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
 
   AC_CHECK_HEADERS(X11/Xlocale.h)
 
-  dnl remove this - we should avoid checking for specific OS
-  AC_MSG_CHECKING(for XFree86)
-  if test -d "/usr/X386/include" -o \
-          -f "/etc/XF86Config"    -o \
-         -f "/etc/X11/XF86Config" -o \
-         -f "/usr/X11R6/lib/X11/XF86Config"; then
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(HAVE_XFREE386)
-  else
-    AC_MSG_RESULT(no)
-  fi
+  dnl XFree86 has a non-standard prototype for this X11R6 function
+  AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
+  AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
+  AC_TRY_COMPILE([
+#define NeedFunctionPrototypes 1
+#include <X11/Xlib.h>
+extern Bool XRegisterIMInstantiateCallback(
+   Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
+], [], 
+  [AC_MSG_RESULT(yes)],
+  [AC_MSG_RESULT(no)
+   AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
 
   dnl autodetect -lXmu
   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
@@ -2758,6 +2912,14 @@ if test "$with_msw" != "no"; then
   AC_CHECK_LIB(gdi32,main,with_msw=yes)
   if test "$with_msw" = "yes"; then
     AC_DEFINE(HAVE_MS_WINDOWS)
+
+    dnl The net installer only works with MS-Windows currently
+    if test "$with_netinstall" = "yes"; then
+      XE_APPEND(netinstall, MAKE_SUBDIR)
+      XE_APPEND(netinstall, SRC_SUBDIR_DEPS)
+      XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
+    fi
+
     install_pp="$blddir/lib-src/installexe.sh"
     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lwinspool, libs_system)
     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
@@ -2781,7 +2943,7 @@ if test "$with_msw" != "no"; then
     dnl check for our special version of select
     AC_TRY_RUN([#include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
-    [AC_DEFINE(HAVE_MSG_SELECT)])
+    [need_event_unixoid=yes; AC_DEFINE(HAVE_MSG_SELECT)])
     with_file_coding=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 gui-msw.o)
   fi
@@ -2848,6 +3010,11 @@ bitmapdir=
 case "$window_system" in
   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
+  gtk  )
+       HAVE_X_WINDOWS=no
+       test "$with_gnome" = "yes" && echo "  Using GNOME."
+       test "$with_gnome" = "no" && echo "  Using GTK."
+       ;;
   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
 esac
 
@@ -2871,7 +3038,7 @@ test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no)
 test -z "$with_xauth" && with_xauth=yes
 if test "$with_xauth" = "yes"; then
   AC_DEFINE(HAVE_XAUTH)
-  XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
+  XE_SPACE(libs_xauth, $GTK_LIBS $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
 fi
 AC_SUBST(libs_xauth)
 
@@ -2953,11 +3120,14 @@ if test "$with_offix" = "yes"; then
   XE_APPEND(offix.o, dnd_objs)
   XE_APPEND(OffiX, dragndrop_proto)
 fi
+if test "$with_gtk" = "yes"; then
+   XE_APPEND(GTK, dragndrop_proto)
+fi
 
 dnl Autodetect Drag'n'Drop support
 dnl always included if CDE, Offix, or MSWindows are defined
-AC_MSG_CHECKING(if drag and drop API is needed)
 if test "$with_dragndrop" != "no" ; then
+  AC_MSG_CHECKING(if drag and drop API is needed)
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
     AC_MSG_RESULT([yes (${dragndrop_proto} )])
@@ -3038,9 +3208,38 @@ dnl ----------------------
 if test "$window_system" != "none"; then
   AC_CHECKING(for graphics libraries)
 
+  dnl add special code to handle xpm-nox on Cygwin (csw)
+  dnl   -- should only happen if CYGWIN && WITH_XPM && WITH_MSW && !WITH_X
+  libpath_xpm=
+  incpath_xpm=
+  case "$opsys" in 
+    cygwin*)
+      cygwin_top=`eval "gcc -print-file-name=libc.a"` ;
+      cygwin_top=`eval "dirname ${cygwin_top}"`;
+      cygwin_top="${cygwin_top}/..";
+      case "$window_system" in
+        dnl use "standard" search pattern
+        x11)  ;;
+        dnl hardcode "standard" non-X11 xpm lib/inc dirs
+        msw) libpath_xpm="-L${cygwin_top}/lib/noX"
+             incpath_xpm="-I${cygwin_top}/include/noX"
+              ;;
+        dnl not supported on cygwin (yet?)
+        gtk)  ;;
+        dnl probably not reached...
+        none) ;;
+        dnl ditto
+        *)    ;;
+      esac
+      ;;
+    dnl use "standard" search pattern for all other OS's
+    *) ;;
+  esac
   dnl Autodetect Xpm
   xpm_problem=""
   if test -z "$with_xpm"; then
+    XE_PREPEND("$incpath_xpm", CFLAGS)
+    XE_PREPEND("$libpath_xpm", LDFLAGS)
     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
     xe_check_libs=-lXpm
     AC_TRY_RUN([#define XPM_NUMBERS
@@ -3072,8 +3271,13 @@ if test "$window_system" != "none"; then
     AC_MSG_RESULT($with_xpm)
   fi
   if test "$with_xpm" = "yes"; then
+    dnl #### This code assumes that if AC_CHECK_LIB fails,
+    dnl #### then it will succeed if FOR_MSW is defined,
+    dnl #### but doesn't actually verify this assumption.
     AC_DEFINE(HAVE_XPM)
+    XE_PREPEND("$libpath_xpm", LDFLAGS)
     XE_PREPEND(-lXpm, libs_x)
+    XE_PREPEND("$incpath_xpm", CFLAGS)
     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
     xe_check_libs=-lXpm
     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
@@ -3170,13 +3374,38 @@ if test "$window_system" != "none"; then
 fi
 
 dnl ----------------------
+dnl GTK-Specific Graphics libraries
+dnl ----------------------
+
+if test "$with_gtk" = "yes"; then
+  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_gtk)
+  fi
+fi
+
+
+dnl ----------------------
 dnl X-Specific Graphics libraries
 dnl ----------------------
 
 if test "$with_x11" = "yes"; then
-
   AC_CHECKING(for X11 graphics libraries)
+fi
+
+dnl We don't automatically trigger widgets if athena is present
+dnl because of stability concerns.
+dnl But if the user wants widgets, still offer him autodetections
+case "$with_widgets" in
+  "yes" | "athena")            detect_athena=yes ;;
+   *)                          detect_athena=no ;;
+esac
 
+if test "$with_x11" = "yes" -a "$detect_athena" = "yes" ; then
   AC_CHECKING(for the Athena widgets)
 
   dnl What in heck did the user actually want?
@@ -3273,6 +3502,11 @@ if test "$with_x11" = "yes"; then
     have_xaw=no
   fi
 
+else
+  have_xaw=no
+fi dnl "$with_x11" = "yes" -a "detect_athena" = "yes"
+
+if test "$with_x11" = "yes"; then
   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)],
@@ -3407,6 +3641,14 @@ 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)
 
+if test "$with_gtk" = "yes"; then
+  test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-gtk.o)
+  test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-gtk.o)
+  test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-gtk.o)
+  test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-gtk.o)
+  test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-gtk.o)
+fi
+
 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)
@@ -3479,7 +3721,7 @@ if test "$with_mule" = "yes" ; then
     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
       AC_DEFINE(USE_XFONTSET)
       if test "$with_xim" = "no" ; then
-        XE_ADD_OBJS(input-method-xfs.o)
+        XE_ADD_OBJS(input-method-xlib.o)
       fi
     fi
   fi dnl with_xfs
@@ -3487,6 +3729,8 @@ if test "$with_mule" = "yes" ; then
   dnl Autodetect WNN
   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
+  dnl gcc 2.97 fixincludes breaks inclusion of wnn/commonhd.h
+  test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/commonhd.h, ,with_wnn=no) }
   dnl Detour to find crypt
   if test "$with_wnn" != "no"; then
     AC_CHECK_FUNCS(crypt)
@@ -3554,30 +3798,37 @@ if test "$need_motif" = "yes" ; then
   XE_COMPUTE_RUNPATH()
 fi
 
-AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo 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 stpcpy strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask)
+AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo 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 stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask)
 
+dnl ----------------------------------------------------------------
 dnl Check for PTY support functions.
-dnl  getpt is the preferred pty allocation method on glibc systems.
-dnl _getpt is the preferred pty allocation method on SGI systems.
-dnl grantpt, unlockpt, ptsname are defined by Unix98.
-AC_CHECK_FUNCS(getpt _getpt grantpt unlockpt ptsname killpg tcgetpgrp)
-
-dnl openpty is the preferred pty allocation method on BSD and Tru64 systems.
-dnl openpty might be declared in pty.h or in libutil.h.
+dnl ----------------------------------------------------------------
+
+dnl There is no "standard" pty allocation method.  Every system is different.
+dnl  getpt()  is the preferred pty allocation method on glibc systems.
+dnl _getpty() is the preferred pty allocation method on SGI systems.
+dnl grantpt(), unlockpt(), ptsname() are defined by Unix98.
+AC_CHECK_FUNCS(getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp)
+
+dnl openpty() is the preferred pty allocation method on BSD and Tru64 systems.
+dnl openpty() might be declared in:
+dnl - pty.h (Tru64 or Linux)
+dnl - libutil.h (FreeBSD)
+dnl - util.h (NetBSD)
 AC_CHECK_FUNC(openpty, have_openpty=yes, [
   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
 if test "$have_openpty" = "yes"; then
   AC_DEFINE(HAVE_OPENPTY)
-  AC_CHECK_HEADERS(pty.h libutil.h)
+  AC_CHECK_HEADERS(pty.h libutil.h util.h, break)
   test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system)
 fi
 
 dnl Check for STREAM support functions.
 dnl Confusingly, "str" means both "string" and "SysV Streams".
-AC_CHECK_HEADERS(sys/stropts.h)
-if test "$ac_cv_header_sys_stropts_h" = "yes"; then
+AC_CHECK_HEADERS(stropts.h)
+if test "$ac_cv_header_stropts_h" = "yes"; then
   AC_CHECK_FUNCS(isastream)
-  AC_CHECK_HEADERS(sys/strtio.h) dnl TIOCSIGNAL
+  AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
 fi
 
 dnl Use our own realpath always.
@@ -3697,8 +3948,11 @@ dnl case "${GCC}${opsys}" in hpux* )
 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
 dnl esac
 
-AC_FUNC_ALLOCA
-test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
+dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
+if test "$__DECC" != "yes"; then
+  AC_FUNC_ALLOCA
+  test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
+fi
 
 dnl Check whether vfork exists and works correctly. (This does more
 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
@@ -3753,6 +4007,10 @@ esac
 AC_MSG_RESULT($have_mmap)
 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
 
+dnl By default we switch off rel-alloc on cygwin as it generally causes us grief
+case "$opsys" in cygwin*) 
+       test "$rel_alloc" = "default" && rel_alloc=no ;;
+esac
 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.
 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
@@ -3873,6 +4131,14 @@ if test "$with_native_sound" != "no"; then
     esac
   fi
 
+  dnl Win32 Native uses native sound
+  if test -z "$sound_found"; then
+    if test "$with_msw" = "yes"; then
+    sound_found=yes
+    native_sound_lib=
+    fi
+  fi
+
   dnl Check for Linux/BSD native sound
   if test -z "$sound_found"; then
     for dir in "machine" "sys" "linux"; do
@@ -3885,14 +4151,6 @@ if test "$with_native_sound" != "no"; then
     done
   fi
 
-  dnl Win32 Native uses native sound
-  if test -z "$sound_found"; then
-    if test "$with_msw" = "yes"; then
-    sound_found=yes
-    native_sound_lib=
-    fi
-  fi
-
   test "$sound_found" = "yes" && with_native_sound=yes
 fi
 
@@ -3995,7 +4253,7 @@ if test "$with_tty" = "yes"  ; then
       XE_ADD_OBJS(tparam.o)
       dnl The HP-UX curses library seems to have a badly broken version of select(2)
       dnl that makes "poll: interrupted system call" messages to appear and
-      dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
+      dnl Emacs subprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
       if test -n "$libs_termcap"; then
        XE_PREPEND($libs_termcap, LIBS)
@@ -4028,7 +4286,9 @@ else dnl "$with_tty" = "no"
 fi dnl with_tty
 
 dnl Do we need event-unixoid.o ?
-test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
+dnl This is needed for X, or for TTY, or for MSWIN w/Cygwin select()
+dnl [but not Mingw MSWIN]
+test "$with_x11" = "yes" -o "$with_tty" = "yes" -o "$need_event_unixoid" = "yes" && XE_ADD_OBJS(event-unixoid.o)
 
 dnl Database support
 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
@@ -4105,7 +4365,14 @@ typedef uint64_t u_int64_t;
 #if DB_VERSION_MAJOR > 1
 yes
 #endif
-], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
+], [AC_EGREP_CPP(yes,
+[#include <$db_h_file>
+#if DB_VERSION_MAJOR > 2
+yes
+#endif
+], [AC_MSG_RESULT(3); dbfunc=db_create],[
+    AC_MSG_RESULT(2); dbfunc=db_open])],[
+    AC_MSG_RESULT(1); dbfunc=dbopen])
     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
   fi
@@ -4146,8 +4413,16 @@ if test "$with_modules" != "no"; then
   else
     dnl Find headers and libraries
     AC_CHECK_HEADER(dlfcn.h, [
-      AC_CHECK_LIB(dl, dlopen, [ have_dl=yes libdl=dl], [
-      AC_CHECK_LIB(c,  dlopen, [ have_dl=yes ])])])
+      AC_MSG_CHECKING([for dlopen in -lc])
+      AC_TRY_LINK([#include <dlfcn.h>],dnl
+       [dlopen ("", 0);], [ have_dl=yes ], [
+      AC_MSG_CHECKING([for dlopen in -ldl])
+      ac_save_LIBS="$LIBS"
+      LIBS="-ldl $LIBS"
+      AC_TRY_LINK([#include <dlfcn.h>],dnl
+       [dlopen ("", 0);], [ have_dl=yes ],
+       [LIBS="$ac_save_LIBS"])
+      ac_save_LIBS=])])
     if test -n "$have_dl"; then
       AC_DEFINE(HAVE_DLOPEN)
     else
@@ -4220,13 +4495,13 @@ dnl Use XE_SPACE instead of plain assignment statements to remove extraneous bla
 XE_SPACE(CFLAGS, $CFLAGS)
 XE_SPACE(extra_objs, $extra_objs)
 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
-XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
+XE_SPACE(c_switch_window_system, $c_switch_x_site $c_switch_gtk $X_CFLAGS)
 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
-XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
+XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS)
 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
 
 dnl Compute lists of Makefiles and subdirs
@@ -4321,6 +4596,7 @@ AC_SUBST(pkgdir)
 AC_SUBST(statedir)
 AC_SUBST(libdir)
 AC_SUBST(mandir)
+AC_SUBST(extra_includes)
 
 AC_SUBST(prefix)
 AC_SUBST(PREFIX_USER_DEFINED)
@@ -4540,6 +4816,7 @@ 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)
+test "$with_ipv6_cname"    = "yes" && AC_DEFINE(IPV6_CANONICALIZE)
 
 dnl -------------------------------
 dnl Report on what we decided to do
@@ -4601,6 +4878,10 @@ fi
 echo "  Compiler:                          $CC $CFLAGS"
 echo "  Relocating allocator for buffers:  $rel_alloc"
 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
+case "$ld_switch_site" in
+  *nocombreloc*) echo "  Linking with \`-z nocombreloc'.
+    - Consider configuring with --pdump." ;;
+esac
 
 echo "
 Window System:"
@@ -4627,6 +4908,7 @@ if test "$need_athena" = "yes"; then
   echo "    - Athena library to link:                     $athena_lib"
 fi
 case "$with_menubars" in
+  gtk   ) echo "  Using GTK menubars."   ;;
   lucid ) echo "  Using Lucid menubars." ;;
   motif ) echo "  Using Motif menubars."
           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
@@ -4635,12 +4917,14 @@ case "$with_menubars" in
     msw ) echo "  Using MS-Windows menubars." ;;
 esac
 case "$with_scrollbars" in
+  gtk    ) echo "  Using GTK scrollbars."        ;;
   lucid  ) echo "  Using Lucid scrollbars."      ;;
   motif  ) echo "  Using Motif scrollbars."      ;;
   athena ) echo "  Using Athena scrollbars."     ;;
      msw ) echo "  Using MS-Windows scrollbars." ;;
 esac
 case "$with_dialogs" in
+  gtk    ) echo "  Using GTK 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."
@@ -4652,6 +4936,7 @@ case "$with_dialogs" in
      msw ) echo "  Using MS-Windows dialog boxes." ;;
 esac
 case "$with_widgets" in
+  gtk    ) echo "  Using GTK native widgets."        ;;
   motif  ) echo "  Using Motif native widgets."      ;;
   athena ) echo "  Using Athena native widgets."     ;;
      msw ) echo "  Using MS-Windows native widgets." ;;
@@ -4742,6 +5027,7 @@ test -n "$mail_locking" && echo "  Compiling in support for \"$mail_locking\" ma
 
 echo "
 Other Features:"
+test "$with_ipv6_cname" = no && echo "  Inhibiting IPv6 canonicalization at startup."
 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."