http://ftp.x.org/contrib/applications/xscreensaver-3.10.tar.gz
[xscreensaver] / configure.in
index 62495c42e5b00b643c7eeea30d635b9bf9ce64b1..75a8fe321785428a76d7c25d05815aee43202f25 100644 (file)
@@ -3,8 +3,7 @@
 
 AC_INIT(driver/subprocs.c)
 
-echo -n "current directory: "
-pwd
+echo "current directory: `pwd`"
 echo "command line was: $0 $@"
 
 AC_CONFIG_HEADER(config.h)
@@ -149,7 +148,7 @@ fi
 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv)
 AC_CHECK_FUNCS(sigaction syslog)
 
-AC_CHECK_HEADERS(unistd.h crypt.h)
+AC_CHECK_HEADERS(unistd.h crypt.h sys/select.h)
 
 dnl    /usr/local/src/ssh-1.2.17/putenv.c -- AC_REPLACE_FUNCS(putenv)
 
@@ -160,7 +159,7 @@ Installation options:
   --enable-subdir=DIR     Put the demo programs in a subdirectory of \`bindir',
                           instead of putting them in bindir itself.  You can
                           specify the name of the subdirectory.  For example,
-                          --exec-prefix=/usr/local/bin --enable-subdir=demos
+                          \`--exec-prefix=/usr/local --enable-subdir=demos'
                           would put xscreensaver in /usr/local/bin/, and would
                           put the demos in /usr/local/bin/demos/.  (If DIR
                           begins with /, then bindir will not be prepended.)
@@ -184,9 +183,17 @@ else
   fi
 fi
 
+# canonicalize slashes.
+HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
+
 
 AC_PATH_XTRA
 
+if test "$have_x" != yes; then
+  AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
+fi
+
+
 # Try and find the app-defaults directory.
 # It sucks that autoconf doesn't do this already...
 #
@@ -568,6 +575,7 @@ else
   XMU_OBJS=''
   SAVER_LIBS="-lXmu $SAVER_LIBS"
   HACK_LIBS="-lXmu $HACK_LIBS"
+  TOOLKIT_LIBS="-lXmu $TOOLKIT_LIBS"
   AC_DEFINE(HAVE_XMU)
 fi
 
@@ -769,6 +777,31 @@ elif test "$with_xshm" != no; then
 fi
 
 
+# Check for the DOUBLE-BUFFER server extension header.
+#
+have_xdbe=no
+with_xdbe_req=unspecified
+AC_ARG_WITH(xdbe-ext,
+[  --with-xdbe-ext         Include support for the DOUBLE-BUFFER server
+                          extension, if possible (this is the default).
+  --without-xdbe-ext      Do not compile in support for this extension.],
+  [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
+
+HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
+
+if test "$with_xdbe" = yes; then
+
+  AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
+  if test "$have_xdbe" = yes; then
+    AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
+  fi
+
+elif test "$with_xdbe" != no; then
+  echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
+  exit 1
+fi
+
+
 # Check for the SGI-VIDEO-CONTROL server extension header.
 #
 have_sgivc=no
@@ -841,6 +874,40 @@ elif test "$with_dpms" != no; then
 fi
 
 
+# Check for /proc/interrupts
+#
+have_proc_interrupts=no
+with_proc_interrupts_req=unspecified
+AC_ARG_WITH(proc-interrupts,
+[  --with-proc-interrupts  Include support for consulting the /proc/interrupts
+                          file to notice keyboard activity, if possible.
+  --without-proc-interrupts   Do not compile in support for this method.],
+  [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
+  [with_proc_interrupts=yes])
+
+if test "$with_proc_interrupts" = yes; then
+
+   AC_MSG_CHECKING(whether /proc/interrupts contains keyboard data)
+   AC_CACHE_VAL(ac_cv_have_proc_interrupts,
+    [ac_cv_have_proc_interrupts=no
+     if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
+       ac_cv_have_proc_interrupts=yes
+     fi
+    ])
+   have_proc_interrupts=$ac_cv_have_proc_interrupts
+
+  AC_MSG_RESULT($have_proc_interrupts)
+
+  if test "$have_proc_interrupts" = yes; then
+    AC_DEFINE(HAVE_PROC_INTERRUPTS)
+  fi
+
+elif test "$with_proc_interrupts" != no; then
+  echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
+  exit 1
+fi
+
+
 
 # Check for Motif and Athena --with and --without arguments.
 #
@@ -1023,6 +1090,57 @@ if test "$have_lesstif" = yes ; then
 fi
 
 
+if test "$have_motif" = yes ; then
+  mtv=unknown
+  echo unknown > conftest-mt
+  AC_CACHE_CHECK([Motif version number],
+                ac_cv_motif_version_string,
+      [AC_TRY_X_RUN([#include <stdio.h>
+                    #include <Xm/Xm.h>
+                    int main() {
+                      FILE *f = fopen("conftest-mt", "w");
+                      if (!f) exit(1);
+                      fprintf(f, "%d %d.%d\n", XmVersion,
+                         XmVERSION, XmREVISION);
+                      fclose(f);
+                      exit(0);
+                    }],
+                   [mtv=`cat conftest-mt`
+                    ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
+                    ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
+                   [ac_cv_motif_version=unknown
+                    ac_cv_motif_version_string=unknown],
+                   [ac_cv_motif_version=unknown
+                    ac_cv_motif_version_string=unknown])])
+  rm -f conftest-mt
+  motif_version=$ac_cv_motif_version
+  motif_version_string=$ac_cv_motif_version_string
+
+fi
+
+
+# If this is Motif 2.x, and we have XPM, then link against XPM as well.
+# The deal is, Motif 2.x requires XPM -- but it's a compilation option of
+# the library whether to build the XPM code into libXm, or whether to rely
+# on an external libXm.  So the only way to tell whether XPM is a link-time
+# requirement is to examine libXm.a, which is very difficult to do in an
+# autoconf script.  So... if it's Motif 2.x, we always link against XPM if
+# the XPM lib exists (and this will be a no-op if libXm happens to already
+# have the XPM code in it.)
+#
+motif_requires_xpm=no
+if test "$have_motif" = yes ; then
+   AC_MSG_CHECKING(whether Motif requires XPM)
+   if test "$motif_version" -ge 2000; then
+     motif_requires_xpm=yes
+     AC_MSG_RESULT(maybe)
+   else
+     AC_MSG_RESULT(no)
+   fi
+fi
+
+
+
 # Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
 # Extension".   Why this extension isn't in -lXext with all the others,
 # I have no idea.
@@ -1036,6 +1154,19 @@ if test "$have_motif" = yes ; then
 fi
 
 
+# Check for _Xsetlocale in -lXintl, since at least some recent versions
+# of Motif (on Linux) need it.
+#
+have_xintl=no
+if test "$have_motif" = yes ; then
+  AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
+                 -lX11 -lXext -lm)
+  if test "$have_xintl" = yes; then
+    TOOLKIT_LIBS="$TOOLKIT_LIBS -lXintl"
+  fi
+fi
+
+
 # check for XPM header.
 #
 have_xpm=no
@@ -1060,6 +1191,15 @@ elif test "$with_xpm" != no; then
   exit 1
 fi
 
+# See comment near $motif_requires_xpm, above.
+# Need to do this here, after both Motif and XPM have been checked for.
+#
+if test "$have_motif" = yes -a "$have_xpm" = yes ; then
+  if test "$motif_requires_xpm" = yes ; then
+    TOOLKIT_LIBS="$TOOLKIT_LIBS $XPM_LIBS"
+  fi
+fi
+
 
 # check for the GL header
 #
@@ -1125,7 +1265,7 @@ if test "$with_gl" = yes; then
 #line __oline__ "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
-#configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
+configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
 EOF
 
         ac_save_CPPFLAGS="$CPPFLAGS"
@@ -1134,8 +1274,12 @@ EOF
         fi
         CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 
+         # M4 sucks!!
+        changequote(X,Y)
         mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
-             's/^#configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
+             's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
+        changequote([,])
+
          rm -f conftest.$ac_ext
 
         CPPFLAGS="$ac_save_CPPFLAGS"
@@ -1162,6 +1306,24 @@ EOF
     fi
 
 
+    # If it's MesaGL, check to see if it requires -lpthread.
+    #
+    have_pthread=no
+    mesa_requires_pthread=no
+    if test "$ac_have_mesa_gl" = yes; then
+
+      AC_CHECK_LIB(pthread, pthread_create, [have_pthread=yes], [],)
+      if test "$have_pthread" = yes; then
+        AC_CHECK_X_LIB($gl_lib_1, gl_get_thread_context,
+                       [mesa_requires_pthread=yes], [],
+                      $GL_LIBS -lpthread -lX11 -lXext -lm)
+      fi
+
+      if test "$mesa_requires_pthread" = yes; then
+        GL_LIBS="$GL_LIBS -lpthread"
+      fi
+    fi
+
     # Check for OpenGL 1.1 features.
     #
     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
@@ -1339,12 +1501,25 @@ if test ! -n "$ac_cv_zippy_program"; then
          dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
          changequote([,])
 
-          yow="yow -f $dir_up/etc/yow.lines"
-         if $dir/$yow >&- 2>&- ; then
-           ac_cv_zippy_program="$dir/$yow"
+         yowlines="$dir_up/etc/yow.lines"
+         if $dir/yow -f $yowlines >&- 2>&- ; then
+           ac_cv_zippy_program="$dir/yow -f $yowlines"
            AC_MSG_RESULT($ac_cv_zippy_program)
          else
-           AC_MSG_RESULT(no)
+            #
+            # In newer XEmacs releases, yow.lines is in a different place,
+            # and the easiest way to get it is by calling the new function
+            # `locate-data-file'.
+            #
+            yowlines=`$xemacs_exe $eargs \
+              '(princ (concat (locate-data-file "yow.lines") "\n"))' \
+              2>/dev/null | tail -1`
+            if $dir/yow -f $yowlines >&- 2>&- ; then
+              ac_cv_zippy_program="$dir/yow -f $yowlines"
+              AC_MSG_RESULT($ac_cv_zippy_program)
+            else
+              AC_MSG_RESULT(no)
+            fi
          fi
         fi
       fi
