http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.14.tar.gz
[xscreensaver] / configure.in
index 76ccf0f9f11af1584b2842d877133dac910e4e95..8397156d7df721751e7d875ea2236f4ed0705b2d 100644 (file)
@@ -1,4 +1,4 @@
-# configure.in --- xscreensaver, Copyright (c) 1997-2002 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2003 Jamie Zawinski.
 #
 
 AC_PREREQ(2.52)
@@ -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,
@@ -140,6 +154,38 @@ AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
 ])
 
 
+###############################################################################
+#
+#       Function to figure out how to turn off Objective C on MacOS X.
+#       (We have to do this to work around an Apple-specific gcc bug.)
+#
+###############################################################################
+
+AC_DEFUN(AC_GCC_ACCEPTS_NO_CPP_PRECOMP,
+ [if test -n "$GCC"; then
+   AC_CACHE_CHECK([whether gcc accepts -no-cpp-precomp],
+     ac_cv_gcc_accepts_no_cpp_precomp,
+    [if ( ( gcc -E -no-cpp-precomp - </dev/null >/dev/null ) 2>&1 | \
+          grep unrecognized >/dev/null ); then
+       ac_cv_gcc_accepts_no_cpp_precomp=no
+     else
+       ac_cv_gcc_accepts_no_cpp_precomp=yes
+     fi])
+   ac_gcc_accepts_no_cpp_precomp="$ac_cv_gcc_accepts_no_cpp_precomp"
+  fi
+])
+
+AC_DEFUN(AC_NO_OBJECTIVE_C,
+ [if test -n "$GCC"; then
+   AC_GCC_ACCEPTS_NO_CPP_PRECOMP
+   if test "$ac_gcc_accepts_no_cpp_precomp" = yes ; then
+     AC_MSG_RESULT(Disabling Objective C extensions in ANSI C code.)
+     CC="$CC -no-cpp-precomp"
+   fi
+  fi
+])
+
+
 ###############################################################################
 #
 #       Function to figure out how to create directory trees.
@@ -585,10 +631,20 @@ 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
+
+    ;;
+    *-darwin*)
+
+      # On MacOS X (10.x with "fink"), many things are under /sw/.
+      #
+      if test -d /sw/include ; then
+        X_CFLAGS="-I/sw/include $X_CFLAGS"
+        X_LIBS="-L/sw/lib $X_LIBS"
       fi
     ;;
   esac])
@@ -743,6 +799,7 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [
 AC_CANONICAL_HOST
 AC_PROG_CC_ANSI
 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
+AC_NO_OBJECTIVE_C
 AC_PROG_CPP
 AC_C_CONST
 AC_C_INLINE
@@ -795,6 +852,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)
+
+
 
 ###############################################################################
 #
@@ -1137,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
@@ -1315,15 +1383,37 @@ elif test "$with_xf86gamma" != no; then
 fi
 
 
+###############################################################################
+#
+#       Check for XF86MiscSetGrabKeysState (but only bother if we are already
+#      using other XF86 stuff.)
+#
+###############################################################################
+
+have_xf86miscsetgrabkeysstate=no
+if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
+  AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
+                [have_xf86miscsetgrabkeysstate=yes],
+                [true], -lXext -lX11)
+  if test "$have_xf86miscsetgrabkeysstate" = yes ; then
+    SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
+    AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE)
+  fi
+fi
+
+
 ###############################################################################
 #
 #       Check for HP XHPDisableReset and XHPEnableReset.
 #
 ###############################################################################
 
+AC_MSG_CHECKING([for XHPDisableReset in X11/XHPlib.h])
 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
                   [AC_DEFINE(HAVE_XHPDISABLERESET)
-                   SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
+                   SAVER_LIBS="-lXhp11 $SAVER_LIBS"
+                   AC_MSG_RESULT(yes)],
+                  [AC_MSG_RESULT(no)])
 
 
 ###############################################################################
@@ -1382,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
 
 
 ###############################################################################
@@ -1526,16 +1625,40 @@ 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
     # from Matt Knopp <mhat@infocalypse.netlag.com>
     # (who got it from amu@mit.edu)
-    PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
+
+    PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
+
+    # jwz: MacOS X uses -lkrb5, but not -lcrypt
+    AC_CHECK_X_LIB(crypt, crypt, [PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
+
   elif test "$have_kerberos" = yes ; then
     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
@@ -1779,7 +1902,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)
 
@@ -1909,7 +2032,6 @@ if test "$with_gtk" = yes; then
     # the new way...
     # run pkg-config based tests.
     #
-
     pkgs=''
     pkg_check_version() {
       if test "$ok" = yes ; then
@@ -1935,11 +2057,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
@@ -1956,10 +2081,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...
@@ -2004,6 +2132,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)
@@ -2023,15 +2152,16 @@ if test "$with_gtk" = yes; then
       AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
                      [ac_cv_gtk_version_string=`$gtk_config --version`])
       ac_gtk_version_string=$ac_cv_gtk_version_string
