http://packetstorm.tacticalflex.com/UNIX/admin/xscreensaver-3.27.tar.gz
[xscreensaver] / configure.in
index 07fb76e98386a52397f77d74e19dbd82837f5870..164e6d8e739ff73cc043ea779894e1a0aeb4b9ff 100644 (file)
@@ -1,4 +1,4 @@
-# configure.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2000 Jamie Zawinski.
 #
 
 AC_INIT(driver/subprocs.c)
 #
 
 AC_INIT(driver/subprocs.c)
@@ -66,6 +66,8 @@ AC_DEFUN(AC_PROG_CC_ANSI,
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
     CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
     CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
+    AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
+    CC="$CC -Wp,-lang-c89"
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
@@ -83,6 +85,37 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 ])
 
 
 ])
 
 
+###############################################################################
+#
+#       Function to work around the fucked up gcc 2.96 included in Red Hat 7.0
+#
+###############################################################################
+
+AC_DEFUN(AC_ESCHEW_REDHAT_GCC_LOSSAGE,
+ [if test -n "$GCC"; then
+   AC_MSG_CHECKING(for Red Hat GCC lossage)
+   AC_CACHE_VAL(ac_cv_red_hat_gcc_lossage,
+    [ac_cv_red_hat_gcc_lossage=no
+      AC_EGREP_CPP(lossage,
+     [#include <stdlib.h>
+      #if !defined(__USE_POSIX) || !defined(__USE_SVID) || !defined(__USE_BSD)
+        lossage
+      #endif
+     ], ac_cv_red_hat_gcc_lossage=yes)
+    ])
+
+    ac_red_hat_gcc_lossage=$ac_cv_red_hat_gcc_lossage
+    if test "$ac_cv_red_hat_gcc_lossage" = yes ; then
+      rh_defines="-D_POSIX_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE";
+      CC="$CC $rh_defines"
+      AC_MSG_RESULT(yes: need $rh_defines)
+    else
+      AC_MSG_RESULT(no)
+    fi
+  fi
+])
+
+
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
@@ -180,8 +213,7 @@ perl_version_cmd='print $]'
 changequote([,])
 
 AC_DEFUN(AC_PROG_PERL,
 changequote([,])
 
 AC_DEFUN(AC_PROG_PERL,
- [PERL=''
-  AC_PATH_PROGS(PERL, [perl5 perl],,)
+ [AC_PATH_PROGS(PERL, [perl5 perl],,)
   if test -z "$PERL" ; then
     PERL_VERSION=0
   else
   if test -z "$PERL" ; then
     PERL_VERSION=0
   else
@@ -192,6 +224,26 @@ AC_DEFUN(AC_PROG_PERL,
  ])
 
 
  ])
 
 
+###############################################################################
+#
+#       Function to demand "bc".  Losers.
+#
+###############################################################################
+
+AC_DEFUN(AC_DEMAND_BC,
+ [ac_bc_result=`echo 6+9 | bc 2>/dev/null`
+  AC_MSG_CHECKING([for bc])
+  if test "$ac_bc_result" = "15" ; then
+    AC_MSG_RESULT(yes)
+  else
+    AC_MSG_RESULT(no)
+    echo ''
+    AC_MSG_ERROR([Your system doesn't have \"bc\", which has been a standard
+                  part of Unix since the 1970s.  Come back when your vendor
+                  has grown a clue.])
+  fi
+ ])
+
 ###############################################################################
 #
 #       Functions to check how to do ICMP PING requests.
 ###############################################################################
 #
 #       Functions to check how to do ICMP PING requests.
@@ -564,7 +616,7 @@ AC_DEFUN(AC_CHECK_X_LIB, [
     LDFLAGS="$LDFLAGS -L$libdir"
   fi
   # note: $X_LIBS includes $x_libraries
     LDFLAGS="$LDFLAGS -L$libdir"
   fi
   # note: $X_LIBS includes $x_libraries
-  LDFLAGS="$LDFLAGS $X_LIBS"
+  LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
   CPPFLAGS="$ac_save_CPPFLAGS"
 
   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
   CPPFLAGS="$ac_save_CPPFLAGS"
@@ -653,9 +705,11 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [
 # random compiler setup
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
 # random compiler setup
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
+AC_ESCHEW_REDHAT_GCC_LOSSAGE
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
+AC_DEMAND_BC
 
 # stuff for Makefiles
 AC_PROG_INSTALL
 
 # stuff for Makefiles
 AC_PROG_INSTALL
@@ -716,8 +770,6 @@ else
   HACK_LIBS="-lXmu $HACK_LIBS"
   MOTIF_LIBS="-lXmu $MOTIF_LIBS"
   GTK_LIBS="-lXmu $GTK_LIBS"
   HACK_LIBS="-lXmu $HACK_LIBS"
   MOTIF_LIBS="-lXmu $MOTIF_LIBS"
   GTK_LIBS="-lXmu $GTK_LIBS"
-  ATHENA_LIBS="-lXmu $ATHENA_LIBS"
-  ATHENA3D_LIBS="-lXmu $ATHENA3D_LIBS"
   AC_DEFINE(HAVE_XMU)
 fi
 
   AC_DEFINE(HAVE_XMU)
 fi
 
@@ -977,14 +1029,22 @@ if test "$with_dpms" = yes; then
   # first check for dpms.h
   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
 
   # first check for dpms.h
   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
 
-  # if that succeeded, then check for the -lXdpms
+  # if that succeeded, then check for the DPMS code in the libraries
   if test "$have_dpms" = yes; then
   if test "$have_dpms" = yes; then
+
+    # first look in -lXext (this is where it is with XFree86 4.0)
     have_dpms=no
     have_dpms=no
-    AC_CHECK_X_LIB(Xdpms, DPMSInfo,
-                  [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [true],
-                  -lXext -lX11)
+    AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
+
+    # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
+    if test "$have_dpms" = no; then
+      AC_CHECK_X_LIB(Xdpms, DPMSInfo,
+                    [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [true],
+                    -lXext -lX11)
+    fi
   fi
 
   fi
 
+
   # if that succeeded, then we've really got it.
   if test "$have_dpms" = yes; then
     AC_DEFINE(HAVE_DPMS_EXTENSION)
   # if that succeeded, then we've really got it.
   if test "$have_dpms" = yes; then
     AC_DEFINE(HAVE_DPMS_EXTENSION)
@@ -1223,6 +1283,7 @@ fi
 ###############################################################################
 
 have_kerberos=no
 ###############################################################################
 
 have_kerberos=no
+have_kerberos5=no
 with_kerberos_req=unspecified
 
 AC_ARG_WITH(kerberos, 
 with_kerberos_req=unspecified
 
 AC_ARG_WITH(kerberos, 
@@ -1232,21 +1293,41 @@ AC_ARG_WITH(kerberos,
 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
 
 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
 
 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
-  AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos,
+  AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
                  [AC_TRY_X_COMPILE([#include <krb.h>],,
                                    [ac_cv_kerberos=yes],
                                    [ac_cv_kerberos=no])])
                  [AC_TRY_X_COMPILE([#include <krb.h>],,
                                    [ac_cv_kerberos=yes],
                                    [ac_cv_kerberos=no])])
+  AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
+                 [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
+                                   [ac_cv_kerberos5=yes],
+                                   [ac_cv_kerberos5=no])])
+
   if test "$ac_cv_kerberos" = yes ; then
     have_kerberos=yes
     AC_DEFINE(HAVE_KERBEROS)
   if test "$ac_cv_kerberos" = yes ; then
     have_kerberos=yes
     AC_DEFINE(HAVE_KERBEROS)
+  fi
+
+  if test "$ac_cv_kerberos5" = yes ; then
+    have_kerberos=yes
+    have_kerberos5=yes
+    AC_DEFINE(HAVE_KERBEROS)
+    AC_DEFINE(HAVE_KERBEROS5)
+  fi
 
 
+  if test "$have_kerberos5" = yes ; then
+    # from Matt Knopp <mhat@infocalypse.netlag.com>
+    # (who got it from amu@mit.edu)
+    PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
+  elif test "$have_kerberos" = yes ; then
     # from Tim Showalter <tjs+@andrew.cmu.edu>
     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
     # from Tim Showalter <tjs+@andrew.cmu.edu>
     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
+  fi
+
+  if test "$have_kerberos" = yes ; then
     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])
       ))
     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
 
   fi
 fi
 
@@ -1497,9 +1578,14 @@ if test "$with_motif" = yes; then
 fi
 
 
 fi
 
 
+if test "$have_motif" = yes; then
+  AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)])
+fi
+
+
 ###############################################################################
 #
 ###############################################################################
 #