@@ -1378,6 +1553,8 @@ have_kerberos=no
 with_kerberos_req=unspecified
 have_shadow=no
 with_shadow_req=unspecified
+have_pam=no
+with_pam_req=unspecified
 need_setuid=no
 
 AC_ARG_ENABLE(locking,[
@@ -1422,7 +1599,7 @@ if test "$enable_vt_locking" = yes; then
   ac_vt_lockswitch=$ac_cv_vt_lockswitch
   AC_MSG_RESULT($ac_vt_lockswitch)
 
-elif test "$enable_locking" = no; then
+elif test "$enable_vt_locking" = no; then
   true
 else
   echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
@@ -1471,13 +1648,40 @@ if test "$enable_locking" = yes; then
     echo "error: must be yes or no: --with-kerberos=$with_kerberos"
     exit 1
   fi
+  
+  # Check for PAM.
+  AC_ARG_WITH(pam,
+[  --with-pam              Include support for PAM (Pluggable Authentication
+                          Modules) if possible (this is the default.)
+  --without-pam           Do not compile in support for PAM.],
+  [with_pam="$withval"; with_pam_req="$withval"],[with_pam=no])
+#### Leave PAM off by default for now, since it's buggy on Solaris
+#### (and probably Linux, but it's so hard to tell...)
+
+  HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
+
+  if test "$with_pam" = yes; then
+    AC_CACHE_CHECK([for PAM], ac_cv_pam,
+                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
+                                    [ac_cv_pam=yes],
+                                    [ac_cv_pam=no])])
+    if test "$ac_cv_pam" = yes ; then
+         have_pam=yes
+         AC_DEFINE(HAVE_PAM)
+         PASSWD_LIBS="${PASSWD_LIBS} -lpam -ldl"
+    fi
+  elif test "$with_pam" != no; then
+       echo "error: must be yes or no: --with-pam=$with_pam"
+       exit 1
+  fi
 
   # Next, check for the nine billion variants of shadow passwords...
 