+      parse_gtk_version_string
     fi
 
-    parse_gtk_version_string
-
-    if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
-    then
-      have_gtk=no
-      have_gnome=no
-      jurassic_gtk=yes
+    if test "$have_gtk" = yes; then
+      if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
+      then
+        have_gtk=no
+        have_gnome=no
+        jurassic_gtk=yes
+      fi
     fi
 
     if test "$have_gtk" = yes; then
@@ -2054,7 +2184,7 @@ if test "$with_gtk" = yes; then
       gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
       AC_MSG_CHECKING(for Gnome capplet includes)
       AC_CACHE_VAL(ac_cv_gnome_config_cflags,
-        [if ( $gnome_config --cflags $gnome_config_libs >/dev/null 2>&1 | \
+        [if ( $gnome_config --cflags $gnome_config_libs 2>&1 | \
               grep Unknown >/dev/null ) ; then
            ac_cv_gnome_config_cflags=''
          else
@@ -2072,7 +2202,7 @@ if test "$with_gtk" = yes; then
     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
       AC_MSG_CHECKING(for Gnome capplet libs)
       AC_CACHE_VAL(ac_cv_gnome_config_libs,
-        [if ( $gnome_config --libs $gnome_config_libs >/dev/null 2>&1 |
+        [if ( $gnome_config --libs $gnome_config_libs 2>&1 |
               grep Unknown >/dev/null ) ; then
            ac_cv_gnome_config_libs=''
          else
@@ -2603,7 +2733,7 @@ EOF
          # M4 sucks!!
          changequote(X,Y)
           mglv=`echo "$mglv" | sed -n \
-             's/^configure: *\([0-9][0-9]*\) \([0-9].*\)$/\1.\2/p'`
+             's/^configure: *\([0-9][0-9]*\)  *\([0-9].*\)$/\1.\2/p'`
          changequote([,])
 
          rm -f conftest.$ac_ext
@@ -2822,6 +2952,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"
@@ -2836,8 +2967,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
@@ -2862,6 +2994,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.
     #
@@ -2976,9 +3110,7 @@ have_jpeg=no
 with_jpeg_req=unspecified
 jpeg_halfassed=no
 AC_ARG_WITH(jpeg,
-[  --with-jpeg             Include support for the JPEG library in some demos.
-                          (If this library is available, webcollage will be a
-                        . lot faster.)],
+[  --with-jpeg             Include support for the JPEG library.],
   [with_jpeg="$withval"; with_jpeg_req="$withval"],
   [with_jpeg=yes])
 
@@ -3264,7 +3396,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
@@ -3297,6 +3429,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
@@ -3460,6 +3603,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)
@@ -3600,10 +3748,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;"
@@ -3622,26 +3790,28 @@ 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
 
 
-if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
+if test "$with_gnome_req" = yes -a "$have_gnome" = no \
+        -a "$have_gtk2" = no; then
+  # don't issue this warning if we have GTK2 -- in that case, the
+  # Gnome-specific code isn't needed.
   warn  'Use of the Gnome Control Panel was requested, but the necessary'
   warn2 'headers and/or libraries were not found.'
 fi
@@ -3705,12 +3875,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
 
 
@@ -3780,7 +3945,13 @@ if test "$have_jpeg" = no ; then
     echo ''
   fi
 
-  warn2 "This means the \`webcollage' program will be much slower."
+  if test "$have_gdk_pixbuf" = no ; then
+    warn2 "This means that it won't be possible for the image-manipulating"
+    warn2 "display modes to load files from disk; and it also means that"
+    warn2 "the \`webcollage' program will be much slower."
+  else
+    warn2 "This means the \`webcollage' program will be much slower."
+  fi
 fi
 
 
@@ -3834,6 +4005,11 @@ fi
 
 
 if test "$have_gl" = yes -a "$have_gle" = no ; then
+
+ # nobody cares about this; don't print the warning unless it was
+ # requested and not found, or halfway-found.
+ if test "$with_gle_req" = yes -o "$gle_halfassed" = yes ; then
+
   if test "$with_gle_req" = yes ; then
     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
     warn2 'it was not found (though the OpenGL library was found, and'
@@ -3861,6 +4037,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
   warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
   warn2 'OpenGL info, see <http://www.opengl.org/>.'
 
+ fi
 fi
 
 
@@ -3976,7 +4153,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,"