X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=configure.in;h=c6688070bf6646bba305ae7d07de19987aad6c09;hb=93f25dc6827112d98b8b855ea85c8f5eb8123086;hp=322862f6dd55af18720a4a99551ce9e7830be6d3;hpb=72c1f4c1dc6ab07fe121a327ff1c30bf51ef74c1;p=xscreensaver diff --git a/configure.in b/configure.in index 322862f6..c6688070 100644 --- a/configure.in +++ b/configure.in @@ -193,6 +193,26 @@ AC_DEFUN(AC_PROG_PERL, ]) +############################################################################### +# +# Function to demand "bc". Losers. +# +############################################################################### + +AC_DEFUN(AC_DEMAND_BC, + [ac_bc_result=`echo 6+9 | bc 2>/dev/null` + AC_MSG_CHECKING([for bc]) + if test "$ac_bc_result" = "15" ; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + echo '' + AC_MSG_ERROR([Your system doesn't have \"bc\", which has been a standard + part of Unix since the 1970s. Come back when your vendor + has grown a clue.]) + fi + ]) + ############################################################################### # # Functions to check how to do ICMP PING requests. @@ -657,6 +677,7 @@ AC_PROG_CC_ANSI AC_PROG_CPP AC_C_CONST AC_C_INLINE +AC_DEMAND_BC # stuff for Makefiles AC_PROG_INSTALL @@ -717,8 +738,6 @@ else HACK_LIBS="-lXmu $HACK_LIBS" MOTIF_LIBS="-lXmu $MOTIF_LIBS" GTK_LIBS="-lXmu $GTK_LIBS" - ATHENA_LIBS="-lXmu $ATHENA_LIBS" - ATHENA3D_LIBS="-lXmu $ATHENA3D_LIBS" AC_DEFINE(HAVE_XMU) fi @@ -1224,6 +1243,7 @@ fi ############################################################################### have_kerberos=no +have_kerberos5=no with_kerberos_req=unspecified AC_ARG_WITH(kerberos, @@ -1233,21 +1253,41 @@ AC_ARG_WITH(kerberos, HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos) if test "$enable_locking" = yes -a "$with_kerberos" = yes; then - AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos, + AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos, [AC_TRY_X_COMPILE([#include ],, [ac_cv_kerberos=yes], [ac_cv_kerberos=no])]) + AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5, + [AC_TRY_X_COMPILE([#include ],, + [ac_cv_kerberos5=yes], + [ac_cv_kerberos5=no])]) + if test "$ac_cv_kerberos" = yes ; then have_kerberos=yes AC_DEFINE(HAVE_KERBEROS) + fi + + if test "$ac_cv_kerberos5" = yes ; then + have_kerberos=yes + have_kerberos5=yes + AC_DEFINE(HAVE_KERBEROS) + AC_DEFINE(HAVE_KERBEROS5) + 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" + elif test "$have_kerberos" = yes ; then # from Tim Showalter PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes" + fi + + if test "$have_kerberos" = yes ; then AC_CHECK_FUNC(res_search,, AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv", AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos]) )) - fi fi @@ -1498,9 +1538,14 @@ if test "$with_motif" = yes; then fi +if test "$have_motif" = yes; then + AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)]) +fi + + ############################################################################### # -# Check for -lgtk. +# Check for -lgtk (and Gnome stuff) # ############################################################################### @@ -1528,6 +1573,31 @@ 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) + +if test "$with_gnome" != yes -a "$with_gnome" != no ; then + echo "error: must be yes or no: --with-gnome=$with_gnome" + exit 1 +fi + + jurassic_gtk=no if test "$with_gtk" = yes; then have_gtk=no @@ -1540,15 +1610,29 @@ if test "$with_gtk" = yes; then if test ! -z "$gtk_dir"; then # canonicalize slashes. gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gtk_dir:$gtk_dir:$gtk_path" + 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" fi - AC_PATH_PROGS(glib_config, glib-config,, $gtk_path) - AC_PATH_PROGS(gtk_config, gtk-config,, $gtk_path) + AC_PATH_PROGS(glib_config, glib-config,, $gtk_path) + AC_PATH_PROGS(gtk_config, gtk-config,, $gtk_path) + + if test "$with_gnome" = yes; then + AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path) + fi 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 + fi fi + if test "$have_gtk" = yes; then AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string, [ac_cv_gtk_version_string=`$glib_config --version`]) @@ -1566,75 +1650,81 @@ if test "$with_gtk" = yes; then if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002 then have_gtk=no + have_gnome=no jurassic_gtk=yes fi fi + if test "$have_gtk" = yes; then AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags, [ac_cv_gtk_config_cflags=`$gtk_config --cflags`]) AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs, [ac_cv_gtk_config_libs=`$gtk_config --libs`]) - INCLUDES="$INCLUDES $ac_cv_gtk_config_cflags" - GTK_LIBS="$GTK_LIBS $ac_cv_gtk_config_libs" - AC_DEFINE(HAVE_GTK) fi -fi - - -############################################################################### -# -# Check for -lXaw and -lXaw3d. -# -############################################################################### - -have_athena=no -have_athena3d=no -with_athena_req=unspecified -AC_ARG_WITH(athena, -[ --with-athena Use the Athena toolkit for the user interface.], - [with_athena="$withval"; with_athena_req="$withval"],[with_athena=yes]) - -HANDLE_X_PATH_ARG(with_athena, --with-athena, Athena) - + ac_gtk_config_cflags=$ac_cv_gtk_config_cflags + ac_gtk_config_libs=$ac_cv_gtk_config_libs -if test "$with_athena" != yes -a "$with_athena" != no ; then - echo "error: must be yes or no: --with-athena=$with_athena" - exit 1 -fi + # Check for Gnome Capplet support. + # + if test "$have_gnome" = yes -a "$have_gtk" = yes; then + gnome_config_libs="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 -q Unknown ) ; 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 -q Unknown ) ; 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 -if test "$with_athena" = yes; then - have_athena=no - AC_CHECK_X_HEADER(X11/Xaw/Dialog.h, [have_athena=yes]) - if test "$have_athena" = yes; then - AC_CHECK_X_LIB(Xaw3d, Xaw3dComputeTopShadowRGB, - [have_athena=yes; have_athena3d=yes], [true], - -lXt -lXmu -lXext -lX11) + GNOME_DATADIR="" + if test "$have_gnome" = yes -a "$have_gtk" = yes; then + GNOME_DATADIR=`$gnome_config --datadir` fi -fi -if test "$have_athena" = yes; then - AC_DEFINE(HAVE_ATHENA) - ATHENA_LIBS="-lXaw $ATHENA_LIBS" -fi -if test "$have_athena3d" = yes; then - ATHENA3D_LIBS="-lXaw3d $ATHENA3D_LIBS" -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) + fi -# If we have Athena, check whether it's a version that includes -# XawViewportSetCoordinates in Viewport.h (R3 (or R4?) don't.) -if test "$have_athena" = yes ; then - AC_CACHE_CHECK([for XawViewportSetCoordinates in Viewport.h], - ac_cv_have_XawViewportSetCoordinates, - [ac_cv_have_XawViewportSetCoordinates=no - AC_EGREP_X_HEADER(XawViewportSetCoordinates, - X11/Xaw/Viewport.h, - ac_cv_have_XawViewportSetCoordinates=yes)]) - if test "$ac_cv_have_XawViewportSetCoordinates" = yes ; then - AC_DEFINE(HAVE_XawViewportSetCoordinates) + if test "$have_gtk" = yes; then + INCLUDES="$INCLUDES $ac_gtk_config_cflags" + GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs" + AC_DEFINE(HAVE_GTK) fi + fi @@ -1789,6 +1879,7 @@ fi have_gl=no ac_have_mesa_gl=no with_gl_req=unspecified +gl_halfassed=no AC_ARG_WITH(gl,[ Graphics options: @@ -1856,6 +1947,7 @@ if test "$with_gl" = yes; then # we have headers, but no libs -- bail. have_gl=no ac_have_mesa_gl=no + gl_halfassed=yes else # linking works -- we can build the GL hacks. AC_DEFINE(HAVE_GL) @@ -1962,6 +2054,7 @@ fi have_gle=no with_gle_req=unspecified +gle_halfassed=no AC_ARG_WITH(gle, [ --with-gle Build those demos which depend on GLE (the OpenGL "extrusion" library.)], @@ -1973,29 +2066,58 @@ GLE_LIBS="" if test "$with_gle" = yes; then - AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no) - if test "$have_gle" = yes ; then - AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no) + AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no) + if test "$have_gle3" = yes ; then + have_gle=yes; + else + AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no) + if test "$have_gle" = yes ; then + AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no) + fi fi -# /usr/local/lib/GL/libgle.a -# /usr/local/lib/GL/libmatrix.a - if test "$have_gle" = yes ; then have_gle=no + gle_halfassed=yes AC_CHECK_X_LIB(gle, gleCreateGC, - [have_gle=yes; GLE_LIBS="-lgle"], + [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"], [], $GL_LIBS -lX11 -lXext -lm) fi if test "$have_gle" = yes ; then have_gle=no - AC_CHECK_X_LIB(matrix, uview_direction_d, - [have_gle=yes; GLE_LIBS="$GLE_LIBS -lmatrix"], - [], $GL_LIBS -lX11 -lXext -lm) + gle_halfassed=yes + + # sometimes the libmatrix stuff is included in libgle. look there first. +# +# I don't get it. For some reason, this test passes on SGI, as if +# uview_direction_d() was in libgle -- but it's not, it's in libmatrix. +# Yet the link is succeeding. Why??? +# +# AC_CHECK_X_LIB(gle, uview_direction_d, +# [have_gle=yes; gle_halfassed=no], +# [], $GL_LIBS -lX11 -lXext -lm) + + # As of GLE 3 this is in libgle, and has changed name to uview_direction! + # *sigh* + if test "$have_gle3" = yes ; then + AC_CHECK_X_LIB(gle, uview_direction, + [have_gle=yes; gle_halfassed=no], + [], $GL_LIBS -lX11 -lXext -lm) + fi + # if it wasn't in libgle, then look in libmatrix. + if test "$have_gle" = no ; then + AC_CHECK_X_LIB(matrix, uview_direction_d, + [have_gle=yes; gle_halfassed=no; + GLE_LIBS="$GLE_LIBS -lmatrix"], + [], $GL_LIBS -lX11 -lXext -lm) + fi fi if test "$have_gle" = yes ; then AC_DEFINE(HAVE_GLE) + if test "$have_gle3" = yes ; then + AC_DEFINE(HAVE_GLE3) + fi fi elif test "$with_gle" != no; then @@ -2079,10 +2201,12 @@ if test "$with_xshm" = yes; then # case "$host" in *-aix*) - have_xshm=no - AC_CHECK_X_LIB(XextSam, XShmQueryExtension, - [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"], - [true], -lX11 -lXext -lm) + if [ `uname -v` -eq 3 ]; then + have_xshm=no + AC_CHECK_X_LIB(XextSam, XShmQueryExtension, + [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"], + [true], -lX11 -lXext -lm) + fi ;; esac @@ -2364,16 +2488,8 @@ if test \! -z "$libdir" ; then fi -DEMO_MAN="xscreensaver-demo-old.man" +PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm ALL_DEMO_PROGRAMS= -if test "$have_athena" = yes; then - PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xaw - ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS" -fi -if test "$have_athena3d" = yes; then - PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xaw3d - ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS" -fi if test "$have_motif" = yes; then PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS" @@ -2381,7 +2497,6 @@ fi if test "$have_gtk" = yes; then PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS" - DEMO_MAN="xscreensaver-demo.man" fi @@ -2442,12 +2557,9 @@ AC_SUBST(INCLUDES) AC_SUBST(PREFERRED_DEMO_PROGRAM) AC_SUBST(ALL_DEMO_PROGRAMS) -AC_SUBST(DEMO_MAN) AC_SUBST(SAVER_LIBS) AC_SUBST(MOTIF_LIBS) AC_SUBST(GTK_LIBS) -AC_SUBST(ATHENA_LIBS) -AC_SUBST(ATHENA3D_LIBS) AC_SUBST(HACK_LIBS) AC_SUBST(XPM_LIBS) AC_SUBST(GL_LIBS) @@ -2476,6 +2588,7 @@ AC_SUBST(GLE_EXES) AC_SUBST(GLE_MEN) AC_SUBST(GLE_KLUDGE) AC_SUBST(HACKDIR) +AC_SUBST(GNOME_DATADIR) APPDEFAULTS=$ac_x_app_defaults AC_SUBST(APPDEFAULTS) @@ -2582,17 +2695,13 @@ if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then fi -if test "$have_motif" = no -a "$have_gtk" = no -a "$have_athena" = no ; then - warnL "None of Motif, Gtk, or Athena widgets seem to be available;" +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." elif test "$with_motif_req" = yes -a "$have_motif" = no ; then warnL "Use of Motif was requested, but it wasn't found;" - if test "$have_gtk" = yes; then - warn2 "Gtk will be used instead." - else - warn2 "Athena will be used instead." - fi + warn2 "Gtk will be used instead." elif test "$jurassic_gtk" = yes ; then @@ -2607,29 +2716,18 @@ elif test "$jurassic_gtk" = yes ; then warnL "Gtk was found on this system, but it is version $v;" fi - if test "$have_motif" = yes; then - which="Motif" - else - which="Athena" - fi - - warn2 "Gtk $pref_gtk or newer is required. $which will be used instead." + warn2 "Gtk $pref_gtk or newer is required. Motif will be used instead." elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then warnL "Use of Gtk was requested, but it wasn't found;" - if test "$have_motif" = yes; then - warn2 "Motif will be used instead." - else - warn2 "Athena will be used instead." - fi + warn2 "Motif will be used instead." -elif test "$with_athena_req" = yes -a "$have_athena" = no ; then - warnL "Use of Athena was requested, but it wasn't found;" - if test "$have_gtk" = yes; then - warn2 "Gtk will be used instead." - else - warn2 "Motif will be used instead." - fi +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.' fi @@ -2651,15 +2749,6 @@ if test "$have_motif" = yes -a "$have_lesstif" = yes ; then fi fi -if test "$have_athena" = yes -a "$have_motif" = no -a "$have_gtk" = no; then - warnL "Athena widgets are being used instead of Motif or Gtk." - warn2 "The \`xscreensaver-demo' program looks much better" - warn2 "with Motif or Gtk. Wouldn't you rather be using Motif?" - warn2 "Motif is shipped by every commercial Unix vendor," - warn2 "and there is a free implementation available as" - warn2 "well: see . Gtk is shipped" - warn2 "with most Linux and BSD distributions." -fi if test "$have_xpm" = no ; then @@ -2695,7 +2784,6 @@ if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then fi fi - if test "$have_gl" = no ; then if test "$with_gl_req" = yes ; then warnL 'Use of GL was requested, but it was not found.' @@ -2705,6 +2793,14 @@ if test "$have_gl" = no ; then noteL 'The OpenGL 3D library was not found.' fi + if test "$gl_halfassed" = yes ; then + echo '' + warn2 'More specifically, we found the headers, but not the' + warn2 'libraries; so either GL is half-installed on this' + warn2 "system, or something else went wrong. The \`config.log'" + warn2 'file might contain some clues.' + fi + echo '' warn2 'Those demos which use 3D will not be built or installed.' warn2 'You might want to consider installing OpenGL and' @@ -2719,19 +2815,32 @@ fi if test "$have_gl" = yes -a "$have_gle" = no ; then if test "$with_gle_req" = yes ; then - warnL 'Use of GLE was requested, but it was not found.' + noteL 'Use of the GLE (GL Extrusion) library was requested, but' + warn2 'it was not found (though the OpenGL library was found, and' + warn2 'is being used.)' elif test "$with_gle_req" = no ; then - noteL 'The GLE (GL Extrusion) library is not being used.' + noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)' + warn2 'library is not.' else - noteL 'The GLE (GL Extrusion) library was not found.' + noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)' + warn2 'was not.' + fi + + if test "$gle_halfassed" = yes ; then + echo '' + warn2 'More specifically, we found the headers, but not the' + warn2 'libraries; so either GLE 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 OpenGL (3D) demos will not be built or installed.' - warn2 'You might want to consider installing GLE and re-running' - warn2 'configure. (Remember to delete the config.cache file first.)' - warn2 'You can find the GLE library at .' - warn2 'For general OpenGL info, see .' + 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 .' fi @@ -2804,7 +2913,7 @@ do_dir_warning=no # 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/'` + sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/'` changequote([,]) if test \! -z "$rpmv" ; then @@ -2835,15 +2944,15 @@ fi # Warn about egregious GNOME bogosity. # -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 +#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 if test "${bindir}" = "${HACKDIR}" ; then