X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=configure.in;h=3de83e0970d25cb6dfa1d899d1fb6a3f51477192;hb=278c59e14c53fd412b734e699bd4f314f766f804;hp=0b6cdaf129eb1c464e7e3b60da8173aad4dc16e8;hpb=f54438ea00f152166e68073e98000fd3a00f65cd;p=xscreensaver diff --git a/configure.in b/configure.in index 0b6cdaf1..3de83e09 100644 --- a/configure.in +++ b/configure.in @@ -159,7 +159,7 @@ Installation options: --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/bin --enable-subdir=demos + \`--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.) @@ -189,6 +189,11 @@ HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'` AC_PATH_XTRA +if test "$have_x" != yes; then + AC_MSG_ERROR(Couldn't find X11 headers/libs. Try \`$0 --help'.) +fi + + # Try and find the app-defaults directory. # It sucks that autoconf doesn't do this already... # @@ -772,6 +777,31 @@ elif test "$with_xshm" != no; then fi +# Check for the DOUBLE-BUFFER server extension header. +# +have_xdbe=no +with_xdbe_req=unspecified +AC_ARG_WITH(xdbe-ext, +[ --with-xdbe-ext Include support for the DOUBLE-BUFFER server + extension, if possible (this is the default). + --without-xdbe-ext Do not compile in support for this extension.], + [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes]) + +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]) + if test "$have_xdbe" = yes; then + AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION) + fi + +elif test "$with_xdbe" != no; then + echo "error: must be yes or no: --with-xdbe-ext=$with_xshm" + exit 1 +fi + + # Check for the SGI-VIDEO-CONTROL server extension header. # have_sgivc=no @@ -844,6 +874,77 @@ elif test "$with_dpms" != no; then fi +# Check for the XF86VMODE server extension header. +# +have_xf86vmode=no +with_xf86vmode_req=unspecified +AC_ARG_WITH(xf86vmode-ext, +[ --with-xf86vmode-ext Include support for XFree86 virtual screens, if + possible (this is the default). + --without-xf86vmode-ext Do not compile in support for this extension.], + [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"], + [with_xf86vmode=yes]) + +HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode) + +if test "$with_xf86vmode" = yes; then + + # first check for xf86vmode.h + AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes]) + + # 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"], [], + -lXext -lX11) + fi + + # if that succeeded, then we've really got it. + if test "$have_xf86vmode" = yes; then + AC_DEFINE(HAVE_XF86VMODE) + fi + +elif test "$with_xf86vmode" != no; then + echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode" + exit 1 +fi + + +# Check for /proc/interrupts +# +have_proc_interrupts=no +with_proc_interrupts_req=unspecified +AC_ARG_WITH(proc-interrupts, +[ --with-proc-interrupts Include support for consulting the /proc/interrupts + file to notice keyboard activity, if possible. + --without-proc-interrupts Do not compile in support for this method.], + [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"], + [with_proc_interrupts=yes]) + +if test "$with_proc_interrupts" = yes; then + + AC_MSG_CHECKING(whether /proc/interrupts contains keyboard data) + AC_CACHE_VAL(ac_cv_have_proc_interrupts, + [ac_cv_have_proc_interrupts=no + if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then + ac_cv_have_proc_interrupts=yes + fi + ]) + have_proc_interrupts=$ac_cv_have_proc_interrupts + + AC_MSG_RESULT($have_proc_interrupts) + + if test "$have_proc_interrupts" = yes; then + AC_DEFINE(HAVE_PROC_INTERRUPTS) + fi + +elif test "$with_proc_interrupts" != no; then + echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts" + exit 1 +fi + + # Check for Motif and Athena --with and --without arguments. # @@ -1026,6 +1127,57 @@ if test "$have_lesstif" = yes ; then fi +if test "$have_motif" = yes ; then + mtv=unknown + echo unknown > conftest-mt + AC_CACHE_CHECK([Motif version number], + ac_cv_motif_version_string, + [AC_TRY_X_RUN([#include + #include + int main() { + FILE *f = fopen("conftest-mt", "w"); + if (!f) exit(1); + fprintf(f, "%d %d.%d\n", XmVersion, + XmVERSION, XmREVISION); + fclose(f); + exit(0); + }], + [mtv=`cat conftest-mt` + ac_cv_motif_version=`echo $mtv | sed 's/ .*//'` + ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`], + [ac_cv_motif_version=unknown + ac_cv_motif_version_string=unknown], + [ac_cv_motif_version=unknown + ac_cv_motif_version_string=unknown])]) + rm -f conftest-mt + motif_version=$ac_cv_motif_version + motif_version_string=$ac_cv_motif_version_string + +fi + + +# If this is Motif 2.x, and we have XPM, then link against XPM as well. +# The deal is, Motif 2.x requires XPM -- but it's a compilation option of +# the library whether to build the XPM code into libXm, or whether to rely +# on an external libXm. So the only way to tell whether XPM is a link-time +# requirement is to examine libXm.a, which is very difficult to do in an +# autoconf script. So... if it's Motif 2.x, we always link against XPM if +# the XPM lib exists (and this will be a no-op if libXm happens to already +# have the XPM code in it.) +# +motif_requires_xpm=no +if test "$have_motif" = yes ; then + AC_MSG_CHECKING(whether Motif requires XPM) + if test "$motif_version" -ge 2000; then + motif_requires_xpm=yes + AC_MSG_RESULT(maybe) + else + AC_MSG_RESULT(no) + fi +fi + + + # Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing # Extension". Why this extension isn't in -lXext with all the others, # I have no idea. @@ -1076,6 +1228,15 @@ elif test "$with_xpm" != no; then exit 1 fi +# See comment near $motif_requires_xpm, above. +# Need to do this here, after both Motif and XPM have been checked for. +# +if test "$have_motif" = yes -a "$have_xpm" = yes ; then + if test "$motif_requires_xpm" = yes ; then + TOOLKIT_LIBS="$TOOLKIT_LIBS $XPM_LIBS" + fi +fi + # check for the GL header # @@ -1185,7 +1346,7 @@ EOF # If it's MesaGL, check to see if it requires -lpthread. # have_pthread=no - mesa_requires_pthread=false + mesa_requires_pthread=no if test "$ac_have_mesa_gl" = yes; then AC_CHECK_LIB(pthread, pthread_create, [have_pthread=yes], [],) @@ -1205,6 +1366,27 @@ EOF AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)], [], $GL_LIBS -lX11 -lXext -lm) + + # Check whether the `xscreensaver' executable should link against GL. + # See comments in utils/visual-gl.c for why this is sometimes necessary. + # + AC_MSG_CHECKING(whether drastic GL measures must be taken) + case "$host" in + *-sgi*) + AC_MSG_RESULT([yes -- hello, SGI.]) + AC_DEFINE(DAEMON_USE_GL) + SAVER_GL_SRCS='$(UTILS_SRC)/visual-gl.c' + SAVER_GL_OBJS='$(UTILS_BIN)/visual-gl.o' + SAVER_GL_LIBS="$GL_LIBS" + ;; + *) + AC_MSG_RESULT([no -- non-SGI.]) + SAVER_GL_SRCS='' + SAVER_GL_OBJS='' + SAVER_GL_LIBS='' + ;; + esac + fi elif test "$with_gl" != no; then @@ -1377,12 +1559,25 @@ if test ! -n "$ac_cv_zippy_program"; then dir_up=`echo "$dir" | sed 's@/[^/]*$@@'` changequote([,]) - yow="yow -f $dir_up/etc/yow.lines" - if $dir/$yow >&- 2>&- ; then - ac_cv_zippy_program="$dir/$yow" + 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 - AC_MSG_RESULT(no) + # + # 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 fi fi @@ -1462,7 +1657,7 @@ if test "$enable_vt_locking" = yes; then ac_vt_lockswitch=$ac_cv_vt_lockswitch AC_MSG_RESULT($ac_vt_lockswitch) -elif test "$enable_locking" = no; then +elif test "$enable_vt_locking" = no; then true else echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking" @@ -1517,9 +1712,7 @@ if test "$enable_locking" = yes; then [ --with-pam Include support for PAM (Pluggable Authentication Modules) if possible (this is the default.) --without-pam Do not compile in support for PAM.], - [with_pam="$withval"; with_pam_req="$withval"],[with_pam=no]) -#### Leave PAM off by default for now, since it's buggy on Solaris -#### (and probably Linux, but it's so hard to tell...) + [with_pam="$withval"; with_pam_req="$withval"],[with_pam=yes]) HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM) @@ -1532,6 +1725,33 @@ if test "$enable_locking" = yes; then have_pam=yes AC_DEFINE(HAVE_PAM) PASSWD_LIBS="${PASSWD_LIBS} -lpam -ldl" + + + 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_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 + AC_MSG_RESULT(one argument) + elif test "$ac_pam_strerror_args" = 2 ; then + AC_DEFINE(PAM_STRERROR_TWO_ARGS) + AC_MSG_RESULT(two arguments) + else + AC_MSG_RESULT(unknown) + fi fi elif test "$with_pam" != no; then echo "error: must be yes or no: --with-pam=$with_pam" @@ -1712,6 +1932,94 @@ if test "$enable_locking" = yes; then fi +# for the "sonar" hack -- check how to ping. +# +AC_MSG_CHECKING(for struct icmp) +AC_CACHE_VAL(ac_cv_have_icmp, + [AC_TRY_COMPILE([#include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include ], + [struct icmp i; + struct sockaddr s; + struct sockaddr_in si; + struct ip ip; + i.icmp_type = ICMP_ECHO; + i.icmp_code = 0; + i.icmp_cksum = 0; + i.icmp_id = 0; + i.icmp_seq = 0; + si.sin_family = AF_INET; + ip.ip_hl = 0;], + [ac_cv_have_icmp=yes], + [ac_cv_have_icmp=no])]) +ac_have_icmp=$ac_cv_have_icmp +AC_MSG_RESULT($ac_cv_have_icmp) + +AC_MSG_CHECKING(for struct icmphdr) +AC_CACHE_VAL(ac_cv_have_icmphdr, + [AC_TRY_COMPILE([#include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include ], + [struct icmphdr i; + struct sockaddr s; + struct sockaddr_in si; + struct ip ip; + i.type = ICMP_ECHO; + i.code = 0; + i.cksum = 0; + i.un.echo.id = 0; + i.un.echo.sequence = 0; + si.sin_family = AF_INET; + ip.ip_hl = 0;], + [ac_cv_have_icmphdr=yes], + [ac_cv_have_icmphdr=no])]) +ac_have_icmphdr=$ac_cv_have_icmphdr +AC_MSG_RESULT($ac_cv_have_icmphdr) + +if test "$ac_have_icmp" = yes ; then + AC_DEFINE(HAVE_ICMP) +fi +if test "$ac_have_icmphdr" = yes ; then + AC_DEFINE(HAVE_ICMPHDR) +fi + + + +########################## end of tests. + + if test \! -z "$includedir" ; then INCLUDES="-I$includedir" fi @@ -1774,9 +2082,10 @@ fi tab=' ' if test "$have_gl" = yes; then GL_EXES='$(GL_EXES)' - GL_KLUDGE=${tab} + GL_MEN='$(GL_MEN)' + GL_KLUDGE="${tab} " else - GL_KLUDGE=' -'${tab} + GL_KLUDGE=" -${tab} " fi AC_SUBST(INCLUDES) @@ -1800,9 +2109,13 @@ AC_SUBST(PASSWD_SRCS) AC_SUBST(PASSWD_OBJS) AC_SUBST(XMU_SRCS) AC_SUBST(XMU_OBJS) +AC_SUBST(SAVER_GL_SRCS) +AC_SUBST(SAVER_GL_OBJS) +AC_SUBST(SAVER_GL_LIBS) AC_SUBST(LOCK_SRCS) AC_SUBST(LOCK_OBJS) AC_SUBST(GL_EXES) +AC_SUBST(GL_MEN) AC_SUBST(GL_KLUDGE) AC_SUBST(HACKDIR) AC_SUBST(APPDEFAULTS) @@ -1876,6 +2189,10 @@ if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then warn 'The XSHM extension was requested, but was not found.' fi +if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then + warn 'The DOUBLE-BUFFER extension was requested, but was not found.' +fi + if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.' fi @@ -1884,6 +2201,10 @@ 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_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then + warn 'The XF86VMODE extension was requested, but was not found.' +fi + if test "$have_motif" = no -a "$have_athena" = no ; then warnL "Neither Motif nor Athena widgets seem to be available;" warn2 "the \`xscreensaver-demo' program requires one or the" @@ -1928,7 +2249,7 @@ fi if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then - preferred_mesagl=2.7 + preferred_mesagl=3.0 if test "$ac_mesagl_version" = unknown; then warnL "Unable to determine the MesaGL version number!" @@ -1975,8 +2296,8 @@ if test "$have_gl" = no ; then warn2 're-running configure. (Remember to delete the' warn2 "config.cache file first.) If your vendor doesn't ship" warn2 'their own implementation of OpenGL, you can get a free' - warn2 'version at .' - warn2 'For general OpenGL info, see .' + warn2 'version at . For general OpenGL' + warn2 'info, see .' fi @@ -2039,7 +2360,60 @@ eval HACKDIR=${HACKDIR} bindir=`echo "${bindir}" | sed 's@/$@@;s@//*@/@g'` HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'` + +# Sanity check the subdir +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. + 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.]) + fi +done + + +do_dir_warning=no + +# Now let's see if there's a previous RPM version already installed. Blargh! + +# M4 sucks!! +changequote(X,Y) +rpmv=`(rpm -qv xscreensaver) 2>&- | \ + sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'` +changequote([,]) + +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'` + + 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 "" + + 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 + + do_dir_warning=yes +fi + + if test "${bindir}" = "${HACKDIR}" ; then + do_dir_warning=yes +fi + +if test "$do_dir_warning" = yes; then echo "" echo "$warnsep" echo "" @@ -2047,7 +2421,7 @@ if test "${bindir}" = "${HACKDIR}" ; then echo ' "xscreensaver-demo", and "xscreensaver-command" executables' echo " will be installed in ${bindir}." echo "" - echo " The various graphics demos (80+ different executables) will" + echo " The various graphics demos (90+ different executables) will" echo " also be installed in ${HACKDIR}." echo "" echo " If you would prefer the demos to be installed elsewhere"