http://ftp.ksu.edu.tw/FTP/FreeBSD/distfiles/xscreensaver-4.20.tar.gz
[xscreensaver] / configure.in
index 76ccf0f9f11af1584b2842d877133dac910e4e95..7e3d2e5ab983a93db667eb2ba2673337861d7720 100644 (file)
@@ -1,4 +1,4 @@
-# configure.in --- xscreensaver, Copyright (c) 1997-2002 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski.
 #
 
 AC_PREREQ(2.52)
 #
 
 AC_PREREQ(2.52)
@@ -34,6 +34,7 @@ AC_DEFUN(AC_PROG_CC_ANSI,
  [AC_PROG_CC
 
   if test -z "$GCC"; then
  [AC_PROG_CC
 
   if test -z "$GCC"; then
+    # not using GCC
     AC_MSG_CHECKING(how to request ANSI compilation)
     case "$host" in
       *-hpux* )
     AC_MSG_CHECKING(how to request ANSI compilation)
     case "$host" in
       *-hpux* )
@@ -44,18 +45,26 @@ AC_DEFUN(AC_PROG_CC_ANSI,
         AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e)
         CC="$CC -qlanglvl=ansi -qhalt=e"
       ;;
         AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e)
         CC="$CC -qlanglvl=ansi -qhalt=e"
       ;;
-
       *-dec-* )
         AC_MSG_RESULT(DEC: adding -std1 -ieee)
         CC="$CC -std1"
       ;;
       *-dec-* )
         AC_MSG_RESULT(DEC: adding -std1 -ieee)
         CC="$CC -std1"
       ;;
-
       *)
         AC_MSG_RESULT(no idea)
       ;;
     esac
       *)
         AC_MSG_RESULT(no idea)
       ;;
     esac
+  else
+    # using GCC
+    case "$host" in
+      *-solaris*)
+        AC_MSG_RESULT(Solaris: adding -D__EXTENSIONS__)
+        CC="$CC -D__EXTENSIONS__"
+      ;;
+    esac
   fi
 
   fi
 
+  OBJCC="$CC"
+
   AC_MSG_CHECKING([whether the compiler works on ANSI C])
   AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
      AC_MSG_RESULT(yes),
   AC_MSG_CHECKING([whether the compiler works on ANSI C])
   AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
      AC_MSG_RESULT(yes),
@@ -65,7 +74,10 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
 
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
-    CC="$CC -Wall -Wstrict-prototypes -Wnested-externs"
+    CC="$CC -pedantic -Wall -Wstrict-prototypes -Wnested-externs"
+    OBJCC="$OBJCC -Wall"
+    # supposedly gcc 3.4 will have "-Wdeclaration-after-statement"
+    # and then perhaps we can do without -pedantic?
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
@@ -92,6 +104,15 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 #       gcc.  Old gcc doesn't support -std, and new gcc doesn't support -lang.
 #       so much for compatibility!)
 #
 #       gcc.  Old gcc doesn't support -std, and new gcc doesn't support -lang.
 #       so much for compatibility!)
 #
+#       UPDATE: apparently there is NO WAY to tell gcc 3.2.2 to require that
+#       declarations preceed statements, without resorting to "-pedantic".
+#       This means that there is no way to get gcc3 to issue warnings that
+#       ensure that your code complies with the ANSI/ISO C89 standard, without
+#       also drowning in totally useless warnings.  Thank you master may I
+#       have another.
+#
+#       So, I give up, let's just use -pedantic.
+#
 ###############################################################################
 
 AC_DEFUN(AC_GCC_ACCEPTS_STD,
 ###############################################################################
 
 AC_DEFUN(AC_GCC_ACCEPTS_STD,
@@ -140,6 +161,38 @@ AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
 ])
 
 
 ])
 
 
