ftp://ftp.krokus.ru/pub/OpenBSD/distfiles/xscreensaver-5.01.tar.gz
[xscreensaver] / configure.in
index d9b88620782cc9cdc7c5a57591570eb96582d78f..8793c578d529302af61eaf2fcd2c05b05ac681e3 100644 (file)
@@ -8,6 +8,280 @@ AC_CONFIG_HEADER(config.h)
 echo "current directory: `pwd`"
 echo "command line was: $0 $@"
 
+###############################################################################
+#
+#       Autoheader stuff
+#
+###############################################################################
+
+AH_TOP([
+/* config.h.in --- xscreensaver, Copyright (c) 1998-2000 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.)])
+
+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.])
+
+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.)])
+
+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.])
+
+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_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_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_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_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_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_STRERROR_TWO_ARGS],
+           [Define if you have PAM and pam_strerror() requires two
+           arguments.])
+
+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_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.])
 
 # 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,
@@ -74,7 +348,7 @@ 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?
@@ -435,6 +709,17 @@ EOF
     rm -fr conftestdir
   fi])
 
+###############################################################################
+#
+#       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.
@@ -838,6 +1123,7 @@ AC_HEADER_DIRENT
 AC_GETTIMEOFDAY_ARGS
 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
+AC_CHECK_FUNCS(setlocale)
 AC_CHECK_ICMP
 AC_CHECK_ICMPHDR
 AC_CHECK_HEADERS(crypt.h sys/select.h)
@@ -868,6 +1154,14 @@ AC_MSG_CHECKING(whether this is MacOS X)
 AC_MSG_RESULT($ac_macosx)
 
 
+if test "$ac_macosx" = yes; then
+  if test -n "$GCC"; 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 LDFLAGS)
+     LDFLAGS="$LDFLAGS $osx_crud"
+  fi
+fi
 
 ###############################################################################
 #
@@ -877,11 +1171,14 @@ AC_MSG_RESULT($ac_macosx)
 
 AC_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="ca da de es et fi fr hu it ja ko nb nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
 AM_GLIB_GNU_GETTEXT
 MKINSTALLDIRS="$INSTALL_DIRS"
 
@@ -964,7 +1261,7 @@ AC_ARG_WITH(hackdir,[
 
 Installation options:
   --with-hackdir=DIR      Where to install the hundreds of demo executables.
-                          Default: `EPREFIX/lib/xscreensaver/'],
+                          Default: `PREFIX/libexec/xscreensaver/'],
   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
 
 if test x"$with_hackdir" = xyes; then
@@ -978,6 +1275,11 @@ fi
 # canonicalize slashes.
 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
 
+# Expand HACKDIR as HACKDIR_FULL
+eval HACKDIR_FULL=${HACKDIR}
+eval HACKDIR_FULL=${HACKDIR_FULL}
+eval HACKDIR_FULL=${HACKDIR_FULL}
+
 # This option used to be called --enable-subdir; make sure that is no longer
 # used, since configure brain-damagedly ignores unknown --enable options.
 
@@ -994,6 +1296,7 @@ fi
 ###############################################################################
 #
 #       Handle the --with-configdir option
+#       Help for --with-x-app-defaults option added..
 #
 ###############################################################################
 
@@ -1003,6 +1306,8 @@ AC_ARG_WITH(configdir,
 [  --with-configdir=DIR    Where to install the data files that describe each
                           of the display modes to the GUI.
                           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])
@@ -1436,6 +1741,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
@@ -1444,6 +1756,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)
@@ -1487,43 +1800,20 @@ 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: something wrong with root-passwd option. Check configure.in ."
+  exit 1
+fi
 
 ###############################################################################
 #
@@ -1550,6 +1840,12 @@ 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],
+                          [NAME is the name of the PAM service that
+                          xscreensaver will authenticate as.]),
+           [pam_service_name="$withval"],[pam_service_name="xscreensaver"])
+
 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
 
 if test "$enable_locking" = yes -a "$with_pam" = yes; then
@@ -1560,6 +1856,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,
@@ -1598,6 +1896,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,
+      LD_FLAGS=$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
 
@@ -1973,7 +2293,6 @@ if test -n "$with_login_manager_req" ; then
       AC_MSG_CHECKING([for $login_manager_tmp])
       if test -x "$login_manager_tmp" ; then
         AC_MSG_RESULT(yes)
-        with_login_manager="$login_manager_tmp"
       else
         AC_MSG_RESULT(no)
         with_login_manager=""
@@ -2133,6 +2452,7 @@ 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
 
@@ -2156,6 +2476,7 @@ fi
 
 # Check for the various Gnome help and URL loading programs.
 #
+WITH_BROWSER=gnome-open
 if test "$have_gtk" = yes; then
   AC_CHECK_PROGS(gnome_open_program,     gnome-open)
   AC_CHECK_PROGS(gnome_url_show_program, gnome-url-show)
@@ -2668,6 +2989,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
 
@@ -2769,6 +3091,10 @@ if test "$have_motif" = yes -a "$have_xpm" = yes ; then
   fi
 fi
 
+if test "$XPM_LIBS" = "" ; then
+  XPM_LIBS=$(MINIXPM)
+fi
+
 
 ###############################################################################
 #
@@ -2811,7 +3137,8 @@ fi
 
 ###############################################################################
 #
-#       Check for pty support for 'phosphor'
+#       Check for pty support: this allows 'phosphor' and 'apple2'
+#      to run curses-based programs, or be used as terminal windows.
 #
 ###############################################################################
 
@@ -2819,8 +3146,15 @@ PTY_LIBS=
 AC_CHECK_HEADERS(pty.h util.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
 
 ###############################################################################
 #
@@ -2950,8 +3284,8 @@ have_imagedir=no
 with_imagedir_req=unspecified
 
 AC_ARG_WITH(image-directory,
-[  --with-image-directory=DIR  By default, some screen savers may load
-                          random images out of this directory.],
+[  --with-image-directory=DIR  By default, some demos may display random images
+                          from this directory.],
   [with_imagedir="$withval"; with_imagedir_req="$withval"],
   [with_imagedir=yes])
 # no HANDLE_X_PATH_ARG for this one
@@ -3007,6 +3341,108 @@ if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then
 fi
 
 
+###############################################################################
+#
+#       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".
+#
+###############################################################################
+
+have_textfile=no
+with_textfile_req=unspecified
+
+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
+
+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/X11R6/README"                      \
+    ; do
+      if test -z "$with_textfile"; then
+        AC_MSG_CHECKING([for text file $f])
+        if test -f "$f" ; then
+          AC_MSG_RESULT(yes)
+          with_textfile="$f"
+        else
+          AC_MSG_RESULT(no)
+        fi
+      fi
+    done
+
+  ;;
+  no)
+    with_textfile=""
+  ;;
+
+  *)
+    echo "error: must be an absolute path: --with-text-file=$with_textfile_req"
+    exit 1
+  ;;
+esac
+ac_cv_textfile="$with_textfile"
+
+DEFAULT_TEXT_FILE="$ac_cv_textfile"
+
+
+###############################################################################
+#
+#       Check the browser to see help URL
+#
+###############################################################################
+
+have_browser=no
+with_browser_req=unspecified
+
+AC_ARG_WITH(browser,
+[  --with-browser=BROWSER   Specify the browser to show 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"
+
 ###############################################################################
 #
 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
@@ -3224,10 +3660,13 @@ AC_SUBST(SETUID_HACKS)
 AC_SUBST(INSTALL_DIRS)
 AC_SUBST(NEED_SETUID)
 AC_SUBST(INSTALL_PAM)
+AC_SUBST(HAVE_PAM_FAIL_DELAY)
 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(OBJCC)
 AC_SUBST(EXES_OSX)
@@ -3255,6 +3694,7 @@ AC_SUBST(GNOME24)
 AC_SUBST(GNOME22)
 AC_SUBST(NOGNOME)
 AC_SUBST(HACKDIR)
+AC_SUBST(HACKDIR_FULL)
 AC_SUBST(GTK_DATADIR)
 AC_SUBST(PO_DATADIR)
 AC_SUBST(HACK_CONF_DIR)
@@ -3769,6 +4209,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 "Hack configurations will be installed in ${HACK_CONF_DIR}/"
+  echo "Saver configuration will be installed in ${APPDEFAULTS}/"
   echo ''
 fi