From http://www.jwz.org/xscreensaver/xscreensaver-5.37.tar.gz
[xscreensaver] / configure.in
index 7559754d5c89c658714445dc22366a704899dd59..74235ab5a940c4cb77d8f3a8f04ab2af7c2c5700 100644 (file)
-# configure.in --- xscreensaver, Copyright (c) 1997-2004 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2014 Jamie Zawinski.
 #
 
 AC_PREREQ(2.52)
 AC_INIT(driver/subprocs.c)
-AC_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS([config.h])
 
 echo "current directory: `pwd`"
 echo "command line was: $0 $@"
 
+###############################################################################
+#
+#       Autoheader stuff
+#
+###############################################################################
+
+AH_TOP([
+/* config.h.in --- xscreensaver, Copyright (c) 1991-2014 Jamie Zawinski.
+ *
+ *  The best way to set these parameters is by running the included `configure'
+ *  script.  That examines your system, and generates `config.h' from 
+ *  `config.h.in'.
+ *
+ *  If something goes very wrong, you can edit `config.h' directly, but beware
+ *  that your changes will be lost if you ever run `configure' again.
+ */
+])
+
+AH_TEMPLATE([HAVE_READ_DISPLAY_EXTENSION],
+           [Define this if you have the XReadDisplay extension (I think
+             this is an SGI-only thing; it's in
+             <X11/extensions/readdisplay.h>.) A few of the screenhacks will
+             take advantage of this if it's available.])
+
+AH_TEMPLATE([HAVE_XHPDISABLERESET],
+           [Define this if you have the XHPDisableReset function (an HP only
+           thing which allows the Ctrl-Sh-Reset key sequence to be
+           temporarily disabled.)])
+
+# This only ever existed in X11R4 and X11R5.
+#AH_TEMPLATE([HAVE_XIDLE_EXTENSION],
+#          [Define this if you have the XIDLE extension installed. If you
+#          have the XIDLE extension, this is recommended.  (You have this
+#          extension if the file /usr/include/X11/extensions/xidle.h
+#          exists.) Turning on this flag lets XScreenSaver work better with
+#          servers which support this extension; but it will still work
+#          with servers which do not suport it, so it's a good idea to
+#          compile in support for it if you can.])
+
+# Using this extension will crash your X server and make fading not work.
+#AH_TEMPLATE([HAVE_MIT_SAVER_EXTENSION],
+#          [Define this if you have the MIT-SCREEN-SAVER extension
+#            installed.  See the caveats about this extension, above.
+#            (It's available if /usr/include/X11/extensions/scrnsaver.h
+#            exists.)])
+
+# This only ever existed on SGI hardware.
+#AH_TEMPLATE([HAVE_SGI_SAVER_EXTENSION],
+#          [Define this if you have the SGI SCREEN_SAVER extension.  This is
+#          standard on Irix systems, and not available elsewhere.])
+
+# This only ever existed on SGI hardware.
+#AH_TEMPLATE([HAVE_SGI_VC_EXTENSION],
+#          [Define this if you have the SGI-VIDEO-CONTROL extension.  This
+#          is standard on Irix systems, and not available elsewhere.])
+
+AH_TEMPLATE([HAVE_DPMS_EXTENSION],
+           [Define this if you have the XDPMS extension.  This is standard
+           on sufficiently-recent XFree86 systems, and possibly elsewhere. 
+           (It's available if the file /usr/include/X11/extensions/dpms.h
+           exists.)])
+
+AH_TEMPLATE([HAVE_XF86VMODE],
+           [Define this if you have the functions XF86VidModeGetModeLine()
+           and XF86VidModeGetViewPort(), in support of virtual desktops
+           where the X server's root window is bigger than the actual
+           screen.  This is an XFree86 thing, and probably doesn't exist
+           elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/xf86vmode.h exists.)])
+
+AH_TEMPLATE([HAVE_XF86VMODE_GAMMA],
+           [Define this if you have the functions XF86VidModeGetGamma() and
+           XF86VidModeSetGamma(), which allow clients to change the gamma
+           response of the monitor.  This is an XFree86 4.0.x thing, and
+           probably doesn't exist elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/xf86vmode.h exists and has stuff about
+           gamma in it.)])
+
+AH_TEMPLATE([HAVE_XF86VMODE_GAMMA_RAMP],
+           [Define this if you have the functions XF86VidModeGetGammaRamp()
+           and XF86VidModeSetGammaRamp(), which provide finer-grained
+           control than XF86VidMode[GS]etGamma().  These appeared in
+           XFree86 4.1.0.])
+
+AH_TEMPLATE([HAVE_XINERAMA],
+           [Define this if you have the Xinerama extension.  This is
+           standard on sufficiently-recent XFree86 systems, and possibly
+           elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/Xinerama.h exists.)])
+
+AH_TEMPLATE([HAVE_XINPUT],
+           [Define this if you have the Xinput extension.  This is
+           standard since X11R5, and is thus almost everywhere.
+           (It's available if the file /usr/include/X11/extensions/XInput.h
+           exists.)])
+
+AH_TEMPLATE([HAVE_XF86MISCSETGRABKEYSSTATE],
+           [Define this if you have the XF86MiscSetGrabKeysState function
+           (which allows the Ctrl-Alt-KP_star and Ctrl-Alt-KP_slash key
+           sequences to be temporarily disabled.  Sadly, it doesn't affect
+           Ctrl-Alt-BS or Ctrl-Alt-F1.)])
+
+AH_TEMPLATE([HAVE_RANDR],
+           [Define this if you have the Resize and Rotate extension.
+           This is standard on sufficiently-recent XFree86 systems, and
+           possibly elsewhere.  (It's available if the file
+           /usr/include/X11/extensions/Xrandr.h exists.)])
+
+AH_TEMPLATE([HAVE_RANDR_12],
+           [Define this if the RANDR library is version 1.2 or newer.])
+
+AH_TEMPLATE([HAVE_PROC_INTERRUPTS],
+           [Define this if you have a Linux-like /proc/interrupts file which
+           can be examined to determine when keyboard activity has
+           occurred.])
+
+AH_TEMPLATE([HAVE_MOTIF],[Define this if you have Motif.])
+
+AH_TEMPLATE([HAVE_XMCOMBOBOX],
+           [Define this if you have the XmComboBox Motif widget (Motif 2.0.)])
+
+AH_TEMPLATE([HAVE_GTK],[Define this if you have Gtk (any version.)])
+AH_TEMPLATE([HAVE_GTK2],[Define this if you have Gtk 2.x.])
+
+AH_TEMPLATE([HAVE_CRAPPLET],
+           [Define this if you have Gnome and want to build support for the
+           xscreensaver control panel in the Gnome Control Center
+           (gnomecc).  (This is needed only with Gtk 1.x.)])
+
+AH_TEMPLATE([HAVE_CRAPPLET_IMMEDIATE],
+           [Define this if HAVE_CRAPPLET is defined, and the function
+           capplet_widget_changes_are_immediate() is available.])
+
+AH_TEMPLATE([HAVE_XML],[Define this if you have the XML library.])
+
+AH_TEMPLATE([HAVE_OLD_XML_HEADERS],
+           [Define this if you have the XML library headers in their old,
+           non-namespaced location (you lack the gnome-xml/libxml symlink)])
+
+AH_TEMPLATE([HAVE_XPM],
+           [Define this if you have the XPM library installed.  Some of the
+           demos can make use of this if it is available.])
+
+AH_TEMPLATE([HAVE_GDK_PIXBUF],
+           [Define this if you have the GDK_Pixbuf library installed.  Some
+           of the demos can make use of this if it is available.])
+
+AH_TEMPLATE([HAVE_GDK_PIXBUF_APPLY_EMBEDDED_ORIENTATION],
+           [Define this if you have the gdk_pixbuf_apply_embedded_orientation
+           function (gdk-pixbuf 2.12).])
+
+AH_TEMPLATE([HAVE_JPEGLIB],
+           [Define this if you have the Independent JPEG Group's JPEG
+           library installed.  Some of the demos can make use of this if it
+           is available.])
+
+AH_TEMPLATE([HAVE_XMU],
+           [Define this if you have the Xmu library.  This is standard part
+           of X, and if your vendor doesn't ship it, you should report that
+           as a bug.])
+
+AH_TEMPLATE([HAVE_XUTF8DRAWSTRING],
+           [Define this if you have the function Xutf8DrawString().])
+
+AH_TEMPLATE([HAVE_XFT],
+           [Define this if you have libXft2.])
+
+AH_TEMPLATE([HAVE_GL],
+           [Define this if you have OpenGL.  Some of the demos require it,
+           so if you don't have it, then those particular demos won't be
+           built.  (This won't affect the screen saver as a whole.)])
+
+AH_TEMPLATE([HAVE_MESA_GL],
+           [Define this if you have OpenGL, but it's the MesaGL variant. 
+           (The libraries have different names.) (HAVE_GL should be defined
+           too.)])
+
+AH_TEMPLATE([HAVE_GLBINDTEXTURE],
+           [Define this if your version of OpenGL has the glBindTexture()
+           routine.  This is the case for OpenGL 1.1, but not for OpenGL
+           1.0.])
+
+AH_TEMPLATE([HAVE_GLE],
+           [Define this if you have the -lgle and -lmatrix libraries (GL 
+           extrusion.)])
+
+AH_TEMPLATE([HAVE_GLE3],[Define this if you have the -lgle from GLE version 3])
+
+AH_TEMPLATE([HAVE_JWZGLES],[Define this to target the OpenGL ES 1.x API
+           instead of OpenGL 1.3.])
+
+AH_TEMPLATE([HAVE_XSHM_EXTENSION],
+           [Define this if you have the X Shared Memory Extension.])
+
+AH_TEMPLATE([HAVE_DOUBLE_BUFFER_EXTENSION],
+           [Define this if you have the X Double Buffer Extension.])
+
+AH_TEMPLATE([FORTUNE_PROGRAM],
+           [Some screenhacks like to run an external program to generate
+           random pieces of text; set this to the one you like.  Note that
+           this is just the default; X resources can be used to override
+           it.])
+
+AH_TEMPLATE([PASSWD_HELPER_PROGRAM],
+           [Set the name of the password helper program, if any])
+
+AH_TEMPLATE([NO_LOCKING],
+           [Define this to remove the option of locking the screen at all.])
+
+AH_TEMPLATE([ALLOW_ROOT_PASSWD],
+           [Define this to allow the root password to unlock the screen.])
+
+AH_TEMPLATE([HAVE_KERBEROS],
+           [Define this if you want to use Kerberos authentication to
+           lock/unlock the screen instead of your local password.  This
+           currently uses Kerberos V4, but a V5 server with V4
+           compatibility will work.  WARNING: DO NOT USE AFS string-to-key
+           passwords with this option. This option currently *only* works
+           with standard Kerberos des_string_to_key.  If your password is
+           an AFS password and not a kerberos password, it will not
+           authenticate properly. See the comments in driver/kpasswd.c for
+           more information if you need it.])
+
+AH_TEMPLATE([HAVE_KERBEROS5],
+           [Define this if you have Kerberos 5, meaning we need to use the
+           Kerberos 4 compatibility layer.])
+
+AH_TEMPLATE([HAVE_PAM],
+           [Define this if you want to use PAM (Pluggable Authentication
+           Modules) to lock/unlock the screen, instead of standard
+           /etc/passwd authentication.])
+
+AH_TEMPLATE([PAM_SERVICE_NAME],
+           [If PAM is being used, this is the name of the PAM service that
+           xscreensaver will authenticate as.  The default is
+           "xscreensaver", which means that the PAM library will look for
+           an "xscreensaver" line in /etc/pam.conf, or (on recent Linux
+           systems) will look for a file called /etc/pam.d/xscreensaver. 
+           Some systems might already have a PAM installation that is
+           configured for xlock, so setting this to "xlock" would also work
+           in that case.])
+
+AH_TEMPLATE([HAVE_PAM_FAIL_DELAY],
+           [Define this if you have pam_fail_delay function.
+           see driver/passwd-pam.c.])
+
+AH_TEMPLATE([PAM_CHECK_ACCOUNT_TYPE],
+            [Whether PAM should check the result of account modules
+           when authenticating.  Only do this if you have account
+           configured properly on your system.])
+
+AH_TEMPLATE([PAM_STRERROR_TWO_ARGS],
+           [Define if you have PAM and pam_strerror() requires two
+           arguments.])
+
+AH_TEMPLATE([HAVE_SIGTIMEDWAIT],
+           [Define to 1 if you have the `sigtimedwait' function.])
+
+AH_TEMPLATE([HAVE_SHADOW_PASSWD],
+           [Define this if your system uses 'shadow' passwords, that is, the
+           passwords live in /etc/shadow instead of /etc/passwd, and one
+           reads them with getspnam() instead of getpwnam().  (Note that
+           SCO systems do some random other thing; others might as well. 
+           See the ifdefs in driver/passwd-pwent.c if you're having trouble
+           related to reading passwords.)])
+
+AH_TEMPLATE([HAVE_ENHANCED_PASSWD],
+           [Define this if your system is Digital or SCO Unix with so-called
+           ``Enhanced Security'', that is, the passwords live in
+           /tcb/files/auth/<x>/<xyz> instead of in /etc/passwd, and one
+           reads them with getprpwnam() instead of getpwnam().])
+
+AH_TEMPLATE([HAVE_ADJUNCT_PASSWD],
+           [Define this if your system is Solaris with ``adjunct'' passwords
+           (this is the version where one gets at the passwords with
+           getpwanam() instead of getpwnam().) I haven't tested this one,
+           let me know if it works.])
+
+AH_TEMPLATE([HAVE_HPUX_PASSWD],
+           [Define this if you are running HPUX with so-called ``Secure
+           Passwords'' (if you have /usr/include/hpsecurity.h, you probably
+           have this.) I haven't tested this one, let me know if it works.])
+
+AH_TEMPLATE([HAVE_SYSLOG],
+           [Define this if you the openlog(), syslog(), and closelog()
+           functions.  This is used for logging failed login attempts.])
+
+AH_TEMPLATE([HAVE_ICMP],
+           [Define this if you do pings with a `struct icmp' and an
+            `icmp_id' slot.])
+
+AH_TEMPLATE([HAVE_ICMPHDR],
+           [Define this if you do pings with a `struct icmphdr' and an
+            `un.echo.id' slot.])
+
+AH_TEMPLATE([HAVE_GETIFADDRS],
+           [Define this if you have the getifaddrs() function.])
+
+AH_TEMPLATE([HAVE_FORKPTY],
+           [Define this if you have the 'forkpty' function:
+            This allows 'phosphor' and 'apple2' to run curses-based
+            programs, or be used as terminal windows.])
+
+AH_TEMPLATE([HAVE_GETTIMEOFDAY],
+           [Define this if you have the gettimeofday function.])
+
+AH_TEMPLATE([GETTIMEOFDAY_TWO_ARGS],
+           [Define this if gettimeofday() takes two arguments.])
+
+AH_TEMPLATE([XPointer],
+           [Define this to void* if you're using X11R4 or earlier.])
+
+AH_TEMPLATE([HAVE_PTHREAD],
+           [Define this if your system supports POSIX threads.])
+
+AH_TEMPLATE([HAVE_RECORD_ANIM],
+           [Define this to enable recording of videos.])
 
 # After checking to see that --srcdir is correct (which AC_INIT does)
 # check for some random other files that come later in the tar file,
 # to make sure everything is here.
 #
-for d in driver utils hacks hacks/glx ; do
+for d in utils jwxyz hacks hacks/glx driver ; do
   f=$srcdir/$d/Makefile.in
   if test \! -r $f ; then
     echo ""
@@ -24,14 +341,53 @@ for d in driver utils hacks hacks/glx ; do
   fi
 done
 
+###############################################################################
+#
+#       Query AX_PTHREAD, and figure out which compiler gets used.
+#
+###############################################################################
+
+AC_DEFUN([AC_PROG_CC_PTHREAD],
+ [have_pthread=no
+  with_pthread_req=unspecified
+
+  # AX_PTHREAD is from the GNU Autoconf Archive.
+  # https://savannah.gnu.org/projects/autoconf-archive/
+  m4_include(ax_pthread.m4)
+
+  # This affects CC, LIBS, and CFLAGS, instead of defining new variables.
+
+  AC_ARG_WITH([pthread],
+    [  --with-pthread          Enables POSIX threads, for SMP support.],
+    [with_pthread="$withval"; with_pthread_req="$withval"],
+    [with_pthread=yes])
+
+  if test "$with_pthread" = yes; then
+    # AX_PTHREAD might want a different compiler.
+    AX_PTHREAD(
+     [if test "$CC" = "$PTHREAD_CC" -o -z "$ac_original_cc"; then
+        have_pthread=yes
+      else
+        ac_prog_cc_no_pthread=yes
+      fi
+    ])
+
+    if test "$have_pthread" = yes; then
+      AC_DEFINE([HAVE_PTHREAD])
+      CC=$PTHREAD_CC
+    fi
+  fi
+])
+
+
 ###############################################################################
 #
 #       Function to figure out how to run the compiler.
 #
 ###############################################################################
 
-AC_DEFUN(AC_PROG_CC_ANSI,
- [AC_PROG_CC
+AC_DEFUN([AC_PROG_CC_ANSI],
+ [AC_REQUIRE([AC_PROG_CC])
 
   if test -z "$GCC"; then
     # not using GCC
@@ -74,10 +430,10 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
-    CC="$CC -pedantic -Wall -Wstrict-prototypes -Wnested-externs"
+    CC="$CC -pedantic -Wall -Wstrict-prototypes -Wnested-externs -Wmissing-prototypes"
     OBJCC="$OBJCC -Wall"
-    # supposedly gcc 3.4 will have "-Wdeclaration-after-statement"
-    # and then perhaps we can do without -pedantic?
+    # As of gcc 3.4, we have "-Wdeclaration-after-statement"
+    # and so perhaps now we can do without -pedantic?
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
@@ -97,7 +453,42 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 
 ###############################################################################
 #
-#       Functions to figure out how to disable // comments in ANSI C code.
+#       Check for availability of various gcc command-line options.
+#
+###############################################################################
+
+AC_DEFUN([AC_CHECK_GCC_ARG],
+ [if test -n "$GCC"; then
+   AC_CACHE_CHECK([whether gcc accepts [$2]],
+     ac_cv_gcc_accepts_[$1],
+    [rm -rf conftest.$ac_ext
+     touch conftest.$ac_ext
+     if ( ( gcc -c [$2] conftest.$ac_ext -o/dev/null >/dev/null ) 2>&1 | \
+          grep unrecognized >/dev/null ); then
+       ac_cv_gcc_accepts_[$1]=no
+     else
+       ac_cv_gcc_accepts_[$1]=yes
+       CC="$CC [$2]"
+     fi])
+   ac_gcc_accepts_[$1]="$ac_cv_gcc_accepts_[$1]"
+  fi
+])
+
+AC_DEFUN([AC_NO_LONG_STRING_WARNINGS],
+         [AC_CHECK_GCC_ARG(no_overlength, -Wno-overlength-strings)])
+
+AC_DEFUN([AC_NO_MISPLACED_DECLARATIONS],
+         [AC_CHECK_GCC_ARG(no_decl_after, -Wdeclaration-after-statement)])
+
+# Need to disable Objective C extensions in ANSI C on MacOS X to work
+# around an Apple-specific gcc bug.
+#
+AC_DEFUN([AC_NO_OBJECTIVE_C],
+         [AC_CHECK_GCC_ARG(no_cpp_precomp, -no-cpp-precomp)])
+
+###############################################################################
+#
+#       Function to figure out how to disable // comments in ANSI C code.
 #
 #       (With recent gcc, this is done with "-std=c89".  With older gcc, this
 #       is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to
@@ -115,21 +506,19 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 #
 ###############################################################################
 
-AC_DEFUN(AC_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 | \
-          grep unrecognized >/dev/null ); then
-       ac_cv_gcc_accepts_std=no
-     else
-       ac_cv_gcc_accepts_std=yes
-     fi])
-   ac_gcc_accepts_std="$ac_cv_gcc_accepts_std"
-  fi
+AC_DEFUN([AC_GCC_ACCEPTS_STD], [
+  case "$host" in
+    *-darwin* )
+      # Fucking Apple let // comments sneak into OpenGL headers, so
+      # we *must* allow // comments when compiling on Mac OS 10.6!  FUCK!
+    ;;
+   *)
+     AC_CHECK_GCC_ARG(std, -std=c89)
+   ;;
+  esac
 ])
 
-AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
+AC_DEFUN([AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE],
  [if test -n "$GCC"; then
    AC_GCC_ACCEPTS_STD
    AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
@@ -152,42 +541,11 @@ AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
      # before they were in the ANSI C 99 spec...  (gcc 2.96 permits //
      # with -std=gnu89 but not with -std=c89.)
      #
-     CC="$CC -std=c89 -U__STRICT_ANSI__"
-   else
-     # The old way:
-     CC="$CC -Wp,-lang-c89"
-   fi
-  fi
-])
-
-
-###############################################################################
-#
-#       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"
+     # $CC already contains "-std=c89" via AC_GCC_ACCEPTS_STD
+     CC="$CC -U__STRICT_ANSI__"
+#   else
+#     # The old way:
+#     CC="$CC -Wp,-lang-c89"
    fi
   fi
 ])
@@ -199,7 +557,7 @@ AC_DEFUN(AC_NO_OBJECTIVE_C,
 #
 ###############################################################################
 
-AC_DEFUN(AC_PROG_INSTALL_DIRS,
+AC_DEFUN([AC_PROG_INSTALL_DIRS],
  [AC_CACHE_CHECK([whether "\${INSTALL} -d" creates intermediate directories],
     ac_cv_install_d_creates_dirs,
     [ac_cv_install_d_creates_dirs=no
@@ -250,7 +608,7 @@ AC_DEFUN(AC_PROG_INSTALL_DIRS,
 #
 ###############################################################################
 
-AC_DEFUN(AC_GETTIMEOFDAY_ARGS,
+AC_DEFUN([AC_GETTIMEOFDAY_ARGS],
  [AC_MSG_CHECKING(how to call gettimeofday)
   AC_CACHE_VAL(ac_cv_gettimeofday_args,
    [AC_TRY_COMPILE([#include <stdlib.h>
@@ -289,7 +647,7 @@ changequote(X,Y)
 perl_version_cmd='print $]'
 changequote([,])
 
-AC_DEFUN(AC_PROG_PERL,
+AC_DEFUN([AC_PROG_PERL],
  [AC_PATH_PROGS(PERL, [perl5 perl],,)
   if test -z "$PERL" ; then
     PERL_VERSION=0
@@ -307,7 +665,7 @@ AC_DEFUN(AC_PROG_PERL,
 #
 ###############################################################################
 
-AC_DEFUN(AC_DEMAND_BC,
+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
@@ -327,7 +685,7 @@ AC_DEFUN(AC_DEMAND_BC,
 #
 ###############################################################################
 
-AC_DEFUN(AC_CHECK_ICMP,
+AC_DEFUN([AC_CHECK_ICMP],
  [AC_CACHE_CHECK([for struct icmp], ac_cv_have_icmp,
   [AC_TRY_COMPILE([#include <stdlib.h>
                    #include <stdio.h>
@@ -370,7 +728,7 @@ AC_DEFUN(AC_CHECK_ICMP,
    AC_DEFINE(HAVE_ICMP)
  fi])
 
-AC_DEFUN(AC_CHECK_ICMPHDR,
+AC_DEFUN([AC_CHECK_ICMPHDR],
  [AC_CACHE_CHECK([for struct icmphdr], ac_cv_have_icmphdr,
   [AC_TRY_COMPILE([#include <stdlib.h>
                    #include <stdio.h>
@@ -418,7 +776,7 @@ AC_DEFUN(AC_CHECK_ICMPHDR,
 # 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 2>/dev/null
@@ -435,10 +793,24 @@ EOF
     rm -fr conftestdir
   fi])
 
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
+###############################################################################
+#
+#       Handle the --with-x-app-defaults option HERE
+#
+###############################################################################
+
+AC_ARG_WITH(x-app-defaults,[],
+       [ac_cv_x_app_defaults="$withval"],
+       [eval ac_x_app_defaults="$withval"])
+
+
+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/share/X11/app-defaults                 \
+                                                \
     /usr/X11/lib/app-defaults                   \
     /usr/X11R6/lib/app-defaults                 \
     /usr/X11R6/lib/X11/app-defaults             \
@@ -452,6 +824,8 @@ AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
     /usr/lib/X11R5/app-defaults                 \
     /usr/lib/X11R4/app-defaults                 \
                                                 \
+    /etc/X11/app-defaults                       \
+                                                \
     /usr/local/X11/lib/app-defaults             \
     /usr/local/X11R6/lib/app-defaults           \
     /usr/local/X11R5/lib/app-defaults           \
@@ -494,14 +868,16 @@ AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
   done
 ])
 
-AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
+AC_DEFUN([AC_PATH_X_APP_DEFAULTS],
   [AC_REQUIRE_CPP()
     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
-     [AC_PATH_X_APP_DEFAULTS_XMKMF
+     [# skip this, it's always wrong these days.
+      #  AC_PATH_X_APP_DEFAULTS_XMKMF
       if test x"$ac_x_app_defaults" = x; then
-        AC_PATH_X_APP_DEFAULTS_DIRECT
+        true AC_PATH_X_APP_DEFAULTS_DIRECT
       fi
       if test x"$ac_x_app_defaults" = x; then
+        /bin/echo -n 'fallback: '
         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
       else
         # Record where we found app-defaults for the cache.
@@ -510,7 +886,7 @@ AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
     eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
 
 
-AC_DEFUN(AC_XPOINTER,
+AC_DEFUN([AC_XPOINTER],
  [AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
                  [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
                                    [XPointer foo = (XPointer) 0;],
@@ -524,7 +900,7 @@ AC_DEFUN(AC_XPOINTER,
 # Random special-cases for X on certain pathological OSes.
 # You know who you are.
 #
-AC_DEFUN(AC_X_RANDOM_PATHS,
+AC_DEFUN([AC_X_RANDOM_PATHS],
  [case "$host" in
     *-hpux*)
 
@@ -656,7 +1032,33 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
     ;;
   esac])
 
+AC_DEFUN([AC_CHECK_GETIFADDRS],
+ [AC_CACHE_CHECK([for getifaddrs], ac_cv_have_getifaddrs,
+  [AC_TRY_COMPILE([#include <stdlib.h>
+                   #include <unistd.h>
+                   #include <arpa/inet.h>
+                   #include <ifaddrs.h>],
+                  [struct ifaddrs *ifa;
+                   getifaddrs (&ifa);
+                   ifa->ifa_next = 0;
+                   ifa->ifa_addr->sa_family = 0;],
+                  [ac_cv_have_getifaddrs=yes],
+                  [ac_cv_have_getifaddrs=no])])
+ if test "$ac_cv_have_getifaddrs" = yes ; then
+   AC_DEFINE(HAVE_GETIFADDRS)
+ fi])
 
+AC_DEFUN([AC_TYPE_SOCKLEN_T],
+ [AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t,
+  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+   #include <sys/types.h>
+   #include <sys/socket.h>]], [[
+   socklen_t socklen;
+   ]])],[ac_cv_type_socklen_t=yes],[ac_cv_type_socklen_t=no])])
+  if test "$ac_cv_type_socklen_t" != yes; then
+    AC_DEFINE(socklen_t, int,
+  [Define to `int' if <sys/types.h> or <sys/socket.h> does not define.])
+  fi])
 
 ###############################################################################
 #
@@ -666,34 +1068,37 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
 
 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
 #
-AC_DEFUN(AC_CHECK_X_HEADER, [
+AC_DEFUN([AC_CHECK_X_HEADER], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+  CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
   AC_CHECK_HEADER([$1],[$2],[$3],[$4])
   CPPFLAGS="$ac_save_CPPFLAGS"])
 
 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
 #
-AC_DEFUN(AC_EGREP_X_HEADER, [
+AC_DEFUN([AC_EGREP_X_HEADER], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+  CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
   AC_EGREP_HEADER([$1], [$2], [$3], [$4])
   CPPFLAGS="$ac_save_CPPFLAGS"])
 
 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
 #
-AC_DEFUN(AC_TRY_X_COMPILE, [
+AC_DEFUN([AC_TRY_X_COMPILE], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+  CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
   CPPFLAGS="$ac_save_CPPFLAGS"])
 
@@ -701,7 +1106,7 @@ AC_DEFUN(AC_TRY_X_COMPILE, [
 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
 # Use this sparingly; it probably doesn't work very well on X programs.
 #
-AC_DEFUN(AC_CHECK_X_LIB, [
+AC_DEFUN([AC_CHECK_X_LIB], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   ac_save_LDFLAGS="$LDFLAGS"
 #  ac_save_LIBS="$LIBS"
@@ -718,6 +1123,8 @@ AC_DEFUN(AC_CHECK_X_LIB, [
   # note: $X_LIBS includes $x_libraries
   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
 
+  CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
+  LDFLAGS=`eval eval eval eval eval eval eval eval eval echo $LDFLAGS`
   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
   CPPFLAGS="$ac_save_CPPFLAGS"
   LDFLAGS="$ac_save_LDFLAGS"
@@ -727,12 +1134,13 @@ AC_DEFUN(AC_CHECK_X_LIB, [
 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
 # (But not the -L directories!)
 #
-AC_DEFUN(AC_TRY_X_RUN, [
+AC_DEFUN([AC_TRY_X_RUN], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   if test \! -z "$includedir" ; then 
     CPPFLAGS="$CPPFLAGS -I$includedir"
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+  CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
   AC_TRY_RUN([$1], [$2], [$3], [$4])
   CPPFLAGS="$ac_save_CPPFLAGS"])
 
@@ -753,7 +1161,7 @@ AC_DEFUN(AC_TRY_X_RUN, [
 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
 # as appropriate.
 #
-AC_DEFUN(HANDLE_X_PATH_ARG, [
+AC_DEFUN([HANDLE_X_PATH_ARG], [
    case "$[$1]" in
     yes) ;;
     no)  ;;
@@ -802,11 +1210,23 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [
 ###############################################################################
 ###############################################################################
 
+# WTF!  autoconf emits this *way* too late.  Do it earlier.
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+
 # random compiler setup
 AC_CANONICAL_HOST
+
+ac_original_cc=$CC
+AC_PROG_CC
+AC_PROG_CC_PTHREAD # Needs ac_original_cc.
+
 AC_PROG_CC_ANSI
-AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
+AC_NO_LONG_STRING_WARNINGS
+AC_NO_MISPLACED_DECLARATIONS
 AC_NO_OBJECTIVE_C
+AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
@@ -827,7 +1247,7 @@ INSTALL_SCRIPT='${INSTALL}'
 
 # random libc stuff
 AC_HEADER_STDC
-AC_CHECK_HEADERS(unistd.h)
+AC_CHECK_HEADERS(unistd.h inttypes.h)
 AC_TYPE_MODE_T
 AC_TYPE_PID_T
 AC_TYPE_SIZE_T
@@ -836,10 +1256,16 @@ AC_HEADER_TIME
 AC_HEADER_SYS_WAIT
 AC_HEADER_DIRENT
 AC_GETTIMEOFDAY_ARGS
+AC_SYS_LARGEFILE
 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
+AC_CHECK_FUNCS(setlocale sqrtf)
+AC_CHECK_FUNCS(getaddrinfo)
+AC_CHECK_MEMBERS([struct sockaddr.sa_len],,, [[#include <sys/socket.h>]])
 AC_CHECK_ICMP
 AC_CHECK_ICMPHDR
+AC_CHECK_GETIFADDRS
+AC_TYPE_SOCKLEN_T
 AC_CHECK_HEADERS(crypt.h sys/select.h)
 AC_PROG_PERL
 
@@ -868,20 +1294,22 @@ AC_MSG_CHECKING(whether this is MacOS X)
 AC_MSG_RESULT($ac_macosx)
 
 
-
 ###############################################################################
 #
 #       Gettext support
 #
 ###############################################################################
 
-AC_PROG_INTLTOOL
+IT_PROG_INTLTOOL
 GETTEXT_PACKAGE=xscreensaver
-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
-AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE")
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
+                  [This is the name of the gettext package to use.])
+AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE",
+                  [This is the same as GETTEXT_PACKAGE, but for the glade
+                  generated code.])
 AC_SUBST(GETTEXT_PACKAGE)
 
-ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
+ALL_LINGUAS="da de es et fi fr hu it ja ko nb nl pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
 AM_GLIB_GNU_GETTEXT
 MKINSTALLDIRS="$INSTALL_DIRS"
 
@@ -961,30 +1389,26 @@ fi
 have_hackdir=yes
 with_hackdir_req=unspecified
 AC_ARG_WITH(hackdir,[
-Installation options:
 
+Installation options:
   --with-hackdir=DIR      Where to install the hundreds of demo executables.
-                          Default: `PREFIX/lib/xscreensaver/'],
+                          Default: `PREFIX/libexec/xscreensaver/'],
   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
 
 if test x"$with_hackdir" = xyes; then
-  HACKDIR='${exec_prefix}/lib/xscreensaver'
+  HACKDIR='${libexecdir}/xscreensaver'
 elif test x"$with_hackdir" = xno; then
   HACKDIR='${bindir}'
 else
-  # there must be a better way than this...
-  if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then
-    # absolute path
-    HACKDIR=$with_hackdir
-  else
-    # relative path
-    HACKDIR="\${exec_prefix}$with_hackdir"
-  fi
+  HACKDIR=$with_hackdir
 fi
 
 # canonicalize slashes.
 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
 
+# Expand HACKDIR as HACKDIR_FULL
+HACKDIR_FULL=`eval eval eval eval eval eval eval eval eval echo $HACKDIR`
+
 # This option used to be called --enable-subdir; make sure that is no longer
 # used, since configure brain-damagedly ignores unknown --enable options.
 
@@ -1001,6 +1425,7 @@ fi
 ###############################################################################
 #
 #       Handle the --with-configdir option
+#       Help for --with-x-app-defaults option added.
 #
 ###############################################################################
 
@@ -1009,16 +1434,15 @@ with_configdir_req=unspecified
 AC_ARG_WITH(configdir,
 [  --with-configdir=DIR    Where to install the data files that describe each
                           of the display modes to the GUI.
-                          Default: `GTK_PREFIX/control-center/screensavers/'
-                          or `PREFIX/lib/xscreensaver/config/', depending on
-                          whether GTK is available.
+                          Default: `PREFIX/share/xscreensaver/config/'
+  --with-x-app-defaults=DIR
+                          Where to install xscreensaver configuration file.
 ],
   [with_configdir="$withval"; with_configdir_req="$withval"],
   [with_configdir=yes])
 
 if test x"$with_configdir" = xyes; then
-  # filled in later...
-  HACK_CONF_DIR=''
+  HACK_CONF_DIR='${datadir}/xscreensaver/config'
 elif test x"$with_configdir" = xno; then
   echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
   exit 1
@@ -1042,91 +1466,37 @@ fi
 #
 ###############################################################################
 
-have_sgi=no
-with_sgi_req=unspecified
-AC_ARG_WITH(sgi-ext,
-[Except where noted, all of the --with options below can also take a
-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.  
-
-By default, support for each of these options will be built in, if the
-relevant library routines exist.  At run time, they will then be used
-only if the X server being used supports them.  Each --with option has
-a corresponding --without option, to override building support for them
-at all.
-
-Screen blanking and idle-detection options:
-
-  --with-sgi-ext          Include support for the SGI SCREEN_SAVER 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
-                     AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],,
-                    [#include <X11/Xlib.h>])
-
-elif test "$with_sgi" != no; then
-  echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
-  exit 1
-fi
-
-
-###############################################################################
+#have_sgi=no
+#with_sgi_req=unspecified
+#AC_ARG_WITH(sgi-ext,
+#[Except where noted, all of the --with options below can also take a
+#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.  
 #
-#       Check for the MIT-SCREEN-SAVER server extension.
+#By default, support for each of these options will be built in, if the
+#relevant library routines exist.  At run time, they will then be used
+#only if the X server being used supports them.  Each --with option has
+#a corresponding --without option, to override building support for them
+#at all.
 #
-###############################################################################
-
-have_mit=no
-with_mit_req=unspecified
-AC_ARG_WITH(mit-ext,
-[  --with-mit-ext          Include support for the MIT-SCREEN-SAVER 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 "$with_mit" = yes; then
-  AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes],,
-                    [#include <X11/Xlib.h>])
-
-  # Now check to see if it's really in the library; XF86Free-3.3 ships
-  # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
-  #
-  if test "$have_mit" = yes; then
-    AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
-
-    if test "$have_mit" = no; then
-      # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
-      # of in Xext.  Thank you master, may I have another.
-      AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
-                     [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
-                     [true], -lX11 -lXext -lm)
-    fi
-
-    if test "$have_mit" = no; then
-      # Double fuck!  Looks like some versions of XFree86 (whichever version
-      # it is that comes with RedHat Linux 2.0 -- I can't find a version 
-      # number) put this garbage in Xss instead of Xext.  Thank you master,
-      #  may I have another.
-      AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
-                     [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
-                     [true], -lX11 -lXext -lm)
-    fi
-
-  if test "$have_mit" = yes; then
-    AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
-  fi
-
-  fi
-
-elif test "$with_mit" != no; then
-  echo "error: must be yes or no: --with-mit-ext=$with_mit"
-  exit 1
-fi
+#Screen blanking and idle-detection options:
+#
+#  --with-sgi-ext          Include support for the SGI SCREEN_SAVER 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
+#                     AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],,
+#                    [#include <X11/Xlib.h>])
+#
+#elif test "$with_sgi" != no; then
+#  echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
+#  exit 1
+#fi
 
 
 ###############################################################################
@@ -1135,23 +1505,23 @@ fi
 #
 ###############################################################################
 
-have_xidle=no
-with_xidle_req=unspecified
-AC_ARG_WITH(xidle-ext,
-[  --with-xidle-ext        Include support for the XIDLE 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
-                     AC_DEFINE(HAVE_XIDLE_EXTENSION)],,
-                    [#include <X11/Xlib.h>])
-elif test "$with_xidle" != no; then
-  echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
-  exit 1
-fi
+#have_xidle=no
+#with_xidle_req=unspecified
+#AC_ARG_WITH(xidle-ext,
+#[  --with-xidle-ext        Include support for the XIDLE 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
+#                     AC_DEFINE(HAVE_XIDLE_EXTENSION)],,
+#                    [#include <X11/Xlib.h>])
+#elif test "$with_xidle" != no; then
+#  echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
+#  exit 1
+#fi
 
 
 ###############################################################################
@@ -1160,37 +1530,37 @@ fi
 #
 ###############################################################################
 
-have_sgivc=no
-with_sgivc_req=unspecified
-AC_ARG_WITH(sgivc-ext,
-[  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL 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
-  AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],,
-                    [#include <X11/Xlib.h>])
-
-  # if that succeeded, then check for the -lXsgivc
-  if test "$have_sgivc" = yes; then
-    have_sgivc=no
-    AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
-                  [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
-                  -lXext -lX11)
-  fi
-
-  # if that succeeded, then we've really got it.
-  if test "$have_sgivc" = yes; then
-    AC_DEFINE(HAVE_SGI_VC_EXTENSION)
-  fi
-
-elif test "$with_sgivc" != no; then
-  echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
-  exit 1
-fi
+#have_sgivc=no
+#with_sgivc_req=unspecified
+#AC_ARG_WITH(sgivc-ext,
+#[  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL 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
+#  AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],,
+#                    [#include <X11/Xlib.h>])
+#
+#  # if that succeeded, then check for the -lXsgivc
+#  if test "$have_sgivc" = yes; then
+#    have_sgivc=no
+#    AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
+#                  [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
+#                  -lXext -lX11)
+#  fi
+#
+#  # if that succeeded, then we've really got it.
+#  if test "$have_sgivc" = yes; then
+#    AC_DEFINE(HAVE_SGI_VC_EXTENSION)
+#  fi
+#
+#elif test "$with_sgivc" != no; then
+#  echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
+#  exit 1
+#fi
 
 
 ###############################################################################
@@ -1272,7 +1642,7 @@ if test "$with_xinerama" = yes; then
     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
     if test "$have_xinerama" = no; then
       AC_CHECK_X_LIB(Xinerama, XineramaQueryScreens,
-                     [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
+                     [have_xinerama=yes; XINERAMA_LIBS="-lXinerama"],
                      [true], -lXext -lX11)
     fi
   fi
@@ -1288,6 +1658,45 @@ elif test "$with_xinerama" != no; then
 fi
 
 
+###############################################################################
+#
+#       Check for the XINPUT server extension.
+#
+###############################################################################
+
+have_xinput=no
+with_xinput_req=unspecified
+AC_ARG_WITH(xinput-ext,
+[  --with-xinput-ext       Include support for the XInput extension.],
+  [with_xinput="$withval"; with_xinput_req="$withval"], [with_xinput=yes])
+
+HANDLE_X_PATH_ARG(with_xinput, --with-xinput-ext, XINPUT)
+
+if test "$with_xinput" = yes; then
+
+  # first check for Xinput.h
+  AC_CHECK_X_HEADER(X11/extensions/XInput.h, [have_xinput=yes],,
+                    [#include <X11/Xlib.h>])
+
+  # if that succeeded, then check for libXi
+  if test "$have_xinput" = yes; then
+    have_xinput=no
+    AC_CHECK_X_LIB(Xi, XListInputDevices,
+                   [have_xinput=yes; SAVER_LIBS="$SAVER_LIBS -lXi"],
+                   [true], -lXext -lX11)
+  fi
+
+  # if that succeeded, then we've really got it.
+  if test "$have_xinput" = yes; then
+    AC_DEFINE(HAVE_XINPUT)
+  fi
+
+elif test "$with_xinput" != no; then
+  echo "error: must be yes or no: --with-xinput-ext=$with_xinput"
+  exit 1
+fi
+
+
 ###############################################################################
 #
 #       Check for the XF86VMODE server extension (for virtual screens.)
@@ -1414,7 +1823,7 @@ HANDLE_X_PATH_ARG(with_randr, --with-randr-ext, RANDR)
 
 if test "$with_randr" = yes; then
 
-  # first check for Randr.h
+  # first check for Xrandr.h
   AC_CHECK_X_HEADER(X11/extensions/Xrandr.h, [have_randr=yes],,
                     [#include <X11/Xlib.h>])
 
@@ -1443,8 +1852,26 @@ if test "$with_randr" = yes; then
   # if that succeeded, then we've really got it.
   if test "$have_randr" = yes; then
     AC_DEFINE(HAVE_RANDR)
+
+    # Now check for version 1.2 in the same libs.
+    # Try to compile, since on MacOS 10.5.7, headers are older than libs!
+    AC_CACHE_CHECK([for XRRGetScreenResources], ac_cv_randr_12,
+      [ac_cv_randr_12=no
+       AC_TRY_X_COMPILE([#include <stdlib.h>
+                         #include <X11/Xlib.h>
+                         #include <X11/extensions/Xrandr.h>],
+                        [XRRScreenResources *res = 
+                           XRRGetScreenResources (0, 0);],
+                        [ac_cv_randr_12=yes],
+                        [ac_cv_randr_12=no])])
+    if test "$ac_cv_randr_12" = yes ; then
+      AC_DEFINE(HAVE_RANDR_12)
+    fi
+#   AC_CHECK_X_LIB(c, XRRGetOutputInfo, [AC_DEFINE(HAVE_RANDR_12)],
+#                  [true], $SAVER_LIBS)
   fi
 
+
 elif test "$with_randr" != no; then
   echo "error: must be yes or no: --with-randr-ext=$with_randr"
   exit 1
@@ -1500,6 +1927,13 @@ AC_ARG_WITH(proc-interrupts,
 
 if test "$with_proc_interrupts" = yes; then
 
+  # Note that we may be building in an environment (e.g. Debian buildd chroot)
+  # without a proper /proc filesystem. If /proc/interrupts exists, then we'll
+  # check that it has the bits we need, but otherwise we'll just go on faith.
+  #
+  have_proc_interrupts=yes
+
+  if test -f /proc/interrupts; then
    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
     ac_cv_have_proc_interrupts,
     [ac_cv_have_proc_interrupts=no
@@ -1508,6 +1942,7 @@ if test "$with_proc_interrupts" = yes; then
      fi
     ])
    have_proc_interrupts=$ac_cv_have_proc_interrupts
+  fi
 
   if test "$have_proc_interrupts" = yes; then
     AC_DEFINE(HAVE_PROC_INTERRUPTS)
@@ -1525,12 +1960,18 @@ fi
 #
 ###############################################################################
 
-AC_ARG_ENABLE(locking,[
-Screen locking options:
-
+AC_ARG_ENABLE(locking,[Screen locking options:
   --enable-locking        Compile in support for locking the display.
   --disable-locking       Do not allow locking at all.],
-  [enable_locking="$enableval"],[enable_locking=yes])
+  [enable_locking="$enableval"],
+  [if test "$ac_macosx" = yes; then
+    # We can't lock on MacOS X, so default to not compiling in support for it.
+    # But allow --enable-locking to override that, so I can debug Linux locking
+    # under MacOS X11.
+    enable_locking=no
+   else
+    enable_locking=yes
+   fi])
 if test "$enable_locking" = yes; then
   true
 elif test "$enable_locking" = no; then
@@ -1540,56 +1981,23 @@ else
   exit 1
 fi
 
-# We can't lock on MacOS X, so don't even bother compiling in support for it.
-#
-if test "$ac_macosx" = yes; then
-  if test "$enable_locking" = yes; then
-    AC_MSG_RESULT(locking disabled: it doesn't work on MacOS X)
-    enable_locking=no
-    AC_DEFINE(NO_LOCKING)
-  fi
-fi
-
 
 ###############################################################################
 #
-#       The --enable-vt-locking option
+#       Whether to allow root password to unblank.
 #
 ###############################################################################
-
-#ac_vt_lockswitch=no
-#AC_ARG_ENABLE(vt-locking,[
-#  --enable-vt-locking     Compile in support for locking Virtual Terminals.
-#                          This is the default if the system supports it, and
-#                          if locking support is included (--enable-locking.)
-#  --disable-vt-locking    Do not allow locking of VTs, even if locking is
-#                          enabled.],
-#  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
-#if test "$enable_vt_locking" = yes; then
-#
-#  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
-#   [AC_TRY_COMPILE([#include <fcntl.h>
-#                   #include <sys/ioctl.h>
-#                   #include <sys/vt.h>],
-#                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
-#                  [ac_cv_vt_lockswitch=yes],
-#                  [ac_cv_vt_lockswitch=no])])
-#  ac_vt_lockswitch=$ac_cv_vt_lockswitch
-#
-#elif test "$enable_vt_locking" = no; then
-#  true
-#else
-#  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
-#  exit 1
-#fi
-#
-#if test "$ac_vt_lockswitch" = yes; then
-#  AC_DEFINE(HAVE_VT_LOCKSWITCH)
-#  # the VT_LOCKSWITCH ioctl can only be used when running as root.
-#  # #### but it doesn't work yet, so don't worry about that for now.
-##  need_setuid=yes
-#fi
-
+AC_ARG_ENABLE(root-passwd, [
+  --enable-root-passwd       Allow root passwd to unlock screen.
+  --disable-root-passwd       Do not allow that.],
+  [enable_root_passwd="$enableval"],[enable_root_passwd=yes])
+if test "$enable_root_passwd" = yes; then
+  AC_DEFINE(ALLOW_ROOT_PASSWD)
+  true
+elif test "$enable_root_passwd" != no; then
+  echo "error: must be yes or no: --enable-root-passwd=$enable_root_passwd"
+  exit 1
+fi
 
 ###############################################################################
 #
@@ -1616,6 +2024,26 @@ AC_ARG_WITH(pam,
 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
 
+AC_ARG_WITH([pam_service_name],
+           AC_HELP_STRING([--with-pam-service-name],
+                          [NAME arg is the name of the PAM service that
+                          xscreensaver will authenticate as.]),
+           [pam_service_name="$withval"],[pam_service_name="xscreensaver"])
+
+AC_ARG_ENABLE(pam-check-account-type,
+  [AC_HELP_STRING([--enable-pam-check-account-type],
+                          [Whether PAM should check the result of account
+                          modules when authenticating.  Only do this if you
+                          have account configured properly on your system.])],
+  [enable_pam_check_account_type="$enableval"],[enable_pam_check_account_type=no])
+if test "$enable_pam_check_account_type" = yes ; then
+  AC_DEFINE(PAM_CHECK_ACCOUNT_TYPE)
+  true
+elif test "$enable_pam_check_account_type" != no ; then
+  echo "error: must be yes or no: --enable-pam-check-account-type=$enable_pam_check_account_type"
+  exit 1
+fi
+
 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
 
 if test "$enable_locking" = yes -a "$with_pam" = yes; then
@@ -1626,6 +2054,8 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then
   if test "$ac_cv_pam" = yes ; then
     have_pam=yes
     AC_DEFINE(HAVE_PAM)
+    AC_DEFINE_UNQUOTED(PAM_SERVICE_NAME,"$pam_service_name")
+    
     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
 
     # libpam typically requires dlopen and dlsym.  On FreeBSD,
@@ -1634,26 +2064,30 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then
 
     # On Linux, sigtimedwait() is in libc; on Solaris, it's in librt.
     have_timedwait=no
-    AC_CHECK_LIB(c, sigtimedwait, [have_timedwait=yes])
+    AC_CHECK_LIB(c, sigtimedwait,
+                 [have_timedwait=yes
+                  AC_DEFINE(HAVE_SIGTIMEDWAIT)])
     if test "$have_timedwait" = no ; then
-      AC_CHECK_LIB(rt, sigtimedwait, [PASSWD_LIBS="${PASSWD_LIBS} -lrt"])
+      AC_CHECK_LIB(rt, sigtimedwait, [have_timedwait=yes
+                                      AC_DEFINE(HAVE_SIGTIMEDWAIT)
+                                      PASSWD_LIBS="${PASSWD_LIBS} -lrt"])
     fi
 
     AC_MSG_CHECKING(how to call pam_strerror)
     AC_CACHE_VAL(ac_cv_pam_strerror_args,
-     [AC_TRY_COMPILE([#include <stdio.h>
-                      #include <stdlib.h>
-                      #include <security/pam_appl.h>],
-                     [pam_handle_t *pamh = 0;
-                      char *s = pam_strerror(pamh, PAM_SUCCESS);],
-                     [ac_pam_strerror_args=2],
-                     [AC_TRY_COMPILE([#include <stdio.h>
-                                      #include <stdlib.h>
-                                      #include <security/pam_appl.h>],
-                                     [char *s =
-                                       pam_strerror(PAM_SUCCESS);],
-                                     [ac_pam_strerror_args=1],
-                                     [ac_pam_strerror_args=0])])
+     [AC_TRY_X_COMPILE([#include <stdio.h>
+                        #include <stdlib.h>
+                        #include <security/pam_appl.h>],
+                       [pam_handle_t *pamh = 0;
+                        char *s = pam_strerror(pamh, PAM_SUCCESS);],
+                       [ac_pam_strerror_args=2],
+                       [AC_TRY_X_COMPILE([#include <stdio.h>
+                                          #include <stdlib.h>
+                                          #include <security/pam_appl.h>],
+                                         [char *s =
+                                           pam_strerror(PAM_SUCCESS);],
+                                         [ac_pam_strerror_args=1],
+                                         [ac_pam_strerror_args=0])])
       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
     ac_pam_strerror_args=$ac_cv_pam_strerror_args
     if test "$ac_pam_strerror_args" = 1 ; then
@@ -1664,6 +2098,28 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then
     else
       AC_MSG_RESULT(unknown)
     fi
+
+# Check pam_fail_delay
+    AC_MSG_CHECKING(pam_fail_delay in -lpam)
+    AC_CACHE_VAL(ac_cv_pam_fail_delay,
+     [ac_save_LDFLAGS="$LDFLAGS"
+      LDFLAGS="-lpam"
+      AC_TRY_LINK([#include <security/pam_appl.h>],
+                  [pam_handle_t *pamh = 0;
+                  unsigned int usec = 1;
+                  int status = pam_fail_delay (pamh, usec);],
+                  [ac_pam_fail_delay=yes],
+                  [ac_pam_fail_delay=no])
+      ac_cv_pam_fail_delay=$ac_pam_fail_delay,
+      LDFLAGS=$ac_save_LDFLAGS])
+
+      if test "$ac_pam_fail_delay" = yes ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(HAVE_PAM_FAIL_DELAY)
+      else
+        AC_MSG_RESULT(no)
+      fi
+
   fi
 fi
 
@@ -2002,6 +2458,118 @@ case "$with_passwd_helper" in
 esac
 
 
+###############################################################################
+#
+#       Check for a login manager for a "New Login" button on the lock dialog.
+#      Usually this will be "/usr/bin/gdmflexiserver".
+#
+###############################################################################
+
+with_login_manager_req=unspecified
+default_login_manager_1='gdmflexiserver -ls'
+default_login_manager_2='kdmctl reserve'
+default_login_manager_3='lxdm -c USER_SWITCH'
+default_login_manager_4='dm-tool switch-to-greeter'
+
+AC_ARG_WITH(login-manager,
+[  --with-login-manager    Put a "New Login" button on the unlock dialog that
+                          runs a login manager like gdmflexiserver or kdmctl.],
+  [with_login_manager="$withval"; with_login_manager_req="$withval"],
+  [with_login_manager=yes])
+# no HANDLE_X_PATH_ARG for this one
+
+if test "$enable_locking" = no ; then
+  with_login_manager_req=no
+  with_login_manager=no
+fi
+
+case "$with_login_manager_req" in
+  no)
+    with_login_manager=""
+  ;;
+
+  yes|unspecified)
+    # Try various defaults, use the first one that exists.
+
+    with_login_manager=""
+
+    if test -z "$with_login_manager" ; then
+      set dummy $default_login_manager_1 ; login_manager_tmp=$2
+      unset ac_cv_path_login_manager_tmp  # don't cache
+      AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
+      if test ! -z "$login_manager_tmp" ; then
+        with_login_manager="$default_login_manager_1"
+      fi
+    fi
+
+    if test -z "$with_login_manager" ; then
+      set dummy $default_login_manager_2 ; login_manager_tmp=$2
+      unset ac_cv_path_login_manager_tmp  # don't cache
+      AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
+      if test ! -z "$login_manager_tmp" ; then
+        with_login_manager="$default_login_manager_2"
+      fi
+    fi
+
+    if test -z "$with_login_manager" ; then
+      set dummy $default_login_manager_3 ; login_manager_tmp=$2
+      unset ac_cv_path_login_manager_tmp  # don't cache
+      AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
+      if test ! -z "$login_manager_tmp" ; then
+        with_login_manager="$default_login_manager_3"
+      fi
+    fi
+
+    if test -z "$with_login_manager" ; then
+      set dummy $default_login_manager_4 ; login_manager_tmp=$2
+      unset ac_cv_path_login_manager_tmp  # don't cache
+      AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
+      if test ! -z "$login_manager_tmp" ; then
+        with_login_manager="$default_login_manager_4"
+      fi
+    fi
+
+  ;;
+
+  /*)
+    # absolute path specified on cmd line
+    set dummy $with_login_manager_req ; login_manager_tmp=$2
+    AC_MSG_CHECKING([for $login_manager_tmp])
+    if test -x "$login_manager_tmp" ; then
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+      with_login_manager=""
+    fi
+  ;;
+
+  *)
+    # relative path specified on cmd line
+    set dummy $with_login_manager_req ; login_manager_tmp=$2
+    unset ac_cv_path_login_manager_tmp    # don't cache
+    AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
+    if test -z "$login_manager_tmp" ; then
+      with_login_manager=""
+    else
+      with_login_manager="$login_manager_tmp"
+    fi
+  ;;
+esac
+ac_cv_login_manager_program="$with_login_manager"
+
+NEW_LOGIN_COMMAND_P=''
+NEW_LOGIN_COMMAND="$ac_cv_login_manager_program"
+
+AC_MSG_CHECKING(for login manager)
+if test -z "$NEW_LOGIN_COMMAND" ; then
+  NEW_LOGIN_COMMAND="$default_login_manager_1"
+  NEW_LOGIN_COMMAND_P='! '
+  AC_MSG_RESULT($NEW_LOGIN_COMMAND (disabled))
+else
+  AC_MSG_RESULT($NEW_LOGIN_COMMAND)
+fi
+
+
 ###############################################################################
 #
 #       Check for -lgtk (and Gnome stuff)
@@ -2096,6 +2664,9 @@ pkg_check_version() {
 
 jurassic_gtk=no
 gtk_halfassed=no
+have_gtk_2_22_or_higher=no
+COMMENT_DEMO_GLADE2_GTK_2_22_HEAD=""
+COMMENT_DEMO_GLADE2_GTK_2_22_TAIL=""
 
 if test "$with_gtk" = yes; then
   have_gtk=no
@@ -2104,7 +2675,7 @@ if test "$with_gtk" = yes; then
   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  2.0.0
+  pkg_check_version        libglade-2.0  1.99.0
   pkg_check_version      gdk-pixbuf-2.0  2.0.0
   pkg_check_version gdk-pixbuf-xlib-2.0  2.0.0
   have_gtk="$ok"
@@ -2127,15 +2698,15 @@ if test "$with_gtk" = yes; then
     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
                    [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
   fi
+
   ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
   ac_gtk_config_libs=$ac_cv_gtk_config_libs
 
   GTK_EXTRA_OBJS=""
-  GNOME_DATADIR=""
-  GNOME_PANELDIR='$(GNOME_PANELDIR2)'
+  GTK_DATADIR=""
   if test "$have_gtk" = yes; then
-    GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
-    GNOME_DATADIR="$GNOME_DATADIR/share"
+    GTK_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+    GTK_DATADIR="$GTK_DATADIR/share"
   fi
 
   if test "$have_gtk" = yes; then
@@ -2146,16 +2717,24 @@ if test "$with_gtk" = yes; then
     AC_DEFINE(HAVE_XML)
   fi
 
+  if test "$have_gtk" = yes; then
+    ok="yes"
+    pkg_check_version gtk+-2.0 2.22
+    have_gtk_2_22_or_higher="$ok"
+    if test "$have_gtk_2_22_or_higher" = yes; then
+      COMMENT_DEMO_GLADE2_GTK_2_22_HEAD="<!-- comment>"
+      COMMENT_DEMO_GLADE2_GTK_2_22_TAIL="</comment -->"
+    fi
+  fi
 fi
 
 
-# Check for the Gnome Help Browser.
+# Check for the various Gnome help and URL loading programs.
 #
+WITH_BROWSER=gnome-open
 if test "$have_gtk" = yes; then
-  AC_CHECK_PROGS(have_gnome_help, yelp gnome-help-browser, no)
-  if test "$have_gnome_help" != no; then
-    have_gnome_help=yes
-  fi
+  AC_CHECK_PROGS(gnome_open_program,     gnome-open)
+  AC_CHECK_PROGS(gnome_url_show_program, gnome-url-show)
 fi
 
 
@@ -2168,7 +2747,7 @@ fi
 have_motif=no
 with_motif_req=unspecified
 AC_ARG_WITH(motif,[  --with-motif            Use the Motif toolkit for the user interface
-                          (not recommended.)],
+                          (no longer supported.)],
   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
 
 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
@@ -2377,19 +2956,57 @@ if test "$with_gl" = yes; then
     #
     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
       [ac_cv_have_mesa_gl=no
-       AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
-      ])
+       if test "$ac_macosx" = no; then
+         # WTF! MacOS 10.5.0 ships the Mesa GL headers!
+         # It's not really Mesa, is it?
+         AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
+       fi])
     ac_have_mesa_gl=$ac_cv_have_mesa_gl
 
     gl_lib_1=""
     GL_LIBS=""
 
+    if test "$ac_macosx" = yes; then
+
+      # Without these, every link against libGL gets a bunch of useless
+      # warnings.
+      #
+      osx_crud="-bind_at_load -multiply_defined suppress"
+      AC_MSG_RESULT(adding "$osx_crud" to GL_LIBS)
+      GL_LIBS="$GL_LIBS $osx_crud"
+      unset osx_crud
+
+      # New lossage in 10.5.0: without this, we get:
+      #   ld: cycle in dylib re-exports with /usr/X11/lib/libGL.dylib
+      #
+      osx_crud="/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
+      osx_crud="-Wl,-dylib_file,${osx_crud}:${osx_crud}"
+
+      AC_MSG_RESULT(adding "$osx_crud" to GL_LIBS)
+      GL_LIBS="$GL_LIBS $osx_crud"
+      unset osx_crud
+
+      # New lossage in 10.6.8: we can't allow -L/opt/local/lib to be in the
+      # link line, or at runtime XQueryExtension gets a segv due to some kind
+      # of library version skew.  Libs must come from /usr/X11/lib even if
+      # $prefix and/or $exec_prefix are set to /opt/local/.
+      #
+      AC_MSG_RESULT(omitting "$libdir" from LDFLAGS)
+      libdir=''
+
+      # Looks like as of OSX 10.12, gcc can't do ObjC.
+      OBJCC="clang -Wall"
+
+    fi
+
 
     # 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.)
     #
+    # Oftentimes, AX_PTHREAD will bring in -lpthread as well; but that ends
+    # up before -l(Mesa)GL, instead of after where it would belong.
+    #
     if test "$ac_have_mesa_gl" = yes; then
       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
     fi
@@ -2612,6 +3229,29 @@ elif test "$with_gle" != no; then
 fi
 
 
+###############################################################################
+#
+#       Handle --with-gles
+#
+###############################################################################
+
+with_gles_req=unspecified
+AC_ARG_WITH(gles,
+[  --with-gles             Target OpenGL ES 1.x API instead of OpenGL 1.3.],
+  [with_gles="$withval"; with_gles_req="$withval"],[with_gles=no])
+
+HANDLE_X_PATH_ARG(with_gles, --with-gles, JWZGLES)
+
+if test "$with_gles" = yes; then
+  have_gles=yes
+  AC_DEFINE(HAVE_JWZGLES)
+  JWZGLES_OBJS='$(JWXYZ_BIN)/jwzgles.o'
+  AC_MSG_RESULT(using OpenGL ES compatiblity shim)
+elif test "$with_gles" != no; then
+  echo "error: must be yes or no: --with-gles=$with_xpm"
+  exit 1
+fi
+
 ###############################################################################
 #
 #       Check for -lgdk_pixbuf.
@@ -2665,6 +3305,7 @@ if test "$with_gdk_pixbuf" = yes; then
     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
 
@@ -2728,6 +3369,12 @@ if test "$with_gdk_pixbuf" = yes; then
   else
     AC_MSG_RESULT(checking for gdk_pixbuf usability... no)
   fi
+
+  if test "$have_gdk_pixbuf" = yes; then
+    AC_CHECK_X_LIB(c, gdk_pixbuf_apply_embedded_orientation,
+                     [AC_DEFINE(HAVE_GDK_PIXBUF_APPLY_EMBEDDED_ORIENTATION)],,
+                     $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
+  fi
 fi
 
 
@@ -2766,6 +3413,10 @@ if test "$have_motif" = yes -a "$have_xpm" = yes ; then
   fi
 fi
 
+if test "$XPM_LIBS" = "" ; then
+  XPM_LIBS=$(MINIXPM)
+fi
+
 
 ###############################################################################
 #
 
 ###############################################################################
 #
-#       Check for pty support for 'phosphor'
+#       Check for -lXft
+#
+###############################################################################
+
+have_xutf8drawstring=no
+AC_CHECK_X_LIB(X11, Xutf8DrawString,
+               [have_xutf8drawstring=yes],
+               [true], -lX11 -lXext -lm)
+if test "$have_xutf8drawstring" = yes ; then
+  AC_DEFINE(HAVE_XUTF8DRAWSTRING)
+fi
+
+
+have_xft=no
+with_xft_req=unspecified
+xft_halfassed=no
+AC_ARG_WITH(xft,
+[  --with-xft              Include support for the X Freetype library.],
+  [with_xft="$withval"; with_xft_req="$withval"],
+  [with_xft=yes])
+
+HANDLE_X_PATH_ARG(with_xft, --with-xft, Xft)
+
+if test "$with_xft" != yes -a "$with_xft" != no ; then
+  echo "error: must be yes or no: --with-xft=$with_xft"
+  exit 1
+fi
+
+if test "$with_xft" = yes; then
+
+  pkgs=''
+  ok="yes"
+  pkg_check_version xft 2.1.0
+  have_xft="$ok"
+
+  if test "$have_xft" = yes; then
+    AC_CACHE_CHECK([for Xft includes], ac_cv_xft_config_cflags,
+               [ac_cv_xft_config_cflags=`$pkg_config --cflags $pkgs`])
+    AC_CACHE_CHECK([for Xft libs], ac_cv_xft_config_libs,
+               [ac_cv_xft_config_libs=`$pkg_config --libs $pkgs`])
+  fi
+
+  ac_xft_config_cflags=$ac_cv_xft_config_cflags
+  ac_xft_config_libs=$ac_cv_xft_config_libs
+
+  if test "$have_xft" = yes; then
+    #
+    # we appear to have Xft; check for headers/libs to be sure.
+    #
+    ac_save_xft_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $ac_xft_config_cflags"
+
+    have_xft=no
+    AC_CHECK_X_HEADER(X11/Xft/Xft.h, [have_xft=yes])
+
+    CPPFLAGS="$ac_save_xft_CPPFLAGS"
+  fi
+
+  if test "$have_xft" = yes; then
+    # we have the headers, now check for the libraries
+    have_xft=no
+    xft_halfassed=yes
+
+    AC_MSG_RESULT(checking for Xft usability...)
+    AC_CHECK_X_LIB(c, XftDrawStringUtf8, [have_xft=yes],,
+                   $ac_xft_config_libs -lX11 -lXext -lm)
+  fi
+
+  if test "$have_xft" = no; then
+    AC_MSG_RESULT(checking for Xft usability... no)
+  fi
+fi
+
+if test "$have_xft" = yes; then
+  INCLUDES="$INCLUDES $ac_xft_config_cflags"
+  XFT_LIBS="$ac_xft_config_libs"
+  XFT_SRCS=''
+  XFT_OBJS=''
+  AC_DEFINE(HAVE_XFT)
+else
+  XFT_LIBS=''
+  XFT_SRCS='$(UTILS_SRC)/xft.c'
+  XFT_OBJS='$(UTILS_BIN)/xft.o'
+fi
+
+
+###############################################################################
+#
+#       Check for pty support: this allows 'phosphor' and 'apple2'
+#      to run curses-based programs, or be used as terminal windows.
 #
 ###############################################################################
 
 PTY_LIBS=
-AC_CHECK_HEADERS(pty.h util.h)
+AC_CHECK_HEADERS(pty.h util.h sys/termios.h)
 AC_CHECK_X_LIB(util, forkpty,
                [PTY_LIBS="-lutil"
+                ac_have_forkpty=yes
                 AC_DEFINE(HAVE_FORKPTY)])
 
+if test "$ac_have_forkpty" != yes ; then
+  # we don't need (or have) -lutil on MacOS 10.4.2...
+  AC_CHECK_X_LIB(c, forkpty,
+                 [PTY_LIBS=""
+                  AC_DEFINE(HAVE_FORKPTY)])
+fi
 
 ###############################################################################
 #
 
 ###############################################################################
 #
-#       Check for a program to generate random text.
-#
-#       Zippy is funnier than the idiocy generally spat out by `fortune',
-#       so first see if "fortune zippy" works.  Else, use plain "fortune".
-#
-#       We used to dig around in Emacs to look for the "yow" program, but
-#       most people who have Emacs also have "fortune zippy", so nevermind.
+#       Check for a directory full of images to use as the default value
+#      of the "imageDirectory" preference.
 #
 ###############################################################################
 
-with_fortune_req=""
-AC_ARG_WITH(fortune,[
-  --with-fortune=PROGRAM  Some demos are able to run an external program and
-                          display its text; this names the program to use by
-                          default (though it can be overridden with X
-                          resources.)  Default is "/usr/games/fortune".],
-  [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
+have_imagedir=no
+with_imagedir_req=unspecified
 
-if test "$with_fortune" = no || test "$with_fortune" = yes ; then
-  with_fortune=""
-  with_fortune_req=""
-fi
-
-if test -n "$with_fortune_req" ; then
-  ac_cv_fortune_program=""
-  case "$with_fortune_req" in
-    /*)
+AC_ARG_WITH(image-directory,
+[  --with-image-directory  Arg is the default directory from which some demos
+                          will choose random images to display.],
+  [with_imagedir="$withval"; with_imagedir_req="$withval"],
+  [with_imagedir=yes])
+# no HANDLE_X_PATH_ARG for this one
 
-      set dummy $with_fortune_req ; fortune_tmp=$2
-      AC_MSG_CHECKING([for $fortune_tmp])
-      if test -x "$fortune_tmp" ; then
-        AC_MSG_RESULT(yes)
-      else
-        AC_MSG_RESULT(no)
-        with_fortune=""
-      fi
-    ;;
-    *)
-      set dummy $with_fortune_req ; fortune_tmp=$2
-      # don't cache
-      unset ac_cv_path_fortune_tmp
-      AC_PATH_PROG(fortune_tmp, $fortune_tmp, [])
-      if test -z "$fortune_tmp" ; then
-        with_fortune=""
+case "$with_imagedir" in
+  /*)
+    # absolute path
+    AC_MSG_CHECKING([for image directory $with_imagedir])
+    if test -d "$with_imagedir" ; then
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+      with_imagedir=""
+    fi
+  ;;
+  yes)
+    with_imagedir=""
+
+    #### Could use some more defaults here...
+    for dd in \
+      "/usr/share/backgrounds/images/"          \
+      "/usr/share/wallpapers/"                  \
+      "/Library/Desktop Pictures/"              \
+    ; do
+      if test -z "$with_imagedir"; then
+        AC_MSG_CHECKING([for image directory $dd])
+        if test -d "$dd" ; then
+          AC_MSG_RESULT(yes)
+          with_imagedir="$dd"
+        else
+          AC_MSG_RESULT(no)
+        fi
       fi
-    ;;
-  esac
-  ac_cv_fortune_program="$with_fortune"
+    done
+
+  ;;
+  no)
+    with_imagedir=""
+  ;;
 
-elif test -n "$ac_cv_fortune_program"; then
-  AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program])
+  *)
+    echo "error: must be an absolute path: --with-image-directory=$with_imagedir_req"
+    exit 1
+  ;;
+esac
+ac_cv_imagedir="$with_imagedir"
+
+DEFAULT_IMAGES_P='True'
+DEFAULT_IMAGE_DIRECTORY="$ac_cv_imagedir"
+
+if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then
+  DEFAULT_IMAGES_P='False'
 fi
 
-unset ac_cv_path_fortune_tmp
-unset fortune_tmp
 
-if test -z "$ac_cv_fortune_program" ; then
+###############################################################################
+#
+#       Pick a text file to use as the default of the "textFile" preference.
+#      Any old file will do, but preferably one that will make interesting
+#      shapes when displayed by "starwars" and "fontglide".
+#
+###############################################################################
 
-  # first look for fortune in /usr/games/ (and use absolute path)
-  AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games")
+have_textfile=no
+with_textfile_req=unspecified
 
-  # if it's not there, look on $PATH (and don't use absolute path)
-  if test -z "$fortune_tmp" ; then
-     AC_CHECK_PROGS(fortune_tmp, fortune)
-  fi
+AC_ARG_WITH(text-file,
+[  --with-text-file=FILE   By default, some demos may display this file.],
+  [with_textfile="$withval"; with_textfile_req="$withval"],
+  [with_textfile=yes])
+# no HANDLE_X_PATH_ARG for this one
 
-  # if we didn't find anything, then just assume /usr/games/
-  if test -z "$fortune_tmp" ; then
-     fortune_tmp="/usr/games/fortune"
-  fi
+case "$with_textfile" in
+  /*)
+    # absolute path
+    AC_MSG_CHECKING([for text file $with_textfile])
+    if test -f "$with_textfile" ; then
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+      with_textfile=""
+    fi
+  ;;
+  yes)
+    with_textfile=""
+
+    #### Could use some more defaults here...
+    for f in \
+      "/usr/X11R6/lib/X11/doc/README"             \
+      "/usr/share/doc/xserver-common/copyright"           \
+      "/usr/share/doc/xserver-xorg-core/copyright" \
+      "/usr/X11R6/README"                         \
+      "/usr/share/doc/libX11*/COPYING"            \
+      "/usr/X11/share/X11/doc/README*"            \
+      "/usr/share/doc/debian/debian-manifesto"     \
+    ; do
+      if test -z "$with_textfile"; then
+        AC_MSG_CHECKING([for text file $f])
+       f=`/bin/ls $f 2>&- | head -1`
+        if test -f "$f" ; then
+          AC_MSG_RESULT(yes)
+          with_textfile="$f"
+        else
+          AC_MSG_RESULT(no)
+        fi
+      fi
+    done
 
-  ac_cv_fortune_program="$fortune_tmp"
+  ;;
+  no)
+    with_textfile=""
+  ;;
 
-  # now check to see whether "fortune zippy" works.
-  #
-  fortune_tmp="$fortune_tmp zippy"
-  AC_MSG_CHECKING([for zippy quotes])
-  if ( $fortune_tmp >/dev/null 2>&1 ); then
-    ac_cv_fortune_program="$fortune_tmp"
-    AC_MSG_RESULT($fortune_tmp)
-  else
-    AC_MSG_RESULT(no)
-  fi
+  *)
+    echo "error: must be an absolute path: --with-text-file=$with_textfile_req"
+    exit 1
+  ;;
+esac
+ac_cv_textfile="$with_textfile"
 
-fi
+DEFAULT_TEXT_FILE="$ac_cv_textfile"
 
-unset ac_cv_path_fortune_tmp
-unset fortune_tmp
 
-AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
+###############################################################################
+#
+#       Check the browser to see help URL
+#
+###############################################################################
 
+have_browser=no
+with_browser_req=unspecified
+
+AC_ARG_WITH(browser,
+[  --with-browser=BROWSER  Specify the web browser used to show the help URL.],
+  [with_browser="$withval"; with_browser_req="$withval"],
+  [with_browser=no ])
+# no HANDLE_X_PATH_ARG for this one
+
+case "$with_browser" in
+  no )
+  ;;
+  * )
+    WITH_BROWSER=$with_browser
+    gnome_open_program=$with_browser
+    AC_MSG_CHECKING([for browser $with_browser])
+    with_browser_fullpath=`which $with_browser 2>/dev/null`
+    case $with_browser_fullpath in
+        /* )
+               AC_MSG_RESULT(yes)
+                have_browser=yes
+                ;;
+       * )
+              AC_MSG_RESULT(no)
+# Only warning: we don't want to install all packages for the 
+# dependency of the browser in building stage...
+              echo "WARNING: browser not found: --with-browser=$with_browser"
+              ;;
+    esac
+  ;;
+esac
+ac_cv_browser="$with_browser"
 
 ###############################################################################
 #
@@ -3055,6 +3883,39 @@ elif test "$setuid_hacks" != no; then
 fi
 
 
+###############################################################################
+#
+#       Check for --with-record-animation
+#
+###############################################################################
+
+record_anim_default=no
+record_anim="$record_anim_default"
+AC_ARG_WITH(record-animation,
+[  --with-record-animation Include code for generating MP4 videos.
+],
+  [record_anim="$withval"], [record_anim="$record_anim_default"])
+
+HANDLE_X_PATH_ARG(record_anim, --with-record-animation, record animation)
+
+if test "$record_anim" = yes; then
+  true
+elif test "$record_anim" != no; then
+  echo "error: must be yes or no: --with-record-animation=$record_anim"
+  exit 1
+fi
+
+if test "$record_anim" = yes; then
+  if test "$have_gdk_pixbuf" != yes; then
+    AC_MSG_ERROR(--with-record-animation requires GDK-Pixbuf)
+  else
+    AC_MSG_RESULT(enabling --with-record-animation)
+    AC_DEFINE(HAVE_RECORD_ANIM)
+    ANIM_OBJS='$(ANIM_OBJS)'
+    ANIM_LIBS='$(ANIM_LIBS)'
+  fi
+fi
+
 ###############################################################################
 #
 #       Done testing.  Now, set up the various -I and -L variables,
@@ -3097,6 +3958,11 @@ if test "$have_pam" = yes; then
   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
   INSTALL_PAM="install-pam"
 fi
+if test "$enable_pam_check_account_type" = yes; then
+  COMMENT_PAM_CHECK_ACCOUNT=""
+else
+  COMMENT_PAM_CHECK_ACCOUNT="#"
+fi
 if test "$have_passwd_helper" = yes; then
   PASSWD_SRCS="$PASSWD_SRCS \$(PWHELPER_SRCS)"
   PASSWD_OBJS="$PASSWD_OBJS \$(PWHELPER_OBJS)"
@@ -3141,18 +4007,20 @@ fi
 tab='  '
 if test "$have_gl" = yes; then
   GL_EXES='$(GL_EXES)'
+  SUID_EXES='$(SUID_EXES)'
+  RETIRED_GL_EXES='$(RETIRED_GL_EXES)'
   GL_UTIL_EXES='$(GL_UTIL_EXES)'
   GL_MEN='$(GL_MEN)'
-  GL_KLUDGE="${tab}  "
+  GL_KLUDGE=" "
 else
-  GL_KLUDGE="-${tab}  "
+  GL_KLUDGE="-"
 fi
 
 if test "$have_gle" = yes; then
   GLE_EXES='$(GLE_EXES)'
-  GLE_KLUDGE="${tab}   "
+  GLE_KLUDGE=" "
 else
-  GLE_KLUDGE="-${tab}   "
+  GLE_KLUDGE="-"
 fi
 
 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
@@ -3162,51 +4030,26 @@ fi
 
 # Another substitution in the XScreenSaver.ad.in file:
 #
-if test "$have_gnome_help" = yes; then
-  GNOMEHELP_Y=''
-  GNOMEHELP_N='!    '
-else
-  GNOMEHELP_Y='!    '
-  GNOMEHELP_N=''
-fi
-
-
-# Now that we know whether we have Gnome, we can decide where the XML
-# config files get installed.
-#
-if test -z "$HACK_CONF_DIR" ; then
-  if test -n "$GNOME_DATADIR" ; then
-    HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers'
-  else
-    HACK_CONF_DIR='${prefix}/lib/xscreensaver/config'
-  fi
-fi
-
-
-
-# After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
-# 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
-# Gtk prefix, not the overall prefix.
-#
-if test -n "$GNOME_DATADIR" ; then
-  GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
-elif test "$have_gtk" = yes; then
-  GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
-  GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
+if test "$gnome_open_program" != ''; then
+  GNOME24=''
+  GNOME22='!   '
+  NOGNOME='!   '
+elif test "$gnome_url_show_program" != ''; then
+  GNOME24='!   '
+  GNOME22=''
+  NOGNOME='!   '
 else
-  GLADE_DATADIR=''
+  GNOME24='!   '
+  GNOME22='!   '
+  NOGNOME=''
 fi
 
 
 # Set PO_DATADIR to something sensible.
 #
 AC_MSG_CHECKING([for locale directory])
-if test -n "$GNOME_DATADIR" ; then
-  PO_DATADIR="$GNOME_DATADIR"
+if test -n "$GTK_DATADIR" ; then
+  PO_DATADIR="$GTK_DATADIR"
 elif test "$have_gtk" = yes; then
   PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
   PO_DATADIR="$PO_DATADIR/share"
@@ -3218,12 +4061,7 @@ if test -z "$PO_DATADIR" ; then
   # 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}
+  dd=`eval eval eval eval eval eval eval eval eval eval eval echo $datadir`
   PO_DATADIR=`echo $dd | sed 's@/X11R6/@/@'`
 fi
 
@@ -3265,12 +4103,24 @@ AC_SUBST(PTY_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(GLE_LIBS)
 AC_SUBST(XDPMS_LIBS)
+AC_SUBST(XINERAMA_LIBS)
 AC_SUBST(PASSWD_LIBS)
 AC_SUBST(INSTALL_SETUID)
 AC_SUBST(SETUID_HACKS)
 AC_SUBST(INSTALL_DIRS)
 AC_SUBST(NEED_SETUID)
 AC_SUBST(INSTALL_PAM)
+AC_SUBST(HAVE_PAM_FAIL_DELAY)
+AC_SUBST(COMMENT_PAM_CHECK_ACCOUNT)
+AC_SUBST(NEW_LOGIN_COMMAND)
+AC_SUBST(NEW_LOGIN_COMMAND_P)
+AC_SUBST(DEFAULT_IMAGES_P)
+AC_SUBST(DEFAULT_IMAGE_DIRECTORY)
+AC_SUBST(DEFAULT_TEXT_FILE)
+AC_SUBST(WITH_BROWSER)
+AC_SUBST(COMMENT_DEMO_GLADE2_GTK_2_22_HEAD)
+AC_SUBST(COMMENT_DEMO_GLADE2_GTK_2_22_TAIL)
+
 
 AC_SUBST(OBJCC)
 AC_SUBST(EXES_OSX)
@@ -3282,6 +4132,9 @@ AC_SUBST(PASSWD_OBJS)
 AC_SUBST(XMU_SRCS)
 AC_SUBST(XMU_OBJS)
 AC_SUBST(XMU_LIBS)
+AC_SUBST(XFT_SRCS)
+AC_SUBST(XFT_OBJS)
+AC_SUBST(XFT_LIBS)
 AC_SUBST(SAVER_GL_SRCS)
 AC_SUBST(SAVER_GL_OBJS)
 AC_SUBST(SAVER_GL_LIBS)
@@ -3289,20 +4142,25 @@ AC_SUBST(LOCK_SRCS)
 AC_SUBST(LOCK_OBJS)
 AC_SUBST(JPEG_EXES)
 AC_SUBST(GL_EXES)
+AC_SUBST(RETIRED_GL_EXES)
+AC_SUBST(SUID_EXES)
 AC_SUBST(GL_UTIL_EXES)
 AC_SUBST(GL_MEN)
 AC_SUBST(GL_KLUDGE)
 AC_SUBST(GLE_EXES)
 AC_SUBST(GLE_KLUDGE)
-AC_SUBST(GNOMEHELP_Y)
-AC_SUBST(GNOMEHELP_N)
+AC_SUBST(JWZGLES_OBJS)
+AC_SUBST(GNOME24)
+AC_SUBST(GNOME22)
+AC_SUBST(NOGNOME)
 AC_SUBST(HACKDIR)
-AC_SUBST(GNOME_DATADIR)
-AC_SUBST(GLADE_DATADIR)
+AC_SUBST(HACKDIR_FULL)
+AC_SUBST(GTK_DATADIR)
 AC_SUBST(PO_DATADIR)
-AC_SUBST(GNOME_PANELDIR)
 AC_SUBST(HACK_CONF_DIR)
 AC_SUBST(GTK_EXTRA_OBJS)
+AC_SUBST(ANIM_OBJS)
+AC_SUBST(ANIM_LIBS)
 
 APPDEFAULTS=$ac_x_app_defaults
 AC_SUBST(APPDEFAULTS)
@@ -3314,12 +4172,14 @@ AC_SUBST(PERL)
 
 AC_OUTPUT(Makefile
           utils/Makefile
-          driver/Makefile
+          jwxyz/Makefile
           hacks/Makefile
           hacks/glx/Makefile
           po/Makefile.in
-          driver/XScreenSaver.ad
-          driver/xscreensaver.kss)
+          driver/Makefile
+          driver/xscreensaver.pam
+          driver/xscreensaver-demo.glade2
+          driver/XScreenSaver.ad)
 
 ###############################################################################
 #
@@ -3377,12 +4237,20 @@ noteL() {
 }
 
 
-if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
-  warn 'The SGI saver extension was requested, but was not found.'
+# ac_prog_cc_no_pthread normally only happens on AIX, because according
+# to AX_PTHREAD, AIX needs CC=xlc_r or CC=cc_r to do threads.
+# If CC is specified, it takes precedence over --with-pthread.
+if test "$ac_prog_cc_no_pthread" ; then
+  warnL "You requested $ac_original_cc for the C compiler, but it doesn't"
+  warn2 "support POSIX threads."
+  echo ""
+  warn2 "If you have multiple CPU cores, try CC=$PTHREAD_CC."
+elif test "$with_pthread_req" = yes -a "$have_pthread" = no ; then
+  warn 'POSIX threads were requested, but were not found.'
 fi
 
-if test "$with_mit_req" = yes -a "$have_mit" = no ; then
-  warn 'The MIT saver extension was requested, but was not found.'
+if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
+  warn 'The SGI saver extension was requested, but was not found.'
 fi
 
 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
@@ -3421,6 +4289,19 @@ if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
   warn "Checking of /proc/interrupts was requested, but it's bogus."
 fi
 
+if test "$pkg_config" = false ; then
+  warnL 'The "pkg-config" program was not found.  Without that,'
+  warn2 "detection of the various GTK libraries won't work."
+else
+  pkgerr=`$pkg_config --list-all 2>&1 >/dev/null`
+  if test "x$pkgerr" != "x" ; then
+    warnL 'The "pkg-config" program produces errors.  This often causes'
+    warn2 "detection of the various GTK libraries to malfunction."
+    warn2 "The errors are:"
+    echo ''
+    echo "$pkgerr" | sed 's/^/             > /g'
+  fi
+fi
 
 if test "$gtk_halfassed" != no ; then
   warnL "GTK version $gtk_halfassed was found, but at least one supporting"
@@ -3590,14 +4471,37 @@ if test "$have_jpeg" = no ; then
 fi
 
 
+if test "$have_xft" = no ; then
+  if test "$with_xft_req" = yes ; then
+    warnL "Use of libXft was requested, but it was not found."
+  elif test "$with_xft_req" = no ; then
+    noteL 'The Xft library is not being used.'
+  else
+    noteL "The Xft library was not found."
+  fi
+
+  if test "$xft_halfassed" = yes ; then
+    echo ''
+    warn2 'More specifically, we found the headers, but not the'
+    warn2 'libraries; so either Xft is half-installed on this'
+    warn2 "system, or something else went wrong.  The \`config.log'"
+    warn2 'file might contain some clues.'
+    echo ''
+  fi
+
+  warn2 "This means that fonts won't be anti-aliased."
+fi
+
+
 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
   preferred_mesagl=3.4
   mgv="$ac_mesagl_version_string"
   pgl="$preferred_mesagl"
 
   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."
+    true
+    # 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 number is $mgv --"
@@ -3631,10 +4535,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'
-  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 're-running configure.'
 
 fi
 
@@ -3654,7 +4555,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
     warn2 'library is not.'
   else
     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
-    warn2 'was not.'
+    warn2 'library was not.'
   fi
 
   if test "$gle_halfassed" = yes ; then
@@ -3669,8 +4570,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
   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.  You can find the'
-  warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
-  warn2 'OpenGL info, see <http://www.opengl.org/>.'
+  warn2 'GLE library at <http://www.linas.org/gle/>'
 
  fi
 fi
@@ -3680,13 +4580,6 @@ 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 -n "$with_fortune_req"; then
-  if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then
-    warnL "$with_fortune_req was requested as the Fortune program,"
-    warn2 "but was not found.  The default will be used instead."
-  fi
-fi
-
 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
   warn 'Use of Kerberos was requested, but it was not found.'
 fi
@@ -3699,28 +4592,20 @@ if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
   warn 'Use of shadow passwords was requested, but they were not found.'
 fi
 
+if test "$ac_macosx" = yes ; then
+  if test "$enable_locking" = yes ; then
+    warn  "You have specified --enable-locking on MacOS X."
+    warn2 "THIS DOES NOT WORK!  Don't do this!"
+  fi
+fi
+
 
 # You are in a twisty maze of namespaces and syntaxes, all alike.
 # Fuck the skull of Unix.
 #
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval bindir=${bindir}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACKDIR=${HACKDIR}
-eval HACK_CONF_DIR=${HACK_CONF_DIR}
-eval HACK_CONF_DIR=${HACK_CONF_DIR}
-eval HACK_CONF_DIR=${HACK_CONF_DIR}
-eval HACK_CONF_DIR=${HACK_CONF_DIR}
-eval HACK_CONF_DIR=${HACK_CONF_DIR}
-eval HACK_CONF_DIR=${HACK_CONF_DIR}
+bindir=`eval eval eval eval eval eval eval echo $bindir`
+HACKDIR=`eval eval eval eval eval eval eval echo $HACKDIR`
+HACK_CONF_DIR=`eval eval eval eval eval eval eval echo $HACK_CONF_DIR`
 
 # canonicalize slashes.
 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
@@ -3742,38 +4627,69 @@ done
 
 do_dir_warning=no
 
-# Now let's see if there's a previous RPM version already installed.  Blargh!
+# Now let's warn if there's a previous RPM version already installed.
+# But don't bother with this test if we are currently *building* an RPM.
 
-# M4 sucks!!
-changequote(X,Y)
-rpmv=`(rpm -qv xscreensaver) 2>/dev/null | \
-      sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'`
-changequote([,])
+if test -z "$RPM_PACKAGE_VERSION" ; then
 
-if test \! -z "$rpmv" ; then
-  rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
-  rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
+  rpmnames="xscreensaver xscreensaver-base xscreensaver-extras"
 
-  warning=no
-  warnL "There is already an installed RPM of xscreensaver $rpmv"
-  warn2 "on this system.  You might want to remove it (with"
-  warn2 '"rpm -ve xscreensaver") before running "make install"'
-  warn2 "from this directory."
-  echo ""
-  warn2 "Alternately, you could build this version of xscreensaver"
-  warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
-  warn2 'file is included.  Try "rpmbuild -v -ba xscreensaver.spec".'
-  warn2 "See the RPM documentation for more info."
-  echo ""
+  # M4 sucks!!
+  changequote(X,Y)
+  rpmv=`(rpm -qv $rpmnames) 2>/dev/null | \
+        sed -n 's/^[-a-z]*-\([0-9][0-9]*[.][0-9][0-9a-z]*\)-.*$/\1/p' | \
+        head -1`
+  changequote([,])
 
-  if test "$rpmbdir" = "$rpmhdir" ; then
-    warn2 "The RPM version was installed in $rpmbdir/."
-  else
-    warn2 "The RPM version was installed in $rpmbdir/,"
-    warn2 "with demos in $rpmhdir/."
+  if test \! -z "$rpmv" ; then
+    rpmbdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
+    rpmhdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/popsquares$@\1@p'`
+
+    warning=no
+    warnL "There is already an installed RPM of xscreensaver $rpmv"
+    warn2 'on this system.  You might want to remove it ("rpm -ve")'
+    warn2 'before running "make install" in this directory.'
+    echo ""
+    warn2 "Alternately, you could build this version of xscreensaver"
+    warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
+    warn2 'file is included.  Try "rpmbuild -v -ba xscreensaver.spec".'
+    warn2 "See the RPM documentation for more info."
+    echo ""
+
+    if test "$rpmbdir" = "$rpmhdir" ; then
+      warn2 "The RPM version was installed in $rpmbdir/."
+      do_dir_warning=yes
+    else
+      warn2 "The RPM version was installed in $rpmbdir/,"
+      warn2 "with demos in $rpmhdir/."
+    fi
   fi
+fi
 
-  do_dir_warning=yes
+# Also warn if there's a Debian package installed.
+#
+debnames="xscreensaver xscreensaver-data xscreensaver-data-extra"
+debv=''
+for dpkg in $debnames ; do
+  if test -z "$debv"; then
+    debv=`dpkg -s $dpkg 2>/dev/null | sed -n 's/^Version: \(.*\)$/\1/p'`
+  fi
+done
+
+if test \! -z "$debv" ; then
+  debbdir=`dpkg -L $debnames 2>/dev/null | \
+            sed -n 's@^\(.*/bin/\)xscreensaver$@\1@p'`
+  debhdir=`dpkg -L $debnames 2>/dev/null | \
+            sed -n 's@^\(.*/\)popsquares$@\1@p'`
+  if test -z "$debbdir" ; then debbdir='???'; fi
+  if test -z "$debhdir" ; then debhdir='???'; fi
+
+  warning=no
+  warnL "There is already an installed dpkg of xscreensaver"
+  warn2 "version \"$debv\" on this system."
+  echo ""
+  warn2 "The dpkg was installed in $debbdir,"
+  warn2 "with demos in $debhdir."
 fi
 
 
@@ -3789,7 +4705,7 @@ if test "$do_dir_warning" = yes; then
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
-  echo "      The various graphics demos (180+ different executables) will"
+  echo "      The various graphics demos (200+ different executables) will"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"
@@ -3808,6 +4724,7 @@ if test "$do_dir_warning" = no; then
   fi
   echo "User programs will be installed in ${bindir}/"
   echo "Screen savers will be installed in ${HACKDIR}/"
-  echo "Configuration will be installed in ${HACK_CONF_DIR}/"
+  echo "Configuration dialogs will be installed in ${HACK_CONF_DIR}/"
+  echo "System-wide default settings will be installed in ${APPDEFAULTS}/"
   echo ''
 fi