http://www.jwz.org/xscreensaver/xscreensaver-5.12.tar.gz
[xscreensaver] / configure.in
index 9a049b55a7c474936da4ddd23428cce04fa3a616..457af807905c463e89ee362fb467f2a3796b669e 100644 (file)
@@ -94,6 +94,12 @@ AH_TEMPLATE([HAVE_XINERAMA],
            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
@@ -106,6 +112,9 @@ AH_TEMPLATE([HAVE_RANDR],
            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
@@ -142,6 +151,10 @@ 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
@@ -389,6 +402,7 @@ AC_DEFUN(AC_CHECK_GCC_ARG,
        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
@@ -400,6 +414,11 @@ AC_DEFUN(AC_NO_LONG_STRING_WARNINGS,
 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)])
 
 ###############################################################################
 #
@@ -421,8 +440,17 @@ AC_DEFUN(AC_NO_MISPLACED_DECLARATIONS,
 #
 ###############################################################################
 
-AC_DEFUN(AC_GCC_ACCEPTS_STD,
-         [AC_CHECK_GCC_ARG(std, -std=c89)])
+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,
  [if test -n "$GCC"; then
@@ -447,31 +475,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,
-         [AC_CHECK_GCC_ARG(no_cpp_precomp, -no-cpp-precomp)])
-
-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
 ])
@@ -1192,7 +1200,7 @@ AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE",
                   generated code.])
 AC_SUBST(GETTEXT_PACKAGE)
 
-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"
+ALL_LINGUAS="ca 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"
 
@@ -1541,6 +1549,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.)
@@ -1667,7 +1714,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>])
 
@@ -1696,8 +1743,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
@@ -2277,15 +2342,15 @@ esac
 #
 ###############################################################################
 
-have_login_manager=no
 with_login_manager_req=unspecified
-default_login_manager='gdmflexiserver -ls'
+default_login_manager_1='gdmflexiserver -ls'
+default_login_manager_2='kdmctl reserve'
 
 AC_ARG_WITH(login-manager,
 [  --with-login-manager    Put a "New Login" button on the unlock dialog that
-                          runs a login manager such as gdmflexiserver.],
+                          runs a login manager like gdmflexiserver or kdmctl.],
   [with_login_manager="$withval"; with_login_manager_req="$withval"],
-  [with_login_manager=no])
+  [with_login_manager=yes])
 # no HANDLE_X_PATH_ARG for this one
 
 if test "$enable_locking" = no ; then
@@ -2293,57 +2358,70 @@ if test "$enable_locking" = no ; then
   with_login_manager=no
 fi
 
-if test -n "$with_login_manager_req" ; then
-  ac_cv_login_manager_program=""
+case "$with_login_manager_req" in
+  no)
+    with_login_manager=""
+  ;;
 
- if test "$with_login_manager_req" = "yes" ; then
-   with_login_manager_req=$default_login_manager
- fi
+  yes|unspecified)
+    # Try both defaults, use the one that exists.
 
-  case "$with_login_manager_req" in
-    no)
-      with_login_manager=""
-    ;;
-    /*)
-      # absolute path
-      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
-      set dummy $with_login_manager_req ; login_manager_tmp=$2
-      # don't cache
-      unset ac_cv_path_login_manager_tmp
+    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"
+    else
+      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=""
+      if test -z "$login_manager_tmp" ; then
+        with_login_manager="$default_login_manager_2"
       else
-        with_login_manager="$login_manager_tmp"
+        with_login_manager=""
       fi
-    ;;
-  esac
-  ac_cv_login_manager_program="$with_login_manager"
+    fi
+  ;;
 
-elif test -n "$ac_cv_login_manager_program"; then
-  AC_MSG_RESULT([checking for login_manager... (cached) $ac_cv_login_manager_program])
-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"
+  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)
@@ -3093,6 +3171,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
 
 
@@ -3414,9 +3498,11 @@ case "$with_textfile" in
 
     #### Could use some more defaults here...
     for f in \
-      "/usr/X11R6/lib/X11/doc/README"          \
-      "/usr/share/doc/xserver-common/copyright"        \
-      "/usr/X11R6/README"                      \
+      "/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/debian/debian-manifesto"     \
     ; do
       if test -z "$with_textfile"; then
         AC_MSG_CHECKING([for text file $f])
@@ -3594,18 +3680,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
@@ -3720,6 +3808,8 @@ 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)
@@ -4035,8 +4125,9 @@ if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
   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 --"
@@ -4182,7 +4273,7 @@ if test -z "$RPM_PACKAGE_VERSION" ; then
 
   if test \! -z "$rpmv" ; then
     rpmbdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
-    rpmhdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/attraction$@\1@p'`
+    rpmhdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/popsquares$@\1@p'`
 
     warning=no
     warnL "There is already an installed RPM of xscreensaver $rpmv"
@@ -4205,6 +4296,33 @@ if test -z "$RPM_PACKAGE_VERSION" ; then
   fi
 fi
 
+# 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
+
+
 if test "${bindir}" = "${HACKDIR}" ; then
   do_dir_warning=yes
 fi