X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=configure.in;h=8793c578d529302af61eaf2fcd2c05b05ac681e3;hp=7559754d5c89c658714445dc22366a704899dd59;hb=07faf451b99879183ed7e909e43a0e065be1ee7f;hpb=bc7b7a8eb122206d239ec0e693676bcce31be1aa diff --git a/configure.in b/configure.in index 7559754d..8793c578 100644 --- a/configure.in +++ b/configure.in @@ -1,4 +1,4 @@ -# configure.in --- xscreensaver, Copyright (c) 1997-2004 Jamie Zawinski. +# configure.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski. # AC_PREREQ(2.52) @@ -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 + .) 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// 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" @@ -961,30 +1258,28 @@ fi have_hackdir=yes with_hackdir_req=unspecified AC_ARG_WITH(hackdir,[ -Installation options: +Installation options: --with-hackdir=DIR Where to install the hundreds of demo executables. - Default: `PREFIX/lib/xscreensaver/'], + Default: `PREFIX/libexec/xscreensaver/'], [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes]) if test x"$with_hackdir" = xyes; then - HACKDIR='${exec_prefix}/lib/xscreensaver' + HACKDIR='${libexecdir}/xscreensaver' elif test x"$with_hackdir" = xno; then HACKDIR='${bindir}' else - # there must be a better way than this... - if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then - # absolute path - HACKDIR=$with_hackdir - else - # relative path - HACKDIR="\${exec_prefix}$with_hackdir" - fi + HACKDIR=$with_hackdir 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. @@ -1001,6 +1296,7 @@ fi ############################################################################### # # Handle the --with-configdir option +# Help for --with-x-app-defaults option added.. # ############################################################################### @@ -1009,16 +1305,15 @@ with_configdir_req=unspecified AC_ARG_WITH(configdir, [ --with-configdir=DIR Where to install the data files that describe each of the display modes to the GUI. - Default: `GTK_PREFIX/control-center/screensavers/' - or `PREFIX/lib/xscreensaver/config/', depending on - whether GTK is available. + 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]) if test x"$with_configdir" = xyes; then - # filled in later... - HACK_CONF_DIR='' + HACK_CONF_DIR='${datadir}/xscreensaver/config' elif test x"$with_configdir" = xno; then echo "error: must be yes, or a pathname: --with-configdir=$with_configdir" exit 1 @@ -1075,60 +1370,6 @@ elif test "$with_sgi" != no; then fi -############################################################################### -# -# Check for the MIT-SCREEN-SAVER server extension. -# -############################################################################### - -have_mit=no -with_mit_req=unspecified -AC_ARG_WITH(mit-ext, -[ --with-mit-ext Include support for the MIT-SCREEN-SAVER extension.], - [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes]) - -HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER) - -if test "$with_mit" = yes; then - AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes],, - [#include ]) - - # Now check to see if it's really in the library; XF86Free-3.3 ships - # scrnsaver.h, but doesn't include the code in libXext.a, the idiots! - # - if test "$have_mit" = yes; then - AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm) - - if test "$have_mit" = no; then - # Fuck! Looks like XF86Free-3.3 actually puts it in XExExt instead - # of in Xext. Thank you master, may I have another. - AC_CHECK_X_LIB(XExExt, XScreenSaverRegister, - [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"], - [true], -lX11 -lXext -lm) - fi - - if test "$have_mit" = no; then - # Double fuck! Looks like some versions of XFree86 (whichever version - # it is that comes with RedHat Linux 2.0 -- I can't find a version - # number) put this garbage in Xss instead of Xext. Thank you master, - # may I have another. - AC_CHECK_X_LIB(Xss, XScreenSaverRegister, - [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"], - [true], -lX11 -lXext -lm) - fi - - if test "$have_mit" = yes; then - AC_DEFINE(HAVE_MIT_SAVER_EXTENSION) - fi - - fi - -elif test "$with_mit" != no; then - echo "error: must be yes or no: --with-mit-ext=$with_mit" - exit 1 -fi - - ############################################################################### # # Check for the XIDLE server extension. @@ -1272,7 +1513,7 @@ if test "$with_xinerama" = yes; then # 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, XineramaQueryScreens, - [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"], + [have_xinerama=yes; XINERAMA_LIBS="-lXinerama"], [true], -lXext -lX11) fi fi @@ -1500,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 @@ -1508,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) @@ -1525,9 +1774,7 @@ fi # ############################################################################### -AC_ARG_ENABLE(locking,[ -Screen locking options: - +AC_ARG_ENABLE(locking,[Screen locking options: --enable-locking Compile in support for locking the display. --disable-locking Do not allow locking at all.], [enable_locking="$enableval"],[enable_locking=yes]) @@ -1553,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 -# #include -# #include ], -# [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 ############################################################################### # @@ -1616,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 @@ -1626,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, @@ -1664,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 ], + [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 @@ -2002,6 +2256,77 @@ case "$with_passwd_helper" in esac +############################################################################### +# +# Check for a login manager for a "New Login" button on the lock dialog. +# Usually this will be "/usr/bin/gdmflexiserver". +# +############################################################################### + +have_login_manager=no +with_login_manager_req=unspecified +default_login_manager='gdmflexiserver -l' + +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.], + [with_login_manager="$withval"; with_login_manager_req="$withval"], + [with_login_manager=no]) +# no HANDLE_X_PATH_ARG for this one + +if test "$enable_locking" = no ; then + with_login_manager_req=no + with_login_manager=no +fi + +if test -n "$with_login_manager_req" ; then + ac_cv_login_manager_program="" + + if test "$with_login_manager_req" = "yes" ; then + with_login_manager_req=$default_login_manager + fi + + case "$with_login_manager_req" in + /*) + # 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 + 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" + +elif test -n "$ac_cv_login_manager_program"; then + AC_MSG_RESULT([checking for login_manager... (cached) $ac_cv_login_manager_program]) +fi + +NEW_LOGIN_COMMAND_P='' +NEW_LOGIN_COMMAND="$ac_cv_login_manager_program" + +if test -z "$NEW_LOGIN_COMMAND" ; then + NEW_LOGIN_COMMAND="$default_login_manager" + NEW_LOGIN_COMMAND_P='! ' +fi + + + ############################################################################### # # Check for -lgtk (and Gnome stuff) @@ -2104,7 +2429,7 @@ if test "$with_gtk" = yes; then 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 2.0.0 + pkg_check_version libglade-2.0 1.99.0 pkg_check_version gdk-pixbuf-2.0 2.0.0 pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0 have_gtk="$ok" @@ -2127,15 +2452,15 @@ 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 GTK_EXTRA_OBJS="" - GNOME_DATADIR="" - GNOME_PANELDIR='$(GNOME_PANELDIR2)' + GTK_DATADIR="" if test "$have_gtk" = yes; then - GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` - GNOME_DATADIR="$GNOME_DATADIR/share" + GTK_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` + GTK_DATADIR="$GTK_DATADIR/share" fi if test "$have_gtk" = yes; then @@ -2149,13 +2474,12 @@ if test "$with_gtk" = yes; then fi -# Check for the Gnome Help Browser. +# Check for the various Gnome help and URL loading programs. # +WITH_BROWSER=gnome-open if test "$have_gtk" = yes; then - AC_CHECK_PROGS(have_gnome_help, yelp gnome-help-browser, no) - if test "$have_gnome_help" != no; then - have_gnome_help=yes - fi + AC_CHECK_PROGS(gnome_open_program, gnome-open) + AC_CHECK_PROGS(gnome_url_show_program, gnome-url-show) fi @@ -2665,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 @@ -2766,6 +3091,10 @@ if test "$have_motif" = yes -a "$have_xpm" = yes ; then fi fi +if test "$XPM_LIBS" = "" ; then + XPM_LIBS=$(MINIXPM) +fi + ############################################################################### # @@ -2808,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. # ############################################################################### @@ -2816,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 ############################################################################### # @@ -2938,97 +3275,173 @@ fi ############################################################################### # -# Check for a program to generate random text. -# -# Zippy is funnier than the idiocy generally spat out by `fortune', -# so first see if "fortune zippy" works. Else, use plain "fortune". -# -# We used to dig around in Emacs to look for the "yow" program, but -# most people who have Emacs also have "fortune zippy", so nevermind. +# Check for a directory full of images to use as the default value +# of the "imageDirectory" preference. # ############################################################################### -with_fortune_req="" -AC_ARG_WITH(fortune,[ - --with-fortune=PROGRAM Some demos are able to run an external program and - display its text; this names the program to use by - default (though it can be overridden with X - resources.) Default is "/usr/games/fortune".], - [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes]) - -if test "$with_fortune" = no || test "$with_fortune" = yes ; then - with_fortune="" - with_fortune_req="" -fi +have_imagedir=no +with_imagedir_req=unspecified -if test -n "$with_fortune_req" ; then - ac_cv_fortune_program="" - case "$with_fortune_req" in - /*) +AC_ARG_WITH(image-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 - set dummy $with_fortune_req ; fortune_tmp=$2 - AC_MSG_CHECKING([for $fortune_tmp]) - if test -x "$fortune_tmp" ; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - with_fortune="" - fi - ;; - *) - set dummy $with_fortune_req ; fortune_tmp=$2 - # don't cache - unset ac_cv_path_fortune_tmp - AC_PATH_PROG(fortune_tmp, $fortune_tmp, []) - if test -z "$fortune_tmp" ; then - with_fortune="" +case "$with_imagedir" in + /*) + # absolute path + AC_MSG_CHECKING([for image directory $with_imagedir]) + if test -d "$with_imagedir" ; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + with_imagedir="" + fi + ;; + yes) + with_imagedir="" + + #### Could use some more defaults here... + for dd in \ + "/usr/share/backgrounds/images/" \ + "/usr/share/wallpapers/" \ + "/Library/Desktop Pictures/" \ + ; do + if test -z "$with_imagedir"; then + AC_MSG_CHECKING([for image directory $dd]) + if test -d "$dd" ; then + AC_MSG_RESULT(yes) + with_imagedir="$dd" + else + AC_MSG_RESULT(no) + fi fi - ;; - esac - ac_cv_fortune_program="$with_fortune" + done + + ;; + no) + with_imagedir="" + ;; + + *) + echo "error: must be an absolute path: --with-image-directory=$with_imagedir_req" + exit 1 + ;; +esac +ac_cv_imagedir="$with_imagedir" -elif test -n "$ac_cv_fortune_program"; then - AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program]) +DEFAULT_IMAGES_P='True' +DEFAULT_IMAGE_DIRECTORY="$ac_cv_imagedir" + +if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then + DEFAULT_IMAGES_P='False' fi -unset ac_cv_path_fortune_tmp -unset fortune_tmp -if test -z "$ac_cv_fortune_program" ; then +############################################################################### +# +# 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". +# +############################################################################### - # first look for fortune in /usr/games/ (and use absolute path) - AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games") +have_textfile=no +with_textfile_req=unspecified - # if it's not there, look on $PATH (and don't use absolute path) - if test -z "$fortune_tmp" ; then - AC_CHECK_PROGS(fortune_tmp, fortune) - fi +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 - # if we didn't find anything, then just assume /usr/games/ - if test -z "$fortune_tmp" ; then - fortune_tmp="/usr/games/fortune" - fi +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 - ac_cv_fortune_program="$fortune_tmp" + ;; + no) + with_textfile="" + ;; - # now check to see whether "fortune zippy" works. - # - fortune_tmp="$fortune_tmp zippy" - AC_MSG_CHECKING([for zippy quotes]) - if ( $fortune_tmp >/dev/null 2>&1 ); then - ac_cv_fortune_program="$fortune_tmp" - AC_MSG_RESULT($fortune_tmp) - else - AC_MSG_RESULT(no) - fi + *) + echo "error: must be an absolute path: --with-text-file=$with_textfile_req" + exit 1 + ;; +esac +ac_cv_textfile="$with_textfile" -fi +DEFAULT_TEXT_FILE="$ac_cv_textfile" + + +############################################################################### +# +# Check the browser to see help URL +# +############################################################################### -unset ac_cv_path_fortune_tmp -unset fortune_tmp +have_browser=no +with_browser_req=unspecified -AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program") +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" ############################################################################### # @@ -3162,51 +3575,26 @@ fi # Another substitution in the XScreenSaver.ad.in file: # -if test "$have_gnome_help" = yes; then - GNOMEHELP_Y='' - GNOMEHELP_N='! ' -else - GNOMEHELP_Y='! ' - GNOMEHELP_N='' -fi - - -# Now that we know whether we have Gnome, we can decide where the XML -# config files get installed. -# -if test -z "$HACK_CONF_DIR" ; then - if test -n "$GNOME_DATADIR" ; then - HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers' - else - HACK_CONF_DIR='${prefix}/lib/xscreensaver/config' - fi -fi - - - -# After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value -# so that we know where to install the Gtk pixmaps. -# -# It should usually be "/usr/share/pixmaps/", but we can't just use -# "$(prefix)/share/pixmaps" because that would usually result in -# "/usr/X11R6/share/pixmaps/", which is wrong. It needs to be the -# Gtk prefix, not the overall prefix. -# -if test -n "$GNOME_DATADIR" ; then - GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver' -elif test "$have_gtk" = yes; then - GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` - GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver" +if test "$gnome_open_program" != ''; then + GNOME24='' + GNOME22='! ' + NOGNOME='! ' +elif test "$gnome_url_show_program" != ''; then + GNOME24='! ' + GNOME22='' + NOGNOME='! ' else - GLADE_DATADIR='' + GNOME24='! ' + GNOME22='! ' + NOGNOME='' fi # Set PO_DATADIR to something sensible. # AC_MSG_CHECKING([for locale directory]) -if test -n "$GNOME_DATADIR" ; then - PO_DATADIR="$GNOME_DATADIR" +if test -n "$GTK_DATADIR" ; then + PO_DATADIR="$GTK_DATADIR" elif test "$have_gtk" = yes; then PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` PO_DATADIR="$PO_DATADIR/share" @@ -3265,12 +3653,20 @@ AC_SUBST(PTY_LIBS) AC_SUBST(GL_LIBS) AC_SUBST(GLE_LIBS) AC_SUBST(XDPMS_LIBS) +AC_SUBST(XINERAMA_LIBS) AC_SUBST(PASSWD_LIBS) AC_SUBST(INSTALL_SETUID) 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) @@ -3294,13 +3690,13 @@ AC_SUBST(GL_MEN) AC_SUBST(GL_KLUDGE) AC_SUBST(GLE_EXES) AC_SUBST(GLE_KLUDGE) -AC_SUBST(GNOMEHELP_Y) -AC_SUBST(GNOMEHELP_N) +AC_SUBST(GNOME24) +AC_SUBST(GNOME22) +AC_SUBST(NOGNOME) AC_SUBST(HACKDIR) -AC_SUBST(GNOME_DATADIR) -AC_SUBST(GLADE_DATADIR) +AC_SUBST(HACKDIR_FULL) +AC_SUBST(GTK_DATADIR) AC_SUBST(PO_DATADIR) -AC_SUBST(GNOME_PANELDIR) AC_SUBST(HACK_CONF_DIR) AC_SUBST(GTK_EXTRA_OBJS) @@ -3318,8 +3714,7 @@ AC_OUTPUT(Makefile hacks/Makefile hacks/glx/Makefile po/Makefile.in - driver/XScreenSaver.ad - driver/xscreensaver.kss) + driver/XScreenSaver.ad) ############################################################################### # @@ -3381,10 +3776,6 @@ if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then warn 'The SGI saver extension was requested, but was not found.' fi -if test "$with_mit_req" = yes -a "$have_mit" = no ; then - warn 'The MIT saver extension was requested, but was not found.' -fi - if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then warn 'The XIdle extension was requested, but was not found.' fi @@ -3421,6 +3812,19 @@ 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 +if test "$pkg_config" = false ; then + warnL 'The "pkg-config" program was not found. Without that,' + warn2 "detection of the various GTK libraries won't work." +else + pkgerr=`$pkg_config --list-all 2>&1 >/dev/null` + if test "x$pkgerr" != "x" ; then + warnL 'The "pkg-config" program produces errors. This often causes' + warn2 "detection of the various GTK libraries to malfunction." + warn2 "The errors are:" + echo '' + echo "$pkgerr" | sed 's/^/ > /g' + fi +fi if test "$gtk_halfassed" != no ; then warnL "GTK version $gtk_halfassed was found, but at least one supporting" @@ -3680,13 +4084,6 @@ if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then warn 'Use of XReadDisplay was requested, but it was not found.' fi -if test -n "$with_fortune_req"; then - if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then - warnL "$with_fortune_req was requested as the Fortune program," - warn2 "but was not found. The default will be used instead." - fi -fi - if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then warn 'Use of Kerberos was requested, but it was not found.' fi @@ -3742,40 +4139,44 @@ done do_dir_warning=no -# Now let's see if there's a previous RPM version already installed. Blargh! +# Now let's warn if there's a previous RPM version already installed. +# But don't bother with this test if we are currently *building* an RPM. -# M4 sucks!! -changequote(X,Y) -rpmv=`(rpm -qv xscreensaver) 2>/dev/null | \ - sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'` -changequote([,]) +if test -z "$RPM_PACKAGE_VERSION" ; then -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'` + rpmnames="xscreensaver xscreensaver-base xscreensaver-extras" - 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. Try "rpmbuild -v -ba xscreensaver.spec".' - warn2 "See the RPM documentation for more info." - echo "" + # M4 sucks!! + changequote(X,Y) + rpmv=`(rpm -qv $rpmnames) 2>/dev/null | \ + sed -n 's/^[-a-z]*-\([0-9][0-9]*[.][0-9][0-9a-z]*\)-.*$/\1/p' | \ + head -1` + changequote([,]) - 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 + 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'` - do_dir_warning=yes -fi + warning=no + warnL "There is already an installed RPM of xscreensaver $rpmv" + warn2 'on this system. You might want to remove it ("rpm -ve")' + warn2 'before running "make install" in 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. Try "rpmbuild -v -ba xscreensaver.spec".' + warn2 "See the RPM documentation for more info." + echo "" + if test "$rpmbdir" = "$rpmhdir" ; then + warn2 "The RPM version was installed in $rpmbdir/." + do_dir_warning=yes + else + warn2 "The RPM version was installed in $rpmbdir/," + warn2 "with demos in $rpmhdir/." + fi + fi +fi if test "${bindir}" = "${HACKDIR}" ; then do_dir_warning=yes @@ -3789,7 +4190,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 (180+ different executables) will" + echo " The various graphics demos (190+ different executables) will" echo " be installed in ${HACKDIR}/." echo "" echo " If you would prefer the demos to be installed elsewhere," @@ -3808,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