http://ftp.x.org/contrib/applications/xscreensaver-3.07.tar.gz
[xscreensaver] / configure.in
index e614456efd23100439ace27201bd87ad8f69a640..0b6cdaf129eb1c464e7e3b60da8173aad4dc16e8 100644 (file)
@@ -2,6 +2,10 @@
 #
 
 AC_INIT(driver/subprocs.c)
 #
 
 AC_INIT(driver/subprocs.c)
+
+echo "current directory: `pwd`"
+echo "command line was: $0 $@"
+
 AC_CONFIG_HEADER(config.h)
 AC_CANONICAL_HOST
 
 AC_CONFIG_HEADER(config.h)
 AC_CANONICAL_HOST
 
@@ -18,6 +22,12 @@ if test -z "$GCC"; then
       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)
+      CC="$CC -std1"
+    ;;
+
     *)
       AC_MSG_RESULT(no idea)
     ;;
     *)
       AC_MSG_RESULT(no idea)
     ;;
@@ -33,21 +43,67 @@ AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
    AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
 
 case "$host" in
    AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
 
 case "$host" in
-  *-irix*)
-  if test -n "$GCC"; then
-    AC_MSG_RESULT(Turning on gcc compiler warnings.)
-    CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
-  else
-    # not gcc
-    AC_MSG_RESULT(Turning on SGI compiler warnings.)
-    CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
-  fi
+  *-irix5* |*-irix6.[0-3]* )
+    if test -n "$GCC"; then
+      AC_MSG_RESULT(Turning on gcc compiler warnings.)
+      CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
+    else
+      # not gcc
+      AC_MSG_RESULT(Turning on SGI compiler warnings.)
+      CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
+    fi
+  ;;
+
+    *-linux-*)
+      AC_MSG_RESULT(Turning on gcc compiler warnings.)
+      CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
   ;;
   ;;
+
+#  *-dec-osf*)
+#    if test -z "$GCC"; then
+#      AC_MSG_RESULT(Turning on DEC C compiler warnings.)
+#      CC="$CC -migrate -w0 -verbose -warnprotos"
+#    fi
+#  ;;
+
 esac
 
 
 esac
 
 