-  passwd_cruft_done=no
+  pwent_cruft_done=no
   AC_ARG_WITH(shadow,
 [  --with-shadow           Include support for shadow password authentication,
-                          if possible (this is the default, if no Kerberos.)
+                          if possible (this is the default, if no Kerberos or
+                          PAM.)
   --without-shadow        Do not compile in support for shadow passwords.
 ],
   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
@@ -1485,7 +1689,7 @@ if test "$enable_locking" = yes; then
   HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
 
   if test "$with_shadow" = no; then
-    passwd_cruft_done=yes
+    pwent_cruft_done=yes
   elif test "$with_shadow" != yes; then
     echo "error: must be yes or no: --with-shadow=$with_shadow"
     exit 1
@@ -1494,7 +1698,7 @@ if test "$enable_locking" = yes; then
 
   # Sun's "adjunct" passwords.
   #
-  if test "$passwd_cruft_done" = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1509,14 +1713,14 @@ if test "$enable_locking" = yes; then
     if test "$ac_cv_sun_adjunct" = yes; then
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_ADJUNCT_PASSWD)
     fi
   fi
 
   # DEC and SCO so-called "enhanced" security.
   #
-  if test "$passwd_cruft_done" = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1535,7 +1739,7 @@ if test "$enable_locking" = yes; then
     if test $ac_cv_enhanced_passwd = yes; then
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_ENHANCED_PASSWD)
 
       # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
