http://www.mirrorservice.org/sites/master.us.finkmirrors.net/distfiles/md5/fa43fdd68d...
[xscreensaver] / configure.in
index ae0e4930b02784d5a353e2d29cb396b1db07aa08..f9ba1a78069c2767ca92efc5a145f678f3341c30 100644 (file)
@@ -1,7 +1,7 @@
-# configure.in --- xscreensaver, Copyright (c) 1997-2000 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2003 Jamie Zawinski.
 #
 
 #
 
-AC_PREREQ(2.53)
+AC_PREREQ(2.52)
 AC_INIT(driver/subprocs.c)
 AC_CONFIG_HEADER(config.h)
 
 AC_INIT(driver/subprocs.c)
 AC_CONFIG_HEADER(config.h)
 
@@ -65,7 +65,7 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
 
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
-    CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
+    CC="$CC -Wall -Wstrict-prototypes -Wnested-externs"
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
@@ -98,7 +98,7 @@ AC_DEFUN(AC_GCC_ACCEPTS_STD,
  [if test -n "$GCC"; then
    AC_CACHE_CHECK([whether gcc accepts -std],
      ac_cv_gcc_accepts_std,
  [if test -n "$GCC"; then
    AC_CACHE_CHECK([whether gcc accepts -std],
      ac_cv_gcc_accepts_std,
-    [if ( gcc -E -std=c89 - </dev/null >/dev/null 2>&1 | \
+    [if ( ( gcc -E -std=c89 - </dev/null >/dev/null ) 2>&1 | \
           grep unrecognized >/dev/null ); then
        ac_cv_gcc_accepts_std=no
      else
           grep unrecognized >/dev/null ); then
        ac_cv_gcc_accepts_std=no
      else
@@ -140,6 +140,38 @@ AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
 ])
 
 
 ])
 
 
+###############################################################################
+#
+#       Function to figure out how to turn off Objective C on MacOS X.
+#       (We have to do this to work around an Apple-specific gcc bug.)
+#
+###############################################################################
+
+AC_DEFUN(AC_GCC_ACCEPTS_NO_CPP_PRECOMP,
+ [if test -n "$GCC"; then
+   AC_CACHE_CHECK([whether gcc accepts -no-cpp-precomp],
+     ac_cv_gcc_accepts_no_cpp_precomp,
+    [if ( ( gcc -E -no-cpp-precomp - </dev/null >/dev/null ) 2>&1 | \
+          grep unrecognized >/dev/null ); then
+       ac_cv_gcc_accepts_no_cpp_precomp=no
+     else
+       ac_cv_gcc_accepts_no_cpp_precomp=yes
+     fi])
+   ac_gcc_accepts_no_cpp_precomp="$ac_cv_gcc_accepts_no_cpp_precomp"
+  fi
+])
+
+AC_DEFUN(AC_NO_OBJECTIVE_C,
+ [if test -n "$GCC"; then
+   AC_GCC_ACCEPTS_NO_CPP_PRECOMP
+   if test "$ac_gcc_accepts_no_cpp_precomp" = yes ; then
+     AC_MSG_RESULT(Disabling Objective C extensions in ANSI C code.)
+     CC="$CC -no-cpp-precomp"
+   fi
+  fi
+])
+
+
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
@@ -590,6 +622,16 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
         AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
       fi
         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
         AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
       fi
+
+    ;;
+    *-darwin*)
+
+      # On MacOS X (10.x with "fink"), many things are under /sw/.
+      #
+      if test -d /sw/include ; then
+        X_CFLAGS="-I/sw/include $X_CFLAGS"
+        X_LIBS="-L/sw/lib $X_LIBS"
+      fi
     ;;
   esac])
 
     ;;
   esac])
 
@@ -743,6 +785,7 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
+AC_NO_OBJECTIVE_C
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
@@ -808,7 +851,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
 AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE")
 AC_SUBST(GETTEXT_PACKAGE)
 
 AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE")
 AC_SUBST(GETTEXT_PACKAGE)
 
-ALL_LINGUAS="ca de et fr it ko pl pt sv da es fi hu ja no pt pt_BR ru wa"
+ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
 AM_GLIB_GNU_GETTEXT
 
 
 AM_GLIB_GNU_GETTEXT
 
 
@@ -1315,15 +1358,37 @@ elif test "$with_xf86gamma" != no; then
 fi
 
 
 fi
 
 
+###############################################################################
+#
+#       Check for XF86MiscSetGrabKeysState (but only bother if we are already
+#      using other XF86 stuff.)
+#
+###############################################################################
+
+have_xf86miscsetgrabkeysstate=no
+if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
+  AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
+                [have_xf86miscsetgrabkeysstate=yes],
+                [true], -lXext -lX11)
+  if test "$have_xf86miscsetgrabkeysstate" = yes ; then
+    SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
+    AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE)
+  fi
+fi
+
+
 ###############################################################################
 #
 #       Check for HP XHPDisableReset and XHPEnableReset.
 #
 ###############################################################################
 
 ###############################################################################
 #
 #       Check for HP XHPDisableReset and XHPEnableReset.
 #
 ###############################################################################
 
+AC_MSG_CHECKING([for XHPDisableReset in X11/XHPlib.h])
 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
                   [AC_DEFINE(HAVE_XHPDISABLERESET)
 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
                   [AC_DEFINE(HAVE_XHPDISABLERESET)
-                   SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
+                   SAVER_LIBS="-lXhp11 $SAVER_LIBS"
+                   AC_MSG_RESULT(yes)],
+                  [AC_MSG_RESULT(no)])
 
 
 ###############################################################################
 
 
 ###############################################################################
@@ -1371,8 +1436,7 @@ AC_ARG_ENABLE(locking,[
 Screen locking options:
 
   --enable-locking        Compile in support for locking the display.
 Screen locking options:
 
   --enable-locking        Compile in support for locking the display.
-  --disable-locking       Do not allow locking at all.
-],
+  --disable-locking       Do not allow locking at all.],
   [enable_locking="$enableval"],[enable_locking=yes])
 if test "$enable_locking" = yes; then
   true
   [enable_locking="$enableval"],[enable_locking=yes])
 if test "$enable_locking" = yes; then
   true
