http://ftp.aanet.ru/pub/Linux/X11/apps/xscreensaver-2.31.tar.gz
[xscreensaver] / configure.in
index be98708834421d676a1d1a7ced0448feda9ce4b0..c805692d4e2c5e7c6ddc7f5737b90e9936dd5d32 100644 (file)
@@ -19,8 +19,10 @@ if test -z "$GCC"; then
       CC="$CC -qlanglvl=ansi -qhalt=e"
     ;;
 
-# NOTE:   for Digital, need to add -std1 to get ANSI, but I'm not sure
-#         yet what $host pattern we should be testing for...
+    *-dec-*)
+      AC_MSG_RESULT(DEC: adding -std1)
+      CC="$CC -std1"
+    ;;
 
     *)
       AC_MSG_RESULT(no idea)
@@ -38,20 +40,66 @@ AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
 
 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
+    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
 
 
+# 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_INSTALL_DIRS
 AC_PROG_MAKE_SET
 
 AC_C_CONST
@@ -137,11 +185,10 @@ 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
-    cd conftestdir
+    cd conftestdir >&-
     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
     cat > Imakefile <<'EOF'
 acfindx:
@@ -151,12 +198,12 @@ EOF
       # 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])
 
-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                  \
@@ -306,6 +353,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.
@@ -327,37 +433,112 @@ if test $ac_cv_xpointer != yes; then
 fi
 
 
+# Random special-cases for certain pathological OSes.  You know who you are.
+#
 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
-      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
-      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
+
+    # 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
 
-    # 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"
+    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*)
-    # 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)"
+    #
     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"
@@ -428,13 +609,21 @@ fi
 #
 have_sgi=no
 with_sgi_req=unspecified
-AC_ARG_WITH(sgi-ext,[
+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])
+
+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
@@ -455,6 +644,9 @@ 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])
+
+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])
@@ -505,6 +697,9 @@ 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])
+
+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
@@ -524,6 +719,9 @@ 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])
+
+HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
+
 if test $with_xshm = yes; then
 
   # first check for Xshm.h.
@@ -575,6 +773,9 @@ 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])
+
+HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
+
 if test $with_sgivc = yes; then
 
   # first check for XSGIvc.h
@@ -608,6 +809,9 @@ AC_ARG_WITH(dpms-ext,
                           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
@@ -644,17 +848,21 @@ with_athena_req=unspecified
 AC_ARG_WITH(motif,[
 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])
 
+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])
 
+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
@@ -772,22 +980,39 @@ if test $have_motif = yes ; then
   have_lesstif=$ac_cv_have_lesstif
 fi
 
-# don't cache this
-unset 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
 
-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
+  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
 
 
@@ -815,6 +1040,9 @@ Graphics Demo options:
                           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])
+
+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
@@ -836,6 +1064,11 @@ AC_ARG_WITH(gl,
   --without-gl            Do not build the OpenGL demos.],
   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
 
+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)
   if test $have_gl = yes ; then
@@ -847,14 +1080,71 @@ if test $with_gl = yes; then
   if test $have_gl = yes ; then
 
     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_lib_1="MesaGL"
       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
+
+        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'`
+        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`
+         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
+
+
+    # Check for OpenGL 1.1 features.
+    #
+    AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
+                  [], $GL_LIBS -lX11 -lXext -lm)
+
   fi
 
 elif test $with_gl != no; then
@@ -873,6 +1163,9 @@ AC_ARG_WITH(readdisplay,
   --without-readdisplay   Do not compile in support for this extension.],
   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
   [with_readdisplay=yes])
+
+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))
@@ -892,6 +1185,9 @@ AC_ARG_WITH(sgivideo,
   --without-sgivideo       Do not compile in support for this library.],
   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
   [with_sgivideo=yes])
+
+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)
   if test $have_sgivideo = yes; then
@@ -1079,6 +1375,9 @@ 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])
+
+  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>],,
@@ -1087,7 +1386,14 @@ if test $enable_locking = yes; then
     if test $ac_cv_kerberos = yes ; then
       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
   elif test $with_kerberos != no; then
     echo "error: must be yes or no: --with-kerberos=$with_kerberos"
@@ -1103,6 +1409,9 @@ if test $enable_locking = yes; then
   --without-shadow        Do not compile in support for shadow passwords.
 ],
   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
+
+  HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
+
   if test $with_shadow = no; then
     passwd_cruft_done=yes
   elif test $with_shadow != yes; then
@@ -1285,9 +1594,6 @@ DEPEND_FLAGS=
 DEPEND_DEFINES=
 
 
-# Autoconf doesn't seem to have an INSTALL_DIRS, so let's define our own...
-INSTALL_DIRS='$(INSTALL) -d'
-
 # Done testing things -- now substitute in some stuff for the Makefiles.
 #
 if test $have_motif = yes; then
@@ -1370,8 +1676,13 @@ AC_SUBST(DEPEND_DEFINES)
 
 # Print some warnings before emitting the Makefiles.
 #
+warn_prefix_1="    Warning:"
+warn_prefix_2="       Note:"
+warn_prefix="$warn_prefix_1"
+
 warning=no
 warnsep='    #################################################################'
+
 warnpre() {
   if test $warning = no ; then
     echo '' ; echo "$warnsep" ; echo ''
@@ -1383,7 +1694,7 @@ warn() {
   warnpre
   if test $warning = long ; then echo '' ; fi
   warning=yes
-  echo "    Warning: $@"
+  echo "$warn_prefix $@"
 }
 
 warnL() {
@@ -1391,7 +1702,7 @@ warnL() {
   warnpre
   warning=yes
   if test $was != no ; then echo '' ; fi
-  echo "    Warning: $@"
+  echo "$warn_prefix $@"
 }
 
 warn2() {
@@ -1399,6 +1710,19 @@ warn2() {
   warning=long
 }
 
+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
@@ -1438,12 +1762,28 @@ elif test $with_athena_req = yes -a $have_athena = no ; then
 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/>."
+
+  preferred_lesstif=0.87
+
+  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/>."
+
+  elif test \! $lesstif_version -gt 86; then
+    warnL "LessTif version $lesstif_version_string is being used."
+    warn2 "LessTif versions 0.86 and earlier have a bug that"
+    warn2 "can cause a security problem with xscreensaver."
+    warn2 "If you want to use xscreensaver as a screen locker,"
+    warn2 "it is strongly recommended that you upgrade to at"
+    warn2 "least version $preferred_lesstif.  See <http://www.lesstif.org/>."
   fi
 fi
 
@@ -1456,12 +1796,58 @@ if test $proselytize_motif = yes ; then
     warn2 "available as well: see <http://www.lesstif.org/>."
 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_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
+
+
+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
 
-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
 
 if test $with_readdisplay_req = yes -a $have_readdisplay = no ; then
@@ -1522,7 +1908,7 @@ echo '      When you run "make install", the "xscreensaver" and'
 echo '      "xscreensaver-command" executables will be installed in'
 echo "      ${bindir}."
 echo ""
-echo "      The various graphics demos (60+ different executables) will"
+echo "      The various graphics demos (80+ different executables) will"
 echo "      be installed in ${HACKDIR}."
 echo ""
 echo "      If you would prefer the demos to be installed elsewhere"