+# Try and determine whether ${INSTALL} can create intermediate directories,
+# and if not, whether "mkdir -p" works instead.  This sets ${INSTALL_DIRS}.
+# (But autoconf should earn its keep and do this for us!)
+#
+AC_DEFUN(AC_PROG_INSTALL_DIRS,
+  [INSTALL_DIRS='${INSTALL} -d'
+   AC_MSG_CHECKING(whether \"\${INSTALL} -d\" creates intermediate directories)
+   rm -rf conftestdir
+   if mkdir conftestdir; then
+      cd conftestdir >&-
+
+      ${INSTALL} -d `pwd`/dir1/dir2 >&- 2>&-
+      if test -d dir1/dir2 ; then
+        AC_MSG_RESULT(yes)
+      else
+        AC_MSG_RESULT(no)
+        AC_MSG_CHECKING(whether \"mkdir -p\" creates intermediate directories)
+        rm -rf dir1
+        mkdir -p dir1/dir2 >&- 2>&-
+        if test -d dir1/dir2/. ; then
+         AC_MSG_RESULT(yes)
+         INSTALL_DIRS='mkdir -p'
+        else
+         AC_MSG_RESULT(no)
+        fi
+      fi
+      cd .. >&-
+      rm -rf conftestdir
+   fi
+])
+
+
 AC_PROG_CPP
 AC_PROG_INSTALL
 AC_PROG_CPP
 AC_PROG_INSTALL
+AC_PROG_INSTALL_DIRS
 AC_PROG_MAKE_SET
 
 AC_C_CONST
 AC_PROG_MAKE_SET
 
 AC_C_CONST
@@ -67,20 +123,20 @@ AC_MSG_CHECKING(how to call gettimeofday)
 AC_CACHE_VAL(ac_cv_gettimeofday_args,
  [AC_TRY_COMPILE([#include <stdlib.h>
                  #include <sys/time.h>],
 AC_CACHE_VAL(ac_cv_gettimeofday_args,
  [AC_TRY_COMPILE([#include <stdlib.h>
                  #include <sys/time.h>],
-                [struct timeval tv; gettimeofday(&tv);],
-                [ac_gettimeofday_args=1],
+                [struct timeval tv; struct timezone tzp;
+                 gettimeofday(&tv, &tzp);],
+                [ac_gettimeofday_args=2],
                 [AC_TRY_COMPILE([#include <stdlib.h>
                                  #include <sys/time.h>],
                 [AC_TRY_COMPILE([#include <stdlib.h>
                                  #include <sys/time.h>],
-                                [struct timeval tv; struct timezone tzp;
-                                 gettimeofday(&tv, &tzp);],
-                                [ac_gettimeofday_args=2],
+                                [struct timeval tv; gettimeofday(&tv);],
+                                [ac_gettimeofday_args=1],
                                 [ac_gettimeofday_args=0])])
   ac_cv_gettimeofday_args=$ac_gettimeofday_args])
 ac_gettimeofday_args=$ac_cv_gettimeofday_args
                                 [ac_gettimeofday_args=0])])
   ac_cv_gettimeofday_args=$ac_gettimeofday_args])
 ac_gettimeofday_args=$ac_cv_gettimeofday_args
-if test $ac_gettimeofday_args = 1 ; then
+if test "$ac_gettimeofday_args" = 1 ; then
   AC_DEFINE(HAVE_GETTIMEOFDAY)
   AC_MSG_RESULT(one argument)
   AC_DEFINE(HAVE_GETTIMEOFDAY)
   AC_MSG_RESULT(one argument)
-elif test $ac_gettimeofday_args = 2 ; then
+elif test "$ac_gettimeofday_args" = 2 ; then
   AC_DEFINE(HAVE_GETTIMEOFDAY)
   AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
   AC_MSG_RESULT(two arguments)
   AC_DEFINE(HAVE_GETTIMEOFDAY)
   AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
   AC_MSG_RESULT(two arguments)
@@ -90,9 +146,9 @@ fi
 
 
 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv)
 
 
 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv)
-AC_CHECK_FUNCS(sigaction)
+AC_CHECK_FUNCS(sigaction syslog)
 
 
-AC_CHECK_HEADERS(unistd.h)
+AC_CHECK_HEADERS(unistd.h crypt.h sys/select.h)
 
 dnl    /usr/local/src/ssh-1.2.17/putenv.c -- AC_REPLACE_FUNCS(putenv)
 
 
 dnl    /usr/local/src/ssh-1.2.17/putenv.c -- AC_REPLACE_FUNCS(putenv)
 
@@ -105,35 +161,41 @@ Installation options:
                           specify the name of the subdirectory.  For example,
                           --exec-prefix=/usr/local/bin --enable-subdir=demos
                           would put xscreensaver in /usr/local/bin/, and would
                           specify the name of the subdirectory.  For example,
                           --exec-prefix=/usr/local/bin --enable-subdir=demos
                           would put xscreensaver in /usr/local/bin/, and would
-                          put the demos in /usr/local/bin/demos/.  Note that if
-                          you do this, you must make sure that the directory
-                          is on your \$PATH before xscreensaver is started: the
-                          directory name is not hardcoded into the program.
-                          This merely sets the default installation location.
+                          put the demos in /usr/local/bin/demos/.  (If DIR
+                          begins with /, then bindir will not be prepended.)
 
   --disable-subdir        Just put the demos in \`bindir' (this is the default.)
 ],
   [enable_subdir="$enableval"],[enable_subdir=no])
 if test x"$enable_subdir" = xno; then
 
   --disable-subdir        Just put the demos in \`bindir' (this is the default.)
 ],
   [enable_subdir="$enableval"],[enable_subdir=no])
 if test x"$enable_subdir" = xno; then
-  HACKDIR='$(bindir)'
+  HACKDIR='${bindir}'
 elif test x"$enable_subdir" = xyes -o x"$enable_subdir" = x ; then
   echo "error: must be a subdirectory name: --enable-subdir=$enable_subdir"
   exit 1
 else
 elif test x"$enable_subdir" = xyes -o x"$enable_subdir" = x ; then
   echo "error: must be a subdirectory name: --enable-subdir=$enable_subdir"
   exit 1
 else
-  HACKDIR='$(bindir)/'$enable_subdir
+  # there must be a better way than this...
+  if test -z "`echo $enable_subdir | sed 's@^/.*@@'`" ; then
+    # absolute path
+    HACKDIR=$enable_subdir
+  else
+    # relative path
+    HACKDIR='${bindir}/'$enable_subdir
+  fi
 fi
 
 fi
 
+# canonicalize slashes.
+HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
+
 
 AC_PATH_XTRA
 
 # Try and find the app-defaults directory.
 # It sucks that autoconf doesn't do this already...
 #
 
 AC_PATH_XTRA
 
 # Try and find the app-defaults directory.
 # It sucks that autoconf doesn't do this already...
 #
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,
-  [
+AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
   rm -fr conftestdir
   if mkdir conftestdir; then
   rm -fr conftestdir
   if mkdir conftestdir; then
-    cd conftestdir
+    cd conftestdir >&-
     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
     cat > Imakefile <<'EOF'
 acfindx:
     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
     cat > Imakefile <<'EOF'
 acfindx:
@@ -143,12 +205,12 @@ EOF
       # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
     fi
       # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
     fi
-    cd ..
+    cd .. >&-
     rm -fr conftestdir
   fi])
 
     rm -fr conftestdir
   fi])
 
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,
-[  # Look for the directory under a standard set of common directories.
+AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
+  # Look for the directory under a standard set of common directories.
   # Check X11 before X11Rn because it's often a symlink to the current release.
   for ac_dir in                                        \
     /usr/X11/lib/app-defaults                  \
   # Check X11 before X11Rn because it's often a symlink to the current release.
   for ac_dir in                                        \
     /usr/X11/lib/app-defaults                  \
@@ -211,7 +273,9 @@ AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
   [AC_REQUIRE_CPP()
     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
      [AC_PATH_X_APP_DEFAULTS_XMKMF
   [AC_REQUIRE_CPP()
     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
      [AC_PATH_X_APP_DEFAULTS_XMKMF
-      AC_PATH_X_APP_DEFAULTS_DIRECT
+      if test x"$ac_x_app_defaults" = x; then
+        AC_PATH_X_APP_DEFAULTS_DIRECT
+      fi
       if test x"$ac_x_app_defaults" = x; then
         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
       else
       if test x"$ac_x_app_defaults" = x; then
         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
       else
@@ -265,19 +329,19 @@ AC_DEFUN(AC_TRY_X_COMPILE, [
 AC_DEFUN(AC_CHECK_X_LIB, [
   ac_save_CPPFLAGS="$CPPFLAGS"
   ac_save_LDFLAGS="$LDFLAGS"
 AC_DEFUN(AC_CHECK_X_LIB, [
   ac_save_CPPFLAGS="$CPPFLAGS"
   ac_save_LDFLAGS="$LDFLAGS"
+
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
   fi
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
   fi
-  if test \! -z "$includedir" ; then 
-    CPPFLAGS="$CPPFLAGS -I$includedir"
-  fi
+  # note: $X_CFLAGS includes $x_includes
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
   if test \! -z "$libdir" ; then
     LDFLAGS="$LDFLAGS -L$libdir"
   fi
   if test \! -z "$libdir" ; then
     LDFLAGS="$LDFLAGS -L$libdir"
   fi
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  if test \! -z "$x_libraries" ; then
-    LDFLAGS="$LDFLAGS -L$x_libraries"
-  fi
+  # note: $X_LIBS includes $x_libraries
+  LDFLAGS="$LDFLAGS $X_LIBS"
+
   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
   CPPFLAGS="$ac_save_CPPFLAGS"
   LDFLAGS="$ac_save_LDFLAGS"])
   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
   CPPFLAGS="$ac_save_CPPFLAGS"
   LDFLAGS="$ac_save_LDFLAGS"])
@@ -296,6 +360,65 @@ AC_DEFUN(AC_TRY_X_RUN, [
 
 
 
 
 
 
+# Usage: HANDLE_X_PATH_ARG([variable_name],
+#                         [--command-line-option],
+#                         [descriptive string])
+#
+# All of the --with options take three forms:
+#
+#   --with-foo (or --with-foo=yes)
+#   --without-foo (or --with-foo=no)
+#   --with-foo=/DIR
+#
+# This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
+# a directory (string beginning with a slash) it checks to see whether
+# /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
+# as appropriate.
+#
+AC_DEFUN(HANDLE_X_PATH_ARG, [
+   case "$[$1]" in
+    yes) ;;
+    no)  ;;
+
+    /*)
+     AC_MSG_CHECKING([for [$3] headers])
+     d=$[$1]/include
+     if test -d $d; then
+       X_CFLAGS="-I$d $X_CFLAGS"
+       AC_MSG_RESULT($d)
+     else
+       AC_MSG_RESULT(not found ($d: no such directory))
+     fi
+
+     AC_MSG_CHECKING([for [$3] libs])
+     d=$[$1]/lib
+     if test -d $d; then
+       X_LIBS="-L$d $X_LIBS"
+       AC_MSG_RESULT($d)
+     else
+       AC_MSG_RESULT(not found ($d: no such directory))
+     fi
+
+     # replace the directory string with "yes".
+     [$1]_req="yes"
+     [$1]=$[$1]_req
+     ;;
+
+    *)
+     echo ""
+     echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
+     echo "       If it is a directory, then \`DIR/include' will be added to"
+     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
+     exit 1
+     ;;
+   esac
+
+   # why is this necessary?
+   # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
+   # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
+   withval=
+  ])
+
 
 
 # check for the HP XHPDisableReset server extension headers.
 
 
 # check for the HP XHPDisableReset server extension headers.
@@ -312,42 +435,117 @@ AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
                                  [XPointer foo = (XPointer) 0;],
                                  [ac_cv_xpointer=yes],
                                  [ac_cv_xpointer=no])])
                                  [XPointer foo = (XPointer) 0;],
                                  [ac_cv_xpointer=yes],
                                  [ac_cv_xpointer=no])])
-if test $ac_cv_xpointer != yes; then
+if test "$ac_cv_xpointer" != yes; then
   AC_DEFINE(XPointer,[char*])
 fi
 
 
   AC_DEFINE(XPointer,[char*])
 fi
 
 
+# Random special-cases for certain pathological OSes.  You know who you are.
+#
 case "$host" in
   *-hpux*)
 case "$host" in
   *-hpux*)
-    # Thanks for not making xmkmf find this by default, you losers.
+
+    # The following arcana was gleaned from conversations with
+    # Eric Schwartz <erics@col.hp.com>:
+    #
+    # On HPUX 10.x, the parts of X that HP considers "standard" live in
+    # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
+    # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
+    # Also, there are symlinks from /usr/include/ and /usr/lib/ into
+    # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
+    # you don't need any -I or -L arguments.
+    #
+    # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
+    # are the same division as 10.x.  However, there are no symlinks to
+    # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
+    # arguments are always necessary.
+    #
+    # However, X11R6 was available on HPUX 9.x as a patch: if that
+    # patch was installed, then all of X11R6 went in to
+    # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
+    #
+    # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
+    # whether R5 was available as a patch; R6 undoubtedly was not.)
+    #
+    # So.  We try and use the highest numbered pair of
+    # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
+    # that are available.  We do not mix and match different versions
+    # of X.
+    #
+    # Questions I still don't know the answers to: (do you?)
+    #
+    #   * Does HPUX 10.x come with /usr/contrib/X11R6/ standard?  
+    #     Or does that need to be installed separately?
+    #
+    #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
+    #     /usr/contrib/X11R6/ could be installed as a patch, what was in
+    #     that contrib directory?  Did it contain so-called "standard"
+    #     X11R6, or did it include Xaw and Xmu as well?  If the former,
+    #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
+    #     be a situation where one had to reach into the R5 headers and
+    #     libs to find Xmu?  That is, must both R6 and R5 directories
+    #     be on the -I and -L lists in that case?
+    #
+    for version in X11R6 X11R5 X11R4 ; do
+      # if either pair of directories exists...
+      if test -d /usr/lib/$version || test -d /usr/contrib/$version/lib ; then
+         # if contrib exists, use it...
+         if test -d /usr/contrib/$version/lib ; then
+           X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
+           X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
+         fi
+         # if the "standard" one exists, use it.
+         if test -d /usr/lib/$version ; then
+           X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
+           X_LIBS="$X_LIBS -L/usr/lib/$version"
+         fi
+         # since at least one of the pair exists, go no farther.
+         break
+      fi
+    done
+
+    # Now find Motif.  Thanks for not making xmkmf find this by
+    # default, you losers.
+    #
     if test -d /usr/lib/Motif1.2 ; then
     if test -d /usr/lib/Motif1.2 ; then
-      X_CFLAGS="-I/usr/include/Motif1.2 $X_CFLAGS"
-      X_LIBS="-L/usr/lib/Motif1.2 $X_LIBS"
+      X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
+      X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
     elif test -d /usr/lib/Motif1.1 ; then
     elif test -d /usr/lib/Motif1.1 ; then
-      X_CFLAGS="-I/usr/include/Motif1.1 $X_CFLAGS"
-      X_LIBS="-L/usr/lib/Motif1.1 $X_LIBS"
+      X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
+      X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
     fi
 
     fi
 
-    # This too.  You losers.
-    if test -d /usr/contrib/X11R6/include ; then
-      X_CFLAGS="-I/usr/contrib/X11R6/include $X_CFLAGS"
-      X_LIBS="-L/usr/contrib/X11R6/lib $X_LIBS"
-    elif test -d /usr/X11R6/include ; then
-      X_CFLAGS="-I/usr/X11R6/include $X_CFLAGS"
-      X_LIBS="-L/usr/X11R6/lib $X_LIBS"
-    elif test -d /usr/contrib/X11R5/include ; then
-      X_CFLAGS="-I/usr/contrib/X11R5/include $X_CFLAGS"
-      X_LIBS="-L/usr/contrib/X11R5/lib $X_LIBS"
-    elif test -d /usr/X11R5/include ; then
-      X_CFLAGS="-I/usr/X11R5/include $X_CFLAGS"
-      X_LIBS="-L/usr/X11R5/lib $X_LIBS"
+    # Now let's check for the pseudo-standard locations for OpenGL and XPM.
+    #
+    if test -d /opt/Mesa/lib ; then
+      X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
+      X_LIBS="-L/opt/Mesa/lib $X_LIBS"
+    fi
+
+    if test -d /opt/xpm/lib/X11 ; then
+      X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
+      X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
+    fi
+
+    # On HPUX, default to installing in /opt/xscreensaver/ instead of
+    # in /usr/local/, unless there is already an xscreensaver in
+    # /usr/local/bin/.  This can be overridden with the --prefix arg
+    # to configure.  I'm not sure this is the right thing to do, but
+    # Richard Lloyd says so...
+    #
+    if test \! -x /usr/local/bin/xscreensaver ; then
+      ac_default_prefix=/opt/xscreensaver
     fi
 
   ;;
   *-solaris*)
     fi
 
   ;;
   *-solaris*)
-    # Same to you, pinheads.  (Is this really the standard location now?
-    # What happened to the joke that this kind of thing went in /opt?)
+
+    # Thanks for not making xmkmf find this by default, pinheads.
+    # And thanks for moving things around again, too.  Is this
+    # really the standard location now?  What happened to the
+    # joke that this kind of thing went in /opt?
     # cthomp says "answer: CDE (Common Disorganized Environment)"
     # cthomp says "answer: CDE (Common Disorganized Environment)"
+    #
     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"
     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"
@@ -364,7 +562,7 @@ esac
 #
 have_xmu=no
 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes])
 #
 have_xmu=no
 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes])
-if test $have_xmu = no ; then
+if test "$have_xmu" = no ; then
   XMU_SRCS='$(UTILS_SRC)/xmu.c'
   XMU_OBJS='$(UTILS_BIN)/xmu.o'
 else
   XMU_SRCS='$(UTILS_SRC)/xmu.c'
   XMU_OBJS='$(UTILS_BIN)/xmu.o'
 else
@@ -372,6 +570,7 @@ else
   XMU_OBJS=''
   SAVER_LIBS="-lXmu $SAVER_LIBS"
   HACK_LIBS="-lXmu $HACK_LIBS"
   XMU_OBJS=''
   SAVER_LIBS="-lXmu $SAVER_LIBS"
   HACK_LIBS="-lXmu $HACK_LIBS"
+  TOOLKIT_LIBS="-lXmu $TOOLKIT_LIBS"
   AC_DEFINE(HAVE_XMU)
 fi
 
   AC_DEFINE(HAVE_XMU)
 fi
 
@@ -379,7 +578,7 @@ fi
 # See comp.windows.x FAQ question 124 about _get_wmShellWidgetClass on 4.1.x.
 # The right fix is to get OpenWindows 3.0 patches 100512-02 and 100573-03.
 #
 # See comp.windows.x FAQ question 124 about _get_wmShellWidgetClass on 4.1.x.
 # The right fix is to get OpenWindows 3.0 patches 100512-02 and 100573-03.
 #
-if test $have_xmu = yes ; then
+if test "$have_xmu" = yes ; then
   case "$host" in
     *-sunos4*)
     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
   case "$host" in
     *-sunos4*)
     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
@@ -396,14 +595,14 @@ if test $have_xmu = yes ; then
                                [ac_cv_sunos_xmu_bug=no],
                                [ac_cv_sunos_xmu_bug=yes])
                    LDFLAGS="$ac_save_LDFLAGS"])
                                [ac_cv_sunos_xmu_bug=no],
                                [ac_cv_sunos_xmu_bug=yes])
                    LDFLAGS="$ac_save_LDFLAGS"])
-    if test $ac_cv_sunos_xmu_bug = yes ; then
+    if test "$ac_cv_sunos_xmu_bug" = yes ; then
       AC_CACHE_CHECK([whether the compiler understands -static], 
                     ac_cv_ld_static,
                     [ac_save_LDFLAGS="$LDFLAGS"
                      LDFLAGS="$LDFLAGS -static"
                      AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
                    LDFLAGS="$ac_save_LDFLAGS"])
       AC_CACHE_CHECK([whether the compiler understands -static], 
                     ac_cv_ld_static,
                     [ac_save_LDFLAGS="$LDFLAGS"
                      LDFLAGS="$LDFLAGS -static"
                      AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
                    LDFLAGS="$ac_save_LDFLAGS"])
-      if test $ac_cv_ld_static = yes ; then
+      if test "$ac_cv_ld_static" = yes ; then
         LDFLAGS="$LDFLAGS -static"
       else
        LDFLAGS="$LDFLAGS -Bstatic"
         LDFLAGS="$LDFLAGS -static"
       else
        LDFLAGS="$LDFLAGS -Bstatic"
@@ -418,19 +617,27 @@ fi
 #
 have_sgi=no
 with_sgi_req=unspecified
 #
 have_sgi=no
 with_sgi_req=unspecified
-AC_ARG_WITH(sgi-ext,[
-Server options:
+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
+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.
+
+X Server Extension options:
 
   --with-sgi-ext          Include support for the SGI SCREEN_SAVER
                           server extension, if possible (this is the default).
   --without-sgi-ext       Do not compile in support for this extension.],
   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
 
   --with-sgi-ext          Include support for the SGI SCREEN_SAVER
                           server extension, if possible (this is the default).
   --without-sgi-ext       Do not compile in support for this extension.],
   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
-if test $with_sgi = yes; then
+
+HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
+
+if test "$with_sgi" = yes; then
   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
                    [have_sgi=yes
                     AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)])
 
   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
                    [have_sgi=yes
                     AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)])
 
-elif test $with_sgi != no; then
+elif test "$with_sgi" != no; then
   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
   exit 1
 fi
   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
   exit 1
 fi
@@ -445,17 +652,20 @@ AC_ARG_WITH(mit-ext,
                           server extension, if possible (this is the default).
   --without-mit-ext       Do not compile in support for this extension.],
   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
                           server extension, if possible (this is the default).
   --without-mit-ext       Do not compile in support for this extension.],
   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
-if test $have_sgi != yes; then
-  if test $with_mit = yes; then
+
+HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
+
+if test "$have_sgi" != yes; then
+  if test "$with_mit" = yes; then
     AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes])
 
     # Now check to see if it's really in the library; XF86Free-3.3 ships
     # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
     #
     AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes])
 
     # Now check to see if it's really in the library; XF86Free-3.3 ships
     # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
     #
-    if test $have_mit = yes; then
+    if test "$have_mit" = yes; then
       AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [], [have_mit=no], -lm)
 
       AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [], [have_mit=no], -lm)
 
-      if test $have_mit = no; then
+      if test "$have_mit" = no; then
        # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
        # of in Xext.  Thank you master, may I have another.
         AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
        # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
        # of in Xext.  Thank you master, may I have another.
         AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
@@ -463,7 +673,7 @@ if test $have_sgi != yes; then
                       [], -lX11 -lXext -lm)
       fi
 
                       [], -lX11 -lXext -lm)
       fi
 
-      if test $have_mit = no; then
+      if test "$have_mit" = no; then
        # Double fuck!  Looks like some versions of XFree86 (whichever version
        # it is that comes with RedHat Linux 2.0 -- I can't find a version 
        # number) put this garbage in Xss instead of Xext.  Thank you master,
        # Double fuck!  Looks like some versions of XFree86 (whichever version
        # it is that comes with RedHat Linux 2.0 -- I can't find a version 
        # number) put this garbage in Xss instead of Xext.  Thank you master,
@@ -473,13 +683,13 @@ if test $have_sgi != yes; then
                       [], -lX11 -lXext -lm)
       fi
 
                       [], -lX11 -lXext -lm)
       fi
 
-    if test $have_mit = yes; then
+    if test "$have_mit" = yes; then
       AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
     fi
 
     fi
 
       AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
     fi
 
     fi
 
-  elif test $with_mit != no; then
+  elif test "$with_mit" != no; then
     echo "error: must be yes or no: --with-mit-ext=$with_mit"
     exit 1
   fi
     echo "error: must be yes or no: --with-mit-ext=$with_mit"
     exit 1
   fi
@@ -495,11 +705,14 @@ AC_ARG_WITH(xidle-ext,
                           if possible (this is the default).
   --without-xidle-ext     Do not compile in support for this extension.],
   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
                           if possible (this is the default).
   --without-xidle-ext     Do not compile in support for this extension.],
   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
-if test $with_xidle = yes; then
+
+HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
+
+if test "$with_xidle" = yes; then
   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
                    [have_xidle=yes
                     AC_DEFINE(HAVE_XIDLE_EXTENSION)])
   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
                    [have_xidle=yes
                     AC_DEFINE(HAVE_XIDLE_EXTENSION)])
-elif test $with_xidle != no; then
+elif test "$with_xidle" != no; then
   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
   exit 1
 fi
   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
   exit 1
 fi
@@ -514,29 +727,46 @@ AC_ARG_WITH(xshm-ext,
                           extension, if possible (this is the default).
   --without-xshm-ext      Do not compile in support for this extension.],
   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
                           extension, if possible (this is the default).
   --without-xshm-ext      Do not compile in support for this extension.],
   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
-if test $with_xshm = yes; then
+
+HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
+
+if test "$with_xshm" = yes; then
 
   # first check for Xshm.h.
   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
 
   # if that succeeded, then check for sys/ipc.h.
 
   # first check for Xshm.h.
   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
 
   # if that succeeded, then check for sys/ipc.h.
-  if test $have_xshm = yes; then
+  if test "$have_xshm" = yes; then
     have_xshm=no
     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
   fi
 
   # if that succeeded, then check for sys/shm.h.
     have_xshm=no
     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
   fi
 
   # if that succeeded, then check for sys/shm.h.
-  if test $have_xshm = yes; then
+  if test "$have_xshm" = yes; then
     have_xshm=no
     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
   fi
 
     have_xshm=no
     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
   fi
 
+  # AIX is pathological, as usual: apparently it's normal for the Xshm headers
+  # to exist, but the library code to not exist.  And even better, the library
+  # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
+  # lib doesn't exist, give up.
+  #
+  case "$host" in
+    *-aix*)
+      have_xshm=no
+      AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
+                    [have_xshm=yes; SAVER_LIBS="$SAVER_LIBS -lXextSam"],
+                      [], -lX11 -lXext -lm)
+    ;;
+  esac
+
   # if that succeeded, then we've really got it.
   # if that succeeded, then we've really got it.
-  if test $have_xshm = yes; then
+  if test "$have_xshm" = yes; then
     AC_DEFINE(HAVE_XSHM_EXTENSION)
   fi
 
     AC_DEFINE(HAVE_XSHM_EXTENSION)
   fi
 
-elif test $with_xshm != no; then
+elif test "$with_xshm" != no; then
   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
   exit 1
 fi
   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
   exit 1
 fi
@@ -551,13 +781,16 @@ AC_ARG_WITH(sgivc-ext,
                           extension, if possible (this is the default).
   --without-sgivc-ext     Do not compile in support for this extension.],
   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
                           extension, if possible (this is the default).
   --without-sgivc-ext     Do not compile in support for this extension.],
   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
-if test $with_sgivc = yes; then
+
+HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
+
+if test "$with_sgivc" = yes; then
 
   # first check for XSGIvc.h
   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
 
   # if that succeeded, then check for the -lXsgivc
 
   # first check for XSGIvc.h
   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
 
   # if that succeeded, then check for the -lXsgivc
-  if test $have_sgivc = yes; then
+  if test "$have_sgivc" = yes; then
     have_sgivc=no
     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
                  [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [],
     have_sgivc=no
     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
                  [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [],
@@ -565,19 +798,50 @@ if test $with_sgivc = yes; then
   fi
 
   # if that succeeded, then we've really got it.
   fi
 
   # if that succeeded, then we've really got it.
-  if test $have_sgivc = yes; then
+  if test "$have_sgivc" = yes; then
     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
   fi
 
     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
   fi
 
-elif test $with_sgivc != no; then
+elif test "$with_sgivc" != no; then
   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
   exit 1
 fi
 
 
   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
   exit 1
 fi
 
 
+# Check for the DPMS server extension header.
+#
+have_dpms=no
+with_dpms_req=unspecified
+AC_ARG_WITH(dpms-ext,
+[  --with-dpms-ext         Include support for the DPMS server extension,
+                          if possible (this is the default).
+  --without-dpms-ext      Do not compile in support for this extension.],
+  [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
+
+HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
+
+if test "$with_dpms" = yes; then
 
 
+  # first check for dpms.h
+  AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
+
+  # if that succeeded, then check for the -lXdpms
+  if test "$have_dpms" = yes; then
+    have_dpms=no
+    AC_CHECK_X_LIB(Xdpms, DPMSInfo,
+                 [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [],
+                 -lXext -lX11)
+  fi
 
 
+  # if that succeeded, then we've really got it.
+  if test "$have_dpms" = yes; then
+    AC_DEFINE(HAVE_DPMS_EXTENSION)
+  fi
 
 
+elif test "$with_dpms" != no; then
+  echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
+  exit 1
+fi
 
 
 
 
 
 
@@ -585,42 +849,47 @@ fi
 #
 have_motif=no
 have_athena=no
 #
 have_motif=no
 have_athena=no
+have_athena3d=no
 with_motif_req=unspecified
 with_athena_req=unspecified
 
 AC_ARG_WITH(motif,[
 with_motif_req=unspecified
 with_athena_req=unspecified
 
 AC_ARG_WITH(motif,[
-Toolkit options:
+X Client Toolkit options:
 
 
-  --with-motif            Use the Motif toolkit for the user interface,
-                          if possible (this is the default).
+  --with-motif            Use the Motif toolkit for the user interface, if
+                          possible (this is the default).
   --without-motif         Do not use Motif.],
   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
 
   --without-motif         Do not use Motif.],
   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
 
+HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
+
 AC_ARG_WITH(athena,
 [  --with-athena           Use the Athena toolkit for the user interface, if
                           possible (this is the default if Motif isn't used.)
   --without-athena        Do not use Athena.],
   [with_athena="$withval"; with_athena_req="$withval"],[with_athena=no])
 
 AC_ARG_WITH(athena,
 [  --with-athena           Use the Athena toolkit for the user interface, if
                           possible (this is the default if Motif isn't used.)
   --without-athena        Do not use Athena.],
   [with_athena="$withval"; with_athena_req="$withval"],[with_athena=no])
 
-if test $with_motif != yes -a $with_motif != no ; then
+HANDLE_X_PATH_ARG(with_athena, --with-athena, Athena)
+
+if test "$with_motif" != yes -a "$with_motif" != no ; then
   echo "error: must be yes or no: --with-motif=$with_motif"
   exit 1
 fi
 
   echo "error: must be yes or no: --with-motif=$with_motif"
   exit 1
 fi
 
-if test $with_athena != yes -a $with_athena != no ; then
+if test "$with_athena" != yes -a "$with_athena" != no ; then
   echo "error: must be yes or no: --with-athena=$with_athena"
   exit 1
 fi
 
 
 # Saying --without-motif is the same as saying --with-athena.
   echo "error: must be yes or no: --with-athena=$with_athena"
   exit 1
 fi
 
 
 # Saying --without-motif is the same as saying --with-athena.
-if test $with_motif_req = no ; then
+if test "$with_motif_req" = no ; then
   with_athena_req=yes
   with_athena=yes
 fi
 
 # Saying --without-athena is the same as saying --with-motif.
   with_athena_req=yes
   with_athena=yes
 fi
 
 # Saying --without-athena is the same as saying --with-motif.
-if test $with_athena_req = no ; then
+if test "$with_athena_req" = no ; then
   with_motif_req=yes
   with_motif=yes
 fi
   with_motif_req=yes
   with_motif=yes
 fi
@@ -631,14 +900,24 @@ check_motif() {
   AC_CHECK_X_HEADER(Xm/Xm.h,
                    [have_motif=yes
                     AC_DEFINE(HAVE_MOTIF)
   AC_CHECK_X_HEADER(Xm/Xm.h,
                    [have_motif=yes
                     AC_DEFINE(HAVE_MOTIF)
-                    SAVER_LIBS="-lXm $SAVER_LIBS"])
+                    TOOLKIT_LIBS="-lXm $TOOLKIT_LIBS"])
 }
 
 check_athena() {
 }
 
 check_athena() {
-  AC_CHECK_X_HEADER(X11/Xaw/Dialog.h,
-                  [have_athena=yes
-                   AC_DEFINE(HAVE_ATHENA)
-                   SAVER_LIBS="-lXaw $SAVER_LIBS"])
+  have_athena=no
+  have_athena3d=no
+  AC_CHECK_X_HEADER(X11/Xaw/Dialog.h, [have_athena=yes])
+  if test "$have_athena" = yes; then
+    AC_CHECK_X_LIB(Xaw3d, Xaw3dComputeTopShadowRGB,
+                  [have_athena=yes; have_athena3d=yes], [],
+                  -lXt -lXmu -lXext -lX11)
+  fi
+
+  if test "$have_athena3d" = yes; then
+    TOOLKIT_LIBS="-lXaw3d $TOOLKIT_LIBS"
+  elif test "$have_athena" = yes; then
+    TOOLKIT_LIBS="-lXaw $TOOLKIT_LIBS"
+  fi
 }
 
 
 }
 
 
@@ -648,20 +927,20 @@ check_athena() {
 # If they asked for neither, check motif then athena.
 
 proselytize_motif=yes
 # If they asked for neither, check motif then athena.
 
 proselytize_motif=yes
-if test $with_motif = yes; then
+if test "$with_motif" = yes; then
   # asked for both, or for motif only
   check_motif
   # asked for both, or for motif only
   check_motif
-  if test $have_motif = yes; then
+  if test "$have_motif" = yes; then
     with_athena=no
     with_athena_req=no
   else
     check_athena
   fi
 
     with_athena=no
     with_athena_req=no
   else
     check_athena
   fi
 
-elif test $with_athena = yes; then
+elif test "$with_athena" = yes; then
   # asked for athena only
   check_athena
   # asked for athena only
   check_athena
-  if test $have_athena = yes; then
+  if test "$have_athena" = yes; then
     with_motif=no
     proselytize_motif=no
   else
     with_motif=no
     proselytize_motif=no
   else
@@ -671,7 +950,7 @@ elif test $with_athena = yes; then
 else
   # asked for neither
   check_motif
 else
   # asked for neither
   check_motif
-  if test $have_motif = yes; then
+  if test "$have_motif" = yes; then
     with_athena=no
   else
     check_athena
     with_athena=no
   else
     check_athena
@@ -679,20 +958,20 @@ else
 
 fi
 
 
 fi
 
-if test $have_motif = yes; then
+if test "$have_motif" = yes; then
   proselytize_motif=no
 fi
 
 # If we have Athena, check whether it's a version that includes
 # XawViewportSetCoordinates in Viewport.h (R3 (or R4?) don't.)
   proselytize_motif=no
 fi
 
 # If we have Athena, check whether it's a version that includes
 # XawViewportSetCoordinates in Viewport.h (R3 (or R4?) don't.)
-if test $have_athena = yes ; then
+if test "$have_athena" = yes ; then
   AC_CACHE_CHECK([for XawViewportSetCoordinates in Viewport.h], 
                 ac_cv_have_XawViewportSetCoordinates,
                 [ac_cv_have_XawViewportSetCoordinates=no
                  AC_EGREP_X_HEADER(XawViewportSetCoordinates, 
                                    X11/Xaw/Viewport.h,
                                    ac_cv_have_XawViewportSetCoordinates=yes)])
   AC_CACHE_CHECK([for XawViewportSetCoordinates in Viewport.h], 
                 ac_cv_have_XawViewportSetCoordinates,
                 [ac_cv_have_XawViewportSetCoordinates=no
                  AC_EGREP_X_HEADER(XawViewportSetCoordinates, 
                                    X11/Xaw/Viewport.h,
                                    ac_cv_have_XawViewportSetCoordinates=yes)])
-  if test $ac_cv_have_XawViewportSetCoordinates = yes ; then
+  if test "$ac_cv_have_XawViewportSetCoordinates" = yes ; then
     AC_DEFINE(HAVE_XawViewportSetCoordinates)
   fi
 fi
     AC_DEFINE(HAVE_XawViewportSetCoordinates)
   fi
 fi
@@ -701,7 +980,7 @@ fi
 # If we have Motif, check whether it's really LessTif.
 #
 have_lesstif=no
 # If we have Motif, check whether it's really LessTif.
 #
 have_lesstif=no
-if test $have_motif = yes ; then
+if test "$have_motif" = yes ; then
   AC_CACHE_CHECK([whether Motif is really LessTif], 
                 ac_cv_have_lesstif,
                 [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
   AC_CACHE_CHECK([whether Motif is really LessTif], 
                 ac_cv_have_lesstif,
                 [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
@@ -711,22 +990,65 @@ if test $have_motif = yes ; then
   have_lesstif=$ac_cv_have_lesstif
 fi
 
   have_lesstif=$ac_cv_have_lesstif
 fi
 
-# don't cache this
-unset ac_cv_good_lesstif
-
-good_lesstif=no
-if test $have_lesstif = yes ; then
-  # It must be at least "GNU Lesstif 0.82".
-  # #### If you change this, also sync the warning message lower down.
-  AC_CACHE_CHECK([whether LessTif is of a recent enough vintage],
-                ac_cv_good_lesstif,
-                [AC_TRY_X_RUN([#include <Xm/Xm.h>
-                               int main() { exit(LesstifVersion < 82); }],
-                              [ac_cv_good_lesstif=yes],
-                              [ac_cv_good_lesstif=no],
-                              # cross compiling?  Make an ass out of umption.
-                              [ac_cv_good_lesstif=yes])])
-  good_lesstif=$ac_cv_good_lesstif
+# don't cache these
+unset ac_cv_lesstif_version
+unset ac_cv_lesstif_version_string
+
+lesstif_version=unknown
+lesstif_version_string=unknown
+
+if test "$have_lesstif" = yes ; then
+  ltv=unknown
+  echo unknown > conftest-lt
+  AC_CACHE_CHECK([LessTif version number],
+                ac_cv_lesstif_version_string,
+      [AC_TRY_X_RUN([#include <stdio.h>
+                    #include <Xm/Xm.h>
+                    int main() {
+                      FILE *f = fopen("conftest-lt", "w");
+                      if (!f) exit(1);
+                      fprintf(f, "%d %d.%d\n", LesstifVersion,
+                         LESSTIF_VERSION, LESSTIF_REVISION);
+                      fclose(f);
+                      exit(0);
+                    }],
+                   [ltv=`cat conftest-lt`
+                    ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
+                    ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
+                   [ac_cv_lesstif_version=unknown
+                    ac_cv_lesstif_version_string=unknown],
+                   [ac_cv_lesstif_version=unknown
+                    ac_cv_lesstif_version_string=unknown])])
+  rm -f conftest-lt
+  lesstif_version=$ac_cv_lesstif_version
+  lesstif_version_string=$ac_cv_lesstif_version_string
+
+fi
+
+
+# Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
+# Extension".   Why this extension isn't in -lXext with all the others,
+# I have no idea.
+#
+have_xp_ext=no
+if test "$have_motif" = yes ; then
+   have_xp_ext=no
+   AC_CHECK_X_LIB(Xp, XpQueryExtension,
+                 [have_xp_ext=yes; TOOLKIT_LIBS="$TOOLKIT_LIBS -lXp"],
+                 [], -lX11 -lXext -lm)
+fi
+
+
+# Check for _Xsetlocale in -lXintl, since at least some recent versions
+# of Motif (on Linux) need it.
+#
+have_xintl=no
+if test "$have_motif" = yes ; then
+  AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
+                 -lX11 -lXext -lm)
+  if test "$have_xintl" = yes; then
+    TOOLKIT_LIBS="$TOOLKIT_LIBS -lXintl"
+  fi
 fi
 
 
 fi
 
 
@@ -735,18 +1057,21 @@ fi
 have_xpm=no
 with_xpm_req=unspecified
 AC_ARG_WITH(xpm,[
 have_xpm=no
 with_xpm_req=unspecified
 AC_ARG_WITH(xpm,[
-Demo options:
+Graphics Demo options:
 
   --with-xpm              Include support for XPM files in some demos,
                           if possible (this is the default).
   --without-xpm           Do not compile in support for XPM files.],
   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
 
   --with-xpm              Include support for XPM files in some demos,
                           if possible (this is the default).
   --without-xpm           Do not compile in support for XPM files.],
   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
-if test $with_xpm = yes; then
+
+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"])
   AC_CHECK_X_HEADER(X11/xpm.h,
                   [have_xpm=yes
                    AC_DEFINE(HAVE_XPM)
                    XPM_LIBS="-lXpm"])
-elif test $with_xpm != no; then
+elif test "$with_xpm" != no; then
   echo "error: must be yes or no: --with-xpm=$with_xpm"
   exit 1
 fi
   echo "error: must be yes or no: --with-xpm=$with_xpm"
   exit 1
 fi
@@ -755,6 +1080,7 @@ fi
 # check for the GL header
 #
 have_gl=no
 # check for the GL header
 #
 have_gl=no
+ac_have_mesa_gl=no
 with_gl_req=unspecified
 AC_ARG_WITH(gl,
 [  --with-gl               Build those demos which depend on OpenGL,
 with_gl_req=unspecified
 AC_ARG_WITH(gl,
 [  --with-gl               Build those demos which depend on OpenGL,
@@ -762,28 +1088,126 @@ AC_ARG_WITH(gl,
   --without-gl            Do not build the OpenGL demos.],
   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
 
   --without-gl            Do not build the OpenGL demos.],
   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
 
-if test $with_gl = yes; then
+HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
+
+ac_mesagl_version=unknown
+ac_mesagl_version_string=unknown
+
+if test "$with_gl" = yes; then
   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
-  if test $have_gl = yes ; then
+  if test "$have_gl" = yes ; then
     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
   fi
 
   # If we have the headers, try and figure out which vendor it's from.
   #
     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
   fi
 
   # If we have the headers, try and figure out which vendor it's from.
   #
-  if test $have_gl = yes ; then
+  if test "$have_gl" = yes ; then
 
     AC_DEFINE(HAVE_GL)
 
     AC_DEFINE(HAVE_GL)
-    have_mesa_gl=no
-    AC_EGREP_X_HEADER(Mesa, GL/glx.h, [have_mesa_gl=yes])
-    if test $have_mesa_gl = no ; then
+
+    # We need to know whether it's MesaGL so that we know which libraries
+    # to link against.
+    #
+    AC_MSG_CHECKING(whether GL is really MesaGL)
+    AC_CACHE_VAL(ac_cv_have_mesa_gl,
+      [ac_cv_have_mesa_gl=no
+       AC_EGREP_X_HEADER(Mesa, GL/glx.h, [ac_cv_have_mesa_gl=yes])
+      ])
+    ac_have_mesa_gl=$ac_cv_have_mesa_gl
+    AC_MSG_RESULT($ac_have_mesa_gl)
+
+    if test "$ac_have_mesa_gl" = no ; then
+      gl_lib_1="GL"
       GL_LIBS="-lGL -lGLU"
     else
       AC_DEFINE(HAVE_MESA_GL)
       GL_LIBS="-lGL -lGLU"
     else
       AC_DEFINE(HAVE_MESA_GL)
+      gl_lib_1="MesaGL"
       GL_LIBS="-lMesaGL -lMesaGLU"
     fi
       GL_LIBS="-lMesaGL -lMesaGLU"
     fi
+
+
+    # If it's MesaGL, we'd like to issue a warning if the version number
+    # is less than or equal to 2.6, because that version had a security bug.
+    #
+    if test "$ac_have_mesa_gl" = yes; then
+
+      # don't cache these.
+      unset ac_cv_mesagl_version
+      unset ac_cv_mesagl_version_string
+
+      AC_MSG_CHECKING(MesaGL version number)
+      AC_CACHE_VAL(ac_cv_mesagl_version_string,
+       [cat > conftest.$ac_ext <<EOF
+#line __oline__ "configure"
+#include "confdefs.h"
+#include <GL/gl.h>
+configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
+EOF
+
+        ac_save_CPPFLAGS="$CPPFLAGS"
+        if test \! -z "$includedir" ; then 
+          CPPFLAGS="$CPPFLAGS -I$includedir"
+        fi
+        CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
+         # M4 sucks!!
+        changequote(X,Y)
+        mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
+             's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
+        changequote([,])
+
+         rm -f conftest.$ac_ext
+
+        CPPFLAGS="$ac_save_CPPFLAGS"
+
+        if test "$mglv" = ""; then
+           ac_mesagl_version=unknown
+           ac_mesagl_version_string=unknown
+         else
+           ac_mesagl_version_string=$mglv
+           maj=`echo $mglv | sed -n 's/\..*//p'`
+           min=`echo $mglv | sed -n 's/.*\.//p'`
+           ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
+           if test -z "$ac_mesagl_version"; then
+            ac_mesagl_version=unknown
+             ac_mesagl_version_string=unknown
+          fi
+         fi
+         ac_cv_mesagl_version=$ac_mesagl_version
+         ac_cv_mesagl_version_string=$ac_mesagl_version_string
+      ])
+      ac_mesagl_version=$ac_cv_mesagl_version
+      ac_mesagl_version_string=$ac_cv_mesagl_version_string
+      AC_MSG_RESULT($ac_cv_mesagl_version_string)
+    fi
+
+
+    # If it's MesaGL, check to see if it requires -lpthread.
+    #
+    have_pthread=no
+    mesa_requires_pthread=false
+    if test "$ac_have_mesa_gl" = yes; then
+
+      AC_CHECK_LIB(pthread, pthread_create, [have_pthread=yes], [],)
+      if test "$have_pthread" = yes; then
+        AC_CHECK_X_LIB($gl_lib_1, gl_get_thread_context,
+                       [mesa_requires_pthread=yes], [],
+                      $GL_LIBS -lpthread -lX11 -lXext -lm)
+      fi
+
+      if test "$mesa_requires_pthread" = yes; then
+        GL_LIBS="$GL_LIBS -lpthread"
+      fi
+    fi
+
+    # Check for OpenGL 1.1 features.
+    #
+    AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
+                  [], $GL_LIBS -lX11 -lXext -lm)
+
   fi
 
   fi
 
-elif test $with_gl != no; then
+elif test "$with_gl" != no; then
   echo "error: must be yes or no: --with-gl=$with_gl"
   exit 1
 fi
   echo "error: must be yes or no: --with-gl=$with_gl"
   exit 1
 fi
@@ -799,10 +1223,13 @@ AC_ARG_WITH(readdisplay,
   --without-readdisplay   Do not compile in support for this extension.],
   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
   [with_readdisplay=yes])
   --without-readdisplay   Do not compile in support for this extension.],
   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
   [with_readdisplay=yes])
-if test $with_readdisplay = yes; then
+
+HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
+
+if test "$with_readdisplay" = yes; then
   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
                    AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
                    AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
-elif test $with_readdisplay != no; then
+elif test "$with_readdisplay" != no; then
   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
   exit 1
 fi
   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
   exit 1
 fi
@@ -818,18 +1245,21 @@ AC_ARG_WITH(sgivideo,
   --without-sgivideo       Do not compile in support for this library.],
   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
   [with_sgivideo=yes])
   --without-sgivideo       Do not compile in support for this library.],
   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
   [with_sgivideo=yes])
-if test $with_sgivideo = yes; then
+
+HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video)
+
+if test "$with_sgivideo" = yes; then
   AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
   AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
-  if test $have_sgivideo = yes; then
+  if test "$have_sgivideo" = yes; then
     have_sgivideo=no
     AC_CHECK_LIB(vl, vlOpenVideo, have_sgivideo=yes)
     have_sgivideo=no
     AC_CHECK_LIB(vl, vlOpenVideo, have_sgivideo=yes)
-    if test $have_sgivideo = yes; then
+    if test "$have_sgivideo" = yes; then
       SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
       SGI_VIDEO_LIBS="-lvl"
       AC_DEFINE(HAVE_SGI_VIDEO)
     fi
   fi
       SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
       SGI_VIDEO_LIBS="-lvl"
       AC_DEFINE(HAVE_SGI_VIDEO)
     fi
   fi
-elif test $with_sgivideo != no; then
+elif test "$with_sgivideo" != no; then
   echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
   exit 1
 fi
   echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
   exit 1
 fi
@@ -910,7 +1340,7 @@ if test ! -n "$ac_cv_zippy_program"; then
     #
     # try running libexec/yow and see if it exits without error.
     #
     #
     # try running libexec/yow and see if it exits without error.
     #
-    if test x"$dir" != x -a -x $dir/yow ; then
+    if test x"$dir" != x -a -x "$dir/yow" ; then
       if $dir/yow >&- 2>&- ; then
        ac_cv_zippy_program="$dir/yow"
        AC_MSG_RESULT($ac_cv_zippy_program)
       if $dir/yow >&- 2>&- ; then
        ac_cv_zippy_program="$dir/yow"
        AC_MSG_RESULT($ac_cv_zippy_program)
@@ -932,7 +1362,7 @@ if test ! -n "$ac_cv_zippy_program"; then
       #
       # try running libexec/yow and see if it exits without error.
       #
       #
       # try running libexec/yow and see if it exits without error.
       #
-      if test x"$dir" != x -a -x $dir/yow ; then
+      if test x"$dir" != x -a -x "$dir/yow" ; then
         if $dir/yow >&- 2>&- ; then
          ac_cv_zippy_program="$dir/yow"
          AC_MSG_RESULT($ac_cv_zippy_program)
         if $dir/yow >&- 2>&- ; then
          ac_cv_zippy_program="$dir/yow"
          AC_MSG_RESULT($ac_cv_zippy_program)
@@ -982,21 +1412,73 @@ AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program")
 
 # Allow locking to be disabled at compile-time.
 #
 
 # Allow locking to be disabled at compile-time.
 #
-have_locking=yes
 have_kerberos=no
 with_kerberos_req=unspecified
 have_shadow=no
 with_shadow_req=unspecified
 have_kerberos=no
 with_kerberos_req=unspecified
 have_shadow=no
 with_shadow_req=unspecified
+have_pam=no
+with_pam_req=unspecified
 need_setuid=no
 
 AC_ARG_ENABLE(locking,[
 need_setuid=no
 
 AC_ARG_ENABLE(locking,[
-Locking options:
+Screen Locking options:
 
   --enable-locking        Compile in support for locking the display
                           (this is the default.)
   --disable-locking       Do not allow locking at all.],
   [enable_locking="$enableval"],[enable_locking=yes])
 
   --enable-locking        Compile in support for locking the display
                           (this is the default.)
   --disable-locking       Do not allow locking at all.],
   [enable_locking="$enableval"],[enable_locking=yes])
-if test $enable_locking = yes; then
+if test "$enable_locking" = yes; then
+  true
+elif test "$enable_locking" = no; then
+  AC_DEFINE(NO_LOCKING)
+else
+  echo "error: must be yes or no: --enable-locking=$enable_locking"
+  exit 1
+fi
+
+
+
+# Check to see if we can lock Virtual-Terminal switching, but allow that 
+# to be disabled at compile-time.
+#
+ac_vt_lockswitch=no
+AC_ARG_ENABLE(vt-locking,[
+  --enable-vt-locking     Compile in support for locking Virtual Terminals.
+                          This is the default if the system supports it, and
+                          if locking support is included (--enable-locking.)
+  --disable-vt-locking    Do not allow locking of VTs, even if locking is
+                          enabled.],
+  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
+if test "$enable_vt_locking" = yes; then
+
+  AC_MSG_CHECKING(for the VT_LOCKSWITCH ioctl)
+  AC_CACHE_VAL(ac_cv_vt_lockswitch,
+   [AC_TRY_COMPILE([#include <fcntl.h>
+                   #include <sys/ioctl.h>
+                   #include <sys/vt.h>],
+                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
+                  [ac_cv_vt_lockswitch=yes],
+                  [ac_cv_vt_lockswitch=no])])
+  ac_vt_lockswitch=$ac_cv_vt_lockswitch
+  AC_MSG_RESULT($ac_vt_lockswitch)
+
+elif test "$enable_locking" = no; then
+  true
+else
+  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
+  exit 1
+fi
+
+if test "$ac_vt_lockswitch" = yes; then
+  AC_DEFINE(HAVE_VT_LOCKSWITCH)
+  # the VT_LOCKSWITCH ioctl can only be used when running as root.
+  # #### but it doesn't work yet, so don't worry about that for now.
+#  need_setuid=yes
+fi
+
+
+
+if test "$enable_locking" = yes; then
 
   # Check for Kerberos.
   #
 
   # Check for Kerberos.
   #
@@ -1005,33 +1487,73 @@ if test $enable_locking = yes; then
                           if possible (this is the default.)
   --without-kerberos      Do not compile in support for Kerberos.],
   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
                           if possible (this is the default.)
   --without-kerberos      Do not compile in support for Kerberos.],
   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
-  if test $with_kerberos = yes; then
+
+  HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
+
+  if test "$with_kerberos" = yes; then
     AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos,
                   [AC_TRY_X_COMPILE([#include <krb.h>],,
                                     [ac_cv_kerberos=yes],
                                     [ac_cv_kerberos=no])])
     AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos,
                   [AC_TRY_X_COMPILE([#include <krb.h>],,
                                     [ac_cv_kerberos=yes],
                                     [ac_cv_kerberos=no])])
-    if test $ac_cv_kerberos = yes ; then
+    if test "$ac_cv_kerberos" = yes ; then
       have_kerberos=yes
       AC_DEFINE(HAVE_KERBEROS)
       have_kerberos=yes
       AC_DEFINE(HAVE_KERBEROS)
-      PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lnsl -lsocket"
+
+      # from Tim Showalter <tjs+@andrew.cmu.edu>
+      PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
+      AC_CHECK_FUNC(res_search,,
+        AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
+          AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
+       ))
+
     fi
     fi
-  elif test $with_kerberos != no; then
+  elif test "$with_kerberos" != no; then
     echo "error: must be yes or no: --with-kerberos=$with_kerberos"
     exit 1
   fi
     echo "error: must be yes or no: --with-kerberos=$with_kerberos"
     exit 1
   fi
+  
+  # Check for PAM.
+  AC_ARG_WITH(pam,
+[  --with-pam              Include support for PAM (Pluggable Authentication
+                          Modules) if possible (this is the default.)
+  --without-pam           Do not compile in support for PAM.],
+  [with_pam="$withval"; with_pam_req="$withval"],[with_pam=no])
+#### Leave PAM off by default for now, since it's buggy on Solaris
+#### (and probably Linux, but it's so hard to tell...)
+
+  HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
+
+  if test "$with_pam" = yes; then
+    AC_CACHE_CHECK([for PAM], ac_cv_pam,
+                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
+                                    [ac_cv_pam=yes],
+                                    [ac_cv_pam=no])])
+    if test "$ac_cv_pam" = yes ; then
+         have_pam=yes
+         AC_DEFINE(HAVE_PAM)
+         PASSWD_LIBS="${PASSWD_LIBS} -lpam -ldl"
+    fi
+  elif test "$with_pam" != no; then
+       echo "error: must be yes or no: --with-pam=$with_pam"
+       exit 1
+  fi
 
   # Next, check for the nine billion variants of shadow passwords...
 
 
   # Next, check for the nine billion variants of shadow passwords...
 
-  passwd_cruft_done=no
+  pwent_cruft_done=no
   AC_ARG_WITH(shadow,
 [  --with-shadow           Include support for shadow password authentication,
   AC_ARG_WITH(shadow,
 [  --with-shadow           Include support for shadow password authentication,
-                          if possible (this is the default, if no Kerberos.)
+                          if possible (this is the default, if no Kerberos or
+                          PAM.)
   --without-shadow        Do not compile in support for shadow passwords.
 ],
   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
   --without-shadow        Do not compile in support for shadow passwords.
 ],
   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
-  if test $with_shadow = no; then
-    passwd_cruft_done=yes
-  elif test $with_shadow != yes; then
+
+  HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
+
+  if test "$with_shadow" = no; then
+    pwent_cruft_done=yes
+  elif test "$with_shadow" != yes; then
     echo "error: must be yes or no: --with-shadow=$with_shadow"
     exit 1
   fi
     echo "error: must be yes or no: --with-shadow=$with_shadow"
     exit 1
   fi
@@ -1039,7 +1561,7 @@ if test $enable_locking = yes; then
 
   # Sun's "adjunct" passwords.
   #
 
   # Sun's "adjunct" passwords.
   #
-  if test $passwd_cruft_done = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
     AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1051,17 +1573,17 @@ if test $enable_locking = yes; then
                         const char *pw = p->pwa_passwd;],
                        [ac_cv_sun_adjunct=yes],
                        [ac_cv_sun_adjunct=no])])
                         const char *pw = p->pwa_passwd;],
                        [ac_cv_sun_adjunct=yes],
                        [ac_cv_sun_adjunct=no])])
-    if test $ac_cv_sun_adjunct = yes; then
+    if test "$ac_cv_sun_adjunct" = yes; then
       have_shadow=yes
       need_setuid=yes
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_ADJUNCT_PASSWD)
     fi
   fi
 
   # DEC and SCO so-called "enhanced" security.
   #
       AC_DEFINE(HAVE_ADJUNCT_PASSWD)
     fi
   fi
 
   # DEC and SCO so-called "enhanced" security.
   #
-  if test $passwd_cruft_done = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
     AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1080,7 +1602,7 @@ if test $enable_locking = yes; then
     if test $ac_cv_enhanced_passwd = yes; then
       have_shadow=yes
       need_setuid=yes
     if test $ac_cv_enhanced_passwd = yes; then
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_ENHANCED_PASSWD)
 
       # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
       AC_DEFINE(HAVE_ENHANCED_PASSWD)
 
       # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
@@ -1096,7 +1618,7 @@ if test $enable_locking = yes; then
 
   # HP's entry in the "Not Invented Here" Sweepstakes.
   #
 
   # HP's entry in the "Not Invented Here" Sweepstakes.
   #
-  if test $passwd_cruft_done = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
     AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1108,10 +1630,10 @@ if test $enable_locking = yes; then
                         const char *pw = p->pw_passwd;],
                        [ac_cv_hpux_passwd=yes],
                        [ac_cv_hpux_passwd=no])])
                         const char *pw = p->pw_passwd;],
                        [ac_cv_hpux_passwd=yes],
                        [ac_cv_hpux_passwd=no])])
-    if test $ac_cv_hpux_passwd = yes; then
+    if test "$ac_cv_hpux_passwd" = yes; then
       have_shadow=yes
       need_setuid=yes
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_HPUX_PASSWD)
 
       # on HPUX, bigcrypt is in -lsec
       AC_DEFINE(HAVE_HPUX_PASSWD)
 
       # on HPUX, bigcrypt is in -lsec
@@ -1121,7 +1643,7 @@ if test $enable_locking = yes; then
 
   # Traditional (ha!) shadow passwords.
   #
 
   # Traditional (ha!) shadow passwords.
   #
-  if test $passwd_cruft_done = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
     AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1132,28 +1654,46 @@ if test $enable_locking = yes; then
                         const char *pw = p->sp_pwdp;],
                        [ac_cv_shadow=yes],
                        [ac_cv_shadow=no])])
                         const char *pw = p->sp_pwdp;],
                        [ac_cv_shadow=yes],
                        [ac_cv_shadow=no])])
-    if test $ac_cv_shadow = yes; then
+    if test "$ac_cv_shadow" = yes; then
       have_shadow=yes
       need_setuid=yes
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_SHADOW_PASSWD)
 
       # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
       have_getspnam=no
       AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
       AC_DEFINE(HAVE_SHADOW_PASSWD)
 
       # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
       have_getspnam=no
       AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
-      if test $have_getspnam = no ; then
+      if test "$have_getspnam" = no ; then
         AC_CHECK_LIB(gen, getspnam,
                     [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
       fi
     fi
   fi
 
         AC_CHECK_LIB(gen, getspnam,
                     [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
       fi
     fi
   fi
 
+  # On FreeBSD, getpwnam() and friends work just like on non-shadow-password
+  # systems -- except you only get stuff in the pw_passwd field if the running
+  # program is setuid.  So, guess that we've got this lossage to contend with
+  # if /etc/master.passwd exists, and default to a setuid installation.
+  #
+  if test "$pwent_cruft_done" = no ; then
+    AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
+                  [if test -f /etc/master.passwd ; then
+                     ac_cv_master_passwd=yes
+                   else
+                     ac_cv_master_passwd=no
+                   fi])
+    if test "$ac_cv_master_passwd" = yes; then
+      need_setuid=yes
+      pwent_cruft_done=yes
+    fi
+  fi
+
   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
   have_crypt=no
   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
   have_crypt=no
   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
-  if test $have_crypt = no ; then
+  if test "$have_crypt" = no ; then
     AC_CHECK_LIB(crypt, crypt,
     AC_CHECK_LIB(crypt, crypt,
-                [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
+                 [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
   fi
 
 
   fi
 
 
@@ -1161,7 +1701,7 @@ if test $enable_locking = yes; then
   # if they were found.  But, on some systems, we need setuid even when
   # using plain old vanilla passwords.
   #
   # if they were found.  But, on some systems, we need setuid even when
   # using plain old vanilla passwords.
   #
-  if test $need_setuid = no ; then
+  if test "$need_setuid" = no ; then
     case "$host" in
       *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
         need_setuid=yes
     case "$host" in
       *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
         need_setuid=yes
@@ -1169,15 +1709,9 @@ if test $enable_locking = yes; then
     esac
   fi
 
     esac
   fi
 
-elif test $enable_locking = no; then
-  AC_DEFINE(NO_LOCKING)
-else
-  echo "error: must be yes or no: --enable-locking=$enable_locking"
-  exit 1
 fi
 
 
 fi
 
 
-
 if test \! -z "$includedir" ; then 
   INCLUDES="-I$includedir"
 fi
 if test \! -z "$includedir" ; then 
   INCLUDES="-I$includedir"
 fi
@@ -1193,31 +1727,35 @@ DEPEND_FLAGS=
 DEPEND_DEFINES=
 
 
 DEPEND_DEFINES=
 
 
-
 # Done testing things -- now substitute in some stuff for the Makefiles.
 #
 # Done testing things -- now substitute in some stuff for the Makefiles.
 #
-if test $have_motif = yes; then
+if test "$have_motif" = yes; then
   AC_DEFINE(HAVE_MOTIF)
   AC_DEFINE(HAVE_MOTIF)
-  DIALOG_SRCS='$(MOTIF_SRCS)'
-  DIALOG_OBJS='$(MOTIF_OBJS)'
-elif test $have_athena = yes; then
+  TOOLKIT_SRCS='$(MOTIF_SRCS)'
+  TOOLKIT_OBJS='$(MOTIF_OBJS)'
+elif test "$have_athena" = yes; then
   AC_DEFINE(HAVE_ATHENA)
   AC_DEFINE(HAVE_ATHENA)
-  DIALOG_SRCS='$(ATHENA_SRCS)'
-  DIALOG_OBJS='$(ATHENA_OBJS)'
+  TOOLKIT_SRCS='$(ATHENA_SRCS)'
+  TOOLKIT_OBJS='$(ATHENA_OBJS)'
 else
 else
-  DIALOG_SRCS=''
-  DIALOG_OBJS=''
+  TOOLKIT_SRCS=''
+  TOOLKIT_OBJS=''
 fi
 
 fi
 
-if test $have_kerberos = yes; then
-  PASSWD_SRCS='$(KERBEROS_SRCS)'
-  PASSWD_OBJS='$(KERBEROS_OBJS)'
-else
-  PASSWD_SRCS='$(PWENT_SRCS)'
-  PASSWD_OBJS='$(PWENT_OBJS)'
+if test "$have_kerberos" = yes; then
+  PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
+fi
+if test "$have_pam" = yes; then
+  PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
+  INSTALL_PAM="install-pam"
 fi
 fi
+  PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
 
 
-if test $enable_locking = yes; then
+
+if test "$enable_locking" = yes; then
   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
 else
   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
 else
@@ -1225,7 +1763,7 @@ else
   LOCK_OBJS=''
 fi
 
   LOCK_OBJS=''
 fi
 
-if test $need_setuid = yes; then
+if test "$need_setuid" = yes; then
   NEED_SETUID=yes
   INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
 else
   NEED_SETUID=yes
   INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
 else
@@ -1234,29 +1772,30 @@ else
 fi
 
 tab='  '
 fi
 
 tab='  '
-if test $have_gl = yes; then
+if test "$have_gl" = yes; then
   GL_EXES='$(GL_EXES)'
   GL_EXES='$(GL_EXES)'
-  GL_KLUDGE_1=${tab}${tab}${tab}${tab}${tab}${tab}${tab}${tab}${tab}'  \'
-  GL_KLUDGE_2=${tab}
+  GL_KLUDGE=${tab}
 else
 else
-  GL_KLUDGE_1=${tab}${tab}${tab}${tab}${tab}${tab}${tab}${tab}${tab}'\n'
-  GL_KLUDGE_2='!'${tab}
+  GL_KLUDGE='  -'${tab}
 fi
 
 AC_SUBST(INCLUDES)
 
 AC_SUBST(SAVER_LIBS)
 fi
 
 AC_SUBST(INCLUDES)
 
 AC_SUBST(SAVER_LIBS)
+AC_SUBST(TOOLKIT_LIBS)
 AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(PASSWD_LIBS)
 AC_SUBST(INSTALL_SETUID)
 AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(PASSWD_LIBS)
 AC_SUBST(INSTALL_SETUID)
+AC_SUBST(INSTALL_DIRS)
 AC_SUBST(NEED_SETUID)
 AC_SUBST(NEED_SETUID)
+AC_SUBST(INSTALL_PAM)
 AC_SUBST(SGI_VIDEO_OBJS)
 AC_SUBST(SGI_VIDEO_LIBS)
 
 AC_SUBST(SGI_VIDEO_OBJS)
 AC_SUBST(SGI_VIDEO_LIBS)
 
-AC_SUBST(DIALOG_SRCS)
-AC_SUBST(DIALOG_OBJS)
+AC_SUBST(TOOLKIT_SRCS)
+AC_SUBST(TOOLKIT_OBJS)
 AC_SUBST(PASSWD_SRCS)
 AC_SUBST(PASSWD_OBJS)
 AC_SUBST(XMU_SRCS)
 AC_SUBST(PASSWD_SRCS)
 AC_SUBST(PASSWD_OBJS)
 AC_SUBST(XMU_SRCS)
@@ -1264,8 +1803,7 @@ AC_SUBST(XMU_OBJS)
 AC_SUBST(LOCK_SRCS)
 AC_SUBST(LOCK_OBJS)
 AC_SUBST(GL_EXES)
 AC_SUBST(LOCK_SRCS)
 AC_SUBST(LOCK_OBJS)
 AC_SUBST(GL_EXES)
-AC_SUBST(GL_KLUDGE_1)
-AC_SUBST(GL_KLUDGE_2)
+AC_SUBST(GL_KLUDGE)
 AC_SUBST(HACKDIR)
 AC_SUBST(APPDEFAULTS)
 
 AC_SUBST(HACKDIR)
 AC_SUBST(APPDEFAULTS)
 
@@ -1275,10 +1813,15 @@ AC_SUBST(DEPEND_DEFINES)
 
 # Print some warnings before emitting the Makefiles.
 #
 
 # Print some warnings before emitting the Makefiles.
 #
+warn_prefix_1="    Warning:"
+warn_prefix_2="       Note:"
+warn_prefix="$warn_prefix_1"
+
 warning=no
 warnsep='    #################################################################'
 warning=no
 warnsep='    #################################################################'
+
 warnpre() {
 warnpre() {
-  if test $warning = no ; then
+  if test "$warning" = no ; then
     echo '' ; echo "$warnsep" ; echo ''
     warning=yes
   fi
     echo '' ; echo "$warnsep" ; echo ''
     warning=yes
   fi
@@ -1286,17 +1829,17 @@ warnpre() {
 
 warn() {
   warnpre
 
 warn() {
   warnpre
-  if test $warning = long ; then echo '' ; fi
+  if test "$warning" = long ; then echo '' ; fi
   warning=yes
   warning=yes
-  echo "    Warning: $@"
+  echo "$warn_prefix $@"
 }
 
 warnL() {
   was=$warning
   warnpre
   warning=yes
 }
 
 warnL() {
   was=$warning
   warnpre
   warning=yes
-  if test $was != no ; then echo '' ; fi
-  echo "    Warning: $@"
+  if test "$was" != no ; then echo '' ; fi
+  echo "$warn_prefix $@"
 }
 
 warn2() {
 }
 
 warn2() {
@@ -1304,80 +1847,156 @@ warn2() {
   warning=long
 }
 
   warning=long
 }
 
-if test $with_sgi_req = yes -a $have_sgi = no ; then
+note() {
+  warn_prefix="$warn_prefix_2"
+  warn $@
+  warn_prefix="$warn_prefix_1"
+}
+
+noteL() {
+  warn_prefix="$warn_prefix_2"
+  warnL $@
+  warn_prefix="$warn_prefix_1"
+}
+
+
+if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
   warn 'The SGI saver extension was requested, but was not found.'
 fi
 
   warn 'The SGI saver extension was requested, but was not found.'
 fi
 
-if test $with_mit_req = yes -a $have_mit = no ; then
+if test "$with_mit_req" = yes -a "$have_mit" = no ; then
   warn 'The MIT saver extension was requested, but was not found.'
 fi
 
   warn 'The MIT saver extension was requested, but was not found.'
 fi
 
-if test $with_xidle_req = yes -a $have_xidle = no ; then
+if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
   warn 'The XIdle extension was requested, but was not found.'
 fi
 
   warn 'The XIdle extension was requested, but was not found.'
 fi
 
-if test $with_xshm_req = yes -a $have_xshm = no ; then
+if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
   warn 'The XSHM extension was requested, but was not found.'
 fi
 
   warn 'The XSHM extension was requested, but was not found.'
 fi
 
-if test $with_sgivc_req = yes -a $have_sgivc = no ; then
+if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
 fi
 
   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
 fi
 
-if test $have_motif = no -a $have_athena = no ; then
+if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
+  warn 'The DPMS extension was requested, but was not found.'
+fi
+
+if test "$have_motif" = no -a "$have_athena" = no ; then
   warnL "Neither Motif nor Athena widgets seem to be available;"
   warnL "Neither Motif nor Athena widgets seem to be available;"
-  warn2 "one or the other is required."
+  warn2 "the \`xscreensaver-demo' program requires one or the"
+  warn2 "other."
   proselytize_motif=no
 
   proselytize_motif=no
 
-elif test $with_motif_req = yes -a $have_motif = no ; then
+elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
   warnL "Use of Motif was requested, but it wasn't found;"
   warn2 "Athena will be used instead."
 
   warnL "Use of Motif was requested, but it wasn't found;"
   warn2 "Athena will be used instead."
 
-elif test $with_athena_req = yes -a $have_athena = no ; then
+elif test "$with_athena_req" = yes -a "$have_athena" = no ; then
   warnL "Use of Athena was requested, but it wasn't found;"
   warn2 "Motif will be used instead."
 fi
 
   warnL "Use of Athena was requested, but it wasn't found;"
   warn2 "Motif will be used instead."
 fi
 
-if test $have_motif = yes -a $have_lesstif = yes ; then
-  if test $good_lesstif != yes ; then
-    warnL "Motif is being used, but it appears to actually be"
-    warn2 "LessTif, and the version number is less than 0.82!"
-    warn2 "Such old versions of LessTif are too buggy to use"
-    warn2 "with XScreenSaver; it is strongly recommended that"
-    warn2 "you upgrade!  See <http://www.lesstif.org/>."
+if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
+
+  preferred_lesstif=0.86
+
+  if test "$lesstif_version" = unknown; then
+    warnL "Unable to determine the LessTif version number!"
+    warn2 "Make sure you are using version $preferred_lesstif or newer."
+    warn2 "See <http://www.lesstif.org/>."
+
+  elif test \! $lesstif_version -gt 82; then
+    warnL "LessTif version $lesstif_version_string is being used."
+    warn2 "LessTif versions 0.82 and earlier are too buggy to"
+    warn2 "use with XScreenSaver; it is strongly recommended"
+    warn2 "that you upgrade to at least version $preferred_lesstif!"
+    warn2 "See <http://www.lesstif.org/>."
   fi
 fi
 
   fi
 fi
 
-if test $proselytize_motif = yes ; then
+if test "$proselytize_motif" = yes ; then
     warnL "Athena widgets are being used instead of Motif."
     warnL "Athena widgets are being used instead of Motif."
-    warn2 "XScreenSaver looks much better with Motif, and has"
-    warn2 "a few extra features as well.  Wouldn't you rather"
-    warn2 "be using Motif?  It is shipped by every commercial"
-    warn2 "Unix vendor; and there is a free implementation"
-    warn2 "available as well: see <http://www.lesstif.org/>."
+    warn2 "The \`xscreensaver-demo' program looks much better"
+    warn2 "with Motif.  Wouldn't you rather be using Motif?"
+    warn2 "It is shipped by every commercial Unix vendor;"
+    warn2 "and there is a free implementation available as"
+    warn2 "well: see <http://www.lesstif.org/>."
+fi
+
+
+if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
+  preferred_mesagl=2.7
+
+  if test "$ac_mesagl_version" = unknown; then
+    warnL "Unable to determine the MesaGL version number!"
+    warn2 "Make sure you are using version $preferred_mesagl or newer."
+
+  elif test \! "$ac_mesagl_version" -gt 2006; then
+    warnL "MesaGL version $ac_mesagl_version_string is being used."
+    warn2 "MesaGL versions 2.6 and earlier have a security bug."
+    warn2 "It is strongly recommended that you upgrade to at"
+    warn2 "least version $preferred_mesagl."
+  fi
 fi
 
 fi
 
-if test $with_xpm_req = yes -a $have_xpm = no ; then
-  warn 'Use of XPM was requested, but it was not found.'
+
+if test "$have_xpm" = no ; then
+  if test "$with_xpm_req" = yes ; then
+    warnL 'Use of XPM was requested, but it was not found.'
+  elif test "$with_xpm_req" = no ; then
+    noteL 'The XPM library is not being used.'
+  else
+    noteL 'The XPM library was not found.'
+  fi
+
+  echo ''
+  warn2 'Some of the demos will not be as colorful as they'
+  warn2 'could be.  You might want to consider installing XPM'
+  warn2 'and re-running configure.  (Remember to delete the'
+  warn2 'config.cache file first.)  You can find XPM at most'
+  warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
 fi
 
 fi
 
-if test $with_gl_req = yes -a $have_gl = no ; then
-  warn 'Use of GL was requested, but it was not found.'
+if test "$have_gl" = no ; then
+  if test "$with_gl_req" = yes ; then
+    warnL 'Use of GL was requested, but it was not found.'
+  elif test "$with_gl_req" = no ; then
+    noteL 'The OpenGL 3D library is not being used.'
+  else
+    noteL 'The OpenGL 3D library was not found.'
+  fi
+
+  echo ''
+  warn2 'Those demos which use 3D will not be built or installed.'
+  warn2 'You might want to consider installing OpenGL and'
+  warn2 're-running configure.  (Remember to delete the'
+  warn2 "config.cache file first.)  If your vendor doesn't ship"
+  warn2 'their own implementation of OpenGL, you can get a free'
+  warn2 'version at <http://www.ssec.wisc.edu/~brianp/Mesa.html>.'
+  warn2 'For general OpenGL info, see <http://www.opengl.org/>.'
+
 fi
 
 fi
 
-if test $with_readdisplay_req = yes -a $have_readdisplay = no ; then
+if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
   warn 'Use of XReadDisplay was requested, but it was not found.'
 fi
 
   warn 'Use of XReadDisplay was requested, but it was not found.'
 fi
 
-if test $with_sgivideo_req = yes -a $have_sgivideo = no ; then
+if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
   warn 'Use of the Iris Video Library was requested, but it was not found.'
 fi
 
   warn 'Use of the Iris Video Library was requested, but it was not found.'
 fi
 
-if test $with_kerberos_req = yes -a $have_kerberos = no ; then
+if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
   warn 'Use of Kerberos was requested, but it was not found.'
 fi
 
   warn 'Use of Kerberos was requested, but it was not found.'
 fi
 
-if test $with_shadow_req = yes -a $have_shadow = no ; then
+if test "$with_pam_req" = yes -a "$have_pam" = no ; then
+  warn 'Use of PAM was requested, but it was not found.'
+fi
+
+if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
   warn 'Use of shadow passwords was requested, but they were not found.'
 fi
 
   warn 'Use of shadow passwords was requested, but they were not found.'
 fi
 
@@ -1388,7 +2007,7 @@ if test -n "$with_zippy_req"; then
   fi
 fi
 
   fi
 fi
 
-if test $warning != no; then
+if test "$warning" != no; then
   echo '' ; echo "$warnsep" ; echo ''
 fi
 
   echo '' ; echo "$warnsep" ; echo ''
 fi
 
@@ -1399,3 +2018,43 @@ AC_OUTPUT(Makefile
          hacks/Makefile
          hacks/glx/Makefile
          driver/XScreenSaver.ad)
          hacks/Makefile
          hacks/glx/Makefile
          driver/XScreenSaver.ad)
+
+# You are in a twisty maze of namespaces and syntaxes, all alike.
+# Fuck the skull of Unix.
+#
+eval bindir=${bindir}
+eval bindir=${bindir}
+eval bindir=${bindir}
+eval bindir=${bindir}
+eval bindir=${bindir}
+eval bindir=${bindir}
+eval HACKDIR=${HACKDIR}
+eval HACKDIR=${HACKDIR}
+eval HACKDIR=${HACKDIR}
+eval HACKDIR=${HACKDIR}
+eval HACKDIR=${HACKDIR}
+eval HACKDIR=${HACKDIR}
+
+# canonicalize slashes.
+bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
+HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
+
+if test "${bindir}" = "${HACKDIR}" ; then
+  echo ""
+  echo "$warnsep"
+  echo ""
+  echo '      When you run "make install", the "xscreensaver",'
+  echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
+  echo "      will be installed in ${bindir}."
+  echo ""
+  echo "      The various graphics demos (80+ different executables) will"
+  echo "      also be installed in ${HACKDIR}."
+  echo ""
+  echo "      If you would prefer the demos to be installed elsewhere"
+  echo "      (for example, in a dedicated directory) you should re-run"
+  echo "      configure with the --enable-subdir=DIR option.  For more"
+  echo "      information, run $0 --help."
+  echo ""
+  echo "$warnsep"
+  echo ""
+fi