@@ -1551,7 +1755,7 @@ if test "$enable_locking" = yes; then
 
   # HP's entry in the "Not Invented Here" Sweepstakes.
   #
-  if test "$passwd_cruft_done" = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1566,7 +1770,7 @@ if test "$enable_locking" = yes; then
     if test "$ac_cv_hpux_passwd" = yes; then
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_HPUX_PASSWD)
 
       # on HPUX, bigcrypt is in -lsec
@@ -1576,7 +1780,7 @@ if test "$enable_locking" = yes; then
 
   # Traditional (ha!) shadow passwords.
   #
-  if test "$passwd_cruft_done" = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
                   [AC_TRY_X_COMPILE([#include <stdlib.h>
                                      #include <unistd.h>
@@ -1590,7 +1794,7 @@ if test "$enable_locking" = yes; then
     if test "$ac_cv_shadow" = yes; then
       have_shadow=yes
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
       AC_DEFINE(HAVE_SHADOW_PASSWD)
 
       # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
@@ -1608,7 +1812,7 @@ if test "$enable_locking" = yes; then
   # program is setuid.  So, guess that we've got this lossage to contend with
   # if /etc/master.passwd exists, and default to a setuid installation.
   #
-  if test "$passwd_cruft_done" = no ; then
+  if test "$pwent_cruft_done" = no ; then
     AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
                   [if test -f /etc/master.passwd ; then
                      ac_cv_master_passwd=yes
@@ -1617,7 +1821,7 @@ if test "$enable_locking" = yes; then
                    fi])
     if test "$ac_cv_master_passwd" = yes; then
       need_setuid=yes
-      passwd_cruft_done=yes
+      pwent_cruft_done=yes
     fi
   fi
 
@@ -1626,7 +1830,7 @@ if test "$enable_locking" = yes; then
   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
   if test "$have_crypt" = no ; then
     AC_CHECK_LIB(crypt, crypt,
-                [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
+                 [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
   fi
 
 
@@ -1645,7 +1849,6 @@ if test "$enable_locking" = yes; then
 fi
 
 
-
 if test \! -z "$includedir" ; then 
   INCLUDES="-I$includedir"
 fi
@@ -1677,12 +1880,17 @@ else
 fi
 
 if test "$have_kerberos" = yes; then
-  PASSWD_SRCS='$(KERBEROS_SRCS)'
-  PASSWD_OBJS='$(KERBEROS_OBJS)'
-else
-  PASSWD_SRCS='$(PWENT_SRCS)'
-  PASSWD_OBJS='$(PWENT_OBJS)'
+  PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
+fi
+if test "$have_pam" = yes; then
+  PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
+  INSTALL_PAM="install-pam"
 fi
+  PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
+
 
 if test "$enable_locking" = yes; then
   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
@@ -1719,6 +1927,7 @@ AC_SUBST(PASSWD_LIBS)
 AC_SUBST(INSTALL_SETUID)
 AC_SUBST(INSTALL_DIRS)
 AC_SUBST(NEED_SETUID)
+AC_SUBST(INSTALL_PAM)
 AC_SUBST(SGI_VIDEO_OBJS)
 AC_SUBST(SGI_VIDEO_LIBS)
 
@@ -1804,6 +2013,10 @@ if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
   warn 'The XSHM extension was requested, but was not found.'
 fi
 
+if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
+  warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
+fi
+
 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
 fi
@@ -1856,7 +2069,7 @@ fi
 
 
 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
-  preferred_mesagl=2.7
+  preferred_mesagl=3.0
 
   if test "$ac_mesagl_version" = unknown; then
     warnL "Unable to determine the MesaGL version number!"
@@ -1903,8 +2116,8 @@ if test "$have_gl" = no ; then
   warn2 're-running configure.  (Remember to delete the'
   warn2 "config.cache file first.)  If your vendor doesn't ship"
   warn2 'their own implementation of OpenGL, you can get a free'
-  warn2 'version at <http://www.ssec.wisc.edu/~brianp/Mesa.html>.'
-  warn2 'For general OpenGL info, see <http://www.opengl.org/>.'
+  warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
+  warn2 'info, see <http://www.opengl.org/>.'
 
 fi
 
@@ -1920,6 +2133,10 @@ if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
   warn 'Use of Kerberos was requested, but it was not found.'
 fi
 
+if test "$with_pam_req" = yes -a "$have_pam" = no ; then
+  warn 'Use of PAM was requested, but it was not found.'
+fi
+
 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
   warn 'Use of shadow passwords was requested, but they were not found.'
 fi
@@ -1959,20 +2176,79 @@ eval HACKDIR=${HACKDIR}
 eval HACKDIR=${HACKDIR}
 eval HACKDIR=${HACKDIR}
 
-echo ""
-echo "$warnsep"
-echo ""
-echo '      When you run "make install", the "xscreensaver",'
-echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
-echo "      will be installed in ${bindir}."
-echo ""
-echo "      The various graphics demos (80+ different executables) will"
-echo "      be installed in ${HACKDIR}."
-echo ""
-echo "      If you would prefer the demos to be installed elsewhere"
-echo "      (for example, in a dedicated directory) you should re-run"
-echo "      configure with the --enable-subdir=DIR option.  For more"
-echo "      information, run $0 --help."
-echo ""
-echo "$warnsep"
-echo ""
+# canonicalize slashes.
+bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
+HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
+
+
+# Sanity check the subdir
+for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
+  if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
+    echo ""
+    AC_MSG_ERROR([\"--enable-subdir=${bindir}/${bad_choice}\" won't work.
+                   There will be an executable installed with that name, so
+                   that can't be the name of a directory as well.  Please
+                   re-configure with a different directory name.])
+  fi
+done
+
+
+do_dir_warning=no
+
+# Now let's see if there's a previous RPM version already installed.  Blargh!
+
+# M4 sucks!!
+changequote(X,Y)
+rpmv=`(rpm -qv xscreensaver) 2>&- | \
+      sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'`
+changequote([,])
+
+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'`
+
+  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.  See the RPM documentation for more info."
+  echo ""
+
+  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."
+  fi
+
+  do_dir_warning=yes
+fi
+
+
+if test "${bindir}" = "${HACKDIR}" ; then
+  do_dir_warning=yes
+fi
+
+if test "$do_dir_warning" = yes; then
+  echo ""
+  echo "$warnsep"
+  echo ""
+  echo '      When you run "make install", the "xscreensaver",'
+  echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
+  echo "      will be installed in ${bindir}."
+  echo ""
+  echo "      The various graphics demos (90+ different executables) will"
+  echo "      also be installed in ${HACKDIR}."
+  echo ""
+  echo "      If you would prefer the demos to be installed elsewhere"
+  echo "      (for example, in a dedicated directory) you should re-run"
+  echo "      configure with the --enable-subdir=DIR option.  For more"
+  echo "      information, run $0 --help."
+  echo ""
+  echo "$warnsep"
+  echo ""
+fi