@@ -1425,7 +1489,6 @@ fi
 #fi
 
 
 #fi
 
 
-
 ###############################################################################
 #
 #       Check for PAM.
 ###############################################################################
 #
 #       Check for PAM.
@@ -1537,7 +1600,12 @@ if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
   if test "$have_kerberos5" = yes ; then
     # from Matt Knopp <mhat@infocalypse.netlag.com>
     # (who got it from amu@mit.edu)
   if test "$have_kerberos5" = yes ; then
     # from Matt Knopp <mhat@infocalypse.netlag.com>
     # (who got it from amu@mit.edu)
-    PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
+
+    PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
+
+    # jwz: MacOS X uses -lkrb5, but not -lcrypt
+    AC_CHECK_X_LIB(crypt, crypt, [PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
+
   elif test "$have_kerberos" = yes ; then
     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
   elif test "$have_kerberos" = yes ; then
     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
@@ -1779,7 +1847,8 @@ with_motif_req=unspecified
 AC_ARG_WITH(motif,[
 User interface options:
 
 AC_ARG_WITH(motif,[
 User interface options:
 
-  --with-motif            Use the Motif toolkit for the user interface.],
+  --with-motif            Use the Motif toolkit for the user interface
+                          (not recommended.)],
   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
 
 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
 
 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
@@ -1816,6 +1885,7 @@ fi
 ###############################################################################
 
 have_gtk=no
 ###############################################################################
 
 have_gtk=no
+have_gtk2=no
 with_gtk_req=unspecified
 AC_ARG_WITH(gtk,
 [  --with-gtk              Use the Gtk toolkit for the user interface.],
 with_gtk_req=unspecified
 AC_ARG_WITH(gtk,
 [  --with-gtk              Use the Gtk toolkit for the user interface.],
@@ -1842,7 +1912,9 @@ fi
 have_gnome=no
 with_gnome_req=unspecified
 AC_ARG_WITH(gnome,
 have_gnome=no
 with_gnome_req=unspecified
 AC_ARG_WITH(gnome,
-[  --with-gnome            Include support for the Gnome Control Center.],
+[  --with-gnome            Include support for the Gnome 1.x Control Center.
+                          (This option is not needed with GTK 2.x / Gnome 2.x.)
+],
   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
 
 # if --with-gnome=/directory/ was specified, remember that directory so that
   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
 
 # if --with-gnome=/directory/ was specified, remember that directory so that
@@ -1863,8 +1935,23 @@ if test "$with_gnome" != yes -a "$with_gnome" != no ; then
   exit 1
 fi
 
   exit 1
 fi
 
+parse_gtk_version_string() {
+  # M4 sucks!!
+  changequote(X,Y)
+  maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
+  min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
+  changequote([,])
+  ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
+  if test -z "$ac_gtk_version"; then
+    ac_gtk_version=unknown
+    ac_gtk_version_string=unknown
+  fi
+}
+
 
 jurassic_gtk=no
 
 jurassic_gtk=no
+gtk2_halfassed=no
+
 if test "$with_gtk" = yes; then
   have_gtk=no
   
 if test "$with_gtk" = yes; then
   have_gtk=no
   
@@ -1885,115 +1972,244 @@ if test "$with_gtk" = yes; then
     gtk_path="$foo:$gtk_path"
   fi
 
     gtk_path="$foo:$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)
+  AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
 
 
-  if test "$with_gnome" = yes; then
-    AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
-  fi
+  if test -n "$pkg_config" ; then
+    #
+    # the new way...
+    # run pkg-config based tests.
+    #
 
 
-  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
+    pkgs=''
+    pkg_check_version() {
+      if test "$ok" = yes ; then
+        req="$1"
+        min="$2"
+        AC_MSG_CHECKING(for $req)
+        if $pkg_config --exists "$req" ; then
+          vers=`$pkg_config --modversion "$req"`
+          if $pkg_config --exists "$req >= $min" ; then
+            AC_MSG_RESULT($vers)
+            pkgs="$pkgs $req"
+            return 1
+          else
+            AC_MSG_RESULT($vers (wanted >= $min))
+            ok=no
+            return 0
+          fi
+        else
+          AC_MSG_RESULT(no)
+          ok=no
+          return 0
+        fi
+      fi
+    }
+
+    ok="yes"
+    pkg_check_version     gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
+    pkg_check_version  gmodule-2.0  2.0.0
+    pkg_check_version   libxml-2.0  2.4.6
+    pkg_check_version libglade-2.0  1.99.0
+    have_gtk="$ok"
+
+    if test "$have_gtk" = yes; then
+      have_gtk2=yes
+      AC_DEFINE(HAVE_GTK2)
+    else
+      if test -n "$ac_gtk_version_string" ; then
+        gtk2_halfassed="$ac_gtk_version_string"
+        gtk2_halfassed_lib="$req"
+      fi
     fi
     fi
-  fi
 
 
-  if test "$have_gtk" = yes; then
-    AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
-                   [ac_cv_gtk_version_string=`$gtk_config --version`])
-    ac_gtk_version_string=$ac_cv_gtk_version_string
-    # M4 sucks!!
-    changequote(X,Y)
-    maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
-    min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
-    changequote([,])
-    ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
-    if test -z "$ac_gtk_version"; then
-      ac_gtk_version=unknown
-      ac_gtk_version_string=unknown
+    if test "$have_gtk" = no; then
+      #
+      # we don't have GTK 2.  Let's look for GTK 1.
+      #
+      pkgs=''
+      ok="yes"
+      pkg_check_version gtk+ 1.2           ; ac_gtk_version_string="$vers"
+      pkg_check_version glib 1.0
+      have_gtk="$ok"
+
+      # Now check for Gnome...
+      #
+      if test "$have_gtk" = yes -a "$with_gnome" = yes; then
+        old_pkgs="$pkgs"
+        ok=yes
+        pkg_check_version capplet    1.0
+        pkg_check_version gnomeui    1.0
+        pkg_check_version gdk_pixbuf 0.1
+        have_gnome="$ok"
+
+        if test "$have_gnome" = no; then
+          pkgs="$old_pkgs"
+        else
+          AC_DEFINE(HAVE_CRAPPLET)
+        fi
+      fi
     fi
     fi
-    if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
-    then
-      have_gtk=no
+
+    if test "$have_gtk" = yes; then
+      parse_gtk_version_string
+      jurassic_gtk=no
+    else
       have_gnome=no
       have_gnome=no
-      jurassic_gtk=yes
     fi
     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`])
-  fi
-  ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
-  ac_gtk_config_libs=$ac_cv_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=`$pkg_config --cflags $pkgs`])
+      AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
+                     [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
+    fi
+    ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
+    ac_gtk_config_libs=$ac_cv_gtk_config_libs
 
 
-  # Check for Gnome Capplet support.
-  #
-  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
-    gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
-    AC_MSG_CHECKING(for Gnome capplet includes)
-    AC_CACHE_VAL(ac_cv_gnome_config_cflags,
-      [if ( $gnome_config --cflags $gnome_config_libs >/dev/null 2>&1 | \
-            grep Unknown >/dev/null ) ; then
-         ac_cv_gnome_config_cflags=''
-       else
-         ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
-       fi])
-    ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
-    if test "$ac_gnome_config_cflags" = "" ; then
-      have_gnome=no
-      AC_MSG_RESULT(no)
-    else
-      AC_MSG_RESULT($ac_gnome_config_cflags)
+    ac_gnome_config_cflags=$ac_gtk_config_cflags
+    ac_gnome_config_libs=$ac_gtk_config_libs
+
+  else
+    #
+    # the old way...
+    # run {gnome,gtk}-config based tests.
+    #
+
+    AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
+    AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
+
+    if test "$with_gnome" = yes; then
+      AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
     fi
     fi
-  fi
 
 
-  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
-    AC_MSG_CHECKING(for Gnome capplet libs)
-    AC_CACHE_VAL(ac_cv_gnome_config_libs,
-      [if ( $gnome_config --libs $gnome_config_libs >/dev/null 2>&1 |
-            grep Unknown >/dev/null ) ; then
-         ac_cv_gnome_config_libs=''
-       else
-         ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
-       fi])
-    ac_gnome_config_libs=$ac_cv_gnome_config_libs
-    if test "$ac_gnome_config_libs" = "" ; then
-      have_gnome=no
-      AC_MSG_RESULT(no)
-    else
-      AC_MSG_RESULT($ac_gnome_config_libs)
+    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
-  fi
 
 
-  GNOME_DATADIR=""
-  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
-    GNOME_DATADIR=`$gnome_config --datadir`
-  fi
+    if test "$have_gtk" = yes; then
+      AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
+                     [ac_cv_gtk_version_string=`$gtk_config --version`])
+      ac_gtk_version_string=$ac_cv_gtk_version_string
+      parse_gtk_version_string
+    fi
 
 
+    if test "$have_gtk" = yes; then
+      if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
+      then
+        have_gtk=no
+        have_gnome=no
+        jurassic_gtk=yes
+      fi
+    fi
 
 
-  # If we have Gnome, then override the gtk-config values with 
-  # the gnome-config values.
-  #
-  if test "$have_gnome" = yes -a "$have_gtk" = yes; then
-    ac_gtk_config_cflags=$ac_gnome_config_cflags
-    ac_gtk_config_libs=$ac_gnome_config_libs
-    AC_DEFINE(HAVE_CRAPPLET)
+    if test "$have_gtk" = yes; then
+      AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
+                     [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
+      AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
+                     [ac_cv_gtk_config_libs=`$gtk_config --libs`])
+    fi
+    ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
+    ac_gtk_config_libs=$ac_cv_gtk_config_libs
+
+    # Check for Gnome Capplet support.
+    # Note that this is only needed with Gnome 1.x, not Gnome 2.x.
+    # In a Gnome 2.x world, libcapplet will not exist.
+    # (In fact, this likely won't even be checked, since in a Gnome 2.x
+    # world, we will probably be up in the "$pkg_config" branch instead
+    # of here in the "$gnome_config" branch.)
+    #
+    if test "$have_gnome" = yes -a "$have_gtk" = yes; then
+      gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
+      AC_MSG_CHECKING(for Gnome capplet includes)
+      AC_CACHE_VAL(ac_cv_gnome_config_cflags,
+        [if ( $gnome_config --cflags $gnome_config_libs 2>&1 | \
+              grep Unknown >/dev/null ) ; then
+           ac_cv_gnome_config_cflags=''
+         else
+          ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
+         fi])
+      ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
+      if test "$ac_gnome_config_cflags" = "" ; then
+        have_gnome=no
+        AC_MSG_RESULT(no)
+      else
+        AC_MSG_RESULT($ac_gnome_config_cflags)
+      fi
+    fi
+
+    if test "$have_gnome" = yes -a "$have_gtk" = yes; then
+      AC_MSG_CHECKING(for Gnome capplet libs)
+      AC_CACHE_VAL(ac_cv_gnome_config_libs,
+        [if ( $gnome_config --libs $gnome_config_libs 2>&1 |
+              grep Unknown >/dev/null ) ; then
+           ac_cv_gnome_config_libs=''
+         else
+           ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
+         fi])
+      ac_gnome_config_libs=$ac_cv_gnome_config_libs
+      if test "$ac_gnome_config_libs" = "" ; then
+        have_gnome=no
+        AC_MSG_RESULT(no)
+      else
+        AC_MSG_RESULT($ac_gnome_config_libs)
+      fi
+    fi
 
 
+    # If we have Gnome, then override the gtk-config values with 
+    # the gnome-config values.
+    #
+    if test "$have_gnome" = yes -a "$have_gtk" = yes; then
+      ac_gtk_config_cflags=$ac_gnome_config_cflags
+      ac_gtk_config_libs=$ac_gnome_config_libs
+      AC_DEFINE(HAVE_CRAPPLET)
+    fi
+
+  fi   # end of {gnome,gtk}-config based tests
+
+  if test "$have_gtk" = yes -a "$have_gtk2" = no; then
     # check for this function that was not in libcapplet 1.2.
     # check for this function that was not in libcapplet 1.2.
+    # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x)
     AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
                    [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
                    $ac_gnome_config_libs)
   fi
 
 
     AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
                    [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
                    $ac_gnome_config_libs)
   fi
 
 
+  GNOME_DATADIR=""
+  if test "$have_gtk" = yes; then
+    if test -n "$pkg_config"; then
+      if test "$have_gtk2" = yes; then
+        GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+      else
+        GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
+      fi
+    else
+      GNOME_DATADIR=`$gtk_config --prefix`
+    fi
+    GNOME_DATADIR="$GNOME_DATADIR/share"
+  fi
+
+  # .desktop files go in different places in Gnome 1.x and Gnome 2.x...
+  if test "$have_gtk2" = yes; then
+    GNOME_PANELDIR='$(GNOME_PANELDIR2)'
+  else
+    GNOME_PANELDIR='$(GNOME_PANELDIR1)'
+  fi
+
+
   if test "$have_gtk" = yes; then
     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
     AC_DEFINE(HAVE_GTK)
   if test "$have_gtk" = yes; then
     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
     AC_DEFINE(HAVE_GTK)
+
+    if test "$have_gtk2" = yes; then
+      GTK_EXTRA_OBJS=""
+    else
+      GTK_EXTRA_OBJS="\$(GTK_EXTRA_OBJS)"
+    fi
   fi
 
 fi
   fi
 
 fi
@@ -2001,10 +2217,11 @@ fi
 
 # Check for the Gnome Help Browser.
 #
 
 # Check for the Gnome Help Browser.
 #
-if test "$have_gnome" = yes; then
-  AC_CHECK_PROG(have_gnome_help, gnome-help-browser, yes, no)
-else
-  have_gnome_help=no
+if test "$have_gtk" = yes; then
+  AC_CHECK_PROGS(have_gnome_help, yelp gnome-help-browser, no)
+  if test "$have_gnome_help" != no; then
+    have_gnome_help=yes
+  fi
 fi
 
 
 fi
 
 
@@ -2019,7 +2236,8 @@ with_xml_req=unspecified
 xml_halfassed=no
 AC_ARG_WITH(xml,
 [  --with-xml              The XML toolkit is needed for some parts of
 xml_halfassed=no
 AC_ARG_WITH(xml,
 [  --with-xml              The XML toolkit is needed for some parts of
-                          the Gtk interface.],
+                          the Gtk interface.  Without it, the configuration
+                          interface will be much less featureful.],
 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
 
 # if --with-xml=/directory/ was specified, remember that directory so that
 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
 
 # if --with-xml=/directory/ was specified, remember that directory so that
@@ -2061,35 +2279,78 @@ if test "$with_xml" = yes; then
     xml_path="$foo:$xml_path"
   fi
 
     xml_path="$foo:$xml_path"
   fi
 
-  AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
+  if test -n "$pkg_config" ; then
+    #
+    # the new way...
+    # run pkg-config based tests.
+    #
+    pkgs=""
+    ok="yes"
 
 
-  # If we found the xml-config program, run it to get flags.
-  #
-  if test -n "$xml_config" ; then
-    AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
-                   [ac_cv_xml_config_cflags=`$xml_config --cflags`])
-    AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
-                   [ac_cv_xml_config_libs=`$xml_config --libs`])
-    ac_xml_config_cflags=$ac_cv_xml_config_cflags
-    ac_xml_config_libs=$ac_cv_xml_config_libs
-  fi
+    # If we have Gtk 2.x, then *only* XML 2.x will work.
+    # If we have Gtk 1.x, or don't have Gtk at all, then
+    # either XML 1.x or 2.x will work.
 
 
-  ac_save_xml_CPPFLAGS="$CPPFLAGS"
-  CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags"
+    # First check for XML 2.x.
+    #
+    pkg_check_version libxml-2.0 2.4.6
 
 
-  # first try <libxml/parser.h> which is the new way...
-  #
-  AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],,
-                    [#include <libxml/parser.h>])
+    # If that didn't work (we don't have XML 2.x) and we *don't* have
+    # Gtk 2.x, then check to see if we have XML 1.x
+    #
+    if test "$ok" = no -a "$have_gtk2" = no; then
+      ok=yes
+      pkg_check_version libxml 1.0
+    fi
 
 
-  # if that didn't work, then try just <parser.h> which is the old way...
-  #
-  if test "$have_xml" = no; then
-    AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],,
-                      [#include <parser.h>])
+    have_xml="$ok"
+
+    if test "$have_xml" = yes; then
+      AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
+                     [ac_cv_xml_config_cflags=`$pkg_config --cflags $pkgs`])
+      AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
+                     [ac_cv_xml_config_libs=`$pkg_config --libs $pkgs`])
+      ac_xml_config_cflags=$ac_cv_xml_config_cflags
+      ac_xml_config_libs=$ac_cv_xml_config_libs
+    fi
+
+  else
+    #
+    # the old way...
+    # run {xml2,xml}-config based tests.
+    #
+
+    AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
+
+    # If we found the xml-config program, run it to get flags.
+    #
+    if test -n "$xml_config" ; then
+      AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
+                     [ac_cv_xml_config_cflags=`$xml_config --cflags`])
+      AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
+                     [ac_cv_xml_config_libs=`$xml_config --libs`])
+      ac_xml_config_cflags=$ac_cv_xml_config_cflags
+      ac_xml_config_libs=$ac_cv_xml_config_libs
+    fi
+
+    ac_save_xml_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags"
+
+    # first try <libxml/parser.h> which is the new way...
+    #
+    AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],,
+                      [#include <libxml/parser.h>])
+
+    # if that didn't work, then try just <parser.h> which is the old way...
+    #
+    if test "$have_xml" = no; then
+      AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],,
+                        [#include <parser.h>])
+    fi
+
+    CPPFLAGS="$ac_save_xml_CPPFLAGS"
   fi
 
   fi
 
-  CPPFLAGS="$ac_save_xml_CPPFLAGS"
 
   have_zlib=no
   if test "$have_xml" = yes; then
 
   have_zlib=no
   if test "$have_xml" = yes; then
@@ -2107,7 +2368,7 @@ if test "$with_xml" = yes; then
     # we have the header, now check for the library
     have_xml=no
     xml_halfassed=yes
     # we have the header, now check for the library
     have_xml=no
     xml_halfassed=yes
-    AC_CHECK_X_LIB(xml, xmlParseChunk,
+    AC_CHECK_X_LIB(c, xmlParseChunk,
                    [have_xml=yes
                     xml_halfassed=no
                     XML_LIBS="$ac_xml_config_libs"
                    [have_xml=yes
                     xml_halfassed=no
                     XML_LIBS="$ac_xml_config_libs"
@@ -2375,8 +2636,29 @@ if test "$with_gl" = yes; then
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
 # include <GL/xmesa.h>
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
 # include <GL/xmesa.h>
-# define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
-# define MESA_MINOR_VERSION XMESA_MINOR_VERSION
+# ifdef XMESA_MAJOR_VERSION
+   /* Around Mesa 3.2, they took out the Mesa version number, so instead,
+      we have to check the XMesa version number (the number of the X protocol
+      support, which seems to be the same as the Mesa version number.)
+    */
+#  define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
+#  define MESA_MINOR_VERSION XMESA_MINOR_VERSION
+# else
+   /* Oh great.  Some time after 3.4, they took out the xmesa.h header file,
+      so we have no way of telling what version of Mesa this is at all.
+      So, we'll guess that the osmesa version (the "offscreen protocol")
+      is less than or equal to the real mesa version number.  Except that
+      if OSmesa is 3.3, assume at least Mesa 3.4, since OSmesa was 3.3 in
+      Mesa 3.4.  And Mesa 3.3 had xmesa.h.  What a complete load of shit!
+    */
+# include <GL/osmesa.h>
+#  define MESA_MAJOR_VERSION OSMESA_MAJOR_VERSION
+#  define MESA_MINOR_VERSION OSMESA_MINOR_VERSION or newer, probably?
+#  if OSMESA_MAJOR_VERSION == 3 && OSMESA_MINOR_VERSION == 3
+#   undef MESA_MINOR_VERSION
+#   define MESA_MINOR_VERSION 4 or newer, probably?
+#  endif
+# endif
 #endif
 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
 EOF
 #endif
 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
 EOF
@@ -2387,21 +2669,13 @@ EOF
          fi
          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 
          fi
          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 
-# With autoconf 2.13 we could do this:
-#
-#        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([,])
-#
-# but with autoconf 2.52+ (m4 1.4) that causes an error:
-#   m4: ERROR: Recursion limit of 1024 exceeded, use -L<N> to change it
-#
-# So, we need to use the autoconf line-noise macros @<:@ for [ and @:>@ for ]
-#
-         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'`
+         mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
 
 
+         # M4 sucks!!
+         changequote(X,Y)
+          mglv=`echo "$mglv" | sed -n \
+             's/^configure: *\([0-9][0-9]*\)  *\([0-9].*\)$/\1.\2/p'`
+         changequote([,])
 
          rm -f conftest.$ac_ext
 
 
          rm -f conftest.$ac_ext
 
@@ -2411,9 +2685,12 @@ EOF
            ac_mesagl_version=unknown
            ac_mesagl_version_string=unknown
          else
            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_string="$mglv"
+           # M4 sucks!!
+           changequote(X,Y)
+           maj=`echo "$mglv" | sed -n 's/^\([0-9][0-9]*\)\..*$/\1/p'`
+           min=`echo "$mglv" | sed -n 's/^.*\.\([0-9][0-9]*\).*$/\1/p'`
+           changequote([,])
            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
            if test -z "$ac_mesagl_version"; then
              ac_mesagl_version=unknown
            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
            if test -z "$ac_mesagl_version"; then
              ac_mesagl_version=unknown
@@ -2458,7 +2735,9 @@ HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
 
 GLE_LIBS=""
 
 
 GLE_LIBS=""
 
-if test "$with_gle" = yes; then
+if test "$have_gl" = no ; then
+ true
+elif test "$with_gle" = yes; then
 
   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
                     [#include <GL/gl.h>])
 
   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
                     [#include <GL/gl.h>])
@@ -2534,7 +2813,8 @@ fi
 have_xpm=no
 with_xpm_req=unspecified
 AC_ARG_WITH(xpm,
 have_xpm=no
 with_xpm_req=unspecified
 AC_ARG_WITH(xpm,
-[  --with-xpm              Include support for XPM files in some demos.],
+[  --with-xpm              Include support for XPM files in some demos.
+                          (Not needed if Pixbuf is used.)],
   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
 
 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
 
 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
@@ -2559,7 +2839,6 @@ if test "$have_motif" = yes -a "$have_xpm" = yes ; then
   fi
 fi
 
   fi
 fi
 
-
 ###############################################################################
 #
 #       Check for -lgdk_pixbuf.
 ###############################################################################
 #
 #       Check for -lgdk_pixbuf.
@@ -2571,7 +2850,8 @@ with_gdk_pixbuf_req=unspecified
 AC_ARG_WITH(pixbuf,
 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
                           demos, which will make it possible for them to read
 AC_ARG_WITH(pixbuf,
 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
                           demos, which will make it possible for them to read
-                          GIF, JPEG, and PNG files as well.],
+                          GIF, JPEG, and PNG files as well.  (The path here is
+                         ignored if GTK 2.x is being used.)],
   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
   [with_gdk_pixbuf=yes])
 
   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
   [with_gdk_pixbuf=yes])
 
 
 if test "$with_gdk_pixbuf" = yes; then
   have_gdk_pixbuf=no
 
 if test "$with_gdk_pixbuf" = yes; then
   have_gdk_pixbuf=no
+  have_gdk_pixbuf2=no
 
 
-  # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
-  # look in /foo/bin/ for for gdk-pixbuf-config.
-  #
-  gdk_pixbuf_path="$PATH"
+  if test -n "$pkg_config" ; then
+    #
+    # the new way...
+    # run pkg-config based tests.
+    #
+    pkgs=''
+    ok="yes"
 
 
-  if test ! -z "$gtk_dir"; then
-    # canonicalize slashes.
-    foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
-    gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
-  fi
+    # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work.
+    # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work.
+    # If we don't have Gtk at all, then either will work.
 
 
-  if test ! -z "$gnome_dir"; then
-    # canonicalize slashes.
-    foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
-    gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
-  fi
+    if test "$have_gtk" = no -o "$have_gtk2" = yes; then
+      #
+      # we don't have Gtk; or we have Gtk 2.x.  Check for pixbuf 2.x.
+      #
+      pkg_check_version gdk-pixbuf-2.0      2.0.0
+      pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
+      have_gdk_pixbuf="$ok"
+      have_gdk_pixbuf2="$ok"
+    fi
 
 
-  AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path)
+    if test "$have_gtk" = no -o "$have_gtk2" = no; then
+      #
+      # we don't have Gtk; or we have Gtk 1.x.
+      # If we don't have pixbuf 2.x, then check for pixbuf 1.x.
+      #
+      if test "$have_gdk_pixbuf2" = no; then
+        pkgs=''
+        ok="yes"
+        pkg_check_version gdk-pixbuf      0.0
+        pkg_check_version gdk-pixbuf-xlib 0.0
+        have_gdk_pixbuf="$ok"
+      fi
+    fi
 
 
-  # If we found the gdk-pixbuf-config program, run it to get flags.
-  #
-  if test -n "$gdk_pixbuf_config" ; then
-    AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
-               [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`])
-    AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
-               [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`])
+    if test "$have_gdk_pixbuf" = yes; then
+      AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
+                 [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
+      AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
+                 [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
+    fi
     ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
     ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
   fi
 
     ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
     ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
   fi
 
+
+  if test "$have_gdk_pixbuf" = no; then
+    #
+    # the old way...
+    # run gdk-pixbuf-config based tests.
+    # note that we can't assume that the existence of "pkg-config" means
+    # that we don't have to look for gdk-pixbuf-config -- in Gnome 1.4,
+    # pkg-config exists, but doesn't know about pixbuf.
+    #
+
+    # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
+    # look in /foo/bin/ for for gdk-pixbuf-config.
+    #
+    gdk_pixbuf_path="$PATH"
+
+    if test ! -z "$gtk_dir"; then
+      # canonicalize slashes.
+      foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
+      gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
+    fi
+
+    if test ! -z "$gnome_dir"; then
+      # canonicalize slashes.
+      foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
+      gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
+    fi
+
+    AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path)
+
+    # If we found the gdk-pixbuf-config program, run it to get flags.
+    #
+    if test -n "$gdk_pixbuf_config" ; then
+      AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
+                [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`])
+      AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
+                [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`])
+
+      # note that "gdk-pixbuf-config --libs" produces a link line including
+      # -lgdk_pixbuf, but there's no way to get it to produce one that also
+      # includes -lgdk_pixbuf_xlib.  Since we don't know *exactly* what the
+      # name of the library will be, construct it with sed...
+      # M4 sucks!!
+      changequote(X,Y)
+      ac_cv_gdk_pixbuf_config_libs=`echo $ac_cv_gdk_pixbuf_config_libs | \
+       sed 's@ \(-lgdk_pixbuf\([-_a-zA-Z0-9.]*\)\) @ \1 -lgdk_pixbuf_xlib\2 @'`
+      changequote([,])
+
+      ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
+      ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
+    fi
+  fi
+
   ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
 
   ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
 
-  # check for header 1...
-  AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
+  if test "$have_gdk_pixbuf" = no; then
+    #
+    # we appear to have pixbuf; check for headers/libs to be sure.
+    #
 
 
-  # if that worked, check for header 2...
-  if test "$have_gdk_pixbuf" = yes; then
     have_gdk_pixbuf=no
     have_gdk_pixbuf=no
-    AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h, [have_gdk_pixbuf=yes])
+
+    # check for header A...
+    AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
+
+    # if that worked, check for header B...
+    if test "$have_gdk_pixbuf" = yes; then
+      have_gdk_pixbuf=no
+      gdk_pixbuf_halfassed=yes
+      AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
+                        [have_gdk_pixbuf=yes
+                         gdk_pixbuf_halfassed=no])
+
+      # yay, it has a new name in Gtk 2.x...
+      if test "$have_gdk_pixbuf" = no; then
+        have_gdk_pixbuf=no
+        gdk_pixbuf_halfassed=yes
+        AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
+                          [have_gdk_pixbuf=yes
+                           gdk_pixbuf_halfassed=no])
+      fi
+    fi
   fi
 
   CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
   fi
 
   CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
@@ -2644,24 +3013,26 @@ if test "$with_gdk_pixbuf" = yes; then
     # we have the headers, now check for the libraries
     have_gdk_pixbuf=no
     gdk_pixbuf_halfassed=yes
     # we have the headers, now check for the libraries
     have_gdk_pixbuf=no
     gdk_pixbuf_halfassed=yes
-    # library 1...
-    AC_CHECK_X_LIB(gdk_pixbuf, gdk_pixbuf_new_from_file,
-                   [have_gdk_pixbuf=yes], [true],
-                   $ac_gdk_pixbuf_config_libs)
-    # library 2...
+
+    # library A...
+    AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
+                   $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
+    # library B...
     if test "$have_gdk_pixbuf" = yes; then
     if test "$have_gdk_pixbuf" = yes; then
-      AC_CHECK_X_LIB(gdk_pixbuf_xlib, gdk_pixbuf_xlib_init,
+      have_gdk_pixbuf=no
+      AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
                      [have_gdk_pixbuf=yes
                      [have_gdk_pixbuf=yes
-                      gdk_pixbuf_halfassed=no],
-                     [true],
-                     $ac_gdk_pixbuf_config_libs)
+                      gdk_pixbuf_halfassed=no],,
+                     $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
     fi
   fi
 
   if test "$have_gdk_pixbuf" = yes; then
     INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
     fi
   fi
 
   if test "$have_gdk_pixbuf" = yes; then
     INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
-    XPM_LIBS="$ac_gdk_pixbuf_config_libs -lgdk_pixbuf -lgdk_pixbuf_xlib"
+    XPM_LIBS="$ac_gdk_pixbuf_config_libs"
     AC_DEFINE(HAVE_GDK_PIXBUF)
     AC_DEFINE(HAVE_GDK_PIXBUF)
+  else
+    have_gdk_pixbuf2=no
   fi
 fi
 
   fi
 fi
 
@@ -2676,9 +3047,7 @@ have_jpeg=no
 with_jpeg_req=unspecified
 jpeg_halfassed=no
 AC_ARG_WITH(jpeg,
 with_jpeg_req=unspecified
 jpeg_halfassed=no
 AC_ARG_WITH(jpeg,
-[  --with-jpeg             Include support for the JPEG library in some demos,
-                          which will make it possible for them to read JPEG
-                          files as well.],
+[  --with-jpeg             Include support for the JPEG library.],
   [with_jpeg="$withval"; with_jpeg_req="$withval"],
   [with_jpeg=yes])
 
   [with_jpeg="$withval"; with_jpeg_req="$withval"],
   [with_jpeg=yes])
 
@@ -3023,7 +3392,6 @@ fi
 
 if test "$have_gle" = yes; then
   GLE_EXES='$(GLE_EXES)'
 
 if test "$have_gle" = yes; then
   GLE_EXES='$(GLE_EXES)'
-  GLE_MEN='$(GLE_MEN)'
   GLE_KLUDGE="${tab}   "
 else
   GLE_KLUDGE="-${tab}   "
   GLE_KLUDGE="${tab}   "
 else
   GLE_KLUDGE="-${tab}   "
@@ -3058,22 +3426,80 @@ fi
 
 
 
 
 
 
-# After computing $HACK_CONF_DIR, make sure $GTK_ICONDIR has a value
+# After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
 # so that we know where to install the Gtk pixmaps.
 #
 # so that we know where to install the Gtk pixmaps.
 #
+# It should usually be "/usr/share/pixmaps/", but we can't just use
+# "$(prefix)/share/pixmaps" because that would usually result in
+# "/usr/X11R6/share/pixmaps/", which is wrong.  It needs to be the
+# Gnome/Gtk prefix, not the overall prefix.
+#
 if test -n "$GNOME_DATADIR" ; then
 if test -n "$GNOME_DATADIR" ; then
-  GTK_ICONDIR='$(GNOME_DATADIR)/pixmaps'
+  GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
 elif test "$have_gtk" = yes; then
 elif test "$have_gtk" = yes; then
-  # should this be "$(prefix)/share/pixmaps"? But /usr/X11R6/share/ is wrong...
-  GTK_ICONDIR='/usr/share/pixmaps'
+  if test -n "$pkg_config"; then
+    if test "$have_gtk2" = yes; then
+      GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+    else
+      GLADE_DATADIR=`$pkg_config --variable=prefix gtk+`
+    fi
+  else
+    GLADE_DATADIR=`$gtk_config --prefix`
+  fi
+  GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
 else
 else
-  GTK_ICONDIR=''
+  GLADE_DATADIR=''
+fi
+
+
+# Set PO_DATADIR to something sensible.
+#
+AC_MSG_CHECKING([for locale directory])
+if test -n "$GNOME_DATADIR" ; then
+  PO_DATADIR="$GNOME_DATADIR"
+elif test "$have_gtk" = yes; then
+  if test -n "$pkg_config"; then
+    if test "$have_gtk2" = yes; then
+      PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+    else
+      PO_DATADIR=`$pkg_config --variable=prefix gtk+`
+    fi
+  else
+    PO_DATADIR=`$gtk_config --prefix`
+  fi
+  PO_DATADIR="$PO_DATADIR/share"
+fi
+
+if test -z "$PO_DATADIR" ; then
+  #
+  # #### Total fucking kludge --
+  # Map /build/prefix/usr/X11R6/share/ to /build/prefix/usr/share/
+  # but of course we need to expand all the nested variables to do that...
+  #
+  dd=$datadir
+  eval dd=${dd}
+  eval dd=${dd}
+  eval dd=${dd}
+  eval dd=${dd}
+  eval dd=${dd}
+  PO_DATADIR=`echo $dd | sed 's@/X11R6/@/@'`
 fi
 
 fi
 
+AC_MSG_RESULT($PO_DATADIR/locale)
+
 
 # canonicalize slashes.
 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
 
 
 # canonicalize slashes.
 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
 
+# gcc 3.0 likes to issue this warning for every file:
+#
+# cc1: warning: changing search order for system directory "/usr/local/include"
+# cc1: warning:   as it has already been specified as a non-system directory
+#
+# Yay.  We can only avoid that by deleting "-I${prefix}/include" from the list.
+# Which *should* be totally redundant, and thus an ok thing to delete?
+#
+INCLUDES=`echo "$INCLUDES" | sed 's@ -I${prefix}/include@@g;'`
 
 
 ###############################################################################
 
 
 ###############################################################################
@@ -3119,14 +3545,16 @@ AC_SUBST(GL_UTIL_EXES)
 AC_SUBST(GL_MEN)
 AC_SUBST(GL_KLUDGE)
 AC_SUBST(GLE_EXES)
 AC_SUBST(GL_MEN)
 AC_SUBST(GL_KLUDGE)
 AC_SUBST(GLE_EXES)
-AC_SUBST(GLE_MEN)
 AC_SUBST(GLE_KLUDGE)
 AC_SUBST(GNOMEHELP_Y)
 AC_SUBST(GNOMEHELP_N)
 AC_SUBST(HACKDIR)
 AC_SUBST(GNOME_DATADIR)
 AC_SUBST(GLE_KLUDGE)
 AC_SUBST(GNOMEHELP_Y)
 AC_SUBST(GNOMEHELP_N)
 AC_SUBST(HACKDIR)
 AC_SUBST(GNOME_DATADIR)
-AC_SUBST(GTK_ICONDIR)
+AC_SUBST(GLADE_DATADIR)
+AC_SUBST(PO_DATADIR)
+AC_SUBST(GNOME_PANELDIR)
 AC_SUBST(HACK_CONF_DIR)
 AC_SUBST(HACK_CONF_DIR)
+AC_SUBST(GTK_EXTRA_OBJS)
 
 APPDEFAULTS=$ac_x_app_defaults
 AC_SUBST(APPDEFAULTS)
 
 APPDEFAULTS=$ac_x_app_defaults
 AC_SUBST(APPDEFAULTS)
@@ -3142,7 +3570,8 @@ AC_OUTPUT(Makefile
           hacks/Makefile
           hacks/glx/Makefile
           po/Makefile.in
           hacks/Makefile
           hacks/glx/Makefile
           po/Makefile.in
-          driver/XScreenSaver.ad)
+          driver/XScreenSaver.ad
+          driver/xscreensaver.kss)
 
 ###############################################################################
 #
 
 ###############################################################################
 #
@@ -3265,9 +3694,19 @@ elif test "$jurassic_gtk" = yes ; then
   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
 
 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
   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;"
-  warn2 "Motif will be used instead."
+  warnL "Use of Gtk was requested, but it wasn't found."
+  if test "$have_motif" = yes; then
+    warn2 "Motif will be used instead."
+  fi
+fi
 
 
+if test "$gtk2_halfassed" != no ; then
+  warnL "GTK version $gtk2_halfassed was found, but at least one supporting"
+  warn2 "library ($gtk2_halfassed_lib) was not, so GTK 2.x can't be used."
+  v="$ac_gtk_version_string"
+  warn2 "GTK $v is also installed, so it will be used instead."
+  warn2 "Please read the above output and the \`config.log' file"
+  warn2 "for more details."
 fi
 
 
 fi
 
 
@@ -3307,6 +3746,12 @@ if test "$have_gtk" = yes ; then
   fi
 fi
 
   fi
 fi
 
+if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then
+  warn  "GTK is being used, but the GDK-Pixbuf library and/or"
+  warn2 "headers were not found.  That can't be good.  Please"
+  warn2 "install the GDK-Pixbuf development kit and re-configure."
+fi
+
 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
 
   preferred_lesstif=0.92
 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
 
   preferred_lesstif=0.92
@@ -3346,9 +3791,10 @@ if test "$with_gdk_pixbuf_req" = yes  -a "$have_gdk_pixbuf" = no; then
   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
 fi
 
   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
 fi
 
-if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no; then
+if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
+   test "$gdk_pixbuf_halfassed" = yes; then
 
 
-  if test "$with_xpm_req" = yes ; then
+  if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
     true
   elif test "$with_xpm_req" = no ; then
     warnL 'The XPM library is not being used.'
     true
   elif test "$with_xpm_req" = no ; then
     warnL 'The XPM library is not being used.'
@@ -3375,8 +3821,7 @@ if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no; then
   echo ''
   warn2 'Some of the demos will not be as colorful as they'
   warn2 'could be.  You should consider installing Pixbuf or'
   echo ''
   warn2 'Some of the demos will not be as colorful as they'
   warn2 'could be.  You should consider installing Pixbuf or'
-  warn2 'XPM and re-running configure.  (Remember to delete'
-  warn2 'the config.cache file first.)  The Pixbuf library is'
+  warn2 'XPM and re-running configure.  The Pixbuf library is'
   warn2 'a part of GNOME.  The XPM library comes with most'
   warn2 'X11 installations; you can also find it at the X11'
   warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
   warn2 'a part of GNOME.  The XPM library comes with most'
   warn2 'X11 installations; you can also find it at the X11'
   warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
@@ -3404,7 +3849,13 @@ if test "$have_jpeg" = no ; then
     echo ''
   fi
 
     echo ''
   fi
 
-  warn2 "This means the \`webcollage' program will be much slower."
+  if test "$have_gdk_pixbuf" = no ; then
+    warn2 "This means that it won't be possible for the image-manipulating"
+    warn2 "display modes to load files from disk; and it also means that"
+    warn2 "the \`webcollage' program will be much slower."
+  else
+    warn2 "This means the \`webcollage' program will be much slower."
+  fi
 fi
 
 
 fi
 
 
@@ -3418,13 +3869,14 @@ if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
     warn2 "Make sure you are using version $preferred_mesagl or newer."
 
   elif test \! "$ac_mesagl_version" -gt 2006; then
     warn2 "Make sure you are using version $preferred_mesagl or newer."
 
   elif test \! "$ac_mesagl_version" -gt 2006; then
-    warnL "MesaGL version $mgv is being used.  MesaGL 2.6 and earlier"
-    warn2 "have a security bug.  It is strongly recommended that you"
-    warn2 "upgrade to at least version $preferred_mesagl."
+    warnL "MesaGL version number is $mgv --"
+    warn2 "MesaGL 2.6 and earlier have a security bug.  It is strongly"
+    warn2 "recommended that you upgrade to at least version $preferred_mesagl."
 
   elif test \! "$ac_mesagl_version" -gt 3003; then
 
   elif test \! "$ac_mesagl_version" -gt 3003; then
-    warnL "MesaGL version $mgv is being used.  That version has some"
-    warn2 "bugs; it is recommended that you upgrade to $pgl or newer."
+    warnL "MesaGL version number is $mgv --"
+    warn2 "MesaGL 3.3 and earlier have some bugs; it is recommended"
+    warn2 "that you upgrade to $pgl or newer."
   fi
 fi
 
   fi
 fi
 
@@ -3448,8 +3900,7 @@ if test "$have_gl" = no ; then
   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'
-  warn2 're-running configure.  (Remember to delete the'
-  warn2 "config.cache file first.)  If your vendor doesn't ship"
+  warn2 "re-running configure.  If your vendor doesn't ship"
   warn2 'their own implementation of OpenGL, you can get a free'
   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
   warn2 'info, see <http://www.opengl.org/>.'
   warn2 'their own implementation of OpenGL, you can get a free'
   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
   warn2 'info, see <http://www.opengl.org/>.'
@@ -3458,6 +3909,11 @@ fi
 
 
 if test "$have_gl" = yes -a "$have_gle" = no ; then
 
 
 if test "$have_gl" = yes -a "$have_gle" = no ; then
+
+ # nobody cares about this; don't print the warning unless it was
+ # requested and not found, or halfway-found.
+ if test "$with_gle_req" = yes -o "$gle_halfassed" = yes ; then
+
   if test "$with_gle_req" = yes ; then
     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
     warn2 'it was not found (though the OpenGL library was found, and'
   if test "$with_gle_req" = yes ; then
     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
     warn2 'it was not found (though the OpenGL library was found, and'
@@ -3481,11 +3937,11 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
   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'
   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/>.'
+  warn2 'installing GLE and re-running configure.  You can find the'
+  warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
+  warn2 'OpenGL info, see <http://www.opengl.org/>.'
 
 
+ fi
 fi
 
 
 fi
 
 
@@ -3601,7 +4057,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 (140+ different executables) will"
+  echo "      The various graphics demos (150+ different executables) will"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"