+###############################################################################
+#
+#       Function to figure out how to turn off Objective C on MacOS X.
+#       (We have to do this to work around an Apple-specific gcc bug.)
+#
+###############################################################################
+
+AC_DEFUN(AC_GCC_ACCEPTS_NO_CPP_PRECOMP,
+ [if test -n "$GCC"; then
+   AC_CACHE_CHECK([whether gcc accepts -no-cpp-precomp],
+     ac_cv_gcc_accepts_no_cpp_precomp,
+    [if ( ( gcc -E -no-cpp-precomp - </dev/null >/dev/null ) 2>&1 | \
+          grep unrecognized >/dev/null ); then
+       ac_cv_gcc_accepts_no_cpp_precomp=no
+     else
+       ac_cv_gcc_accepts_no_cpp_precomp=yes
+     fi])
+   ac_gcc_accepts_no_cpp_precomp="$ac_cv_gcc_accepts_no_cpp_precomp"
+  fi
+])
+
+AC_DEFUN(AC_NO_OBJECTIVE_C,
+ [if test -n "$GCC"; then
+   AC_GCC_ACCEPTS_NO_CPP_PRECOMP
+   if test "$ac_gcc_accepts_no_cpp_precomp" = yes ; then
+     AC_MSG_RESULT(Disabling Objective C extensions in ANSI C code.)
+     CC="$CC -no-cpp-precomp"
+   fi
+  fi
+])
+
+
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
@@ -147,7 +200,7 @@ AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
 ###############################################################################
 
 AC_DEFUN(AC_PROG_INSTALL_DIRS,
 ###############################################################################
 
 AC_DEFUN(AC_PROG_INSTALL_DIRS,
- [AC_CACHE_CHECK([whether \"\${INSTALL} -d\" creates intermediate directories],
+ [AC_CACHE_CHECK([whether "\${INSTALL} -d" creates intermediate directories],
     ac_cv_install_d_creates_dirs,
     [ac_cv_install_d_creates_dirs=no
      rm -rf conftestdir
     ac_cv_install_d_creates_dirs,
     [ac_cv_install_d_creates_dirs=no
      rm -rf conftestdir
@@ -163,7 +216,7 @@ AC_DEFUN(AC_PROG_INSTALL_DIRS,
     ])
 
   if test "$ac_cv_install_d_creates_dirs" = no ; then
     ])
 
   if test "$ac_cv_install_d_creates_dirs" = no ; then
-    AC_CACHE_CHECK([whether \"mkdir -p\" creates intermediate directories],
+    AC_CACHE_CHECK([whether "mkdir -p" creates intermediate directories],
       ac_cv_mkdir_p_creates_dirs,
       [ac_cv_mkdir_p_creates_dirs=no
        rm -rf conftestdir
       ac_cv_mkdir_p_creates_dirs,
       [ac_cv_mkdir_p_creates_dirs=no
        rm -rf conftestdir
@@ -585,10 +638,20 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
       #
       if test -f /usr/dt/include/Xm/Xm.h ; then
         X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
       #
       if test -f /usr/dt/include/Xm/Xm.h ; then
         X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
-        X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
+        MOTIF_LIBS="$MOTIF_LIBS -L/usr/dt/lib -R/usr/dt/lib"
 
         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
 
         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
-        AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
+        AC_CHECK_LIB(gen, regcmp, [MOTIF_LIBS="$MOTIF_LIBS -lgen"])
+      fi
+
+    ;;
+    *-darwin*)
+
+      # On MacOS X (10.x with "fink"), many things are under /sw/.
+      #
+      if test -d /sw/include ; then
+        X_CFLAGS="-I/sw/include $X_CFLAGS"
+        X_LIBS="-L/sw/lib $X_LIBS"
       fi
     ;;
   esac])
       fi
     ;;
   esac])
@@ -743,6 +806,7 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
+AC_NO_OBJECTIVE_C
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
@@ -773,7 +837,6 @@ AC_HEADER_SYS_WAIT
 AC_HEADER_DIRENT
 AC_GETTIMEOFDAY_ARGS
 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
 AC_HEADER_DIRENT
 AC_GETTIMEOFDAY_ARGS
 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
-
 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
 AC_CHECK_ICMP
 AC_CHECK_ICMPHDR
 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
 AC_CHECK_ICMP
 AC_CHECK_ICMPHDR
@@ -788,13 +851,23 @@ fi
 AC_PATH_XTRA
 
 if test "$have_x" != yes; then
 AC_PATH_XTRA
 
 if test "$have_x" != yes; then
-  AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
+  AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try `$0 --help'.)
 fi
 
 AC_PATH_X_APP_DEFAULTS
 AC_X_RANDOM_PATHS
 AC_XPOINTER
 
 fi
 
 AC_PATH_X_APP_DEFAULTS
 AC_X_RANDOM_PATHS
 AC_XPOINTER
 
+AC_MSG_CHECKING(whether this is MacOS X)
+  ac_macosx=no
+  case "$host" in
+    *-apple-darwin* )
+      ac_macosx=yes
+    ;;
+  esac
+AC_MSG_RESULT($ac_macosx)
+
+
 
 ###############################################################################
 #
 
 ###############################################################################
 #
@@ -810,6 +883,7 @@ AC_SUBST(GETTEXT_PACKAGE)
 
 ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
 AM_GLIB_GNU_GETTEXT
 
 ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
 AM_GLIB_GNU_GETTEXT
+MKINSTALLDIRS="$INSTALL_DIRS"
 
 
 ###############################################################################
 
 
 ###############################################################################
@@ -890,7 +964,7 @@ AC_ARG_WITH(hackdir,[
 Installation options:
 
   --with-hackdir=DIR      Where to install the hundreds of demo executables.
 Installation options:
 
   --with-hackdir=DIR      Where to install the hundreds of demo executables.
-                          Default: \`PREFIX/lib/xscreensaver/'],
+                          Default: `PREFIX/lib/xscreensaver/'],
   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
 
 if test x"$with_hackdir" = xyes; then
   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
 
 if test x"$with_hackdir" = xyes; then
@@ -935,9 +1009,9 @@ with_configdir_req=unspecified
 AC_ARG_WITH(configdir,
 [  --with-configdir=DIR    Where to install the data files that describe each
                           of the display modes to the GUI.
 AC_ARG_WITH(configdir,
 [  --with-configdir=DIR    Where to install the data files that describe each
                           of the display modes to the GUI.
-                          Default: \`GNOMEPREFIX/control-center/screensavers/'
-                          or \`PREFIX/lib/xscreensaver/config/', depending on
-                          whether GNOME is available.
+                          Default: `GTK_PREFIX/control-center/screensavers/'
+                          or `PREFIX/lib/xscreensaver/config/', depending on
+                          whether GTK is available.
 ],
   [with_configdir="$withval"; with_configdir_req="$withval"],
   [with_configdir=yes])
 ],
   [with_configdir="$withval"; with_configdir_req="$withval"],
   [with_configdir=yes])
@@ -972,7 +1046,7 @@ have_sgi=no
 with_sgi_req=unspecified
 AC_ARG_WITH(sgi-ext,
 [Except where noted, all of the --with options below can also take a
 with_sgi_req=unspecified
 AC_ARG_WITH(sgi-ext,
 [Except where noted, all of the --with options below can also take a
-directory argument: for example, \`--with-motif=/opt/Motif'.  That would
+directory argument: for example, `--with-motif=/opt/Motif'.  That would
 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
 to be added to the -L list, assuming those directories exist.  
 
 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
 to be added to the -L list, assuming those directories exist.  
 
@@ -1137,7 +1211,8 @@ if test "$with_dpms" = yes; then
 
   # first check for dpms.h
   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
 
   # first check for dpms.h
   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
-                    [#include <X11/Xlib.h>])
+                    [#include <X11/Xlib.h>
+                    #include <X11/Xmd.h>])
 
   # if that succeeded, then check for the DPMS code in the libraries
   if test "$have_dpms" = yes; then
 
   # if that succeeded, then check for the DPMS code in the libraries
   if test "$have_dpms" = yes; then
@@ -1191,12 +1266,12 @@ if test "$with_xinerama" = yes; then
 
     # first look in -lXext
     have_xinerama=no
 
     # first look in -lXext
     have_xinerama=no
-    AC_CHECK_X_LIB(Xext, XineramaQueryExtension, [have_xinerama=yes], [true],
+    AC_CHECK_X_LIB(Xext, XineramaQueryScreens, [have_xinerama=yes], [true],
                   -lXext -lX11)
 
     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
     if test "$have_xinerama" = no; then
                   -lXext -lX11)
 
     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
     if test "$have_xinerama" = no; then
-      AC_CHECK_X_LIB(Xinerama, XineramaQueryExtension,
+      AC_CHECK_X_LIB(Xinerama, XineramaQueryScreens,
                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
                      [true], -lXext -lX11)
     fi
                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
                      [true], -lXext -lX11)
     fi
@@ -1228,6 +1303,8 @@ AC_ARG_WITH(xf86vmode-ext,
 
 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
 
 
 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
 
+VIDMODE_LIBS=""
+
 if test "$with_xf86vmode" = yes; then
 
   # first check for xf86vmode.h
 if test "$with_xf86vmode" = yes; then
 
   # first check for xf86vmode.h
@@ -1238,7 +1315,9 @@ if test "$with_xf86vmode" = yes; then
   if test "$have_xf86vmode" = yes; then
     have_xf86vmode=no
     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
   if test "$have_xf86vmode" = yes; then
     have_xf86vmode=no
     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
-                  [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
+                  [have_xf86vmode=yes;
+                   VIDMODE_LIBS="-lXxf86vm";
+                   SAVER_LIBS="$SAVER_LIBS $VIDMODE_LIBS"],
                    [true], -lXext -lX11)
   fi
 
                    [true], -lXext -lX11)
   fi
 
@@ -1315,15 +1394,94 @@ elif test "$with_xf86gamma" != no; then
 fi
 
 
 fi
 
 
+###############################################################################
+#
+#       Check for the RANDR (Resize and Rotate) server extension.
+#
+#       We need this to detect when the resolution of the desktop
+#       has changed out from under us (this is a newer, different
+#       mechanism than the XF86VMODE virtual viewports.)
+#
+###############################################################################
+
+have_randr=no
+with_randr_req=unspecified
+AC_ARG_WITH(randr-ext,
+[  --with-randr-ext        Include support for the X Resize+Rotate extension.],
+  [with_randr="$withval"; with_randr_req="$withval"],[with_randr=yes])
+
+HANDLE_X_PATH_ARG(with_randr, --with-randr-ext, RANDR)
+
+if test "$with_randr" = yes; then
+
+  # first check for Randr.h
+  AC_CHECK_X_HEADER(X11/extensions/Xrandr.h, [have_randr=yes],,
+                    [#include <X11/Xlib.h>])
+
+  # if that succeeded, then check for the XRR code in the libraries
+  if test "$have_randr" = yes; then
+
+    # RANDR probably needs -lXrender
+    xrender_libs=
+    AC_CHECK_X_LIB(Xrender, XRenderSetSubpixelOrder,
+                   [xrender_libs="-lXrender"], [true], -lXext -lX11)
+
+    # first look for RANDR in -lXext
+    have_randr=no
+    AC_CHECK_X_LIB(Xext, XRRGetScreenInfo,
+                   [have_randr=yes; SAVER_LIBS="$SAVER_LIBS $xrender_libs"],
+                   [true], $xrender_libs -lXext -lX11)
+
+    # if that failed, look in -lXrandr
+    if test "$have_randr" = no; then
+      AC_CHECK_X_LIB(Xrandr, XRRGetScreenInfo,
+             [have_randr=yes; SAVER_LIBS="$SAVER_LIBS -lXrandr $xrender_libs"],
+                     [true], $xrender_libs -lXext -lX11)
+    fi
+  fi
+
+  # if that succeeded, then we've really got it.
+  if test "$have_randr" = yes; then
+    AC_DEFINE(HAVE_RANDR)
+  fi
+
+elif test "$with_randr" != no; then
+  echo "error: must be yes or no: --with-randr-ext=$with_randr"
+  exit 1
+fi
+
+
+###############################################################################
+#
+#       Check for XF86MiscSetGrabKeysState (but only bother if we are already
+#      using other XF86 stuff.)
+#
+###############################################################################
+
+have_xf86miscsetgrabkeysstate=no
+if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
+  AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
+                [have_xf86miscsetgrabkeysstate=yes],
+                [true], -lXext -lX11)
+  if test "$have_xf86miscsetgrabkeysstate" = yes ; then
+    SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
+    AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE)
+  fi
+fi
+
+
 ###############################################################################
 #
 #       Check for HP XHPDisableReset and XHPEnableReset.
 #
 ###############################################################################
 
 ###############################################################################
 #
 #       Check for HP XHPDisableReset and XHPEnableReset.
 #
 ###############################################################################
 
+AC_MSG_CHECKING([for XHPDisableReset in X11/XHPlib.h])
 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
                   [AC_DEFINE(HAVE_XHPDISABLERESET)
 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
                   [AC_DEFINE(HAVE_XHPDISABLERESET)
-                   SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
+                   SAVER_LIBS="-lXhp11 $SAVER_LIBS"
+                   AC_MSG_RESULT(yes)],
+                  [AC_MSG_RESULT(no)])
 
 
 ###############################################################################
 
 
 ###############################################################################
@@ -1345,7 +1503,7 @@ if test "$with_proc_interrupts" = yes; then
    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
     ac_cv_have_proc_interrupts,
     [ac_cv_have_proc_interrupts=no
    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
     ac_cv_have_proc_interrupts,
     [ac_cv_have_proc_interrupts=no
-     if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
+     if grep 'keyboard\|i8042' /proc/interrupts >/dev/null 2>&1 ; then
        ac_cv_have_proc_interrupts=yes
      fi
     ])
        ac_cv_have_proc_interrupts=yes
      fi
     ])
@@ -1382,6 +1540,15 @@ else
   exit 1
 fi
 
   exit 1
 fi
 
+# We can't lock on MacOS X, so don't even bother compiling in support for it.
+#
+if test "$ac_macosx" = yes; then
+  if test "$enable_locking" = yes; then
+    AC_MSG_RESULT(locking disabled: it doesn't work on MacOS X)
+    enable_locking=no
+    AC_DEFINE(NO_LOCKING)
+  fi
+fi
 
 
 ###############################################################################
 
 
 ###############################################################################
@@ -1465,6 +1632,13 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then
     # those are in libc.  On Linux and Solaris, they're in libdl.
     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
 
     # those are in libc.  On Linux and Solaris, they're in libdl.
     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
 
+    # On Linux, sigtimedwait() is in libc; on Solaris, it's in librt.
+    have_timedwait=no
+    AC_CHECK_LIB(c, sigtimedwait, [have_timedwait=yes])
+    if test "$have_timedwait" = no ; then
+      AC_CHECK_LIB(rt, sigtimedwait, [PASSWD_LIBS="${PASSWD_LIBS} -lrt"])
+    fi
+
     AC_MSG_CHECKING(how to call pam_strerror)
     AC_CACHE_VAL(ac_cv_pam_strerror_args,
      [AC_TRY_COMPILE([#include <stdio.h>
     AC_MSG_CHECKING(how to call pam_strerror)
     AC_CACHE_VAL(ac_cv_pam_strerror_args,
      [AC_TRY_COMPILE([#include <stdio.h>
@@ -1526,16 +1700,40 @@ if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
   fi
 
   if test "$ac_cv_kerberos5" = yes ; then
   fi
 
   if test "$ac_cv_kerberos5" = yes ; then
-    have_kerberos=yes
-    have_kerberos5=yes
-    AC_DEFINE(HAVE_KERBEROS)
-    AC_DEFINE(HAVE_KERBEROS5)
+
+    # Andrew Snare <ajs@pigpond.com> wrote:
+    #
+    # You were assuming that if kerberosV (krb5) was found, then kerberosIV
+    # (krb4) was also available.  This turns out not to be the case with
+    # mit-krb-1.2.7; apparently backwards-compatibility with KerberosIV
+    # is optional.
+    #
+    # So, disable kerberosV support if libkrb4 can't be found.
+    # This is not the best solution, but it makes the compile not fail.
+    #
+    AC_CHECK_X_LIB(krb4, krb_get_tf_realm,
+                   [have_kerberos=yes],
+                   [have_kerberos=no])
+    if test "$have_kerberos" = yes ; then
+      have_kerberos5=yes
+      AC_DEFINE(HAVE_KERBEROS)
+      AC_DEFINE(HAVE_KERBEROS5)
+    else
+      have_kerberos5=no
+      AC_MSG_WARN([Cannot find compat lib (libkrb4) needed to use Kerberos 5])
+    fi
+
   fi
 
   if test "$have_kerberos5" = yes ; then
     # from Matt Knopp <mhat@infocalypse.netlag.com>
     # (who got it from amu@mit.edu)
   fi
 
   if test "$have_kerberos5" = yes ; then
     # from Matt Knopp <mhat@infocalypse.netlag.com>
     # (who got it from amu@mit.edu)
-    PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
+
+    PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
+
+    # jwz: MacOS X uses -lkrb5, but not -lcrypt
+    AC_CHECK_X_LIB(crypt, crypt, [PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
+
   elif test "$have_kerberos" = yes ; then
     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
   elif test "$have_kerberos" = yes ; then
     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
@@ -1768,44 +1966,40 @@ fi
 
 ###############################################################################
 #
 
 ###############################################################################
 #
-#       Check for -lXm.
+#       Check for external password helper
+#      On SuSE, instead of having xscreensaver be a setuid program, they
+#      fork an external program that takes the password on stdin, and
+#      returns true if that password is a valid one.  Then only that
+#      smaller program needs to be setuid.
+#
+#       (Note that this external program is not a GUI: the GUI is still
+#      all in xscreensaver itself; the external program just does auth.)
 #
 ###############################################################################
 
 #
 ###############################################################################
 
-have_motif=no
-with_motif_req=unspecified
-AC_ARG_WITH(motif,[
-User interface options:
-
-  --with-motif            Use the Motif toolkit for the user interface
-                          (not recommended.)],
-  [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
+have_passwd_helper=no
+with_passwd_helper_req=unspecified
 
 
-HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
+AC_ARG_WITH(passwd-helper,
+[  --with-passwd-helper    Include support for an external password
+                          verification helper program.],
+  [with_passwd_helper="$withval"; with_passwd_helper_req="$withval"],[with_passwd_helper=no])
+# no HANDLE_X_PATH_ARG for this one
 
 
-if test "$with_motif" != yes -a "$with_motif" != no ; then
-  echo "error: must be yes or no: --with-motif=$with_motif"
-  exit 1
-fi
-
-if test "$with_motif" = yes; then
-  have_motif=no
-  AC_CHECK_X_HEADER(Xm/Xm.h,
-                    [have_motif=yes
-                     AC_DEFINE(HAVE_MOTIF)
-                     MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
-                    [#include <stdlib.h>
-                     #include <stdio.h>
-                     #include <X11/Intrinsic.h>])
+if test "$enable_locking" = no ; then
+  with_passwd_helper_req=no
+  with_passwd_helper=no
 fi
 
 fi
 
-
-if test "$have_motif" = yes; then
-  AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
-                    [#include <stdlib.h>
-                     #include <stdio.h>
-                     #include <X11/Intrinsic.h>])
-fi
+case "$with_passwd_helper" in
+  ""|no) : ;;
+  /*)
+    AC_DEFINE_UNQUOTED(PASSWD_HELPER_PROGRAM, "$with_passwd_helper")
+    have_passwd_helper=yes;;
+  *)
+    echo "error: --with-passwd-helper needs full pathname of helper (not '$with_passwd_helper')." >&2
+    exit 1
+esac
 
 
 ###############################################################################
 
 
 ###############################################################################
@@ -1815,10 +2009,11 @@ fi
 ###############################################################################
 
 have_gtk=no
 ###############################################################################
 
 have_gtk=no
-have_gtk2=no
 with_gtk_req=unspecified
 with_gtk_req=unspecified
-AC_ARG_WITH(gtk,
-[  --with-gtk              Use the Gtk toolkit for the user interface.],
+AC_ARG_WITH(gtk,[
+User interface options:
+
+  --with-gtk              Use the Gtk toolkit for the user interface.],
   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
 
 # if --with-gtk=/directory/ was specified, remember that directory so that
   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
 
 # if --with-gtk=/directory/ was specified, remember that directory so that
@@ -1839,31 +2034,6 @@ if test "$with_gtk" != yes -a "$with_gtk" != no ; then
   exit 1
 fi
 
   exit 1
 fi
 
-have_gnome=no
-with_gnome_req=unspecified
-AC_ARG_WITH(gnome,
-[  --with-gnome            Include support for the Gnome 1.x Control Center.
-                          (This option is not needed with GTK 2.x / Gnome 2.x.)
-],
-  [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
-
-# if --with-gnome=/directory/ was specified, remember that directory so that
-# we can also look for the `gnome-config' program in that directory.
-case "$with_gnome" in
-  /*)
-    gnome_dir="$with_gnome"
-    ;;
-  *)
-    gnome_dir=""
-    ;;
-esac
-
-HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
-
-if test "$with_gnome" != yes -a "$with_gnome" != no ; then
-  echo "error: must be yes or no: --with-gnome=$with_gnome"
-  exit 1
-fi
 
 parse_gtk_version_string() {
   # M4 sucks!!
 
 parse_gtk_version_string() {
   # M4 sucks!!
@@ -1878,443 +2048,151 @@ parse_gtk_version_string() {
   fi
 }
 
   fi
 }
 
+# Find pkg-config... (need this for both gtk and gdk_pixbuf.)
+# if the user specified --with-gtk=/foo/ then look there.
+#
+gtk_path="$PATH"
+if test ! -z "$gtk_dir"; then
+  # canonicalize slashes.
+  foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
+  gtk_path="$foo:$gtk_path"
+fi
 
 
-jurassic_gtk=no
-gtk2_halfassed=no
-
-if test "$with_gtk" = yes; then
-  have_gtk=no
-  
-  # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
-  # look in /foo/bin/ for glib-config, gtk-config, and gnome-config.
-  #
-  gtk_path="$PATH"
-
-  if test ! -z "$gtk_dir"; then
-    # canonicalize slashes.
-    foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
-    gtk_path="$foo:$gtk_path"
-  fi
-
-  if test ! -z "$gnome_dir"; then
-    # canonicalize slashes.
-    foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
-    gtk_path="$foo:$gtk_path"
-  fi
-
-  AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
-
-  if test -n "$pkg_config" ; then
-    #
-    # the new way...
-    # run pkg-config based tests.
-    #
+AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
 
 
-    pkgs=''
-    pkg_check_version() {
-      if test "$ok" = yes ; then
-        req="$1"
-        min="$2"
-        AC_MSG_CHECKING(for $req)
-        if $pkg_config --exists "$req" ; then
-          vers=`$pkg_config --modversion "$req"`
-          if $pkg_config --exists "$req >= $min" ; then
-            AC_MSG_RESULT($vers)
-            pkgs="$pkgs $req"
-            return 1
-          else
-            AC_MSG_RESULT($vers (wanted >= $min))
-            ok=no
-            return 0
-          fi
-        else
-          AC_MSG_RESULT(no)
-          ok=no
-          return 0
-        fi
-      fi
-    }
-
-    ok="yes"
-    pkg_check_version     gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
-    pkg_check_version  gmodule-2.0  2.0.0
-    pkg_check_version   libxml-2.0  2.4.6
-    pkg_check_version libglade-2.0  1.99.0
-    have_gtk="$ok"
-
-    if test "$have_gtk" = yes; then
-      have_gtk2=yes
-      AC_DEFINE(HAVE_GTK2)
-    else
-      if test -n "$ac_gtk_version_string" ; then
-        gtk2_halfassed="$ac_gtk_version_string"
-        gtk2_halfassed_lib="$req"
-      fi
-    fi
+if test -z "$pkg_config" ; then
+  AC_MSG_WARN([pkg-config not found!])
+  pkg_config="false"
+fi
 
 
-    if test "$have_gtk" = no; then
-      #
-      # we don't have GTK 2.  Let's look for GTK 1.
-      #
-      pkgs=''
-      ok="yes"
-      pkg_check_version gtk+ 1.2           ; ac_gtk_version_string="$vers"
-      pkg_check_version glib 1.0
-      have_gtk="$ok"
 
 
-      # Now check for Gnome...
-      #
-      if test "$have_gtk" = yes -a "$with_gnome" = yes; then
-        old_pkgs="$pkgs"
-        ok=yes
-        pkg_check_version capplet    1.0
-        pkg_check_version gnomeui    1.0
-        pkg_check_version gdk_pixbuf 0.1
-        have_gnome="$ok"
-
-        if test "$have_gnome" = no; then
-          pkgs="$old_pkgs"
-        else
-          AC_DEFINE(HAVE_CRAPPLET)
-        fi
+# Utility function for running pkg-config-based tests...
+#
+pkgs=''
+pkg_check_version() {
+  if test "$ok" = yes ; then
+    req="$1"
+    min="$2"
+    AC_MSG_CHECKING(for $req)
+    if $pkg_config --exists "$req" ; then
+      vers=`$pkg_config --modversion "$req"`
+      if $pkg_config --exists "$req >= $min" ; then
+        AC_MSG_RESULT($vers)
+        pkgs="$pkgs $req"
+        return 1
+      else
+        AC_MSG_RESULT($vers (wanted >= $min))
+        ok=no
+        return 0
       fi
       fi
-    fi
-
-    if test "$have_gtk" = yes; then
-      parse_gtk_version_string
-      jurassic_gtk=no
     else
     else
-      have_gnome=no
-    fi
-
-    if test "$have_gtk" = yes; then
-      AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
-                     [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
-      AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
-                     [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
+      AC_MSG_RESULT(no)
+      ok=no
+      return 0
     fi
     fi
-    ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
-    ac_gtk_config_libs=$ac_cv_gtk_config_libs
-
-    ac_gnome_config_cflags=$ac_gtk_config_cflags
-    ac_gnome_config_libs=$ac_gtk_config_libs
-
-  else
-    #
-    # the old way...
-    # run {gnome,gtk}-config based tests.
-    #
-
-    AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
-    AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
+  fi
+}
 
 
-    if test "$with_gnome" = yes; then
-      AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
-    fi
 
 
-    if test -n "$glib_config" -a  -n "$gtk_config" ; then
-      have_gtk=yes
-      if test "$with_gnome" = yes -a -n "$gnome_config" ; then
-        have_gnome=yes
-      fi
-    fi
+jurassic_gtk=no
+gtk_halfassed=no
 
 
-    if test "$have_gtk" = yes; then
-      AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
-                     [ac_cv_gtk_version_string=`$gtk_config --version`])
-      ac_gtk_version_string=$ac_cv_gtk_version_string
+if test "$with_gtk" = yes; then
+  have_gtk=no
+  
+  ok="yes"
+  pkg_check_version            gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
+  pkg_check_version         gmodule-2.0  2.0.0
+  pkg_check_version          libxml-2.0  2.4.6
+  pkg_check_version        libglade-2.0  1.99.0
+  pkg_check_version      gdk-pixbuf-2.0  2.0.0
+  pkg_check_version gdk-pixbuf-xlib-2.0  2.0.0
+  have_gtk="$ok"
+
+  if test "$have_gtk" = no; then
+    if test -n "$ac_gtk_version_string" ; then
+      gtk_halfassed="$ac_gtk_version_string"
+      gtk_halfassed_lib="$req"
     fi
     fi
+  fi
 
 
+  if test "$have_gtk" = yes; then
     parse_gtk_version_string
     parse_gtk_version_string
-
-    if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
-    then
-      have_gtk=no
-      have_gnome=no
-      jurassic_gtk=yes
-    fi
-
-    if test "$have_gtk" = yes; then
-      AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
-                     [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
-      AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
-                     [ac_cv_gtk_config_libs=`$gtk_config --libs`])
-    fi
-    ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
-    ac_gtk_config_libs=$ac_cv_gtk_config_libs
-
-    # Check for Gnome Capplet support.
-    # Note that this is only needed with Gnome 1.x, not Gnome 2.x.
-    # In a Gnome 2.x world, libcapplet will not exist.
-    # (In fact, this likely won't even be checked, since in a Gnome 2.x
-    # world, we will probably be up in the "$pkg_config" branch instead
-    # of here in the "$gnome_config" branch.)
-    #
-    if test "$have_gnome" = yes -a "$have_gtk" = yes; then
-      gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
-      AC_MSG_CHECKING(for Gnome capplet includes)
-      AC_CACHE_VAL(ac_cv_gnome_config_cflags,
-        [if ( $gnome_config --cflags $gnome_config_libs >/dev/null 2>&1 | \
-              grep Unknown >/dev/null ) ; then
-           ac_cv_gnome_config_cflags=''
-         else
-          ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
-         fi])
-      ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
-      if test "$ac_gnome_config_cflags" = "" ; then
-        have_gnome=no
-        AC_MSG_RESULT(no)
-      else
-        AC_MSG_RESULT($ac_gnome_config_cflags)
-      fi
-    fi
-
-    if test "$have_gnome" = yes -a "$have_gtk" = yes; then
-      AC_MSG_CHECKING(for Gnome capplet libs)
-      AC_CACHE_VAL(ac_cv_gnome_config_libs,
-        [if ( $gnome_config --libs $gnome_config_libs >/dev/null 2>&1 |
-              grep Unknown >/dev/null ) ; then
-           ac_cv_gnome_config_libs=''
-         else
-           ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
-         fi])
-      ac_gnome_config_libs=$ac_cv_gnome_config_libs
-      if test "$ac_gnome_config_libs" = "" ; then
-        have_gnome=no
-        AC_MSG_RESULT(no)
-      else
-        AC_MSG_RESULT($ac_gnome_config_libs)
-      fi
-    fi
-
-    # If we have Gnome, then override the gtk-config values with 
-    # the gnome-config values.
-    #
-    if test "$have_gnome" = yes -a "$have_gtk" = yes; then
-      ac_gtk_config_cflags=$ac_gnome_config_cflags
-      ac_gtk_config_libs=$ac_gnome_config_libs
-      AC_DEFINE(HAVE_CRAPPLET)
-    fi
-
-  fi   # end of {gnome,gtk}-config based tests
-
-  if test "$have_gtk" = yes -a "$have_gtk2" = no; then
-    # check for this function that was not in libcapplet 1.2.
-    # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x)
-    AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
-                   [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
-                   $ac_gnome_config_libs)
+    jurassic_gtk=no
   fi
 
   fi
 
+  if test "$have_gtk" = yes; then
+    AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
+                   [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
+    AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
+                   [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
+  fi
+  ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
+  ac_gtk_config_libs=$ac_cv_gtk_config_libs
 
 
+  GTK_EXTRA_OBJS=""
   GNOME_DATADIR=""
   GNOME_DATADIR=""
+  GNOME_PANELDIR='$(GNOME_PANELDIR2)'
   if test "$have_gtk" = yes; then
   if test "$have_gtk" = yes; then
-    if test -n "$pkg_config"; then
-      if test "$have_gtk2" = yes; then
-        GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
-      else
-        GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
-      fi
-    else
-      GNOME_DATADIR=`$gtk_config --prefix`
-    fi
+    GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
     GNOME_DATADIR="$GNOME_DATADIR/share"
   fi
 
     GNOME_DATADIR="$GNOME_DATADIR/share"
   fi
 
-  # .desktop files go in different places in Gnome 1.x and Gnome 2.x...
-  if test "$have_gtk2" = yes; then
-    GNOME_PANELDIR='$(GNOME_PANELDIR2)'
-  else
-    GNOME_PANELDIR='$(GNOME_PANELDIR1)'
-  fi
-
-
   if test "$have_gtk" = yes; then
     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
     AC_DEFINE(HAVE_GTK)
   if test "$have_gtk" = yes; then
     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
     AC_DEFINE(HAVE_GTK)
-
-    if test "$have_gtk2" = yes; then
-      GTK_EXTRA_OBJS=""
-    else
-      GTK_EXTRA_OBJS="\$(GTK_EXTRA_OBJS)"
-    fi
+    AC_DEFINE(HAVE_GTK2)
+    AC_DEFINE(HAVE_XML)
   fi
 
 fi
 
 
   fi
 
 fi
 
 
-# Check for the Gnome Help Browser.
+# Check for the various Gnome help and URL loading programs.
 #
 if test "$have_gtk" = yes; then
 #
 if test "$have_gtk" = yes; then
-  AC_CHECK_PROGS(have_gnome_help, yelp gnome-help-browser, no)
-  if test "$have_gnome_help" != no; then
-    have_gnome_help=yes
-  fi
+  AC_CHECK_PROGS(gnome_open_program,     gnome-open)
+  AC_CHECK_PROGS(gnome_url_show_program, gnome-url-show)
 fi
 
 
 ###############################################################################
 #
 fi
 
 
 ###############################################################################
 #
-#       Check for -lxml
+#       Check for -lXm.
 #
 ###############################################################################
 
 #
 ###############################################################################
 
-have_xml=no
-with_xml_req=unspecified
-xml_halfassed=no
-AC_ARG_WITH(xml,
-[  --with-xml              The XML toolkit is needed for some parts of
-                          the Gtk interface.  Without it, the configuration
-                          interface will be much less featureful.],
-[with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
-
-# if --with-xml=/directory/ was specified, remember that directory so that
-# we can also look for the `xml-config' program in that directory.
-case "$with_xml" in
-  /*)
-    xml_dir="$with_xml"
-    ;;
-  *)
-    xml_dir=""
-    ;;
-esac
+have_motif=no
+with_motif_req=unspecified
+AC_ARG_WITH(motif,[  --with-motif            Use the Motif toolkit for the user interface
+                          (not recommended.)],
+  [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
 
 
-HANDLE_X_PATH_ARG(with_xml, --with-xml, XML)
+HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
 
 
-if test "$with_xml" != yes -a "$with_xml" != no ; then
-  echo "error: must be yes or no: --with-xml=$with_xml"
+if test "$with_motif" != yes -a "$with_motif" != no ; then
+  echo "error: must be yes or no: --with-motif=$with_motif"
   exit 1
 fi
 
   exit 1
 fi
 
-if test "$with_xml" = yes; then
-  have_xml=no
-  have_old_xml=no
-
-  # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
-  # look in /foo/bin/ for for xml-config.
-  #
-  xml_path="$PATH"
-
-  if test ! -z "$gtk_dir"; then
-    # canonicalize slashes.
-    foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
-    xml_path="$foo:$xml_path"
-  fi
-
-  if test ! -z "$gnome_dir"; then
-    # canonicalize slashes.
-    foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
-    xml_path="$foo:$xml_path"
-  fi
-
-  if test -n "$pkg_config" ; then
-    #
-    # the new way...
-    # run pkg-config based tests.
-    #
-    pkgs=""
-    ok="yes"
-
-    # If we have Gtk 2.x, then *only* XML 2.x will work.
-    # If we have Gtk 1.x, or don't have Gtk at all, then
-    # either XML 1.x or 2.x will work.
-
-    # First check for XML 2.x.
-    #
-    pkg_check_version libxml-2.0 2.4.6
-
-    # If that didn't work (we don't have XML 2.x) and we *don't* have
-    # Gtk 2.x, then check to see if we have XML 1.x
-    #
-    if test "$ok" = no -a "$have_gtk2" = no; then
-      ok=yes
-      pkg_check_version libxml 1.0
-    fi
-
-    have_xml="$ok"
-
-    if test "$have_xml" = yes; then
-      AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
-                     [ac_cv_xml_config_cflags=`$pkg_config --cflags $pkgs`])
-      AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
-                     [ac_cv_xml_config_libs=`$pkg_config --libs $pkgs`])
-      ac_xml_config_cflags=$ac_cv_xml_config_cflags
-      ac_xml_config_libs=$ac_cv_xml_config_libs
-    fi
-
-  else
-    #
-    # the old way...
-    # run {xml2,xml}-config based tests.
-    #
-
-    AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
-
-    # If we found the xml-config program, run it to get flags.
-    #
-    if test -n "$xml_config" ; then
-      AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
-                     [ac_cv_xml_config_cflags=`$xml_config --cflags`])
-      AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
-                     [ac_cv_xml_config_libs=`$xml_config --libs`])
-      ac_xml_config_cflags=$ac_cv_xml_config_cflags
-      ac_xml_config_libs=$ac_cv_xml_config_libs
-    fi
-
-    ac_save_xml_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags"
-
-    # first try <libxml/parser.h> which is the new way...
-    #
-    AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],,
-                      [#include <libxml/parser.h>])
-
-    # if that didn't work, then try just <parser.h> which is the old way...
-    #
-    if test "$have_xml" = no; then
-      AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],,
-                        [#include <parser.h>])
-    fi
-
-    CPPFLAGS="$ac_save_xml_CPPFLAGS"
-  fi
-
-
-  have_zlib=no
-  if test "$have_xml" = yes; then
-    # we have the XML headers; now make sure zlib is around.
-    # yes, it's stupid we have to do this too, but there is
-    # dependency screwage in Gnome.
-    AC_CHECK_X_LIB(z, zlibVersion, [have_zlib=yes])
-    if test "$have_zlib" = no; then
-      xml_halfassed=yes
-      have_xml=no
-    fi
-  fi
+if test "$with_motif" = yes; then
+  have_motif=no
+  AC_CHECK_X_HEADER(Xm/Xm.h,
+                    [have_motif=yes
+                     AC_DEFINE(HAVE_MOTIF)
+                     MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
+                    [#include <stdlib.h>
+                     #include <stdio.h>
+                     #include <X11/Intrinsic.h>])
+fi
 
 
-  if test "$have_xml" = yes; then
-    # we have the header, now check for the library
-    have_xml=no
-    xml_halfassed=yes
-    AC_CHECK_X_LIB(c, xmlParseChunk,
-                   [have_xml=yes
-                    xml_halfassed=no
-                    XML_LIBS="$ac_xml_config_libs"
-                    AC_DEFINE(HAVE_XML)],
-                   [true],
-                   $ac_xml_config_libs)
-  fi
-
-  if test "$have_xml" = yes; then
-    INCLUDES="$INCLUDES $ac_xml_config_cflags"
-    GTK_LIBS="$GTK_LIBS $ac_xml_config_libs"
-    AC_DEFINE(HAVE_XML)
-    if test "$have_old_xml" = yes; then
-      AC_DEFINE(HAVE_OLD_XML_HEADERS)
-    fi
-  fi
 
 
+if test "$have_motif" = yes; then
+  AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
+                    [#include <stdlib.h>
+                     #include <stdio.h>
+                     #include <X11/Intrinsic.h>])
 fi
 
 
 fi
 
 
@@ -2523,15 +2401,15 @@ if test "$with_gl" = yes; then
     if test "$ac_have_mesa_gl" = yes ; then
       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
                      [gl_lib_1="MesaGL"
     if test "$ac_have_mesa_gl" = yes ; then
       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
                      [gl_lib_1="MesaGL"
-                      GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
-                     [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
+                      GL_LIBS="-lMesaGL -lMesaGLU $VIDMODE_LIBS $GL_LIBS"],
+                     [], -lMesaGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
     fi
 
     if test "$gl_lib_1" = "" ; then
       AC_CHECK_X_LIB(GL, glXCreateContext, 
                      [gl_lib_1="GL"
     fi
 
     if test "$gl_lib_1" = "" ; then
       AC_CHECK_X_LIB(GL, glXCreateContext, 
                      [gl_lib_1="GL"
-                      GL_LIBS="-lGL -lGLU $GL_LIBS"],
-                     [], -lGLU $GL_LIBS -lX11 -lXext -lm)
+                      GL_LIBS="-lGL -lGLU $VIDMODE_LIBS $GL_LIBS"],
+                     [], -lGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
     fi
 
     if test "$gl_lib_1" = "" ; then
     fi
 
     if test "$gl_lib_1" = "" ; then
@@ -2603,7 +2481,7 @@ EOF
          # M4 sucks!!
          changequote(X,Y)
           mglv=`echo "$mglv" | sed -n \
          # M4 sucks!!
          changequote(X,Y)
           mglv=`echo "$mglv" | sed -n \
-             's/^configure: *\([0-9][0-9]*\) \([0-9].*\)$/\1.\2/p'`
+             's/^configure: *\([0-9][0-9]*\)  *\([0-9].*\)$/\1.\2/p'`
          changequote([,])
 
          rm -f conftest.$ac_ext
          changequote([,])
 
          rm -f conftest.$ac_ext
@@ -2732,45 +2610,13 @@ elif test "$with_gle" != no; then
 fi
 
 
 fi
 
 
-
-###############################################################################
-#
-#       Check for -lXpm.
-#
-###############################################################################
-
-have_xpm=no
-with_xpm_req=unspecified
-AC_ARG_WITH(xpm,
-[  --with-xpm              Include support for XPM files in some demos.
-                          (Not needed if Pixbuf is used.)],
-  [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
-
-HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
-
-if test "$with_xpm" = yes; then
-  AC_CHECK_X_HEADER(X11/xpm.h,
-                   [have_xpm=yes
-                    AC_DEFINE(HAVE_XPM)
-                    XPM_LIBS="-lXpm"],,
-                    [#include <X11/Xlib.h>])
-elif test "$with_xpm" != no; then
-  echo "error: must be yes or no: --with-xpm=$with_xpm"
-  exit 1
-fi
-
-# See comment near $motif_requires_xpm, above.
-# Need to do this here, after both Motif and XPM have been checked for.
-#
-if test "$have_motif" = yes -a "$have_xpm" = yes ; then
-  if test "$motif_requires_xpm" = yes ; then
-    MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
-  fi
-fi
-
 ###############################################################################
 #
 #       Check for -lgdk_pixbuf.
 ###############################################################################
 #
 #       Check for -lgdk_pixbuf.
+#       These tests are for gdk_pixbuf usage of the hacks, 
+#       not xscreensaver-demo (thus we have to test again to get
+#       the libraries right: don't want to pull in all of GTK
+#       for the hacks.)
 #
 ###############################################################################
 
 #
 ###############################################################################
 
@@ -2779,8 +2625,7 @@ with_gdk_pixbuf_req=unspecified
 AC_ARG_WITH(pixbuf,
 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
                           demos, which will make it possible for them to read
 AC_ARG_WITH(pixbuf,
 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
                           demos, which will make it possible for them to read
-                          GIF, JPEG, and PNG files as well.  (The path here is
-                         ignored if GTK 2.x is being used.)],
+                          GIF, JPEG, and PNG files as well.],
   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
   [with_gdk_pixbuf=yes])
 
   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
   [with_gdk_pixbuf=yes])
 
 
 if test "$with_gdk_pixbuf" = yes; then
   have_gdk_pixbuf=no
 
 if test "$with_gdk_pixbuf" = yes; then
   have_gdk_pixbuf=no
-  have_gdk_pixbuf2=no
-
-  if test -n "$pkg_config" ; then
-    #
-    # the new way...
-    # run pkg-config based tests.
-    #
-    pkgs=''
-    ok="yes"
-
-    # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work.
-    # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work.
-    # If we don't have Gtk at all, then either will work.
-
-    if test "$have_gtk" = no -o "$have_gtk2" = yes; then
-      #
-      # we don't have Gtk; or we have Gtk 2.x.  Check for pixbuf 2.x.
-      #
-      pkg_check_version gdk-pixbuf-2.0      2.0.0
-      pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
-      have_gdk_pixbuf="$ok"
-      have_gdk_pixbuf2="$ok"
-    fi
-
-    if test "$have_gtk" = no -o "$have_gtk2" = no; then
-      #
-      # we don't have Gtk; or we have Gtk 1.x.
-      # If we don't have pixbuf 2.x, then check for pixbuf 1.x.
-      #
-      if test "$have_gdk_pixbuf2" = no; then
-        pkgs=''
-        ok="yes"
-        pkg_check_version gdk-pixbuf      0.0
-        pkg_check_version gdk-pixbuf-xlib 0.0
-        have_gdk_pixbuf="$ok"
-      fi
-    fi
-
-    if test "$have_gdk_pixbuf" = yes; then
-      AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
-                 [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
-      AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
-                 [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
-    fi
-    ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
-    ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
-  fi
-
-
-  if test "$have_gdk_pixbuf" = no; then
-    #
-    # the old way...
-    # run gdk-pixbuf-config based tests.
-    # note that we can't assume that the existence of "pkg-config" means
-    # that we don't have to look for gdk-pixbuf-config -- in Gnome 1.4,
-    # pkg-config exists, but doesn't know about pixbuf.
-    #
 
 
-    # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
-    # look in /foo/bin/ for for gdk-pixbuf-config.
-    #
-    gdk_pixbuf_path="$PATH"
-
-    if test ! -z "$gtk_dir"; then
-      # canonicalize slashes.
-      foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
-      gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
-    fi
-
-    if test ! -z "$gnome_dir"; then
-      # canonicalize slashes.
-      foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
-      gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
-    fi
+  pkgs=''
+  ok="yes"
 
 
-    AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path)
+  pkg_check_version gdk-pixbuf-2.0      2.0.0
+  pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
+  have_gdk_pixbuf="$ok"
 
 
-    # If we found the gdk-pixbuf-config program, run it to get flags.
-    #
-    if test -n "$gdk_pixbuf_config" ; then
-      AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
-                [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`])
-      AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
-                [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`])
-
-      # note that "gdk-pixbuf-config --libs" produces a link line including
-      # -lgdk_pixbuf, but there's no way to get it to produce one that also
-      # includes -lgdk_pixbuf_xlib.  Since we don't know *exactly* what the
-      # name of the library will be, construct it with sed...
-      # M4 sucks!!
-      changequote(X,Y)
-      ac_cv_gdk_pixbuf_config_libs=`echo $ac_cv_gdk_pixbuf_config_libs | \
-       sed 's@ \(-lgdk_pixbuf\([-_a-zA-Z0-9.]*\)\) @ \1 -lgdk_pixbuf_xlib\2 @'`
-      changequote([,])
-
-      ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
-      ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
-    fi
+  if test "$have_gdk_pixbuf" = yes; then
+    AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
+               [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
+    AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
+               [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
   fi
   fi
+  ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
+  ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
 
 
-  ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
-  CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
 
 
-  if test "$have_gdk_pixbuf" = no; then
+  if test "$have_gdk_pixbuf" = yes; then
     #
     # we appear to have pixbuf; check for headers/libs to be sure.
     #
     #
     # we appear to have pixbuf; check for headers/libs to be sure.
     #
+    ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
 
     have_gdk_pixbuf=no
 
 
     have_gdk_pixbuf=no
 
@@ -2934,15 +2696,16 @@ if test "$with_gdk_pixbuf" = yes; then
                            gdk_pixbuf_halfassed=no])
       fi
     fi
                            gdk_pixbuf_halfassed=no])
       fi
     fi
+    CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
   fi
 
   fi
 
-  CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
-
   if test "$have_gdk_pixbuf" = yes; then
     # we have the headers, now check for the libraries
     have_gdk_pixbuf=no
     gdk_pixbuf_halfassed=yes
 
   if test "$have_gdk_pixbuf" = yes; then
     # we have the headers, now check for the libraries
     have_gdk_pixbuf=no
     gdk_pixbuf_halfassed=yes
 
+    AC_MSG_RESULT(checking for gdk_pixbuf usability...)
+
     # library A...
     AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
                    $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
     # library A...
     AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
                    $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
@@ -2961,7 +2724,43 @@ if test "$with_gdk_pixbuf" = yes; then
     XPM_LIBS="$ac_gdk_pixbuf_config_libs"
     AC_DEFINE(HAVE_GDK_PIXBUF)
   else
     XPM_LIBS="$ac_gdk_pixbuf_config_libs"
     AC_DEFINE(HAVE_GDK_PIXBUF)
   else
-    have_gdk_pixbuf2=no
+    AC_MSG_RESULT(checking for gdk_pixbuf usability... no)
+  fi
+fi
+
+
+###############################################################################
+#
+#       Check for -lXpm.
+#
+###############################################################################
+
+have_xpm=no
+with_xpm_req=unspecified
+AC_ARG_WITH(xpm,
+[  --with-xpm              Include support for XPM files in some demos.
+                          (Not needed if Pixbuf is used.)],
+  [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
+
+HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
+
+if test "$with_xpm" = yes; then
+  AC_CHECK_X_HEADER(X11/xpm.h,
+                   [have_xpm=yes
+                    AC_DEFINE(HAVE_XPM)
+                    XPM_LIBS="-lXpm $XPM_LIBS"],,
+                    [#include <X11/Xlib.h>])
+elif test "$with_xpm" != no; then
+  echo "error: must be yes or no: --with-xpm=$with_xpm"
+  exit 1
+fi
+
+# See comment near $motif_requires_xpm, above.
+# Need to do this here, after both Motif and XPM have been checked for.
+#
+if test "$have_motif" = yes -a "$have_xpm" = yes ; then
+  if test "$motif_requires_xpm" = yes ; then
+    MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
   fi
 fi
 
   fi
 fi
 
@@ -2976,9 +2775,7 @@ have_jpeg=no
 with_jpeg_req=unspecified
 jpeg_halfassed=no
 AC_ARG_WITH(jpeg,
 with_jpeg_req=unspecified
 jpeg_halfassed=no
 AC_ARG_WITH(jpeg,
-[  --with-jpeg             Include support for the JPEG library in some demos.
-                          (If this library is available, webcollage will be a
-                        . lot faster.)],
+[  --with-jpeg             Include support for the JPEG library.],
   [with_jpeg="$withval"; with_jpeg_req="$withval"],
   [with_jpeg=yes])
 
   [with_jpeg="$withval"; with_jpeg_req="$withval"],
   [with_jpeg=yes])
 
@@ -3007,6 +2804,19 @@ if test "$with_jpeg" = yes; then
 fi
 
 
 fi
 
 
+###############################################################################
+#
+#       Check for pty support for 'phosphor'
+#
+###############################################################################
+
+PTY_LIBS=
+AC_CHECK_HEADERS(pty.h util.h)
+AC_CHECK_X_LIB(util, forkpty,
+               [PTY_LIBS="-lutil"
+                AC_DEFINE(HAVE_FORKPTY)])
+
+
 ###############################################################################
 #
 #       Check for the XSHM server extension.
 ###############################################################################
 #
 #       Check for the XSHM server extension.
@@ -3141,7 +2951,7 @@ AC_ARG_WITH(fortune,[
   --with-fortune=PROGRAM  Some demos are able to run an external program and
                           display its text; this names the program to use by
                           default (though it can be overridden with X
   --with-fortune=PROGRAM  Some demos are able to run an external program and
                           display its text; this names the program to use by
                           default (though it can be overridden with X
-                          resources.)  Default is \"/usr/games/fortune\".],
+                          resources.)  Default is "/usr/games/fortune".],
   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
 
 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
 
 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
@@ -3228,7 +3038,7 @@ AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
 setuid_hacks_default=no
 setuid_hacks="$setuid_hacks_default"
 AC_ARG_WITH(setuid-hacks,
 setuid_hacks_default=no
 setuid_hacks="$setuid_hacks_default"
 AC_ARG_WITH(setuid-hacks,
-[  --with-setuid-hacks     Allow some demos to be installed \`setuid root'
+[  --with-setuid-hacks     Allow some demos to be installed `setuid root'
                           (which is needed in order to ping other hosts.)
 ],
   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
                           (which is needed in order to ping other hosts.)
 ],
   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
@@ -3264,7 +3074,7 @@ if test \! -z "$libdir" ; then
 fi
 
 
 fi
 
 
-PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
+PREFERRED_DEMO_PROGRAM=''
 ALL_DEMO_PROGRAMS=
 if test "$have_motif" = yes; then
   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
 ALL_DEMO_PROGRAMS=
 if test "$have_motif" = yes; then
   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
@@ -3284,6 +3094,10 @@ if test "$have_pam" = yes; then
   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
   INSTALL_PAM="install-pam"
   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
   INSTALL_PAM="install-pam"
+fi
+if test "$have_passwd_helper" = yes; then
+  PASSWD_SRCS="$PASSWD_SRCS \$(PWHELPER_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(PWHELPER_OBJS)"
 fi
   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
 fi
   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
@@ -3297,6 +3111,17 @@ else
   LOCK_OBJS='$(NOLOCK_OBJS_1)'
 fi
 
   LOCK_OBJS='$(NOLOCK_OBJS_1)'
 fi
 
+if test "$ac_macosx" = yes; then
+  EXES_OSX='$(EXES_OSX)'
+  SCRIPTS_OSX='$(SCRIPTS_OSX)'
+  MEN_OSX='$(MEN_OSX)'
+else
+  EXES_OSX=
+  SCRIPTS_OSX=
+  MEN_OSX=
+fi
+
+
 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
 
 if test "$need_setuid" = yes; then
 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
 
 if test "$need_setuid" = yes; then
@@ -3335,12 +3160,18 @@ fi
 
 # Another substitution in the XScreenSaver.ad.in file:
 #
 
 # Another substitution in the XScreenSaver.ad.in file:
 #
-if test "$have_gnome_help" = yes; then
-  GNOMEHELP_Y=''
-  GNOMEHELP_N='!    '
+if test "$gnome_open_program" != ''; then
+  GNOME24=''
+  GNOME22='!   '
+  NOGNOME='!   '
+elif test "$gnome_url_show_program" != ''; then
+  GNOME24='!   '
+  GNOME22=''
+  NOGNOME='!   '
 else
 else
-  GNOMEHELP_Y='!    '
-  GNOMEHELP_N=''
+  GNOME24='!   '
+  GNOME22='!   '
+  NOGNOME=''
 fi
 
 
 fi
 
 
@@ -3363,20 +3194,12 @@ fi
 # It should usually be "/usr/share/pixmaps/", but we can't just use
 # "$(prefix)/share/pixmaps" because that would usually result in
 # "/usr/X11R6/share/pixmaps/", which is wrong.  It needs to be the
 # It should usually be "/usr/share/pixmaps/", but we can't just use
 # "$(prefix)/share/pixmaps" because that would usually result in
 # "/usr/X11R6/share/pixmaps/", which is wrong.  It needs to be the
-# Gnome/Gtk prefix, not the overall prefix.
+# Gtk prefix, not the overall prefix.
 #
 if test -n "$GNOME_DATADIR" ; then
   GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
 elif test "$have_gtk" = yes; then
 #
 if test -n "$GNOME_DATADIR" ; then
   GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
 elif test "$have_gtk" = yes; then
-  if test -n "$pkg_config"; then
-    if test "$have_gtk2" = yes; then
-      GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
-    else
-      GLADE_DATADIR=`$pkg_config --variable=prefix gtk+`
-    fi
-  else
-    GLADE_DATADIR=`$gtk_config --prefix`
-  fi
+  GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
   GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
 else
   GLADE_DATADIR=''
   GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
 else
   GLADE_DATADIR=''
@@ -3389,15 +3212,7 @@ AC_MSG_CHECKING([for locale directory])
 if test -n "$GNOME_DATADIR" ; then
   PO_DATADIR="$GNOME_DATADIR"
 elif test "$have_gtk" = yes; then
 if test -n "$GNOME_DATADIR" ; then
   PO_DATADIR="$GNOME_DATADIR"
 elif test "$have_gtk" = yes; then
-  if test -n "$pkg_config"; then
-    if test "$have_gtk2" = yes; then
-      PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
-    else
-      PO_DATADIR=`$pkg_config --variable=prefix gtk+`
-    fi
-  else
-    PO_DATADIR=`$gtk_config --prefix`
-  fi
+  PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
   PO_DATADIR="$PO_DATADIR/share"
 fi
 
   PO_DATADIR="$PO_DATADIR/share"
 fi
 
@@ -3450,6 +3265,7 @@ AC_SUBST(XML_LIBS)
 AC_SUBST(JPEG_LIBS)
 AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
 AC_SUBST(JPEG_LIBS)
 AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
+AC_SUBST(PTY_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(GLE_LIBS)
 AC_SUBST(XDPMS_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(GLE_LIBS)
 AC_SUBST(XDPMS_LIBS)
@@ -3460,6 +3276,11 @@ AC_SUBST(INSTALL_DIRS)
 AC_SUBST(NEED_SETUID)
 AC_SUBST(INSTALL_PAM)
 
 AC_SUBST(NEED_SETUID)
 AC_SUBST(INSTALL_PAM)
 
+AC_SUBST(OBJCC)
+AC_SUBST(EXES_OSX)
+AC_SUBST(SCRIPTS_OSX)
+AC_SUBST(MEN_OSX)
+
 AC_SUBST(PASSWD_SRCS)
 AC_SUBST(PASSWD_OBJS)
 AC_SUBST(XMU_SRCS)
 AC_SUBST(PASSWD_SRCS)
 AC_SUBST(PASSWD_OBJS)
 AC_SUBST(XMU_SRCS)
@@ -3477,8 +3298,9 @@ AC_SUBST(GL_MEN)
 AC_SUBST(GL_KLUDGE)
 AC_SUBST(GLE_EXES)
 AC_SUBST(GLE_KLUDGE)
 AC_SUBST(GL_KLUDGE)
 AC_SUBST(GLE_EXES)
 AC_SUBST(GLE_KLUDGE)
-AC_SUBST(GNOMEHELP_Y)
-AC_SUBST(GNOMEHELP_N)
+AC_SUBST(GNOME24)
+AC_SUBST(GNOME22)
+AC_SUBST(NOGNOME)
 AC_SUBST(HACKDIR)
 AC_SUBST(GNOME_DATADIR)
 AC_SUBST(GLADE_DATADIR)
 AC_SUBST(HACKDIR)
 AC_SUBST(GNOME_DATADIR)
 AC_SUBST(GLADE_DATADIR)
@@ -3501,8 +3323,7 @@ AC_OUTPUT(Makefile
           hacks/Makefile
           hacks/glx/Makefile
           po/Makefile.in
           hacks/Makefile
           hacks/glx/Makefile
           po/Makefile.in
-          driver/XScreenSaver.ad
-          driver/xscreensaver.kss)
+          driver/XScreenSaver.ad)
 
 ###############################################################################
 #
 
 ###############################################################################
 #
@@ -3596,14 +3417,64 @@ if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
   warn 'The XF86VMODE extension was requested, but was not found.'
 fi
 
   warn 'The XF86VMODE extension was requested, but was not found.'
 fi
 
+if test "$with_randr_req" = yes -a "$have_randr" = no ; then
+  warn 'The RANDR extension was requested, but was not found.'
+fi
+
 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
   warn "Checking of /proc/interrupts was requested, but it's bogus."
 fi
 
 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
   warn "Checking of /proc/interrupts was requested, but it's bogus."
 fi
 
+if test "$pkg_config" = false ; then
+  warnL 'The "pkg-config" program was not found.  Without that,'
+  warn2 "detection of the various GTK libraries won't work."
+else
+  pkgerr=`$pkg_config --list-all 2>&1 >/dev/null`
+  if test "x$pkgerr" != "x" ; then
+    warnL 'The "pkg-config" program produces errors.  This often causes'
+    warn2 "detection of the various GTK libraries to malfunction."
+    warn2 "The errors are:"
+    echo ''
+    echo "$pkgerr" | sed 's/^/             > /g'
+  fi
+fi
+
+if test "$gtk_halfassed" != no ; then
+  warnL "GTK version $gtk_halfassed was found, but at least one supporting"
+  warn2 "library ($gtk_halfassed_lib) was not, so GTK can't be used."
+  warn2 "Perhaps some of the development packages are not installed?"
+  if test "$have_gtk" = yes ; then
+    v="$ac_gtk_version_string"
+    warn2 "GTK $v is also installed, so it will be used instead."
+    warn2 "Please read the above output and the \`config.log' file"
+    warn2 "for more details."
+  fi
+fi
+
+motif_warn2() {
+  warn2 'Though the Motif front-end to xscreensaver is still'
+  warn2 'maintained, it is no longer being updated with new'
+  warn2 'features: all new development on the xscreensaver-demo'
+  warn2 'program is happening in the GTK version, and not in the'
+  warn2 'Motif version.  It is recommended that you build against'
+  warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
+}
 
 if test "$have_motif" = no -a "$have_gtk" = no; then
 
 if test "$have_motif" = no -a "$have_gtk" = no; then
-  warnL "Neither Motif nor Gtk seem to be available;"
-  warn2 "the \`xscreensaver-demo' program requires one of these."
+
+  if test "$with_motif" = yes; then
+    warnL "Neither the GTK nor Motif libraries were found; the"
+    warn2 "\`xscreensaver-demo' program requires one of these."
+    echo ''
+    motif_warn2
+  else
+    warnL "The GTK libraries do not seem to be available; the"
+    warn2 "\`xscreensaver-demo' program requires them."
+#   echo ''
+#   warn2 'You can use Motif or Lesstif instead of GTK (use the'
+#   warn2 "\`--with-motif' option) but that is NOT recommended."
+#   motif_warn2
+  fi
 
 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
   warnL "Use of Motif was requested, but it wasn't found;"
 
 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
   warnL "Use of Motif was requested, but it wasn't found;"
@@ -3611,7 +3482,7 @@ elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
 
 elif test "$jurassic_gtk" = yes ; then
 
 
 elif test "$jurassic_gtk" = yes ; then
 
-  pref_gtk=1.2
+  pref_gtk=2.0
 
   v="$ac_gtk_version_string"
   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
 
   v="$ac_gtk_version_string"
   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
@@ -3622,60 +3493,12 @@ elif test "$jurassic_gtk" = yes ; then
     warnL "Gtk was found on this system, but it is version $v;"
   fi
 
     warnL "Gtk was found on this system, but it is version $v;"
   fi
 
-  warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
+  warn2 "Gtk $pref_gtk or newer is required."
 
 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
   warnL "Use of Gtk was requested, but it wasn't found."
 
 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
   warnL "Use of Gtk was requested, but it wasn't found."
-  if test "$have_motif" = yes; then
-    warn2 "Motif will be used instead."
-  fi
-fi
-
-if test "$gtk2_halfassed" != no ; then
-  warnL "GTK version $gtk2_halfassed was found, but at least one supporting"
-  warn2 "library ($gtk2_halfassed_lib) was not, so GTK 2.x can't be used."
-  v="$ac_gtk_version_string"
-  warn2 "GTK $v is also installed, so it will be used instead."
-  warn2 "Please read the above output and the \`config.log' file"
-  warn2 "for more details."
-fi
-
-
-if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
-  warn  'Use of the Gnome Control Panel was requested, but the necessary'
-  warn2 'headers and/or libraries were not found.'
 fi
 
 fi
 
-if test "$have_gtk" = yes ; then
-  if test "$have_xml" = no ; then
-    if test "$with_xml_req" = yes ; then
-      warn  'Use of the XML library was requested, but the necessary'
-      warn2 'headers and/or libraries were not found.'
-    else
-      warn  'GTK is being used, but the XML library was not found.'
-    fi
-
-    if test "$xml_halfassed" = yes ; then
-
-      if test "$have_zlib" = yes ; then
-        which="XML libraries"
-      else
-        which="\`zlib' library"
-      fi
-
-      echo ''
-      warn2 'More specifically, we found the headers, but not the'
-      warn2 "$which; so either XML is half-installed on this"
-      warn2 "system, or something else went wrong.  The \`config.log'"
-      warn2 'file might contain some clues.'
-    fi
-
-    echo ''
-    warn2 "Without XML, the per-display-mode \`Settings' dialogs"
-    warn2 'will not be available.  Specify the location of the XML'
-    warn2 'library through the --with-xml option to configure.'
-  fi
-fi
 
 if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then
   warn  "GTK is being used, but the GDK-Pixbuf library and/or"
 
 if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then
   warn  "GTK is being used, but the GDK-Pixbuf library and/or"
@@ -3705,12 +3528,7 @@ fi
 if test "$have_motif" = yes -a "$have_gtk" = no ; then
   warn  'Motif is being used, and GTK is not.'
   echo  ''
 if test "$have_motif" = yes -a "$have_gtk" = no ; then
   warn  'Motif is being used, and GTK is not.'
   echo  ''
-  warn2 'Though the Motif front-end to xscreensaver is still'
-  warn2 'maintained, it is no longer being updated with new'
-  warn2 'features: all new development on the xscreensaver-demo'
-  warn2 'program is happening in the GTK version, and not in the'
-  warn2 'Motif version.  It is recommended that you build against'
-  warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
+  motif_warn2
 fi
 
 
 fi
 
 
@@ -3722,8 +3540,16 @@ if test "$with_gdk_pixbuf_req" = yes  -a "$have_gdk_pixbuf" = no; then
   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
 fi
 
   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
 fi
 
-if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
-   test "$gdk_pixbuf_halfassed" = yes; then
+if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes || \
+   test "$have_gdk_pixbuf" = no -a "$have_xpm" = no ; then
+
+  if test "$with_gdk_pixbuf_req" = yes ; then
+    true
+  elif test "$with_gdk_pixbuf_req" = no ; then
+    warnL 'The GDK-Pixbuf library is not being used.'
+  else
+    warnL 'The GDK-Pixbuf library was not found.'
+  fi
 
   if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
     true
 
   if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
     true
@@ -3733,12 +3559,8 @@ if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
     warnL 'The XPM library was not found.'
   fi
 
     warnL 'The XPM library was not found.'
   fi
 
-  if test "$with_gdk_pixbuf_req" = yes ; then
-    true
-  elif test "$with_gdk_pixbuf_req" = no ; then
-    warnL 'The GDK-Pixbuf library is not being used.'
-  else
-    warnL 'The GDK-Pixbuf library was not found.'
+  if test "$have_gdk_pixbuf" = no -a "$have_xpm" = yes ; then
+    warn2 'The XPM library is being used instead.'
   fi
 
   if test "$gdk_pixbuf_halfassed" = yes ; then
   fi
 
   if test "$gdk_pixbuf_halfassed" = yes ; then
@@ -3750,15 +3572,10 @@ if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
   fi
 
   echo ''
   fi
 
   echo ''
-  warn2 'Some of the demos will not be as colorful as they'
-  warn2 'could be.  You should consider installing Pixbuf or'
-  warn2 'XPM and re-running configure.  The Pixbuf library is'
-  warn2 'a part of GNOME.  The XPM library comes with most'
-  warn2 'X11 installations; you can also find it at the X11'
-  warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
-  echo  ''
-  warn2 'GDK-Pixbuf is recommended over XPM, as it provides'
-  warn2 'support for more image formats.'
+  warn2 'Some of the demos will not use images as much as they could.'
+  warn2 'You should consider installing GDK-Pixbuf and re-running'
+  warn2 'configure.  (GDK-Pixbuf is recommended over XPM, as it'
+  warn2 'provides support for more image formats.)'
 fi
 
 
 fi
 
 
@@ -3780,7 +3597,13 @@ if test "$have_jpeg" = no ; then
     echo ''
   fi
 
     echo ''
   fi
 
-  warn2 "This means the \`webcollage' program will be much slower."
+  if test "$have_gdk_pixbuf" = no ; then
+    warn2 "This means that it won't be possible for the image-manipulating"
+    warn2 "display modes to load files from disk; and it also means that"
+    warn2 "the \`webcollage' program will be much slower."
+  else
+    warn2 "This means the \`webcollage' program will be much slower."
+  fi
 fi
 
 
 fi
 
 
@@ -3834,6 +3657,11 @@ fi
 
 
 if test "$have_gl" = yes -a "$have_gle" = no ; then
 
 
 if test "$have_gl" = yes -a "$have_gle" = no ; then
+
+ # nobody cares about this; don't print the warning unless it was
+ # requested and not found, or halfway-found.
+ if test "$with_gle_req" = yes -o "$gle_halfassed" = yes ; then
+
   if test "$with_gle_req" = yes ; then
     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
     warn2 'it was not found (though the OpenGL library was found, and'
   if test "$with_gle_req" = yes ; then
     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
     warn2 'it was not found (though the OpenGL library was found, and'
@@ -3861,6 +3689,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
   warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
   warn2 'OpenGL info, see <http://www.opengl.org/>.'
 
   warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
   warn2 'OpenGL info, see <http://www.opengl.org/>.'
 
+ fi
 fi
 
 
 fi
 
 
@@ -3950,17 +3779,17 @@ if test \! -z "$rpmv" ; then
   echo ""
   warn2 "Alternately, you could build this version of xscreensaver"
   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
   echo ""
   warn2 "Alternately, you could build this version of xscreensaver"
   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
-  warn2 "file is included.  See the RPM documentation for more info."
+  warn2 'file is included.  Try "rpmbuild -v -ba xscreensaver.spec".'
+  warn2 "See the RPM documentation for more info."
   echo ""
 
   if test "$rpmbdir" = "$rpmhdir" ; then
     warn2 "The RPM version was installed in $rpmbdir/."
   echo ""
 
   if test "$rpmbdir" = "$rpmhdir" ; then
     warn2 "The RPM version was installed in $rpmbdir/."
+    do_dir_warning=yes
   else
     warn2 "The RPM version was installed in $rpmbdir/,"
     warn2 "with demos in $rpmhdir/."
   fi
   else
     warn2 "The RPM version was installed in $rpmbdir/,"
     warn2 "with demos in $rpmhdir/."
   fi
-
-  do_dir_warning=yes
 fi
 
 
 fi
 
 
@@ -3976,7 +3805,7 @@ if test "$do_dir_warning" = yes; then
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
-  echo "      The various graphics demos (150+ different executables) will"
+  echo "      The various graphics demos (190+ different executables) will"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"