-#       Check for -lgtk.
+#       Check for -lgtk (and Gnome stuff)
 #
 ###############################################################################
 
 #
 ###############################################################################
 
@@ -1527,6 +1613,31 @@ if test "$with_gtk" != yes -a "$with_gtk" != no ; then
   exit 1
 fi
 
   exit 1
 fi
 
+have_gnome=no
+with_gnome_req=unspecified
+AC_ARG_WITH(gnome,
+[  --with-gnome            Include support for the Gnome Control Center.],
+  [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
+
+# if --with-gnome=/directory/ was specified, remember that directory so that
+# we can also look for the `gnome-config' program in that directory.
+case "$with_gnome" in
+  /*)
+    gnome_dir="$with_gnome"
+    ;;
+  *)
+    gnome_dir=""
+    ;;
+esac
+
+HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
+
+if test "$with_gnome" != yes -a "$with_gnome" != no ; then
+  echo "error: must be yes or no: --with-gnome=$with_gnome"
+  exit 1
+fi
+
+
 jurassic_gtk=no
 if test "$with_gtk" = yes; then
   have_gtk=no
 jurassic_gtk=no
 if test "$with_gtk" = yes; then
   have_gtk=no
@@ -1539,18 +1650,32 @@ if test "$with_gtk" = yes; then
   if test ! -z "$gtk_dir"; then
     # canonicalize slashes.
     gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
   if test ! -z "$gtk_dir"; then
     # canonicalize slashes.
     gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
-    gtk_path="$gtk_dir:$gtk_dir:$gtk_path"
+    gtk_path="$gtk_dir:$gtk_path"
   fi
 
   fi
 
-  AC_PATH_PROGS(glib_config, glib-config,, $gtk_path)
-  AC_PATH_PROGS(gtk_config,  gtk-config,,  $gtk_path)
+  if test ! -z "gnome_dir"; then
+    # canonicalize slashes.
+    gnome_dir=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
+    gtk_path="$gnome_dir:$gtk_path"
+  fi
+
+  AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
+  AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
+
+  if test "$with_gnome" = yes; then
+    AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
+  fi
 
   if test -n "$glib_config" -a  -n "gtk_config" ; then
     have_gtk=yes
 
   if test -n "$glib_config" -a  -n "gtk_config" ; then
     have_gtk=yes
+    if test "$with_gnome" = yes -a -n "$gnome_config" ; then
+      have_gnome=yes
+    fi
   fi
   fi
+
   if test "$have_gtk" = yes; then
     AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
   if test "$have_gtk" = yes; then
     AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
-                   [ac_cv_gtk_version_string=`$glib_config --version`])
+                   [ac_cv_gtk_version_string=`$gtk_config --version`])
     ac_gtk_version_string=$ac_cv_gtk_version_string
     # M4 sucks!!
     changequote(X,Y)
     ac_gtk_version_string=$ac_cv_gtk_version_string
     # M4 sucks!!
     changequote(X,Y)
@@ -1565,75 +1690,81 @@ if test "$with_gtk" = yes; then
     if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
     then
       have_gtk=no
     if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
     then
       have_gtk=no
+      have_gnome=no
       jurassic_gtk=yes
     fi
   fi
       jurassic_gtk=yes
     fi
   fi
+
   if test "$have_gtk" = yes; then
     AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
                    [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
                    [ac_cv_gtk_config_libs=`$gtk_config --libs`])
   if test "$have_gtk" = yes; then
     AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
                    [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
                    [ac_cv_gtk_config_libs=`$gtk_config --libs`])
-    INCLUDES="$INCLUDES $ac_cv_gtk_config_cflags"
-    GTK_LIBS="$GTK_LIBS $ac_cv_gtk_config_libs"
-    AC_DEFINE(HAVE_GTK)
   fi
   fi
-fi
+  ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
+  ac_gtk_config_libs=$ac_cv_gtk_config_libs
 
 
+  # Check for Gnome Capplet support.
+  #
+  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
+    gnome_config_libs="capplet gnomeui"
+    AC_MSG_CHECKING(for Gnome capplet includes)
+    AC_CACHE_VAL(ac_cv_gnome_config_cflags,
+      [if ( $gnome_config --cflags $gnome_config_libs 2>&1 >/dev/null | \
+            grep Unknown >/dev/null ) ; then
+         ac_cv_gnome_config_cflags=''
+       else
+         ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
+       fi])
+    ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
+    if test "$ac_gnome_config_cflags" = "" ; then
+      have_gnome=no
+      AC_MSG_RESULT(no)
+    else
+      AC_MSG_RESULT($ac_gnome_config_cflags)
+    fi
+  fi
 
 
-###############################################################################
-#
-#       Check for -lXaw and -lXaw3d.
-#
-###############################################################################
-
-have_athena=no
-have_athena3d=no
-with_athena_req=unspecified
-AC_ARG_WITH(athena,
-[  --with-athena           Use the Athena toolkit for the user interface.],
-  [with_athena="$withval"; with_athena_req="$withval"],[with_athena=yes])
-
-HANDLE_X_PATH_ARG(with_athena, --with-athena, Athena)
-
-
-if test "$with_athena" != yes -a "$with_athena" != no ; then
-  echo "error: must be yes or no: --with-athena=$with_athena"
-  exit 1
-fi
-
+  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
+    AC_MSG_CHECKING(for Gnome capplet libs)
+    AC_CACHE_VAL(ac_cv_gnome_config_libs,
+      [if ( $gnome_config --libs $gnome_config_libs 2>&1 >/dev/null |
+            grep Unknown >/dev/null ) ; then
+         ac_cv_gnome_config_libs=''
+       else
+         ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
+       fi])
+    ac_gnome_config_libs=$ac_cv_gnome_config_libs
+    if test "$ac_gnome_config_libs" = "" ; then
+      have_gnome=no
+      AC_MSG_RESULT(no)
+    else
+      AC_MSG_RESULT($ac_gnome_config_libs)
+    fi
+  fi
 
 
-if test "$with_athena" = yes; then
-  have_athena=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], [true],
-                  -lXt -lXmu -lXext -lX11)
+  GNOME_DATADIR=""
+  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
+    GNOME_DATADIR=`$gnome_config --datadir`
   fi
   fi
-fi
 
 
-if test "$have_athena" = yes; then
-  AC_DEFINE(HAVE_ATHENA)
-  ATHENA_LIBS="-lXaw $ATHENA_LIBS"
-fi
 
 
-if test "$have_athena3d" = yes; then
-  ATHENA3D_LIBS="-lXaw3d $ATHENA3D_LIBS"
-fi
+  # If we have Gnome, then override the gtk-config values with 
+  # the gnome-config values.
+  #
+  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
+    ac_gtk_config_cflags=$ac_gnome_config_cflags
+    ac_gtk_config_libs=$ac_gnome_config_libs
+    AC_DEFINE(HAVE_CRAPPLET)
+  fi
 
 
 
 
-# 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
-  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
-    AC_DEFINE(HAVE_XawViewportSetCoordinates)
+  if test "$have_gtk" = yes; then
+    INCLUDES="$INCLUDES $ac_gtk_config_cflags"
+    GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
+    AC_DEFINE(HAVE_GTK)
   fi
   fi
+
 fi
 
 
 fi
 
 
@@ -1781,13 +1912,14 @@ fi
 
 ###############################################################################
 #
 
 ###############################################################################
 #
-#       Check for -lGL or -lMesa.
+#       Check for -lGL or -lMesaGL.
 #
 ###############################################################################
 
 have_gl=no
 ac_have_mesa_gl=no
 with_gl_req=unspecified
 #
 ###############################################################################
 
 have_gl=no
 ac_have_mesa_gl=no
 with_gl_req=unspecified
+gl_halfassed=no
 AC_ARG_WITH(gl,[
 Graphics options:
 
 AC_ARG_WITH(gl,[
 Graphics options:
 
@@ -1809,8 +1941,6 @@ if test "$with_gl" = yes; then
   #
   if test "$have_gl" = yes ; then
 
   #
   if test "$have_gl" = yes ; then
 
-    AC_DEFINE(HAVE_GL)
-
     # We need to know whether it's MesaGL so that we know which libraries
     # to link against.
     #
     # We need to know whether it's MesaGL so that we know which libraries
     # to link against.
     #
@@ -1820,16 +1950,58 @@ if test "$with_gl" = yes; then
       ])
     ac_have_mesa_gl=$ac_cv_have_mesa_gl
  
       ])
     ac_have_mesa_gl=$ac_cv_have_mesa_gl
  
-    if test "$ac_have_mesa_gl" = no ; then
-      gl_lib_1="GL"
-      GL_LIBS="-lGL -lGLU"
+
+    gl_lib_1=""
+    GL_LIBS=""
+
+
+    # Some versions of MesaGL are compiled to require -lpthread.
+    # So if the Mesa headers exist, and -lpthread exists, then always
+    # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
+    #
+    if test "$ac_have_mesa_gl" = yes; then
+      AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
+    fi
+
+
+    # If we have Mesa headers, check to see if we can link against -lMesaGL.
+    # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
+    # Else, warn that GL is busted.  (We have the headers, but no libs.)
+    #
+
+    if test "$ac_have_mesa_gl" = yes ; then
+      AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
+                     [gl_lib_1="MesaGL"
+                      GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
+                     [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
+    fi
+
+    if test "$gl_lib_1" = "" ; then
+      AC_CHECK_X_LIB(GL, glXCreateContext, 
+                     [gl_lib_1="GL"
+                      GL_LIBS="-lGL -lGLU $GL_LIBS"],
+                     [], -lGLU $GL_LIBS -lX11 -lXext -lm)
+    fi
+
+    if test "$gl_lib_1" = "" ; then
+      # we have headers, but no libs -- bail.
+      have_gl=no
+      ac_have_mesa_gl=no
+      gl_halfassed=yes
     else
     else
-      AC_DEFINE(HAVE_MESA_GL)
-      gl_lib_1="MesaGL"
-      GL_LIBS="-lMesaGL -lMesaGLU"
+      # linking works -- we can build the GL hacks.
+      AC_DEFINE(HAVE_GL)
+      if test "$ac_have_mesa_gl" = yes ; then
+        AC_DEFINE(HAVE_MESA_GL)
+      fi
     fi
     fi
+  fi
 
 
 
 
+  # Now that we know we have GL headers and libs, do some more GL testing.
+  #
+
+  if test "$have_gl" = yes ; then
     # 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 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.
     #
@@ -1880,58 +2052,100 @@ EOF
     fi
 
 
     fi
 
 
-    # If it's MesaGL, check to see if it requires -lpthread.
-    #
-    have_pthread=no
-    mesa_requires_pthread=no
-    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], [true],
-                       $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)],
                    [true], $GL_LIBS -lX11 -lXext -lm)
     # Check for OpenGL 1.1 features.
     #
     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
                    [true], $GL_LIBS -lX11 -lXext -lm)
+  fi
 
 
+elif test "$with_gl" != no; then
+  echo "error: must be yes or no: --with-gl=$with_gl"
+  exit 1
+fi
 
 
-    # Check whether the `xscreensaver' executable should link against GL.
-    # See comments in utils/visual-gl.c for why this is sometimes necessary.
-    #
-    AC_MSG_CHECKING(whether drastic GL measures must be taken)
-    case "$host" in
-      *-sgi*)
-        AC_MSG_RESULT([yes -- hello, SGI.])
-        AC_DEFINE(DAEMON_USE_GL)
-        SAVER_GL_SRCS='$(UTILS_SRC)/visual-gl.c'
-        SAVER_GL_OBJS='$(UTILS_BIN)/visual-gl.o'
-        SAVER_GL_LIBS="$GL_LIBS"
-      ;;
-      *)
-        AC_MSG_RESULT([no -- non-SGI.])
-        SAVER_GL_SRCS=''
-        SAVER_GL_OBJS=''
-        SAVER_GL_LIBS=''
-      ;;
-    esac
 
 
+###############################################################################
+#
+#       Check for -lgle.
+#
+###############################################################################
+
+have_gle=no
+with_gle_req=unspecified
+gle_halfassed=no
+AC_ARG_WITH(gle,
+[  --with-gle              Build those demos which depend on GLE
+                          (the OpenGL "extrusion" library.)],
+  [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
+
+HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
+
+GLE_LIBS=""
+
+if test "$with_gle" = yes; then
+
+  AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no)
+  if test "$have_gle3" = yes ; then
+    have_gle=yes;
+  else
+    AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no)
+    if test "$have_gle" = yes ; then
+      AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no)
+    fi
   fi
 
   fi
 
-elif test "$with_gl" != no; then
-  echo "error: must be yes or no: --with-gl=$with_gl"
+  if test "$have_gle" = yes ; then
+    have_gle=no
+    gle_halfassed=yes
+    AC_CHECK_X_LIB(gle, gleCreateGC, 
+                   [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
+                   [], $GL_LIBS -lX11 -lXext -lm)
+  fi
+  if test "$have_gle" = yes ; then
+    have_gle=no
+    gle_halfassed=yes
+
+    # sometimes the libmatrix stuff is included in libgle.  look there first.
+#
+# I don't get it.  For some reason, this test passes on SGI, as if
+# uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
+# Yet the link is succeeding.  Why???
+#
+#    AC_CHECK_X_LIB(gle, uview_direction_d, 
+#                   [have_gle=yes; gle_halfassed=no],
+#                   [], $GL_LIBS -lX11 -lXext -lm)
+
+    # As of GLE 3 this is in libgle, and has changed name to uview_direction!
+    # *sigh*
+    if test "$have_gle3" = yes ; then
+      AC_CHECK_X_LIB(gle, uview_direction, 
+                     [have_gle=yes; gle_halfassed=no],
+                    [], $GL_LIBS -lX11 -lXext -lm)
+    fi
+    # if it wasn't in libgle, then look in libmatrix.
+    if test "$have_gle" = no ; then
+      AC_CHECK_X_LIB(matrix, uview_direction_d, 
+                     [have_gle=yes; gle_halfassed=no;
+                      GLE_LIBS="$GLE_LIBS -lmatrix"],
+                    [], $GL_LIBS -lX11 -lXext -lm)
+    fi
+  fi
+
+  if test "$have_gle" = yes ; then
+    AC_DEFINE(HAVE_GLE)
+    if test "$have_gle3" = yes ; then
+      AC_DEFINE(HAVE_GLE3)
+    fi
+  fi
+
+elif test "$with_gle" != no; then
+  echo "error: must be yes or no: --with-gle=$with_gle"
   exit 1
   exit 1
+
 fi
 
 
 fi
 
 
+
 ###############################################################################
 #
 #       Check for -lXpm.
 ###############################################################################
 #
 #       Check for -lXpm.
@@ -2005,10 +2219,12 @@ if test "$with_xshm" = yes; then
   #
   case "$host" in
     *-aix*)
   #
   case "$host" in
     *-aix*)
-      have_xshm=no
-      AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
-                     [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
-                     [true], -lX11 -lXext -lm)
+      if [ `uname -v` -eq 3 ]; then
+        have_xshm=no
+        AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
+                       [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
+                       [true], -lX11 -lXext -lm)
+      fi
     ;;
   esac
 
     ;;
   esac
 
@@ -2290,23 +2506,16 @@ if test \! -z "$libdir" ; then
 fi
 
 
 fi
 
 
+PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
 ALL_DEMO_PROGRAMS=
 ALL_DEMO_PROGRAMS=
-if test "$have_athena3d" = yes; then
-  PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xaw3d
-  ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
-fi
-if test "$have_athena" = yes; then
-  PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xaw
+if test "$have_motif" = yes; then
+  PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
 fi
 if test "$have_gtk" = yes; then
   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
 fi
   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
 fi
 if test "$have_gtk" = yes; then
   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
 fi
-if test "$have_motif" = yes; then
-  PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
-  ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
-fi
 
 
 if test "$have_kerberos" = yes; then
 
 
 if test "$have_kerberos" = yes; then
@@ -2326,8 +2535,8 @@ 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
-  LOCK_SRCS=''
-  LOCK_OBJS=''
+  LOCK_SRCS='$(NOLOCK_SRCS_1)'
+  LOCK_OBJS='$(NOLOCK_OBJS_1)'
 fi
 
 if test "$need_setuid" = yes; then
 fi
 
 if test "$need_setuid" = yes; then
@@ -2344,7 +2553,15 @@ if test "$have_gl" = yes; then
   GL_MEN='$(GL_MEN)'
   GL_KLUDGE="${tab}  "
 else
   GL_MEN='$(GL_MEN)'
   GL_KLUDGE="${tab}  "
 else
-  GL_KLUDGE="  -${tab}  "
+  GL_KLUDGE="-${tab}  "
+fi
+
+if test "$have_gle" = yes; then
+  GLE_EXES='$(GLE_EXES)'
+  GLE_MEN='$(GLE_MEN)'
+  GLE_KLUDGE="${tab}   "
+else
+  GLE_KLUDGE="-${tab}   "
 fi
 
 
 fi
 
 
@@ -2361,11 +2578,10 @@ AC_SUBST(ALL_DEMO_PROGRAMS)
 AC_SUBST(SAVER_LIBS)
 AC_SUBST(MOTIF_LIBS)
 AC_SUBST(GTK_LIBS)
 AC_SUBST(SAVER_LIBS)
 AC_SUBST(MOTIF_LIBS)
 AC_SUBST(GTK_LIBS)
-AC_SUBST(ATHENA_LIBS)
-AC_SUBST(ATHENA3D_LIBS)
 AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
 AC_SUBST(GL_LIBS)
+AC_SUBST(GLE_LIBS)
 AC_SUBST(PASSWD_LIBS)
 AC_SUBST(INSTALL_SETUID)
 AC_SUBST(INSTALL_DIRS)
 AC_SUBST(PASSWD_LIBS)
 AC_SUBST(INSTALL_SETUID)
 AC_SUBST(INSTALL_DIRS)
@@ -2386,7 +2602,11 @@ AC_SUBST(LOCK_OBJS)
 AC_SUBST(GL_EXES)
 AC_SUBST(GL_MEN)
 AC_SUBST(GL_KLUDGE)
 AC_SUBST(GL_EXES)
 AC_SUBST(GL_MEN)
 AC_SUBST(GL_KLUDGE)
+AC_SUBST(GLE_EXES)
+AC_SUBST(GLE_MEN)
+AC_SUBST(GLE_KLUDGE)
 AC_SUBST(HACKDIR)
 AC_SUBST(HACKDIR)
+AC_SUBST(GNOME_DATADIR)
 
 APPDEFAULTS=$ac_x_app_defaults
 AC_SUBST(APPDEFAULTS)
 
 APPDEFAULTS=$ac_x_app_defaults
 AC_SUBST(APPDEFAULTS)
@@ -2427,7 +2647,8 @@ warn() {
   warnpre
   if test "$warning" = long ; then echo '' ; fi
   warning=yes
   warnpre
   if test "$warning" = long ; then echo '' ; fi
   warning=yes
-  echo "$warn_prefix $@"
+  rest="$@"
+  echo "$warn_prefix $rest"
 }
 
 warnL() {
 }
 
 warnL() {
@@ -2435,11 +2656,13 @@ warnL() {
   warnpre
   warning=yes
   if test "$was" != no ; then echo '' ; fi
   warnpre
   warning=yes
   if test "$was" != no ; then echo '' ; fi
-  echo "$warn_prefix $@"
+  rest="$@"
+  echo "$warn_prefix $rest"
 }
 
 warn2() {
 }
 
 warn2() {
-  echo "             $@"
+  rest="$@"
+  echo "             $rest"
   warning=long
 }
 
   warning=long
 }
 
@@ -2493,17 +2716,13 @@ if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
 fi
 
 
 fi
 
 
-if test "$have_motif" = no -a "$have_gtk" = no -a "$have_athena" = no ; then
-  warnL "None of Motif, Gtk, or Athena widgets seem to be available;"
+if test "$have_motif" = no -a "$have_gtk" = no; then
+  warnL "Neither Motif nor Gtk seem to be available;"
   warn2 "the \`xscreensaver-demo' program requires one of these."
 
 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
   warnL "Use of Motif was requested, but it wasn't found;"
   warn2 "the \`xscreensaver-demo' program requires one of these."
 
 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
   warnL "Use of Motif was requested, but it wasn't found;"
-  if test "$have_gtk" = yes; then
-    warn2 "Gtk will be used instead."
-  else
-    warn2 "Athena will be used instead."
-  fi
+  warn2 "Gtk will be used instead."
 
 elif test "$jurassic_gtk" = yes ; then
 
 
 elif test "$jurassic_gtk" = yes ; then
 
@@ -2518,29 +2737,18 @@ elif test "$jurassic_gtk" = yes ; then
     warnL "Gtk was found on this system, but it is version $v;"
   fi
 
     warnL "Gtk was found on this system, but it is version $v;"
   fi
 
-  if test "$have_motif" = yes; then
-    which="Motif"
-  else
-    which="Athena"
-  fi
-
-  warn2 "Gtk $pref_gtk or newer is required.  $which will be used instead."
+  warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
 
 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
   warnL "Use of Gtk was requested, but it wasn't found;"
 
 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
   warnL "Use of Gtk was requested, but it wasn't found;"
-  if test "$have_motif" = yes; then
-    warn2 "Motif will be used instead."
-  else
-    warn2 "Athena will be used instead."
-  fi
+  warn2 "Motif will be used instead."
 
 
-elif test "$with_athena_req" = yes -a "$have_athena" = no ; then
-  warnL "Use of Athena was requested, but it wasn't found;"
-  if test "$have_gtk" = yes; then
-    warn2 "Gtk will be used instead."
-  else
-    warn2 "Motif will be used instead."
-  fi
+fi
+
+
+if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
+  warn  'Use of the Gnome Control Panel was requested, but the necessary'
+  warn2 'headers and/or libraries were not found.'
 fi
 
 
 fi
 
 
@@ -2562,15 +2770,6 @@ if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
   fi
 fi
 
   fi
 fi
 
-if test "$have_athena" = yes -a "$have_motif" = no -a "$have_gtk" = no; then
-    warnL "Athena widgets are being used instead of Motif or Gtk."
-    warn2 "The \`xscreensaver-demo' program looks much better"
-    warn2 "with Motif or Gtk.  Wouldn't you rather be using Motif?"
-    warn2 "Motif is shipped by every commercial Unix vendor,"
-    warn2 "and there is a free implementation available as"
-    warn2 "well: see <http://www.lesstif.org/>.  Gtk is shipped"
-    warn2 "with most Linux and BSD distributions."
-fi
 
 
 if test "$have_xpm" = no ; then
 
 
 if test "$have_xpm" = no ; then
@@ -2606,7 +2805,6 @@ if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
   fi
 fi
 
   fi
 fi
 
-
 if test "$have_gl" = no ; then
   if test "$with_gl_req" = yes ; then
     warnL '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.'
@@ -2616,6 +2814,14 @@ if test "$have_gl" = no ; then
     noteL 'The OpenGL 3D library was not found.'
   fi
 
     noteL 'The OpenGL 3D library was not found.'
   fi
 
+  if test "$gl_halfassed" = yes ; then
+    echo ''
+    warn2 'More specifically, we found the headers, but not the'
+    warn2 'libraries; so either GL is half-installed on this'
+    warn2 "system, or something else went wrong.  The \`config.log'"
+    warn2 'file might contain some clues.'
+  fi
+
   echo ''
   warn2 'Those demos which use 3D will not be built or installed.'
   warn2 'You might want to consider installing OpenGL and'
   echo ''
   warn2 'Those demos which use 3D will not be built or installed.'
   warn2 'You might want to consider installing OpenGL and'
@@ -2627,6 +2833,39 @@ if test "$have_gl" = no ; then
 
 fi
 
 
 fi
 
+
+if test "$have_gl" = yes -a "$have_gle" = no ; then
+  if test "$with_gle_req" = yes ; then
+    noteL 'Use of the GLE (GL Extrusion) library was requested, but'
+    warn2 'it was not found (though the OpenGL library was found, and'
+    warn2 'is being used.)'
+  elif test "$with_gle_req" = no ; then
+    noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
+    warn2 'library is not.'
+  else
+    noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
+    warn2 'was not.'
+  fi
+
+  if test "$gle_halfassed" = yes ; then
+    echo ''
+    warn2 'More specifically, we found the headers, but not the'
+    warn2 'libraries; so either GLE is half-installed on this'
+    warn2 "system, or something else went wrong.  The \`config.log'"
+    warn2 'file might contain some clues.'
+  fi
+
+  echo ''
+  warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
+  warn2 'will not be built or installed.  You might want to consider'
+  warn2 'installing GLE and re-running configure.  (Remember to delete'
+  warn2 'the config.cache file first.)  You can find the GLE library'
+  warn2 'at <http://www.linas.org/gle/>.  For general OpenGL info,'
+  warn2 'see <http://www.opengl.org/>.'
+
+fi
+
+
 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
   warn 'Use of XReadDisplay was requested, but it was not found.'
 fi
 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
   warn 'Use of XReadDisplay was requested, but it was not found.'
 fi
@@ -2695,7 +2934,7 @@ do_dir_warning=no
 # M4 sucks!!
 changequote(X,Y)
 rpmv=`(rpm -qv xscreensaver) 2>&- | \
 # M4 sucks!!
 changequote(X,Y)
 rpmv=`(rpm -qv xscreensaver) 2>&- | \
-      sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'`
+      sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/'`
 changequote([,])
 
 if test \! -z "$rpmv" ; then
 changequote([,])
 
 if test \! -z "$rpmv" ; then
@@ -2726,15 +2965,15 @@ fi
 
 # Warn about egregious GNOME bogosity.
 #
 
 # Warn about egregious GNOME bogosity.
 #
-if (rpm -qv control-center) >&- 2>&- ; then
-  warning=no
-  warnL "The Gnome Control Center seems to be installed."
-  echo  ""
-  warn2 "Note that simply installing this version of xscreensaver"
-  warn2 "will not cause GNOME to know about the newly-added display"
-  warn2 "modes -- GNOME is just lame that way.  Instead of using the"
-  warn2 "Control Center, try using the \`xscreensaver-demo' command."
-fi
+#if (rpm -qv control-center) >&- 2>&- ; then
+#  warning=no
+#  warnL "The Gnome Control Center seems to be installed."
+#  echo  ""
+#  warn2 "Note that simply installing this version of xscreensaver"
+#  warn2 "will not cause GNOME to know about the newly-added display"
+#  warn2 "modes -- GNOME is just lame that way.  Instead of using the"
+#  warn2 "Control Center, try using the \`xscreensaver-demo' command."
+#fi
 
 
 if test "${bindir}" = "${HACKDIR}" ; then
 
 
 if test "${bindir}" = "${HACKDIR}" ; then
@@ -2749,7 +2988,7 @@ if test "$do_dir_warning" = yes; then
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}."
   echo ""
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}."
   echo ""
-  echo "      The various graphics demos (90+ different executables) will"
+  echo "      The various graphics demos (100+ different executables) will"
   echo "      also be installed in ${HACKDIR}."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere"
   echo "      also be installed in ${HACKDIR}."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere"