ftp://ftp.jp.xemacs.org/pub/NetBSD/packages/distfiles/xscreensaver-4.15.tar.gz
[xscreensaver] / configure.in
index a2337930bf8e0668a97638a65bcb402ab766d9e0..e6d3cdc7232c70e085d2215302ef4d0ff22b3a0b 100644 (file)
@@ -56,6 +56,8 @@ AC_DEFUN(AC_PROG_CC_ANSI,
     esac
   fi
 
+  OBJCC="$CC"
+
   AC_MSG_CHECKING([whether the compiler works on ANSI C])
   AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
      AC_MSG_RESULT(yes),
@@ -65,7 +67,10 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 
   if test -n "$GCC"; then
     AC_MSG_RESULT(Turning on gcc compiler warnings.)
-    CC="$CC -Wall -Wstrict-prototypes -Wnested-externs"
+    CC="$CC -pedantic -Wall -Wstrict-prototypes -Wnested-externs"
+    OBJCC="$OBJCC -Wall"
+    # supposedly gcc 3.4 will have "-Wdeclaration-after-statement"
+    # and then perhaps we can do without -pedantic?
   else
     case "$host" in
       *-irix5* |*-irix6.[0-3]* )
@@ -92,6 +97,15 @@ AC_DEFUN(AC_PROG_CC_ANSI,
 #       gcc.  Old gcc doesn't support -std, and new gcc doesn't support -lang.
 #       so much for compatibility!)
 #
+#       UPDATE: apparently there is NO WAY to tell gcc 3.2.2 to require that
+#       declarations preceed statements, without resorting to "-pedantic".
+#       This means that there is no way to get gcc3 to issue warnings that
+#       ensure that your code complies with the ANSI/ISO C89 standard, without
+#       also drowning in totally useless warnings.  Thank you master may I
+#       have another.
+#
+#       So, I give up, let's just use -pedantic.
+#
 ###############################################################################
 
 AC_DEFUN(AC_GCC_ACCEPTS_STD,
@@ -617,10 +631,10 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
       #
       if test -f /usr/dt/include/Xm/Xm.h ; then
         X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
-        X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
+        MOTIF_LIBS="$MOTIF_LIBS -L/usr/dt/lib -R/usr/dt/lib"
 
         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
-        AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
+        AC_CHECK_LIB(gen, regcmp, [MOTIF_LIBS="$MOTIF_LIBS -lgen"])
       fi
 
     ;;
@@ -816,7 +830,6 @@ AC_HEADER_SYS_WAIT
 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_ICMP
 AC_CHECK_ICMPHDR
@@ -838,6 +851,16 @@ AC_PATH_X_APP_DEFAULTS
 AC_X_RANDOM_PATHS
 AC_XPOINTER
 
+AC_MSG_CHECKING(whether this is MacOS X)
+  ac_macosx=no
+  case "$host" in
+    *-apple-darwin* )
+      ac_macosx=yes
+    ;;
+  esac
+AC_MSG_RESULT($ac_macosx)
+
+
 
 ###############################################################################
 #
@@ -853,6 +876,7 @@ 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"
 AM_GLIB_GNU_GETTEXT
+MKINSTALLDIRS="$INSTALL_DIRS"
 
 
 ###############################################################################
@@ -1180,7 +1204,8 @@ if test "$with_dpms" = yes; then
 
   # first check for dpms.h
   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
-                    [#include <X11/Xlib.h>])
+                    [#include <X11/Xlib.h>
+                    #include <X11/Xmd.h>])
 
   # if that succeeded, then check for the DPMS code in the libraries
   if test "$have_dpms" = yes; then
@@ -1234,12 +1259,12 @@ if test "$with_xinerama" = yes; then
 
     # first look in -lXext
     have_xinerama=no
-    AC_CHECK_X_LIB(Xext, XineramaQueryExtension, [have_xinerama=yes], [true],
+    AC_CHECK_X_LIB(Xext, XineramaQueryScreens, [have_xinerama=yes], [true],
                   -lXext -lX11)
 
     # 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, XineramaQueryExtension,
+      AC_CHECK_X_LIB(Xinerama, XineramaQueryScreens,
                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
                      [true], -lXext -lX11)
     fi
@@ -1447,6 +1472,15 @@ 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
 
 
 ###############################################################################
@@ -1530,6 +1564,13 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then
     # those are in libc.  On Linux and Solaris, they're in libdl.
     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
 
+    # On Linux, sigtimedwait() is in libc; on Solaris, it's in librt.
+    have_timedwait=no
+    AC_CHECK_LIB(c, sigtimedwait, [have_timedwait=yes])
+    if test "$have_timedwait" = no ; then
+      AC_CHECK_LIB(rt, 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>
@@ -1591,10 +1632,29 @@ if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
   fi
 
   if test "$ac_cv_kerberos5" = yes ; then
-    have_kerberos=yes
-    have_kerberos5=yes
-    AC_DEFINE(HAVE_KERBEROS)
-    AC_DEFINE(HAVE_KERBEROS5)
+
+    # Andrew Snare <ajs@pigpond.com> wrote:
+    #
+    # You were assuming that if kerberosV (krb5) was found, then kerberosIV
+    # (krb4) was also available.  This turns out not to be the case with
+    # mit-krb-1.2.7; apparently backwards-compatibility with KerberosIV
+    # is optional.
+    #
+    # So, disable kerberosV support if libkrb4 can't be found.
+    # This is not the best solution, but it makes the compile not fail.
+    #
+    AC_CHECK_X_LIB(krb4, krb_get_tf_realm,
+                   [have_kerberos=yes],
+                   [have_kerberos=no])
+    if test "$have_kerberos" = yes ; then
+      have_kerberos5=yes
+      AC_DEFINE(HAVE_KERBEROS)
+      AC_DEFINE(HAVE_KERBEROS5)
+    else
+      have_kerberos5=no
+      AC_MSG_WARN([Cannot find compat lib (libkrb4) needed to use Kerberos 5])
+    fi
+
   fi
 
   if test "$have_kerberos5" = yes ; then
@@ -1836,6 +1896,44 @@ elif test "$have_shadow" = yes ; then
 fi
 
 
+###############################################################################
+#
+#       Check for external password helper
+#      On SuSE, instead of having xscreensaver be a setuid program, they
+#      fork an external program that takes the password on stdin, and
+#      returns true if that password is a valid one.  Then only that
+#      smaller program needs to be setuid.
+#
+#       (Note that this external program is not a GUI: the GUI is still
+#      all in xscreensaver itself; the external program just does auth.)
+#
+###############################################################################
+
+have_passwd_helper=no
+with_passwd_helper_req=unspecified
+
+AC_ARG_WITH(passwd-helper,
+[  --with-passwd-helper    Include support for an external password
+                          verification helper program.],
+  [with_passwd_helper="$withval"; with_passwd_helper_req="$withval"],[with_passwd_helper=no])
+# no HANDLE_X_PATH_ARG for this one
+
+if test "$enable_locking" = no ; then
+  with_passwd_helper_req=no
+  with_passwd_helper=no
+fi
+
+case "$with_passwd_helper" in
+  ""|no) : ;;
+  /*)
+    AC_DEFINE_UNQUOTED(PASSWD_HELPER_PROGRAM, "$with_passwd_helper")
+    have_passwd_helper=yes;;
+  *)
+    echo "error: --with-passwd-helper needs full pathname of helper (not '$with_passwd_helper')." >&2
+    exit 1
+esac
+
+
 ###############################################################################
 #
 #       Check for -lXm.
@@ -1849,7 +1947,7 @@ User interface options:
 
   --with-motif            Use the Motif toolkit for the user interface
                           (not recommended.)],
-  [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
+  [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
 
 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
 
@@ -1979,7 +2077,6 @@ if test "$with_gtk" = yes; then
     # the new way...
     # run pkg-config based tests.
     #
-
     pkgs=''
     pkg_check_version() {
       if test "$ok" = yes ; then
@@ -2005,11 +2102,14 @@ if test "$with_gtk" = yes; then
       fi
     }
 
+    AC_MSG_RESULT(checking for GTK 2.x with pkg-config based tests...)
+
     ok="yes"
-    pkg_check_version     gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
-    pkg_check_version  gmodule-2.0  2.0.0
-    pkg_check_version   libxml-2.0  2.4.6
-    pkg_check_version libglade-2.0  1.99.0
+    pkg_check_version       gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
+    pkg_check_version    gmodule-2.0  2.0.0
+    pkg_check_version     libxml-2.0  2.4.6
+    pkg_check_version   libglade-2.0  1.99.0
+#   pkg_check_version gdk_pixbuf      0.1
     have_gtk="$ok"
 
     if test "$have_gtk" = yes; then
@@ -2026,10 +2126,13 @@ if test "$with_gtk" = yes; then
       #
       # we don't have GTK 2.  Let's look for GTK 1.
       #
+      AC_MSG_RESULT(checking for GTK 1.x with pkg-config based tests...)
+
       pkgs=''
       ok="yes"
-      pkg_check_version gtk+ 1.2           ; ac_gtk_version_string="$vers"
-      pkg_check_version glib 1.0
+      pkg_check_version gtk+       1.2     ; ac_gtk_version_string="$vers"
+      pkg_check_version glib       1.0
+      pkg_check_version gdk_pixbuf 0.1
       have_gtk="$ok"
 
       # Now check for Gnome...
@@ -2074,6 +2177,7 @@ if test "$with_gtk" = yes; then
     # the old way...
     # run {gnome,gtk}-config based tests.
     #
+    AC_MSG_RESULT(checking for GTK 1.x with gtk-config based tests...)
 
     AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
     AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
@@ -2893,6 +2997,7 @@ if test "$with_gdk_pixbuf" = yes; then
       #
       # we don't have Gtk; or we have Gtk 2.x.  Check for pixbuf 2.x.
       #
+      AC_MSG_RESULT(checking for gdk_pixbuf 2.x with gtk-config based tests...)
       pkg_check_version gdk-pixbuf-2.0      2.0.0
       pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
       have_gdk_pixbuf="$ok"
@@ -2907,8 +3012,9 @@ if test "$with_gdk_pixbuf" = yes; then
       if test "$have_gdk_pixbuf2" = no; then
         pkgs=''
         ok="yes"
-        pkg_check_version gdk-pixbuf      0.0
-        pkg_check_version gdk-pixbuf-xlib 0.0
+      AC_MSG_RESULT(checking for gdk_pixbuf 1.x with gtk-config based tests...)
+        pkg_check_version gdk_pixbuf      0.0
+        pkg_check_version gdk_pixbuf_xlib 0.0
         have_gdk_pixbuf="$ok"
       fi
     fi
@@ -2933,6 +3039,8 @@ if test "$with_gdk_pixbuf" = yes; then
     # pkg-config exists, but doesn't know about pixbuf.
     #
 
+   AC_MSG_RESULT(checking for gdk_pixbuf with gdk-pixbuf-config based tests...)
+
     # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
     # look in /foo/bin/ for for gdk-pixbuf-config.
     #
@@ -3076,6 +3184,25 @@ if test "$with_jpeg" = yes; then
 fi
 
 
+###############################################################################
+#
+#       Check for pty support for 'phosphor'
+#
+###############################################################################
+
+PTY_LIBS=
+have_ptys=no
+AC_CHECK_X_HEADER(pty.h, [have_ptys=yes])
+if test "$have_ptys" = yes; then
+  # we have the header, now check for the library
+  have_ptys=no
+  AC_CHECK_X_LIB(util, forkpty,
+                 [have_ptys=yes
+                  PTY_LIBS="-lutil"
+                  AC_DEFINE(HAVE_FORKPTY)])
+fi
+
+
 ###############################################################################
 #
 #       Check for the XSHM server extension.
@@ -3333,7 +3460,7 @@ if test \! -z "$libdir" ; then
 fi
 
 
-PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
+PREFERRED_DEMO_PROGRAM=''
 ALL_DEMO_PROGRAMS=
 if test "$have_motif" = yes; then
   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
@@ -3353,6 +3480,10 @@ if test "$have_pam" = yes; then
   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
   INSTALL_PAM="install-pam"
+fi
+if test "$have_passwd_helper" = yes; then
+  PASSWD_SRCS="$PASSWD_SRCS \$(PWHELPER_SRCS)"
+  PASSWD_OBJS="$PASSWD_OBJS \$(PWHELPER_OBJS)"
 fi
   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
@@ -3366,6 +3497,17 @@ else
   LOCK_OBJS='$(NOLOCK_OBJS_1)'
 fi
 
+if test "$ac_macosx" = yes; then
+  EXES_OSX='$(EXES_OSX)'
+  SCRIPTS_OSX='$(SCRIPTS_OSX)'
+  MEN_OSX='$(MEN_OSX)'
+else
+  EXES_OSX=
+  SCRIPTS_OSX=
+  MEN_OSX=
+fi
+
+
 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
 
 if test "$need_setuid" = yes; then
@@ -3519,6 +3661,7 @@ AC_SUBST(XML_LIBS)
 AC_SUBST(JPEG_LIBS)
 AC_SUBST(HACK_LIBS)
 AC_SUBST(XPM_LIBS)
+AC_SUBST(PTY_LIBS)
 AC_SUBST(GL_LIBS)
 AC_SUBST(GLE_LIBS)
 AC_SUBST(XDPMS_LIBS)
@@ -3529,6 +3672,11 @@ AC_SUBST(INSTALL_DIRS)
 AC_SUBST(NEED_SETUID)
 AC_SUBST(INSTALL_PAM)
 
+AC_SUBST(OBJCC)
+AC_SUBST(EXES_OSX)
+AC_SUBST(SCRIPTS_OSX)
+AC_SUBST(MEN_OSX)
+
 AC_SUBST(PASSWD_SRCS)
 AC_SUBST(PASSWD_OBJS)
 AC_SUBST(XMU_SRCS)
@@ -3669,10 +3817,30 @@ 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
 
+motif_warn2() {
+  warn2 'Though the Motif front-end to xscreensaver is still'
+  warn2 'maintained, it is no longer being updated with new'
+  warn2 'features: all new development on the xscreensaver-demo'
+  warn2 'program is happening in the GTK version, and not in the'
+  warn2 'Motif version.  It is recommended that you build against'
+  warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
+}
 
 if test "$have_motif" = no -a "$have_gtk" = no; then
-  warnL "Neither Motif nor Gtk seem to be available;"
-  warn2 "the \`xscreensaver-demo' program requires one of these."
+
+  if test "$with_motif" = yes; then
+    warnL "Neither the GTK nor Motif libraries were found; the"
+    warn2 "\`xscreensaver-demo' program requires one of these."
+    echo ''
+    motif_warn2
+  else
+    warnL "The GTK libraries do not seem to be available; the"
+    warn2 "\`xscreensaver-demo' program requires them."
+    echo ''
+    warn2 'You can use Motif or Lesstif instead of GTK (use the'
+    warn2 "\`--with-motif' option) but that is NOT recommended."
+    motif_warn2
+  fi
 
 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
   warnL "Use of Motif was requested, but it wasn't found;"
@@ -3691,22 +3859,21 @@ elif test "$jurassic_gtk" = yes ; then
     warnL "Gtk was found on this system, but it is version $v;"
   fi
 
-  warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
+  warn2 "Gtk $pref_gtk or newer is required."
 
 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
   warnL "Use of Gtk was requested, but it wasn't found."
-  if test "$have_motif" = yes; then
-    warn2 "Motif will be used instead."
-  fi
 fi
 
 if test "$gtk2_halfassed" != no ; then
   warnL "GTK version $gtk2_halfassed was found, but at least one supporting"
   warn2 "library ($gtk2_halfassed_lib) was not, so GTK 2.x can't be used."
-  v="$ac_gtk_version_string"
-  warn2 "GTK $v is also installed, so it will be used instead."
-  warn2 "Please read the above output and the \`config.log' file"
-  warn2 "for more details."
+  if test "$have_gtk" = yes ; then
+    v="$ac_gtk_version_string"
+    warn2 "GTK $v is also installed, so it will be used instead."
+    warn2 "Please read the above output and the \`config.log' file"
+    warn2 "for more details."
+  fi
 fi
 
 
@@ -3777,12 +3944,7 @@ fi
 if test "$have_motif" = yes -a "$have_gtk" = no ; then
   warn  'Motif is being used, and GTK is not.'
   echo  ''
-  warn2 'Though the Motif front-end to xscreensaver is still'
-  warn2 'maintained, it is no longer being updated with new'
-  warn2 'features: all new development on the xscreensaver-demo'
-  warn2 'program is happening in the GTK version, and not in the'
-  warn2 'Motif version.  It is recommended that you build against'
-  warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
+  motif_warn2
 fi
 
 
@@ -4060,7 +4222,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 (150+ different executables) will"
+  echo "      The various graphics demos (175+ different executables) will"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"