X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=configure.in;h=748879558d5ea3a0967201433bad0ee939cfc7e5;hp=361fac21e5ca762100bb0daa8a3d18dfd11786e9;hb=019de959b265701cd0c3fccbb61f2b69f06bf9ee;hpb=a1d41b2aa6e18bf9a49b914a99dda8232c5d7762 diff --git a/configure.in b/configure.in index 361fac21..74887955 100644 --- a/configure.in +++ b/configure.in @@ -1,12 +1,320 @@ -# configure.in --- xscreensaver, Copyright (c) 1997-2000 Jamie Zawinski. +# configure.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski. # +AC_PREREQ(2.52) AC_INIT(driver/subprocs.c) 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.)]) + +# This only ever existed in X11R4 and X11R5. +#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.]) + +# Using this extension will crash your X server and make fading not work. +#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.)]) + +# This only ever existed on SGI hardware. +#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.]) + +# This only ever existed on SGI hardware. +#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_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 + 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_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 + 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_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 + 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_JWZGLES],[Define this to target the OpenGL ES 1.x API + instead of OpenGL 1.3.]) + +AH_TEMPLATE([HAVE_GLBITMAP],[Define this if glBitmap exists.]) + +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_CHECK_ACCOUNT_TYPE], + [Whether PAM should check the result of account modules + when authenticating. Only do this if you have account + configured properly on your system.]) + +AH_TEMPLATE([PAM_STRERROR_TWO_ARGS], + [Define if you have PAM and pam_strerror() requires two + arguments.]) + +AH_TEMPLATE([HAVE_SIGTIMEDWAIT], + [Define to 1 if you have the `sigtimedwait' function.]) + +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_GETIFADDRS], + [Define this if you have the getifaddrs() function.]) + +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, @@ -23,7 +331,6 @@ for d in driver utils hacks hacks/glx ; do fi done - ############################################################################### # # Function to figure out how to run the compiler. @@ -31,9 +338,10 @@ done ############################################################################### AC_DEFUN(AC_PROG_CC_ANSI, - [AC_PROG_CC + [AC_REQUIRE([AC_PROG_CC]) if test -z "$GCC"; then + # not using GCC AC_MSG_CHECKING(how to request ANSI compilation) case "$host" in *-hpux* ) @@ -44,18 +352,26 @@ AC_DEFUN(AC_PROG_CC_ANSI, AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e) CC="$CC -qlanglvl=ansi -qhalt=e" ;; - *-dec-* ) AC_MSG_RESULT(DEC: adding -std1 -ieee) CC="$CC -std1" ;; - *) AC_MSG_RESULT(no idea) ;; esac + else + # using GCC + case "$host" in + *-solaris*) + AC_MSG_RESULT(Solaris: adding -D__EXTENSIONS__) + CC="$CC -D__EXTENSIONS__" + ;; + 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 +381,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 -Wno-format" + CC="$CC -pedantic -Wall -Wstrict-prototypes -Wnested-externs -Wmissing-prototypes" + OBJCC="$OBJCC -Wall" + # As of gcc 3.4, we have "-Wdeclaration-after-statement" + # and so perhaps now we can do without -pedantic? else case "$host" in *-irix5* |*-irix6.[0-3]* ) @@ -85,29 +404,71 @@ AC_DEFUN(AC_PROG_CC_ANSI, ############################################################################### # -# Functions to figure out how to disable // comments in ANSI C code. -# -# (With recent gcc, this is done with "-std=c89". With older gcc, this -# is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to -# gcc. Old gcc doesn't support -std, and new gcc doesn't support -lang. -# so much for compatibility!) +# Check for availability of various gcc command-line options. # ############################################################################### -AC_DEFUN(AC_GCC_ACCEPTS_STD, +AC_DEFUN(AC_CHECK_GCC_ARG, [if test -n "$GCC"; then - AC_CACHE_CHECK([whether gcc accepts -std], - ac_cv_gcc_accepts_std, - [if ( gcc -E -std=c89 - &1 >/dev/null | \ + AC_CACHE_CHECK([whether gcc accepts [$2]], + ac_cv_gcc_accepts_[$1], + [rm -rf conftest.$ac_ext + touch conftest.$ac_ext + if ( ( gcc -c [$2] conftest.$ac_ext -o/dev/null >/dev/null ) 2>&1 | \ grep unrecognized >/dev/null ); then - ac_cv_gcc_accepts_std=no + ac_cv_gcc_accepts_[$1]=no else - ac_cv_gcc_accepts_std=yes + ac_cv_gcc_accepts_[$1]=yes + CC="$CC [$2]" fi]) - ac_gcc_accepts_std="$ac_cv_gcc_accepts_std" + ac_gcc_accepts_[$1]="$ac_cv_gcc_accepts_[$1]" fi ]) +AC_DEFUN(AC_NO_LONG_STRING_WARNINGS, + [AC_CHECK_GCC_ARG(no_overlength, -Wno-overlength-strings)]) + +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)]) + +############################################################################### +# +# Function to figure out how to disable // comments in ANSI C code. +# +# (With recent gcc, this is done with "-std=c89". With older gcc, this +# is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to +# 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, [ + 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 AC_GCC_ACCEPTS_STD @@ -131,10 +492,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" + # $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 ]) @@ -147,33 +509,33 @@ AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE, ############################################################################### AC_DEFUN(AC_PROG_INSTALL_DIRS, - [AC_CACHE_CHECK([whether \"\${INSTALL} -d\" creates intermediate directories], + [AC_CACHE_CHECK([whether "\${INSTALL} -d" creates intermediate directories], ac_cv_install_d_creates_dirs, [ac_cv_install_d_creates_dirs=no rm -rf conftestdir if mkdir conftestdir; then - cd conftestdir >&- - ${INSTALL} -d `pwd`/dir1/dir2 >&- 2>&- + cd conftestdir 2>/dev/null + ${INSTALL} -d `pwd`/dir1/dir2 >/dev/null 2>&1 if test -d dir1/dir2/. ; then ac_cv_install_d_creates_dirs=yes fi - cd .. >&- + cd .. 2>/dev/null rm -rf conftestdir fi ]) if test "$ac_cv_install_d_creates_dirs" = no ; then - AC_CACHE_CHECK([whether \"mkdir -p\" creates intermediate directories], + AC_CACHE_CHECK([whether "mkdir -p" creates intermediate directories], ac_cv_mkdir_p_creates_dirs, [ac_cv_mkdir_p_creates_dirs=no rm -rf conftestdir if mkdir conftestdir; then - cd conftestdir >&- - mkdir -p dir1/dir2 >&- 2>&- + cd conftestdir 2>/dev/null + mkdir -p dir1/dir2 >/dev/null 2>&1 if test -d dir1/dir2/. ; then ac_cv_mkdir_p_creates_dirs=yes fi - cd .. >&- + cd .. 2>/dev/null rm -rf conftestdir fi ]) @@ -368,20 +730,31 @@ AC_DEFUN(AC_CHECK_ICMPHDR, AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[ rm -fr conftestdir if mkdir conftestdir; then - cd conftestdir >&- + cd conftestdir 2>/dev/null # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat > Imakefile <<'EOF' acfindx: @echo 'ac_x_app_defaults="${XAPPLOADDIR}"' EOF - if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + if (xmkmf) >/dev/null 2>&1 && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which'd confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` fi - cd .. >&- + cd .. 2>/dev/null 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. @@ -585,14 +958,39 @@ 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]) +AC_DEFUN(AC_CHECK_GETIFADDRS, + [AC_CACHE_CHECK([for getifaddrs], ac_cv_have_getifaddrs, + [AC_TRY_COMPILE([#include + #include + #include + #include ], + [struct ifaddrs *ifa; + getifaddrs (&ifa); + ifa->ifa_next = 0; + ifa->ifa_addr->sa_family = 0;], + [ac_cv_have_getifaddrs=yes], + [ac_cv_have_getifaddrs=no])]) + if test "$ac_cv_have_getifaddrs" = yes ; then + AC_DEFINE(HAVE_GETIFADDRS) + fi]) ############################################################################### @@ -609,7 +1007,8 @@ AC_DEFUN(AC_CHECK_X_HEADER, [ CPPFLAGS="$CPPFLAGS -I$includedir" fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" - AC_CHECK_HEADER([$1], [$2]) + CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS` + AC_CHECK_HEADER([$1],[$2],[$3],[$4]) CPPFLAGS="$ac_save_CPPFLAGS"]) # Like AC_EGREP_HEADER, but it uses the already-computed -I directories. @@ -620,6 +1019,7 @@ AC_DEFUN(AC_EGREP_X_HEADER, [ CPPFLAGS="$CPPFLAGS -I$includedir" fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" + CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS` AC_EGREP_HEADER([$1], [$2], [$3], [$4]) CPPFLAGS="$ac_save_CPPFLAGS"]) @@ -631,6 +1031,7 @@ AC_DEFUN(AC_TRY_X_COMPILE, [ CPPFLAGS="$CPPFLAGS -I$includedir" fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" + CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS` AC_TRY_COMPILE([$1], [$2], [$3], [$4]) CPPFLAGS="$ac_save_CPPFLAGS"]) @@ -655,6 +1056,8 @@ AC_DEFUN(AC_CHECK_X_LIB, [ # note: $X_LIBS includes $x_libraries LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" + CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS` + LDFLAGS=`eval eval eval eval eval eval eval eval eval echo $LDFLAGS` AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5]) CPPFLAGS="$ac_save_CPPFLAGS" LDFLAGS="$ac_save_LDFLAGS" @@ -670,6 +1073,7 @@ AC_DEFUN(AC_TRY_X_RUN, [ CPPFLAGS="$CPPFLAGS -I$includedir" fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" + CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS` AC_TRY_RUN([$1], [$2], [$3], [$4]) CPPFLAGS="$ac_save_CPPFLAGS"]) @@ -739,13 +1143,22 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [ ############################################################################### ############################################################################### +# WTF! autoconf emits this *way* too late. Do it earlier. +test "x$prefix" = xNONE && prefix=$ac_default_prefix +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + + # random compiler setup AC_CANONICAL_HOST AC_PROG_CC_ANSI +AC_NO_LONG_STRING_WARNINGS +AC_NO_MISPLACED_DECLARATIONS +AC_NO_OBJECTIVE_C AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE AC_PROG_CPP AC_C_CONST AC_C_INLINE +AC_EXEEXT AC_DEMAND_BC # stuff for Makefiles @@ -771,11 +1184,13 @@ AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_HEADER_DIRENT AC_GETTIMEOFDAY_ARGS -AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv) - +AC_SYS_LARGEFILE +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_GETIFADDRS AC_CHECK_HEADERS(crypt.h sys/select.h) AC_PROG_PERL @@ -787,13 +1202,41 @@ fi AC_PATH_XTRA if test "$have_x" != yes; then - AC_MSG_ERROR(Couldn't find X11 headers/libs. Try \`$0 --help'.) + AC_MSG_ERROR(Couldn't find X11 headers/libs. Try `$0 --help'.) fi 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) + + +############################################################################### +# +# Gettext support +# +############################################################################### + +AC_PROG_INTLTOOL +GETTEXT_PACKAGE=xscreensaver +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 nb nl pl pt pt_BR ru sk sv vi wa zh_CN zh_TW" +AM_GLIB_GNU_GETTEXT +MKINSTALLDIRS="$INSTALL_DIRS" ############################################################################### @@ -803,7 +1246,10 @@ AC_XPOINTER ############################################################################### have_xmu=no -AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes]) +AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes],, + [#include + #include + #include ]) if test "$have_xmu" = no ; then XMU_SRCS='$(UTILS_SRC)/xmu.c' XMU_OBJS='$(UTILS_BIN)/xmu.o' @@ -861,133 +1307,121 @@ fi ############################################################################### # -# Handle the --enable-subdir option +# Handle the --with-hackdir option # ############################################################################### -AC_ARG_ENABLE(subdir,[ -Installation options: +have_hackdir=yes +with_hackdir_req=unspecified +AC_ARG_WITH(hackdir,[ - --enable-subdir=DIR Put the demo programs in a subdirectory of \`bindir', - instead of putting them in bindir itself. You can - specify the name of the subdirectory. For example, - \`--exec-prefix=/usr/local --enable-subdir=demos' - would put xscreensaver in /usr/local/bin/, and would - put the demos in /usr/local/bin/demos/. (If DIR - begins with /, then bindir will not be prepended.) +Installation options: + --with-hackdir=DIR Where to install the hundreds of demo executables. + Default: `PREFIX/libexec/xscreensaver/'], + [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes]) - --disable-subdir Just put the demos in \`bindir' (this is the default.) -], - [enable_subdir="$enableval"],[enable_subdir=no]) -if test x"$enable_subdir" = xno; then +if test x"$with_hackdir" = xyes; then + HACKDIR='${libexecdir}/xscreensaver' +elif test x"$with_hackdir" = xno; then HACKDIR='${bindir}' -elif test x"$enable_subdir" = xyes -o x"$enable_subdir" = x ; then - echo "error: must be a subdirectory name: --enable-subdir=$enable_subdir" - exit 1 else - # there must be a better way than this... - if test -z "`echo $enable_subdir | sed 's@^/.*@@'`" ; then - # absolute path - HACKDIR=$enable_subdir - else - # relative path - HACKDIR='${bindir}/'$enable_subdir - fi + HACKDIR=$with_hackdir fi # canonicalize slashes. HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'` +# Expand HACKDIR as HACKDIR_FULL +HACKDIR_FULL=`eval eval eval eval eval eval eval eval eval echo $HACKDIR` -############################################################################### -# -# Check for the SGI SCREEN_SAVER server extension. -# -############################################################################### - -have_sgi=no -with_sgi_req=unspecified -AC_ARG_WITH(sgi-ext, -[Except where noted, all of the --with options below can also take a -directory argument: for example, \`--with-motif=/opt/Motif'. That would -cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/ -to be added to the -L list, assuming those directories exist. - -By default, support for each of these options will be built in, if the -relevant library routines exist. At run time, they will then be used -only if the X server being used supports them. Each --with option has -a corresponding --without option, to override building support for them -at all. - -Screen blanking and idle-detection options: - - --with-sgi-ext Include support for the SGI SCREEN_SAVER extension.], - [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes]) +# This option used to be called --enable-subdir; make sure that is no longer +# used, since configure brain-damagedly ignores unknown --enable options. -HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER) - -if test "$with_sgi" = yes; then - AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h, - [have_sgi=yes - AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)]) - -elif test "$with_sgi" != no; then - echo "error: must be yes or no: --with-sgi-ext=$with_sgi" +obsolete_enable= +AC_ARG_ENABLE(subdir,,[obsolete_enable=yes]) +if test -n "$obsolete_enable"; then + echo "error: the --enable-subdir option has been replaced with" + echo " the new --with-hackdir option; see \`configure --help'" + echo " for more information." exit 1 fi ############################################################################### # -# Check for the MIT-SCREEN-SAVER server extension. +# Handle the --with-configdir option +# Help for --with-x-app-defaults option added. # ############################################################################### -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) +have_configdir=yes +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: `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 "$with_mit" = yes; then - AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes]) +if test x"$with_configdir" = xyes; then + 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 +else + # there must be a better way than this... + if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then + # absolute path + HACK_CONF_DIR=$with_configdir + else + # relative path + HACK_CONF_DIR="\${exec_prefix}$with_configdir" + fi +fi - # 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 +############################################################################### +# +# Check for the SGI SCREEN_SAVER server extension. +# +############################################################################### -elif test "$with_mit" != no; then - echo "error: must be yes or no: --with-mit-ext=$with_mit" - exit 1 -fi +#have_sgi=no +#with_sgi_req=unspecified +#AC_ARG_WITH(sgi-ext, +#[Except where noted, all of the --with options below can also take a +#directory argument: for example, `--with-motif=/opt/Motif'. That would +#cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/ +#to be added to the -L list, assuming those directories exist. +# +#By default, support for each of these options will be built in, if the +#relevant library routines exist. At run time, they will then be used +#only if the X server being used supports them. Each --with option has +#a corresponding --without option, to override building support for them +#at all. +# +#Screen blanking and idle-detection options: +# +# --with-sgi-ext Include support for the SGI SCREEN_SAVER extension.], +# [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes]) +# +#HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER) +# +#if test "$with_sgi" = yes; then +# AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h, +# [have_sgi=yes +# AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],, +# [#include ]) +# +#elif test "$with_sgi" != no; then +# echo "error: must be yes or no: --with-sgi-ext=$with_sgi" +# exit 1 +#fi ############################################################################### @@ -996,22 +1430,23 @@ fi # ############################################################################### -have_xidle=no -with_xidle_req=unspecified -AC_ARG_WITH(xidle-ext, -[ --with-xidle-ext Include support for the XIDLE extension.], - [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes]) - -HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE) - -if test "$with_xidle" = yes; then - AC_CHECK_X_HEADER(X11/extensions/xidle.h, - [have_xidle=yes - AC_DEFINE(HAVE_XIDLE_EXTENSION)]) -elif test "$with_xidle" != no; then - echo "error: must be yes or no: --with-xidle-ext=$with_xidle" - exit 1 -fi +#have_xidle=no +#with_xidle_req=unspecified +#AC_ARG_WITH(xidle-ext, +#[ --with-xidle-ext Include support for the XIDLE extension.], +# [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes]) +# +#HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE) +# +#if test "$with_xidle" = yes; then +# AC_CHECK_X_HEADER(X11/extensions/xidle.h, +# [have_xidle=yes +# AC_DEFINE(HAVE_XIDLE_EXTENSION)],, +# [#include ]) +#elif test "$with_xidle" != no; then +# echo "error: must be yes or no: --with-xidle-ext=$with_xidle" +# exit 1 +#fi ############################################################################### @@ -1020,36 +1455,37 @@ fi # ############################################################################### -have_sgivc=no -with_sgivc_req=unspecified -AC_ARG_WITH(sgivc-ext, -[ --with-sgivc-ext Include support for the SGI-VIDEO-CONTROL extension.], - [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes]) - -HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL) - -if test "$with_sgivc" = yes; then - - # first check for XSGIvc.h - AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes]) - - # if that succeeded, then check for the -lXsgivc - if test "$have_sgivc" = yes; then - have_sgivc=no - AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap, - [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true], - -lXext -lX11) - fi - - # if that succeeded, then we've really got it. - if test "$have_sgivc" = yes; then - AC_DEFINE(HAVE_SGI_VC_EXTENSION) - fi - -elif test "$with_sgivc" != no; then - echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc" - exit 1 -fi +#have_sgivc=no +#with_sgivc_req=unspecified +#AC_ARG_WITH(sgivc-ext, +#[ --with-sgivc-ext Include support for the SGI-VIDEO-CONTROL extension.], +# [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes]) +# +#HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL) +# +#if test "$with_sgivc" = yes; then +# +# # first check for XSGIvc.h +# AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],, +# [#include ]) +# +# # if that succeeded, then check for the -lXsgivc +# if test "$have_sgivc" = yes; then +# have_sgivc=no +# AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap, +# [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true], +# -lXext -lX11) +# fi +# +# # if that succeeded, then we've really got it. +# if test "$have_sgivc" = yes; then +# AC_DEFINE(HAVE_SGI_VC_EXTENSION) +# fi +# +#elif test "$with_sgivc" != no; then +# echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc" +# exit 1 +#fi ############################################################################### @@ -1069,7 +1505,9 @@ HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS) if test "$with_dpms" = yes; then # first check for dpms.h - AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes]) + AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],, + [#include + #include ]) # if that succeeded, then check for the DPMS code in the libraries if test "$have_dpms" = yes; then @@ -1098,6 +1536,92 @@ elif test "$with_dpms" != no; then fi +############################################################################### +# +# Check for the XINERAMA server extension. +# +############################################################################### + +have_xinerama=no +with_xinerama_req=unspecified +AC_ARG_WITH(xinerama-ext, +[ --with-xinerama-ext Include support for the XINERAMA extension.], + [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes]) + +HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA) + +if test "$with_xinerama" = yes; then + + # first check for Xinerama.h + AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes],, + [#include ]) + + # if that succeeded, then check for the XINERAMA code in the libraries + if test "$have_xinerama" = yes; then + + # first look in -lXext + have_xinerama=no + 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, XineramaQueryScreens, + [have_xinerama=yes; XINERAMA_LIBS="-lXinerama"], + [true], -lXext -lX11) + fi + fi + + # if that succeeded, then we've really got it. + if test "$have_xinerama" = yes; then + AC_DEFINE(HAVE_XINERAMA) + fi + +elif test "$with_xinerama" != no; then + echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama" + exit 1 +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 ]) + + # 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.) @@ -1113,16 +1637,21 @@ AC_ARG_WITH(xf86vmode-ext, HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode) +VIDMODE_LIBS="" + if test "$with_xf86vmode" = yes; then # first check for xf86vmode.h - AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes]) + AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes],, + [#include ]) # if that succeeded, then check for the -lXxf86vm if test "$have_xf86vmode" = yes; then have_xf86vmode=no AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort, - [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"], + [have_xf86vmode=yes; + VIDMODE_LIBS="-lXxf86vm"; + SAVER_LIBS="$SAVER_LIBS $VIDMODE_LIBS"], [true], -lXext -lX11) fi @@ -1159,7 +1688,8 @@ if test "$with_xf86gamma" = yes; then if test "$have_xf86vmode" = yes; then have_xf86gamma=yes else - AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes]) + AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],, + [#include ]) fi # if that succeeded, then check for the -lXxf86vm @@ -1198,15 +1728,112 @@ elif test "$with_xf86gamma" != no; then fi +############################################################################### +# +# Check for the RANDR (Resize and Rotate) server extension. +# +# We need this to detect when the resolution of the desktop +# has changed out from under us (this is a newer, different +# mechanism than the XF86VMODE virtual viewports.) +# +############################################################################### + +have_randr=no +with_randr_req=unspecified +AC_ARG_WITH(randr-ext, +[ --with-randr-ext Include support for the X Resize+Rotate extension.], + [with_randr="$withval"; with_randr_req="$withval"],[with_randr=yes]) + +HANDLE_X_PATH_ARG(with_randr, --with-randr-ext, RANDR) + +if test "$with_randr" = yes; then + + # first check for Xrandr.h + AC_CHECK_X_HEADER(X11/extensions/Xrandr.h, [have_randr=yes],, + [#include ]) + + # if that succeeded, then check for the XRR code in the libraries + if test "$have_randr" = yes; then + + # RANDR probably needs -lXrender + xrender_libs= + AC_CHECK_X_LIB(Xrender, XRenderSetSubpixelOrder, + [xrender_libs="-lXrender"], [true], -lXext -lX11) + + # first look for RANDR in -lXext + have_randr=no + AC_CHECK_X_LIB(Xext, XRRGetScreenInfo, + [have_randr=yes; SAVER_LIBS="$SAVER_LIBS $xrender_libs"], + [true], $xrender_libs -lXext -lX11) + + # if that failed, look in -lXrandr + if test "$have_randr" = no; then + AC_CHECK_X_LIB(Xrandr, XRRGetScreenInfo, + [have_randr=yes; SAVER_LIBS="$SAVER_LIBS -lXrandr $xrender_libs"], + [true], $xrender_libs -lXext -lX11) + fi + fi + + # 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 + #include + #include ], + [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 +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)]) ############################################################################### @@ -1225,14 +1852,22 @@ 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 - if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then + if grep 'keyboard\|i8042' /proc/interrupts >/dev/null 2>&1 ; then ac_cv_have_proc_interrupts=yes fi ]) have_proc_interrupts=$ac_cv_have_proc_interrupts + fi if test "$have_proc_interrupts" = yes; then AC_DEFINE(HAVE_PROC_INTERRUPTS) @@ -1250,13 +1885,18 @@ 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]) + --disable-locking Do not allow locking at all.], + [enable_locking="$enableval"], + [if test "$ac_macosx" = yes; then + # We can't lock on MacOS X, so default to not compiling in support for it. + # But allow --enable-locking to override that, so I can debug Linux locking + # under MacOS X11. + enable_locking=no + else + enable_locking=yes + fi]) if test "$enable_locking" = yes; then true elif test "$enable_locking" = no; then @@ -1267,47 +1907,22 @@ else 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: must be yes or no: --enable-root-passwd=$enable_root_passwd" + exit 1 +fi ############################################################################### # @@ -1334,6 +1949,26 @@ 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 arg is the name of the PAM service that + xscreensaver will authenticate as.]), + [pam_service_name="$withval"],[pam_service_name="xscreensaver"]) + +AC_ARG_ENABLE(pam-check-account-type, + [AC_HELP_STRING([--enable-pam-check-account-type], + [Whether PAM should check the result of account + modules when authenticating. Only do this if you + have account configured properly on your system.])], + [enable_pam_check_account_type="$enableval"],[enable_pam_check_account_type=no]) +if test "$enable_pam_check_account_type" = yes ; then + AC_DEFINE(PAM_CHECK_ACCOUNT_TYPE) + true +elif test "$enable_pam_check_account_type" != no ; then + echo "error: must be yes or no: --enable-pam-check-account-type=$enable_pam_check_account_type" + exit 1 +fi + HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM) if test "$enable_locking" = yes -a "$with_pam" = yes; then @@ -1344,27 +1979,40 @@ 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, # 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 + AC_DEFINE(HAVE_SIGTIMEDWAIT)]) + if test "$have_timedwait" = no ; then + AC_CHECK_LIB(rt, sigtimedwait, [have_timedwait=yes + AC_DEFINE(HAVE_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 - #include - #include ], - [pam_handle_t *pamh = 0; - char *s = pam_strerror(pamh, PAM_SUCCESS);], - [ac_pam_strerror_args=2], - [AC_TRY_COMPILE([#include - #include - #include ], - [char *s = - pam_strerror(PAM_SUCCESS);], - [ac_pam_strerror_args=1], - [ac_pam_strerror_args=0])]) + [AC_TRY_X_COMPILE([#include + #include + #include ], + [pam_handle_t *pamh = 0; + char *s = pam_strerror(pamh, PAM_SUCCESS);], + [ac_pam_strerror_args=2], + [AC_TRY_X_COMPILE([#include + #include + #include ], + [char *s = + pam_strerror(PAM_SUCCESS);], + [ac_pam_strerror_args=1], + [ac_pam_strerror_args=0])]) ac_cv_pam_strerror_args=$ac_pam_strerror_args]) ac_pam_strerror_args=$ac_cv_pam_strerror_args if test "$ac_pam_strerror_args" = 1 ; then @@ -1375,12 +2023,34 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then else AC_MSG_RESULT(unknown) fi - fi -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, + LDFLAGS=$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 + + +############################################################################### +# # Check for Kerberos. # ############################################################################### @@ -1411,19 +2081,43 @@ 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 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 # (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 - PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes" + # from Tim Showalter for FreeBSD 4.2 + PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err" fi if test "$have_kerberos" = yes ; then @@ -1653,36 +2347,126 @@ fi ############################################################################### # -# Check for -lXm. +# 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_motif=no -with_motif_req=unspecified -AC_ARG_WITH(motif,[ -User interface options: - - --with-motif Use the Motif toolkit for the user interface.], - [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes]) +have_passwd_helper=no +with_passwd_helper_req=unspecified -HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif) +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 "$with_motif" != yes -a "$with_motif" != no ; then - echo "error: must be yes or no: --with-motif=$with_motif" - exit 1 +if test "$enable_locking" = no ; then + with_passwd_helper_req=no + with_passwd_helper=no fi -if test "$with_motif" = yes; then - have_motif=no - AC_CHECK_X_HEADER(Xm/Xm.h, - [have_motif=yes - AC_DEFINE(HAVE_MOTIF) - MOTIF_LIBS="$MOTIF_LIBS -lXm"]) +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 a login manager for a "New Login" button on the lock dialog. +# Usually this will be "/usr/bin/gdmflexiserver". +# +############################################################################### + +with_login_manager_req=unspecified +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 like gdmflexiserver or kdmctl.], + [with_login_manager="$withval"; with_login_manager_req="$withval"], + [with_login_manager=yes]) +# no HANDLE_X_PATH_ARG for this one + +if test "$enable_locking" = no ; then + with_login_manager_req=no + with_login_manager=no fi +case "$with_login_manager_req" in + no) + with_login_manager="" + ;; -if test "$have_motif" = yes; then - AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)]) + yes|unspecified) + # Try both defaults, use the one that exists. + + 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="$default_login_manager_2" + else + with_login_manager="" + fi + 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_1" + NEW_LOGIN_COMMAND_P='! ' + AC_MSG_RESULT($NEW_LOGIN_COMMAND (disabled)) +else + AC_MSG_RESULT($NEW_LOGIN_COMMAND) fi @@ -1694,8 +2478,10 @@ fi have_gtk=no with_gtk_req=unspecified -AC_ARG_WITH(gtk, -[ --with-gtk Use the Gtk toolkit for the user interface.], +AC_ARG_WITH(gtk,[ +User interface options: + + --with-gtk Use the Gtk toolkit for the user interface.], [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes]) # if --with-gtk=/directory/ was specified, remember that directory so that @@ -1716,167 +2502,166 @@ if test "$with_gtk" != yes -a "$with_gtk" != no ; then exit 1 fi -have_gnome=no -with_gnome_req=unspecified -AC_ARG_WITH(gnome, -[ --with-gnome Include support for the Gnome Control Center.], - [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes]) - -# if --with-gnome=/directory/ was specified, remember that directory so that -# we can also look for the `gnome-config' program in that directory. -case "$with_gnome" in - /*) - gnome_dir="$with_gnome" - ;; - *) - gnome_dir="" - ;; -esac -HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome) +parse_gtk_version_string() { + # M4 sucks!! + changequote(X,Y) + maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'` + min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'` + changequote([,]) + ac_gtk_version=`echo "$maj * 1000 + $min" | bc` + if test -z "$ac_gtk_version"; then + ac_gtk_version=unknown + ac_gtk_version_string=unknown + fi +} -if test "$with_gnome" != yes -a "$with_gnome" != no ; then - echo "error: must be yes or no: --with-gnome=$with_gnome" - exit 1 +# Find pkg-config... (need this for both gtk and gdk_pixbuf.) +# if the user specified --with-gtk=/foo/ then look there. +# +gtk_path="$PATH" +if test ! -z "$gtk_dir"; then + # canonicalize slashes. + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + gtk_path="$foo:$gtk_path" fi +AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path) -jurassic_gtk=no -if test "$with_gtk" = yes; then - have_gtk=no - - # if the user specified --with-gtk=/foo/ then look in /foo/bin/ - # for glib-config and gtk-config. - # - gtk_path="$PATH" +if test -z "$pkg_config" ; then + AC_MSG_WARN([pkg-config not found!]) + pkg_config="false" +fi - if test ! -z "$gtk_dir"; then - # canonicalize slashes. - gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gtk_dir:$gtk_path" - fi - if test ! -z "gnome_dir"; then - # canonicalize slashes. - gnome_dir=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gnome_dir:$gtk_path" +# Utility function for running pkg-config-based tests... +# +pkgs='' +pkg_check_version() { + if test "$ok" = yes ; then + req="$1" + min="$2" + AC_MSG_CHECKING(for $req) + if $pkg_config --exists "$req" ; then + vers=`$pkg_config --modversion "$req"` + if $pkg_config --exists "$req >= $min" ; then + AC_MSG_RESULT($vers) + pkgs="$pkgs $req" + return 1 + else + AC_MSG_RESULT($vers (wanted >= $min)) + ok=no + return 0 + fi + else + AC_MSG_RESULT(no) + ok=no + return 0 + fi fi +} - AC_PATH_PROGS(glib_config, glib12-config glib-config,, $gtk_path) - AC_PATH_PROGS(gtk_config, gtk12-config gtk-config,, $gtk_path) - if test "$with_gnome" = yes; then - AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path) - fi +jurassic_gtk=no +gtk_halfassed=no - if test -n "$glib_config" -a -n "gtk_config" ; then - have_gtk=yes - if test "$with_gnome" = yes -a -n "$gnome_config" ; then - have_gnome=yes +if test "$with_gtk" = yes; then + have_gtk=no + + 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 gdk-pixbuf-2.0 2.0.0 + pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0 + have_gtk="$ok" + + if test "$have_gtk" = no; then + if test -n "$ac_gtk_version_string" ; then + gtk_halfassed="$ac_gtk_version_string" + gtk_halfassed_lib="$req" fi fi if test "$have_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 - # M4 sucks!! - changequote(X,Y) - maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'` - min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'` - changequote([,]) - ac_gtk_version=`echo "$maj * 1000 + $min" | bc` - if test -z "$ac_gtk_version"; then - ac_gtk_version=unknown - ac_gtk_version_string=unknown - fi - if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002 - then - have_gtk=no - have_gnome=no - jurassic_gtk=yes - fi + parse_gtk_version_string + jurassic_gtk=no fi if test "$have_gtk" = yes; then AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags, - [ac_cv_gtk_config_cflags=`$gtk_config --cflags`]) + [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`]) AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs, - [ac_cv_gtk_config_libs=`$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 - # Check for Gnome Capplet support. - # - if test "$have_gnome" = yes -a "$have_gtk" = yes; then - gnome_config_libs="gtk capplet gnomeui" - AC_MSG_CHECKING(for Gnome capplet includes) - AC_CACHE_VAL(ac_cv_gnome_config_cflags, - [if ( $gnome_config --cflags $gnome_config_libs 2>&1 >/dev/null | \ - grep Unknown >/dev/null ) ; then - ac_cv_gnome_config_cflags='' - else - ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs` - fi]) - ac_gnome_config_cflags=$ac_cv_gnome_config_cflags - if test "$ac_gnome_config_cflags" = "" ; then - have_gnome=no - AC_MSG_RESULT(no) - else - AC_MSG_RESULT($ac_gnome_config_cflags) - fi - fi - - 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 2>&1 >/dev/null | - grep Unknown >/dev/null ) ; then - ac_cv_gnome_config_libs='' - else - ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs` - fi]) - ac_gnome_config_libs=$ac_cv_gnome_config_libs - if test "$ac_gnome_config_libs" = "" ; then - have_gnome=no - AC_MSG_RESULT(no) - else - AC_MSG_RESULT($ac_gnome_config_libs) - fi - fi - - GNOME_DATADIR="" - if test "$have_gnome" = yes -a "$have_gtk" = yes; then - GNOME_DATADIR=`$gnome_config --datadir` - fi - - - # If we have Gnome, then override the gtk-config values with - # the gnome-config values. - # - if test "$have_gnome" = yes -a "$have_gtk" = yes; then - ac_gtk_config_cflags=$ac_gnome_config_cflags - ac_gtk_config_libs=$ac_gnome_config_libs - AC_DEFINE(HAVE_CRAPPLET) + GTK_EXTRA_OBJS="" + GTK_DATADIR="" + if test "$have_gtk" = yes; then + GTK_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` + GTK_DATADIR="$GTK_DATADIR/share" fi - if test "$have_gtk" = yes; then INCLUDES="$INCLUDES $ac_gtk_config_cflags" GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs" AC_DEFINE(HAVE_GTK) + AC_DEFINE(HAVE_GTK2) + AC_DEFINE(HAVE_XML) fi fi -# Check for the Gnome Help Browser. +# Check for the various Gnome help and URL loading programs. # -if test "$have_gnome" = yes; then - AC_CHECK_PROG(have_gnome_help, gnome-help-browser, yes, no) -else - have_gnome_help=no +WITH_BROWSER=gnome-open +if test "$have_gtk" = yes; then + AC_CHECK_PROGS(gnome_open_program, gnome-open) + AC_CHECK_PROGS(gnome_url_show_program, gnome-url-show) +fi + + +############################################################################### +# +# Check for -lXm. +# +############################################################################### + +have_motif=no +with_motif_req=unspecified +AC_ARG_WITH(motif,[ --with-motif Use the Motif toolkit for the user interface + (no longer supported.)], + [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no]) + +HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif) + +if test "$with_motif" != yes -a "$with_motif" != no ; then + echo "error: must be yes or no: --with-motif=$with_motif" + exit 1 +fi + +if test "$with_motif" = yes; then + have_motif=no + AC_CHECK_X_HEADER(Xm/Xm.h, + [have_motif=yes + AC_DEFINE(HAVE_MOTIF) + MOTIF_LIBS="$MOTIF_LIBS -lXm"],, + [#include + #include + #include ]) +fi + + +if test "$have_motif" = yes; then + AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],, + [#include + #include + #include ]) fi @@ -2046,7 +2831,8 @@ ac_mesagl_version_string=unknown if test "$with_gl" = yes; then AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no) if test "$have_gl" = yes ; then - AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no) + AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no, + [#include ]) fi # If we have the headers, try and figure out which vendor it's from. @@ -2058,14 +2844,46 @@ if test "$with_gl" = yes; then # AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl, [ac_cv_have_mesa_gl=no - AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes]) - ]) + if test "$ac_macosx" = no; then + # WTF! MacOS 10.5.0 ships the Mesa GL headers! + # It's not really Mesa, is it? + AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes]) + fi]) ac_have_mesa_gl=$ac_cv_have_mesa_gl - gl_lib_1="" GL_LIBS="" + if test "$ac_macosx" = yes; 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 GL_LIBS) + GL_LIBS="$GL_LIBS $osx_crud" + unset osx_crud + + # New lossage in 10.5.0: without this, we get: + # ld: cycle in dylib re-exports with /usr/X11/lib/libGL.dylib + # + osx_crud="/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib" + osx_crud="-Wl,-dylib_file,${osx_crud}:${osx_crud}" + + AC_MSG_RESULT(adding "$osx_crud" to GL_LIBS) + GL_LIBS="$GL_LIBS $osx_crud" + unset osx_crud + + # New lossage in 10.6.8: we can't allow -L/opt/local/lib to be in the + # link line, or at runtime XQueryExtension gets a segv due to some kind + # of library version skew. Libs must come from /usr/X11/lib even if + # $prefix and/or $exec_prefix are set to /opt/local/. + # + AC_MSG_RESULT(omitting "$libdir" from LDFLAGS) + libdir='' + + fi + # Some versions of MesaGL are compiled to require -lpthread. # So if the Mesa headers exist, and -lpthread exists, then always @@ -2084,15 +2902,15 @@ if test "$with_gl" = yes; then if test "$ac_have_mesa_gl" = yes ; then AC_CHECK_X_LIB(MesaGL, glXCreateContext, [gl_lib_1="MesaGL" - GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"], - [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm) + GL_LIBS="-lMesaGL -lMesaGLU $VIDMODE_LIBS $GL_LIBS"], + [], -lMesaGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm) fi if test "$gl_lib_1" = "" ; then AC_CHECK_X_LIB(GL, glXCreateContext, [gl_lib_1="GL" - GL_LIBS="-lGL -lGLU $GL_LIBS"], - [], -lGLU $GL_LIBS -lX11 -lXext -lm) + GL_LIBS="-lGL -lGLU $VIDMODE_LIBS $GL_LIBS"], + [], -lGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm) fi if test "$gl_lib_1" = "" ; then @@ -2126,8 +2944,29 @@ if test "$with_gl" = yes; then #include #ifndef MESA_MAJOR_VERSION # include -# define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION -# define MESA_MINOR_VERSION XMESA_MINOR_VERSION +# ifdef XMESA_MAJOR_VERSION + /* Around Mesa 3.2, they took out the Mesa version number, so instead, + we have to check the XMesa version number (the number of the X protocol + support, which seems to be the same as the Mesa version number.) + */ +# define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION +# define MESA_MINOR_VERSION XMESA_MINOR_VERSION +# else + /* Oh great. Some time after 3.4, they took out the xmesa.h header file, + so we have no way of telling what version of Mesa this is at all. + So, we'll guess that the osmesa version (the "offscreen protocol") + is less than or equal to the real mesa version number. Except that + if OSmesa is 3.3, assume at least Mesa 3.4, since OSmesa was 3.3 in + Mesa 3.4. And Mesa 3.3 had xmesa.h. What a complete load of shit! + */ +# include +# define MESA_MAJOR_VERSION OSMESA_MAJOR_VERSION +# define MESA_MINOR_VERSION OSMESA_MINOR_VERSION or newer, probably? +# if OSMESA_MAJOR_VERSION == 3 && OSMESA_MINOR_VERSION == 3 +# undef MESA_MINOR_VERSION +# define MESA_MINOR_VERSION 4 or newer, probably? +# endif +# endif #endif configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION EOF @@ -2138,10 +2977,12 @@ EOF fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" - # M4 sucks!! + mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:` + + # M4 sucks!! changequote(X,Y) - mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \ - 's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'` + mglv=`echo "$mglv" | sed -n \ + 's/^configure: *\([0-9][0-9]*\) *\([0-9].*\)$/\1.\2/p'` changequote([,]) rm -f conftest.$ac_ext @@ -2152,9 +2993,12 @@ EOF ac_mesagl_version=unknown ac_mesagl_version_string=unknown else - ac_mesagl_version_string=$mglv - maj=`echo $mglv | sed -n 's/\..*//p'` - min=`echo $mglv | sed -n 's/.*\.//p'` + ac_mesagl_version_string="$mglv" + # M4 sucks!! + changequote(X,Y) + maj=`echo "$mglv" | sed -n 's/^\([0-9][0-9]*\)\..*$/\1/p'` + min=`echo "$mglv" | sed -n 's/^.*\.\([0-9][0-9]*\).*$/\1/p'` + changequote([,]) ac_mesagl_version=`echo "$maj * 1000 + $min" | bc` if test -z "$ac_mesagl_version"; then ac_mesagl_version=unknown @@ -2199,15 +3043,20 @@ HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE) GLE_LIBS="" -if test "$with_gle" = yes; then +if test "$have_gl" = no ; then + true +elif test "$with_gle" = yes; then - AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no) + AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no, + [#include ]) if test "$have_gle3" = yes ; then have_gle=yes; else - AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no) + AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no, + [#include ]) if test "$have_gle" = yes ; then - AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no) + AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no, + [#include ]) fi fi @@ -2262,6 +3111,166 @@ elif test "$with_gle" != no; then fi +############################################################################### +# +# Handle --with-gles +# +############################################################################### + +with_gles_req=unspecified +AC_ARG_WITH(gles, +[ --with-gles Target OpenGL ES 1.x API instead of OpenGL 1.3.], + [with_gles="$withval"; with_gles_req="$withval"],[with_gles=no]) + +HANDLE_X_PATH_ARG(with_gles, --with-gles, JWZGLES) + +if test "$with_gles" = yes; then + have_gles=yes + AC_DEFINE(HAVE_JWZGLES) + JWZGLES_OBJS="jwzgles.o" + AC_MSG_RESULT(using OpenGL ES compatiblity shim) +elif test "$with_gles" != no; then + echo "error: must be yes or no: --with-gles=$with_xpm" + exit 1 +fi + +# May want to phase out glBitmap even in a non-GLES world. +# +if test "$have_gles" = yes; then + GLFPS_OBJS="fps-gl.o glxfonts.o texfont.o" + GLFONT_OBJS="" +else + AC_DEFINE(HAVE_GLBITMAP) + GLFPS_OBJS="fps-gl.o glxfonts.o" + GLFONT_OBJS="texfont.o" +fi + + +############################################################################### +# +# Check for -lgdk_pixbuf. +# These tests are for gdk_pixbuf usage of the hacks, +# not xscreensaver-demo (thus we have to test again to get +# the libraries right: don't want to pull in all of GTK +# for the hacks.) +# +############################################################################### + +have_gdk_pixbuf=no +with_gdk_pixbuf_req=unspecified +AC_ARG_WITH(pixbuf, +[ --with-pixbuf Include support for the GDK-Pixbuf library in some + demos, which will make it possible for them to read + GIF, JPEG, and PNG files as well.], + [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"], + [with_gdk_pixbuf=yes]) + +# if --with-pixbuf=/directory/ was specified, remember that directory so that +# we can also look for the `gdk-pixbuf-config' program in that directory. +case "$with_gdk_pixbuf" in + /*) + gdk_pixbuf_dir="$with_gdk_pixbuf" + ;; + *) + gdk_pixbuf_dir="" + ;; +esac + +HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF) + +if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then + echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf" + exit 1 +fi + +if test "$with_gdk_pixbuf" = yes; then + have_gdk_pixbuf=no + + pkgs='' + ok="yes" + + 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" + + if test "$have_gdk_pixbuf" = yes; then + AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags, + [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`]) + 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 + + + if test "$have_gdk_pixbuf" = yes; then + # + # we appear to have pixbuf; check for headers/libs to be sure. + # + ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags" + + have_gdk_pixbuf=no + + # check for header A... + AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes]) + + # if that worked, check for header B... + if test "$have_gdk_pixbuf" = yes; then + have_gdk_pixbuf=no + gdk_pixbuf_halfassed=yes + AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h, + [have_gdk_pixbuf=yes + gdk_pixbuf_halfassed=no]) + + # yay, it has a new name in Gtk 2.x... + if test "$have_gdk_pixbuf" = no; then + have_gdk_pixbuf=no + gdk_pixbuf_halfassed=yes + AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h, + [have_gdk_pixbuf=yes + gdk_pixbuf_halfassed=no]) + fi + fi + CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS" + fi + + if test "$have_gdk_pixbuf" = yes; then + # we have the headers, now check for the libraries + have_gdk_pixbuf=no + gdk_pixbuf_halfassed=yes + + AC_MSG_RESULT(checking for gdk_pixbuf usability...) + + # library A... + AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],, + $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm) + # library B... + if test "$have_gdk_pixbuf" = yes; then + have_gdk_pixbuf=no + AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init, + [have_gdk_pixbuf=yes + gdk_pixbuf_halfassed=no],, + $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm) + fi + fi + + if test "$have_gdk_pixbuf" = yes; then + INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags" + XPM_LIBS="$ac_gdk_pixbuf_config_libs" + AC_DEFINE(HAVE_GDK_PIXBUF) + 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 + ############################################################################### # @@ -2272,7 +3281,8 @@ fi have_xpm=no with_xpm_req=unspecified AC_ARG_WITH(xpm, -[ --with-xpm Include support for XPM files in some demos.], +[ --with-xpm Include support for XPM files in some demos. + (Not needed if Pixbuf is used.)], [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes]) HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM) @@ -2281,7 +3291,8 @@ if test "$with_xpm" = yes; then AC_CHECK_X_HEADER(X11/xpm.h, [have_xpm=yes AC_DEFINE(HAVE_XPM) - XPM_LIBS="-lXpm"]) + XPM_LIBS="-lXpm $XPM_LIBS"],, + [#include ]) elif test "$with_xpm" != no; then echo "error: must be yes or no: --with-xpm=$with_xpm" exit 1 @@ -2296,6 +3307,70 @@ if test "$have_motif" = yes -a "$have_xpm" = yes ; then fi fi +if test "$XPM_LIBS" = "" ; then + XPM_LIBS=$(MINIXPM) +fi + + +############################################################################### +# +# Check for -ljpeg +# +############################################################################### + +have_jpeg=no +with_jpeg_req=unspecified +jpeg_halfassed=no +AC_ARG_WITH(jpeg, +[ --with-jpeg Include support for the JPEG library.], + [with_jpeg="$withval"; with_jpeg_req="$withval"], + [with_jpeg=yes]) + +HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG) + +if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then + echo "error: must be yes or no: --with-jpeg=$with_jpeg" + exit 1 +fi + +if test "$with_jpeg" = yes; then + + have_jpeg=no + AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes]) + + if test "$have_jpeg" = yes; then + # we have the header, now check for the library + have_jpeg=no + jpeg_halfassed=yes + AC_CHECK_X_LIB(jpeg, jpeg_start_compress, + [have_jpeg=yes + jpeg_halfassed=no + JPEG_LIBS="-ljpeg" + AC_DEFINE(HAVE_JPEGLIB)]) + fi +fi + + +############################################################################### +# +# Check for pty support: this allows 'phosphor' and 'apple2' +# to run curses-based programs, or be used as terminal windows. +# +############################################################################### + +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 ############################################################################### # @@ -2306,7 +3381,7 @@ fi have_xshm=no with_xshm_req=unspecified AC_ARG_WITH(xshm-ext, -[ --with-xshm-ext Include support for the XSHM extension.], +[ --with-xshm-ext Include support for the Shared Memory extension.], [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes]) HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM) @@ -2314,7 +3389,8 @@ HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM) if test "$with_xshm" = yes; then # first check for Xshm.h. - AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes]) + AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes],, + [#include ]) # if that succeeded, then check for sys/ipc.h. if test "$have_xshm" = yes; then @@ -2372,7 +3448,8 @@ HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER) if test "$with_xdbe" = yes; then - AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes]) + AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes],, + [#include ]) if test "$have_xdbe" = yes; then AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION) fi @@ -2404,7 +3481,8 @@ HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay) if test "$with_readdisplay" = yes; then AC_CHECK_X_HEADER(X11/extensions/readdisplay.h, - AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION)) + AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION),, + [#include ]) elif test "$with_readdisplay" != no; then echo "error: must be yes or no: --with-readdisplay=$with_readdisplay" exit 1 @@ -2413,162 +3491,179 @@ fi ############################################################################### # -# Check for a program to generate random text. -# -# Zippy is funnier than the idiocy generally spat out by `fortune', -# so try to find that, by invoking Emacs and asking it where its -# libexec directory is ("yow" lives in there.) -# -# If that doesn't work, see if fortune, zippy, or yow are on $PATH, -# and if so, use them. -# -# If that doesn't work, look in /usr/games, and if it's there, use -# the full pathname. +# Check for a directory full of images to use as the default value +# of the "imageDirectory" preference. # ############################################################################### -with_zippy_req="" -AC_ARG_WITH(zippy,[ - --with-zippy=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.) If you don't specify this, the default - is to use \"yow\" from the Emacs distribution (if you - have it) or else to use \"fortune\".], - [with_zippy_req="$withval"; with_zippy="$withval"],[with_zippy=yes]) +have_imagedir=no +with_imagedir_req=unspecified -if test "$with_zippy" = no || test "$with_zippy" = yes ; then - with_zippy="" - with_zippy_req="" -fi +AC_ARG_WITH(image-directory, +[ --with-image-directory Arg is the default directory from which some demos + will choose random images to display.], + [with_imagedir="$withval"; with_imagedir_req="$withval"], + [with_imagedir=yes]) +# no HANDLE_X_PATH_ARG for this one -if test -n "$with_zippy_req" ; then - ac_cv_zippy_program="" - case "$with_zippy_req" in - /*) - AC_MSG_CHECKING([for $with_zippy_req]) - if test -x "$with_zippy_req" ; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - with_zippy="" - fi - ;; - *) - # don't cache - unset ac_cv_path_zip2 - AC_PATH_PROG(zip2, $with_zippy_req, []) - if test "$zip2" = ""; then - with_zippy="" +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_zippy_program="$with_zippy" + done -elif test -n "$ac_cv_zippy_program"; then - AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program]) + ;; + no) + with_imagedir="" + ;; + + *) + echo "error: must be an absolute path: --with-image-directory=$with_imagedir_req" + exit 1 + ;; +esac +ac_cv_imagedir="$with_imagedir" + +DEFAULT_IMAGES_P='True' +DEFAULT_IMAGE_DIRECTORY="$ac_cv_imagedir" + +if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then + DEFAULT_IMAGES_P='False' fi -if test ! -n "$ac_cv_zippy_program"; then - AC_CHECK_PROGS(emacs_exe, emacs) - AC_CHECK_PROGS(xemacs_exe, xemacs) +############################################################################### +# +# 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". +# +############################################################################### - ac_cv_zippy_program="" - eargs='-batch -q -nw --eval' +have_textfile=no +with_textfile_req=unspecified - if test -n "$emacs_exe" ; then - AC_MSG_CHECKING([for emacs yow]) - # - # get emacs to tell us where the libexec directory is. - # - dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \ - 2>/dev/null | tail -1` - dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'` - # - # try running libexec/yow and see if it exits without error. - # - if test x"$dir" != x -a -x "$dir/yow" ; then - if $dir/yow >&- 2>&- ; then - ac_cv_zippy_program="$dir/yow" - AC_MSG_RESULT($ac_cv_zippy_program) - else - AC_MSG_RESULT(no) - fi - fi - 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 test -z "$ac_cv_zippy_program" ; then - AC_MSG_CHECKING([for xemacs yow]) - if test -n "$xemacs_exe" ; then - # - # get xemacs to tell us where the libexec directory is. - # - dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \ - 2>/dev/null | tail -1` - dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'` - # - # try running libexec/yow and see if it exits without error. - # - if test x"$dir" != x -a -x "$dir/yow" ; then - if $dir/yow >&- 2>&- ; then - ac_cv_zippy_program="$dir/yow" - AC_MSG_RESULT($ac_cv_zippy_program) +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/share/doc/xserver-xorg-core/copyright" \ + "/usr/X11R6/README" \ + "/usr/share/doc/libX11*/COPYING" \ + "/usr/X11/share/X11/doc/README*" \ + "/usr/share/doc/debian/debian-manifesto" \ + ; do + if test -z "$with_textfile"; then + AC_MSG_CHECKING([for text file $f]) + f=`/bin/ls $f 2>&- | head -1` + if test -f "$f" ; then + AC_MSG_RESULT(yes) + with_textfile="$f" else - # - # in some xemacs installations, the pathname of the yow.lines file - # isn't hardcoded into the yow executable, and must be passed on - # the command line. See if it's in libexec/../etc/. - - # M4 sucks!! - changequote(X,Y) - dir_up=`echo "$dir" | sed 's@/[^/]*$@@'` - changequote([,]) - - yowlines="$dir_up/etc/yow.lines" - if $dir/yow -f $yowlines >&- 2>&- ; then - ac_cv_zippy_program="$dir/yow -f $yowlines" - AC_MSG_RESULT($ac_cv_zippy_program) - else - # - # In newer XEmacs releases, yow.lines is in a different place, - # and the easiest way to get it is by calling the new function - # `locate-data-file'. - # - yowlines=`$xemacs_exe $eargs \ - '(princ (concat (locate-data-file "yow.lines") "\n"))' \ - 2>/dev/null | tail -1` - if $dir/yow -f $yowlines >&- 2>&- ; then - ac_cv_zippy_program="$dir/yow -f $yowlines" - AC_MSG_RESULT($ac_cv_zippy_program) - else - AC_MSG_RESULT(no) - fi - fi + AC_MSG_RESULT(no) fi fi - fi - fi + done - # if that didn't work, try for some other programs... - if test -z "$ac_cv_zippy_program" ; then - fortune='' - AC_CHECK_PROGS(fortune, [fortune zippy yow]) - # if that didn't work, try for those programs in /usr/games... - if test -z "$fortune" ; then - AC_PATH_PROGS(fortune, [fortune zippy yow], fortune, - /usr/games:/usr/local/games:$PATH) - fi - fi -fi + ;; + no) + with_textfile="" + ;; -if test -z "$ac_cv_zippy_program" ; then - ac_cv_zippy_program=fortune -fi + *) + echo "error: must be an absolute path: --with-text-file=$with_textfile_req" + exit 1 + ;; +esac +ac_cv_textfile="$with_textfile" -AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program") +DEFAULT_TEXT_FILE="$ac_cv_textfile" +############################################################################### +# +# Check the browser to see help URL +# +############################################################################### + +have_browser=no +with_browser_req=unspecified + +AC_ARG_WITH(browser, +[ --with-browser=BROWSER Specify the web browser used to show the 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" + ############################################################################### # # Check whether it's ok to install some hacks as setuid (e.g., "sonar") @@ -2579,7 +3674,7 @@ AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program") setuid_hacks_default=no setuid_hacks="$setuid_hacks_default" AC_ARG_WITH(setuid-hacks, -[ --with-setuid-hacks Allow some demos to be installed \`setuid root' +[ --with-setuid-hacks Allow some demos to be installed `setuid root' (which is needed in order to ping other hosts.) ], [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"]) @@ -2615,7 +3710,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 @@ -2635,6 +3730,15 @@ 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 "$enable_pam_check_account_type" = yes; then + COMMENT_PAM_CHECK_ACCOUNT="" +else + COMMENT_PAM_CHECK_ACCOUNT="#" +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)" @@ -2648,6 +3752,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 @@ -2665,32 +3780,80 @@ 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_MEN='$(GLE_MEN)' - GLE_KLUDGE="${tab} " + GLE_KLUDGE=" " else - GLE_KLUDGE="-${tab} " + GLE_KLUDGE="-" +fi + +if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then + JPEG_EXES='$(JPEG_EXES)' fi # Another substitution in the XScreenSaver.ad.in file: # -if test "$have_gnome_help" = yes; then - GNOMEHELP_Y='' - GNOMEHELP_N='! ' +if test "$gnome_open_program" != ''; then + GNOME24='' + GNOME22='! ' + NOGNOME='! ' +elif test "$gnome_url_show_program" != ''; then + GNOME24='! ' + GNOME22='' + NOGNOME='! ' else - GNOMEHELP_Y='! ' - GNOMEHELP_N='' + GNOME24='! ' + GNOME22='! ' + NOGNOME='' +fi + + +# Set PO_DATADIR to something sensible. +# +AC_MSG_CHECKING([for locale directory]) +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" fi +if test -z "$PO_DATADIR" ; then + # + # #### Total fucking kludge -- + # Map /build/prefix/usr/X11R6/share/ to /build/prefix/usr/share/ + # but of course we need to expand all the nested variables to do that... + # + dd=`eval eval eval eval eval eval eval eval eval eval eval echo $datadir` + PO_DATADIR=`echo $dd | sed 's@/X11R6/@/@'` +fi + +AC_MSG_RESULT($PO_DATADIR/locale) + + +# canonicalize slashes. +HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'` + +# gcc 3.0 likes to issue this warning for every file: +# +# cc1: warning: changing search order for system directory "/usr/local/include" +# cc1: warning: as it has already been specified as a non-system directory +# +# Yay. We can only avoid that by deleting "-I${prefix}/include" from the list. +# Which *should* be totally redundant, and thus an ok thing to delete? +# +INCLUDES=`echo "$INCLUDES" | sed 's@ -I${prefix}/include@@g;'` + ############################################################################### # @@ -2705,17 +3868,34 @@ AC_SUBST(ALL_DEMO_PROGRAMS) AC_SUBST(SAVER_LIBS) AC_SUBST(MOTIF_LIBS) AC_SUBST(GTK_LIBS) +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) +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(COMMENT_PAM_CHECK_ACCOUNT) +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) +AC_SUBST(SCRIPTS_OSX) +AC_SUBST(MEN_OSX) AC_SUBST(PASSWD_SRCS) AC_SUBST(PASSWD_OBJS) @@ -2727,17 +3907,27 @@ AC_SUBST(SAVER_GL_OBJS) AC_SUBST(SAVER_GL_LIBS) 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) AC_SUBST(GLE_EXES) -AC_SUBST(GLE_MEN) AC_SUBST(GLE_KLUDGE) -AC_SUBST(GNOMEHELP_Y) -AC_SUBST(GNOMEHELP_N) +AC_SUBST(JWZGLES_OBJS) +AC_SUBST(GLFPS_OBJS) +AC_SUBST(GLFONT_OBJS) +AC_SUBST(GNOME24) +AC_SUBST(GNOME22) +AC_SUBST(NOGNOME) AC_SUBST(HACKDIR) -AC_SUBST(GNOME_DATADIR) +AC_SUBST(HACKDIR_FULL) +AC_SUBST(GTK_DATADIR) +AC_SUBST(PO_DATADIR) +AC_SUBST(HACK_CONF_DIR) +AC_SUBST(GTK_EXTRA_OBJS) APPDEFAULTS=$ac_x_app_defaults AC_SUBST(APPDEFAULTS) @@ -2750,8 +3940,10 @@ AC_SUBST(PERL) AC_OUTPUT(Makefile utils/Makefile driver/Makefile + driver/xscreensaver.pam hacks/Makefile hacks/glx/Makefile + po/Makefile.in driver/XScreenSaver.ad) ############################################################################### @@ -2814,10 +4006,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 @@ -2838,18 +4026,72 @@ if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then warn 'The DPMS extension was requested, but was not found.' fi +if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then + warn 'The Xinerama extension was requested, but was not found.' +fi + if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then warn 'The XF86VMODE extension was requested, but was not found.' fi +if test "$with_randr_req" = yes -a "$have_randr" = no ; then + warn 'The RANDR extension was requested, but was not found.' +fi + 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" + warn2 "library ($gtk_halfassed_lib) was not, so GTK can't be used." + warn2 "Perhaps some of the development packages are not installed?" + 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 + +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 .' +} 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;" @@ -2857,7 +4099,7 @@ elif test "$with_motif_req" = yes -a "$have_motif" = no ; then elif test "$jurassic_gtk" = yes ; then - pref_gtk=1.2 + pref_gtk=2.0 v="$ac_gtk_version_string" if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then @@ -2868,24 +4110,22 @@ 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;" - warn2 "Motif will be used instead." - + warnL "Use of Gtk was requested, but it wasn't found." fi -if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then - warn 'Use of the Gnome Control Panel was requested, but the necessary' - warn2 'headers and/or libraries were not found.' +if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then + warn "GTK is being used, but the GDK-Pixbuf library and/or" + warn2 "headers were not found. That can't be good. Please" + warn2 "install the GDK-Pixbuf development kit and re-configure." fi - if test "$have_motif" = yes -a "$have_lesstif" = yes ; then - preferred_lesstif=0.86 + preferred_lesstif=0.92 if test "$lesstif_version" = unknown; then warnL "Unable to determine the LessTif version number!" @@ -2902,22 +4142,85 @@ if test "$have_motif" = yes -a "$have_lesstif" = yes ; then fi +if test "$have_motif" = yes -a "$have_gtk" = no ; then + warn 'Motif is being used, and GTK is not.' + echo '' + motif_warn2 +fi + -if test "$have_xpm" = no ; then - if test "$with_xpm_req" = yes ; then - warnL 'Use of XPM was requested, but it was not found.' +if test "$with_xpm_req" = yes -a "$have_xpm" = no; then + warnL 'Use of XPM was requested, but it was not found.' +fi + +if test "$with_gdk_pixbuf_req" = yes -a "$have_gdk_pixbuf" = no; then + warnL 'Use of GDK-Pixbuf was requested, but it was not found.' +fi + +if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes || \ + test "$have_gdk_pixbuf" = no -a "$have_xpm" = no ; then + + if test "$with_gdk_pixbuf_req" = yes ; then + true + elif test "$with_gdk_pixbuf_req" = no ; then + warnL 'The GDK-Pixbuf library is not being used.' + else + warnL 'The GDK-Pixbuf library was not found.' + fi + + if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then + true elif test "$with_xpm_req" = no ; then - noteL 'The XPM library is not being used.' + warnL 'The XPM library is not being used.' else - noteL 'The XPM library was not found.' + warnL 'The XPM library was not found.' + fi + + if test "$have_gdk_pixbuf" = no -a "$have_xpm" = yes ; then + warn2 'The XPM library is being used instead.' + fi + + if test "$gdk_pixbuf_halfassed" = yes ; then + echo '' + warn2 'More specifically, we found the headers, but not the' + warn2 'libraries; so either GDK-Pixbuf is half-installed on this' + warn2 "system, or something else went wrong. The \`config.log'" + warn2 'file might contain some clues.' fi echo '' - warn2 'Some of the demos will not be as colorful as they' - warn2 'could be. You might want to consider installing XPM' - warn2 'and re-running configure. (Remember to delete the' - warn2 'config.cache file first.) You can find XPM at most' - warn2 'X11 archive sites, such as .' + warn2 'Some of the demos will not use images as much as they could.' + warn2 'You should consider installing GDK-Pixbuf and re-running' + warn2 'configure. (GDK-Pixbuf is recommended over XPM, as it' + warn2 'provides support for more image formats.)' +fi + + +if test "$have_jpeg" = no ; then + if test "$with_jpeg_req" = yes ; then + warnL 'Use of libjpeg was requested, but it was not found.' + elif test "$with_jpeg_req" = no ; then + noteL 'The JPEG library is not being used.' + else + noteL 'The JPEG library was not found.' + fi + + if test "$jpeg_halfassed" = yes ; then + echo '' + warn2 'More specifically, we found the headers, but not the' + warn2 'library; so either JPEG is half-installed on this' + warn2 "system, or something else went wrong. The \`config.log'" + warn2 'file might contain some clues.' + echo '' + fi + + 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 @@ -2927,17 +4230,19 @@ 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 $mgv is being used. MesaGL 2.6 and earlier" - warn2 "have a security bug. It is strongly recommended that you" - warn2 "upgrade to at least version $preferred_mesagl." + warnL "MesaGL version number is $mgv --" + warn2 "MesaGL 2.6 and earlier have a security bug. It is strongly" + warn2 "recommended that you upgrade to at least version $preferred_mesagl." elif test \! "$ac_mesagl_version" -gt 3003; then - warnL "MesaGL version $mgv is being used. That version has some" - warn2 "bugs; it is recommended that you upgrade to $pgl or newer." + warnL "MesaGL version number is $mgv --" + warn2 "MesaGL 3.3 and earlier have some bugs; it is recommended" + warn2 "that you upgrade to $pgl or newer." fi fi @@ -2961,8 +4266,7 @@ if test "$have_gl" = no ; then echo '' warn2 'Those demos which use 3D will not be built or installed.' warn2 'You might want to consider installing OpenGL and' - warn2 're-running configure. (Remember to delete the' - warn2 "config.cache file first.) If your vendor doesn't ship" + warn2 "re-running configure. If your vendor doesn't ship" warn2 'their own implementation of OpenGL, you can get a free' warn2 'version at . For general OpenGL' warn2 'info, see .' @@ -2971,6 +4275,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' @@ -2994,11 +4303,11 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then echo '' warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)' warn2 'will not be built or installed. You might want to consider' - warn2 'installing GLE and re-running configure. (Remember to delete' - warn2 'the config.cache file first.) You can find the GLE library' - warn2 'at . For general OpenGL info,' - warn2 'see .' + warn2 'installing GLE and re-running configure. You can find the' + warn2 'GLE library at . For general' + warn2 'OpenGL info, see .' + fi fi @@ -3006,13 +4315,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_zippy_req"; then - if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then - warnL "$with_zippy_req was requested as the Zippy 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 @@ -3025,33 +4327,32 @@ if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then warn 'Use of shadow passwords was requested, but they were not found.' fi +if test "$ac_macosx" = yes ; then + if test "$enable_locking" = yes ; then + warn "You have specified --enable-locking on MacOS X." + warn2 "THIS DOES NOT WORK! Don't do this!" + fi +fi + # You are in a twisty maze of namespaces and syntaxes, all alike. # Fuck the skull of Unix. # -eval bindir=${bindir} -eval bindir=${bindir} -eval bindir=${bindir} -eval bindir=${bindir} -eval bindir=${bindir} -eval bindir=${bindir} -eval HACKDIR=${HACKDIR} -eval HACKDIR=${HACKDIR} -eval HACKDIR=${HACKDIR} -eval HACKDIR=${HACKDIR} -eval HACKDIR=${HACKDIR} -eval HACKDIR=${HACKDIR} +bindir=`eval eval eval eval eval eval eval echo $bindir` +HACKDIR=`eval eval eval eval eval eval eval echo $HACKDIR` +HACK_CONF_DIR=`eval eval eval eval eval eval eval echo $HACK_CONF_DIR` # canonicalize slashes. -bindir=`echo "${bindir}" | sed 's@/$@@;s@//*@/@g'` -HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'` +bindir=`echo "${bindir}" | sed 's@/$@@;s@//*@/@g'` +HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'` +HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'` -# Sanity check the subdir +# Sanity check the hackdir for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then echo "" - AC_MSG_ERROR([\"--enable-subdir=${bindir}/${bad_choice}\" won't work. + AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work. There will be an executable installed with that name, so that can't be the name of a directory as well. Please re-configure with a different directory name.]) @@ -3061,51 +4362,70 @@ 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>&- | \ - 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. 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@^\(.*\)/popsquares$@\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 -# Warn about egregious GNOME bogosity. +# Also warn if there's a Debian package installed. # -#if (rpm -qv control-center) >&- 2>&- ; then -# warning=no -# warnL "The Gnome Control Center seems to be installed." -# echo "" -# warn2 "Note that simply installing this version of xscreensaver" -# warn2 "will not cause GNOME to know about the newly-added display" -# warn2 "modes -- GNOME is just lame that way. Instead of using the" -# warn2 "Control Center, try using the \`xscreensaver-demo' command." -#fi +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 @@ -3118,18 +4438,28 @@ if test "$do_dir_warning" = yes; then echo "" echo ' When you run "make install", the "xscreensaver",' echo ' "xscreensaver-demo", and "xscreensaver-command" executables' - echo " will be installed in ${bindir}." + echo " will be installed in ${bindir}/." echo "" - echo " The various graphics demos (120+ different executables) will" - echo " also be installed in ${HACKDIR}." + 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" - echo " (for example, in a dedicated directory) you should re-run" - echo " configure with the --enable-subdir=DIR option. For more" - echo " information, run $0 --help." + echo " If you would prefer the demos to be installed elsewhere," + echo " you should re-run configure with the --with-hackdir=DIR" + echo " option. For more information, run \`./configure --help'." warning=yes fi if test "$warning" != no; then echo '' ; echo "$warnsep" ; echo '' fi + +if test "$do_dir_warning" = no; then + if test "$warning" = no; then + echo '' + fi + echo "User programs will be installed in ${bindir}/" + echo "Screen savers will be installed in ${HACKDIR}/" + echo "Configuration dialogs will be installed in ${HACK_CONF_DIR}/" + echo "System-wide default settings will be installed in ${APPDEFAULTS}/" + echo '' +fi