X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=configure.in;h=740cd97f27eafe5969b79babbcf5bb12b607ee2d;hp=57529eb7cb1da1af5bf15217308be81a962e70bb;hb=ffd8c0873576a9e3065696a624dce6b766b77062;hpb=0316d74da7982288abddd34e7a62698eb7f79965 diff --git a/configure.in b/configure.in index 57529eb7..740cd97f 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,7 @@ -# configure.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski. +# configure.in --- xscreensaver, Copyright (c) 1997-2004 Jamie Zawinski. # +AC_PREREQ(2.52) AC_INIT(driver/subprocs.c) AC_CONFIG_HEADER(config.h) @@ -23,7 +24,6 @@ for d in driver utils hacks hacks/glx ; do fi done - ############################################################################### # # Function to figure out how to run the compiler. @@ -46,7 +46,7 @@ AC_DEFUN(AC_PROG_CC_ANSI, ;; *-dec-* ) - AC_MSG_RESULT(DEC: adding -std1) + AC_MSG_RESULT(DEC: adding -std1 -ieee) CC="$CC -std1" ;; @@ -56,6 +56,8 @@ AC_DEFUN(AC_PROG_CC_ANSI, 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,9 +67,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" - AC_MSG_RESULT(Disabling C++ comments in ANSI C code.) - CC="$CC -Wp,-lang-c89" + CC="$CC -pedantic -Wall -Wstrict-prototypes -Wnested-externs" + OBJCC="$OBJCC -Wall" + # supposedly gcc 3.4 will have "-Wdeclaration-after-statement" + # and then perhaps we can do without -pedantic? else case "$host" in *-irix5* |*-irix6.[0-3]* ) @@ -85,6 +88,104 @@ 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!) +# +# 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, + [if test -n "$GCC"; then + AC_CACHE_CHECK([whether gcc accepts -std], + ac_cv_gcc_accepts_std, + [if ( ( gcc -E -std=c89 - /dev/null ) 2>&1 | \ + grep unrecognized >/dev/null ); then + ac_cv_gcc_accepts_std=no + else + ac_cv_gcc_accepts_std=yes + fi]) + ac_gcc_accepts_std="$ac_cv_gcc_accepts_std" + fi +]) + +AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE, + [if test -n "$GCC"; then + AC_GCC_ACCEPTS_STD + AC_MSG_RESULT(Disabling C++ comments in ANSI C code.) + # + # The reason that // comments are banned from xscreensaver is that gcc is + # basically the only compiler in the world that supports them in C code. + # All other vendors support them only in their C++ compilers, not in their + # ANSI C compilers. This means that it's a portability problem: every time + # these comments have snuck into the xscreensaver source code, I've gotten + # complaints about it the next day. So we turn off support for them in gcc + # as well to prevent them from accidentially slipping in. + # + if test "$ac_gcc_accepts_std" = yes ; then + # + # -std=c89 defines __STRICT_ANSI__, which we don't want. + # (That appears to be the only additional preprocessor symbol + # it defines, in addition to the syntax changes it makes.) + # + # -std=gnu89 is no good, because // comments were a GNU extension + # before they were in the ANSI C 99 spec... (gcc 2.96 permits // + # with -std=gnu89 but not with -std=c89.) + # + CC="$CC -std=c89 -U__STRICT_ANSI__" + else + # The old way: + CC="$CC -Wp,-lang-c89" + fi + fi +]) + + +############################################################################### +# +# Function to figure out how to turn off Objective C on MacOS X. +# (We have to do this to work around an Apple-specific gcc bug.) +# +############################################################################### + +AC_DEFUN(AC_GCC_ACCEPTS_NO_CPP_PRECOMP, + [if test -n "$GCC"; then + AC_CACHE_CHECK([whether gcc accepts -no-cpp-precomp], + ac_cv_gcc_accepts_no_cpp_precomp, + [if ( ( gcc -E -no-cpp-precomp - /dev/null ) 2>&1 | \ + grep unrecognized >/dev/null ); then + ac_cv_gcc_accepts_no_cpp_precomp=no + else + ac_cv_gcc_accepts_no_cpp_precomp=yes + fi]) + ac_gcc_accepts_no_cpp_precomp="$ac_cv_gcc_accepts_no_cpp_precomp" + fi +]) + +AC_DEFUN(AC_NO_OBJECTIVE_C, + [if test -n "$GCC"; then + AC_GCC_ACCEPTS_NO_CPP_PRECOMP + if test "$ac_gcc_accepts_no_cpp_precomp" = yes ; then + AC_MSG_RESULT(Disabling Objective C extensions in ANSI C code.) + CC="$CC -no-cpp-precomp" + fi + fi +]) + + ############################################################################### # # Function to figure out how to create directory trees. @@ -92,33 +193,33 @@ AC_DEFUN(AC_PROG_CC_ANSI, ############################################################################### 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 ]) @@ -250,7 +351,12 @@ AC_DEFUN(AC_CHECK_ICMP, i.icmp_id = 0; i.icmp_seq = 0; si.sin_family = AF_INET; - ip.ip_hl = 0;], + #if defined(__DECC) || defined(_IP_VHL) + ip.ip_vhl = 0; + #else + ip.ip_hl = 0; + #endif + ], [ac_cv_have_icmp=yes], [ac_cv_have_icmp=no])]) if test "$ac_cv_have_icmp" = yes ; then @@ -284,7 +390,7 @@ AC_DEFUN(AC_CHECK_ICMPHDR, struct ip ip; i.type = ICMP_ECHO; i.code = 0; - i.cksum = 0; + i.checksum = 0; i.un.echo.id = 0; i.un.echo.sequence = 0; si.sin_family = AF_INET; @@ -308,17 +414,17 @@ 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]) @@ -456,15 +562,15 @@ AC_DEFUN(AC_X_RANDOM_PATHS, # for version in X11R6 X11R5 X11R4 ; do # if either pair of directories exists... - if test -d /usr/lib/$version || test -d /usr/contrib/$version/lib + if test -d /usr/include/$version || test -d /usr/contrib/$version/include then # if contrib exists, use it... - if test -d /usr/contrib/$version/lib ; then + if test -d /usr/contrib/$version/include ; then X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include" X_LIBS="$X_LIBS -L/usr/contrib/$version/lib" fi # if the "standard" one exists, use it. - if test -d /usr/lib/$version ; then + if test -d /usr/include/$version ; then X_CFLAGS="$X_CFLAGS -I/usr/include/$version" X_LIBS="$X_LIBS -L/usr/lib/$version" fi @@ -476,21 +582,29 @@ AC_DEFUN(AC_X_RANDOM_PATHS, # Now find Motif. Thanks for not making xmkmf find this by # default, you losers. # - if test -d /usr/lib/Motif1.2 ; then + if test -d /usr/include/Motif2.1 ; then + X_CFLAGS="$X_CFLAGS -I/usr/include/Motif2.1" + X_LIBS="$X_LIBS -L/usr/lib/Motif2.1" + elif test -d /usr/include/Motif1.2 ; then X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2" X_LIBS="$X_LIBS -L/usr/lib/Motif1.2" - elif test -d /usr/lib/Motif1.1 ; then + elif test -d /usr/include/Motif1.1 ; then X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1" X_LIBS="$X_LIBS -L/usr/lib/Motif1.1" fi # Now let's check for the pseudo-standard locations for OpenGL and XPM. # - if test -d /opt/Mesa/lib ; then + if test -d /opt/graphics/OpenGL/include ; then + # HP-UX 10.20 puts it here + X_CFLAGS="-I/opt/graphics/OpenGL/include $X_CFLAGS" + X_LIBS="-L/opt/graphics/OpenGL/lib $X_LIBS" + elif test -d /opt/Mesa/lib ; then X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS" X_LIBS="-L/opt/Mesa/lib $X_LIBS" fi + if test -d /opt/xpm/lib/X11 ; then X_CFLAGS="-I/opt/xpm/include $X_CFLAGS" X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS" @@ -517,10 +631,20 @@ 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]) @@ -541,7 +665,7 @@ AC_DEFUN(AC_CHECK_X_HEADER, [ CPPFLAGS="$CPPFLAGS -I$includedir" fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" - AC_CHECK_HEADER([$1], [$2]) + AC_CHECK_HEADER([$1],[$2],[$3],[$4]) CPPFLAGS="$ac_save_CPPFLAGS"]) # Like AC_EGREP_HEADER, but it uses the already-computed -I directories. @@ -674,9 +798,12 @@ AC_DEFUN(HANDLE_X_PATH_ARG, [ # random compiler setup AC_CANONICAL_HOST AC_PROG_CC_ANSI +AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE +AC_NO_OBJECTIVE_C AC_PROG_CPP AC_C_CONST AC_C_INLINE +AC_EXEEXT AC_DEMAND_BC # stuff for Makefiles @@ -684,6 +811,13 @@ AC_PROG_INSTALL AC_PROG_INSTALL_DIRS AC_PROG_MAKE_SET +# By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'. +# That's wrong: it should be set to '${INSTALL}', so that one can +# implement the "install-strip" target properly (strip executables, +# but do not try to strip scripts.) +# +INSTALL_SCRIPT='${INSTALL}' + # random libc stuff AC_HEADER_STDC AC_CHECK_HEADERS(unistd.h) @@ -695,9 +829,8 @@ 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_CHECK_FUNCS(sigaction syslog realpath) +AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk) +AC_CHECK_FUNCS(sigaction syslog realpath setrlimit) AC_CHECK_ICMP AC_CHECK_ICMPHDR AC_CHECK_HEADERS(crypt.h sys/select.h) @@ -705,19 +838,45 @@ AC_PROG_PERL if test -z "$PERL" ; then # don't let it be blank... - PERL=/usr/local/bin/perl5 + PERL=/usr/bin/perl 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") +AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE") +AC_SUBST(GETTEXT_PACKAGE) + +ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW" +AM_GLIB_GNU_GETTEXT +MKINSTALLDIRS="$INSTALL_DIRS" ############################################################################### @@ -727,17 +886,18 @@ 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' + XMU_LIBS='' else XMU_SRCS='' XMU_OBJS='' - SAVER_LIBS="-lXmu $SAVER_LIBS" - HACK_LIBS="-lXmu $HACK_LIBS" - MOTIF_LIBS="-lXmu $MOTIF_LIBS" - GTK_LIBS="-lXmu $GTK_LIBS" + XMU_LIBS='-lXmu' AC_DEFINE(HAVE_XMU) fi @@ -787,43 +947,87 @@ fi ############################################################################### # -# Handle the --enable-subdir option +# Handle the --with-hackdir option # ############################################################################### -AC_ARG_ENABLE(subdir,[ +have_hackdir=yes +with_hackdir_req=unspecified +AC_ARG_WITH(hackdir,[ 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 --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.) + --with-hackdir=DIR Where to install the hundreds of demo executables. + Default: `PREFIX/lib/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='${exec_prefix}/lib/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 + if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then # absolute path - HACKDIR=$enable_subdir + HACKDIR=$with_hackdir else # relative path - HACKDIR='${bindir}/'$enable_subdir + HACKDIR="\${exec_prefix}$with_hackdir" fi fi # canonicalize slashes. HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'` +# This option used to be called --enable-subdir; make sure that is no longer +# used, since configure brain-damagedly ignores unknown --enable options. + +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 + + +############################################################################### +# +# Handle the --with-configdir option +# +############################################################################### + +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: `GNOMEPREFIX/control-center/screensavers/' + or `PREFIX/lib/xscreensaver/config/', depending on + whether GNOME is available. +], + [with_configdir="$withval"; with_configdir_req="$withval"], + [with_configdir=yes]) + +if test x"$with_configdir" = xyes; then + # filled in later... + HACK_CONF_DIR='' +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 + + + ############################################################################### # @@ -835,7 +1039,7 @@ 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 +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. @@ -855,7 +1059,8 @@ 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)]) + 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" @@ -878,7 +1083,8 @@ AC_ARG_WITH(mit-ext, HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER) if test "$with_mit" = yes; then - AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes]) + AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes],, + [#include ]) # Now check to see if it's really in the library; XF86Free-3.3 ships # scrnsaver.h, but doesn't include the code in libXext.a, the idiots! @@ -933,7 +1139,8 @@ 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)]) + 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 @@ -957,7 +1164,8 @@ 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]) + 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 @@ -995,16 +1203,26 @@ 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 -lXdpms + # if that succeeded, then check for the DPMS code in the libraries if test "$have_dpms" = yes; then + + # first look in -lXext (this is where it is with XFree86 4.0) have_dpms=no - AC_CHECK_X_LIB(Xdpms, DPMSInfo, - [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [true], - -lXext -lX11) + AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11) + + # if that failed, look in -lXdpms (this is where it was in XFree86 3.x) + if test "$have_dpms" = no; then + AC_CHECK_X_LIB(Xdpms, DPMSInfo, + [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true], + -lXext -lX11) + fi fi + # if that succeeded, then we've really got it. if test "$have_dpms" = yes; then AC_DEFINE(HAVE_DPMS_EXTENSION) @@ -1018,7 +1236,54 @@ fi ############################################################################### # -# Check for the XF86VMODE server extension. +# 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; SAVER_LIBS="$SAVER_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 XF86VMODE server extension (for virtual screens.) # ############################################################################### @@ -1031,16 +1296,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 @@ -1055,15 +1325,156 @@ elif test "$with_xf86vmode" != no; then fi +############################################################################### +# +# Check for the XF86VMODE server extension (for gamma fading.) +# +############################################################################### + +have_xf86gamma=no +have_xf86gamma_ramp=no +with_xf86gamma_req=unspecified +AC_ARG_WITH(xf86gamma-ext, +[ --with-xf86gamma-ext Include support for XFree86 gamma fading.], + [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"], + [with_xf86gamma=yes]) + +HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma) + +if test "$with_xf86gamma" = yes; then + + # first check for xf86vmode.h, if we haven't already + if test "$have_xf86vmode" = yes; then + have_xf86gamma=yes + else + AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],, + [#include ]) + fi + + # if that succeeded, then check for the -lXxf86vm + if test "$have_xf86gamma" = yes; then + have_xf86gamma=no + AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma, + [have_xf86gamma=yes], + [true], -lXext -lX11) + fi + + # check for the Ramp versions of the functions too. + if test "$have_xf86gamma" = yes; then + have_xf86gamma_ramp=no + AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp, + [have_xf86gamma_ramp=yes], + [true], -lXext -lX11) + fi + + # if those tests succeeded, then we've really got the functions. + if test "$have_xf86gamma" = yes; then + AC_DEFINE(HAVE_XF86VMODE_GAMMA) + fi + + if test "$have_xf86gamma_ramp" = yes; then + AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP) + fi + + # pull in the lib, if we haven't already + if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then + SAVER_LIBS="$SAVER_LIBS -lXxf86vm" + fi + +elif test "$with_xf86gamma" != no; then + echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode" + exit 1 +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 Randr.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) + 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)]) ############################################################################### @@ -1111,8 +1522,7 @@ AC_ARG_ENABLE(locking,[ Screen locking options: --enable-locking Compile in support for locking the display. - --disable-locking Do not allow locking at all. -], + --disable-locking Do not allow locking at all.], [enable_locking="$enableval"],[enable_locking=yes]) if test "$enable_locking" = yes; then true @@ -1123,6 +1533,15 @@ else exit 1 fi +# We can't lock on MacOS X, so don't even bother compiling in support for it. +# +if test "$ac_macosx" = yes; then + if test "$enable_locking" = yes; then + AC_MSG_RESULT(locking disabled: it doesn't work on MacOS X) + enable_locking=no + AC_DEFINE(NO_LOCKING) + fi +fi ############################################################################### @@ -1165,7 +1584,6 @@ fi #fi - ############################################################################### # # Check for PAM. @@ -1207,6 +1625,13 @@ if test "$enable_locking" = yes -a "$with_pam" = yes; then # 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]) + if test "$have_timedwait" = no ; then + AC_CHECK_LIB(rt, 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 @@ -1268,19 +1693,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 @@ -1508,6 +1957,44 @@ elif test "$have_shadow" = yes ; then fi +############################################################################### +# +# 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_passwd_helper=no +with_passwd_helper_req=unspecified + +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 "$enable_locking" = no ; then + with_passwd_helper_req=no + with_passwd_helper=no +fi + +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 -lXm. @@ -1519,8 +2006,9 @@ 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]) + --with-motif Use the Motif toolkit for the user interface + (not recommended.)], + [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no]) HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif) @@ -1534,12 +2022,18 @@ if test "$with_motif" = yes; then AC_CHECK_X_HEADER(Xm/Xm.h, [have_motif=yes AC_DEFINE(HAVE_MOTIF) - MOTIF_LIBS="$MOTIF_LIBS -lXm"]) + 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)]) + AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],, + [#include + #include + #include ]) fi @@ -1550,6 +2044,7 @@ fi ############################################################################### have_gtk=no +have_gtk2=no with_gtk_req=unspecified AC_ARG_WITH(gtk, [ --with-gtk Use the Gtk toolkit for the user interface.], @@ -1576,7 +2071,9 @@ fi have_gnome=no with_gnome_req=unspecified AC_ARG_WITH(gnome, -[ --with-gnome Include support for the Gnome Control Center.], +[ --with-gnome Include support for the Gnome 1.x Control Center. + (This option is not needed with GTK 2.x / Gnome 2.x.) +], [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes]) # if --with-gnome=/directory/ was specified, remember that directory so that @@ -1597,132 +2094,461 @@ if test "$with_gnome" != yes -a "$with_gnome" != no ; then exit 1 fi +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 +} + jurassic_gtk=no +gtk2_halfassed=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. + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for glib-config, gtk-config, and gnome-config. # gtk_path="$PATH" if test ! -z "$gtk_dir"; then # canonicalize slashes. - gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gtk_dir:$gtk_path" + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + gtk_path="$foo:$gtk_path" fi - if test ! -z "gnome_dir"; then + if test ! -z "$gnome_dir"; then # canonicalize slashes. - gnome_dir=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gnome_dir:$gtk_path" + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + gtk_path="$foo:$gtk_path" fi - AC_PATH_PROGS(glib_config, glib-config,, $gtk_path) - AC_PATH_PROGS(gtk_config, gtk-config,, $gtk_path) + AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path) - if test "$with_gnome" = yes; then - AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path) - fi + if test -n "$pkg_config" ; then + # + # the new way... + # run 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 + } - 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 + AC_MSG_RESULT(checking for GTK 2.x with pkg-config based tests...) - 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`]) - 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 + 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 0.1 + have_gtk="$ok" + + if test "$have_gtk" = yes; then + have_gtk2=yes + AC_DEFINE(HAVE_GTK2) + else + if test -n "$ac_gtk_version_string" ; then + gtk2_halfassed="$ac_gtk_version_string" + gtk2_halfassed_lib="$req" + fi 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`]) - fi - ac_gtk_config_cflags=$ac_cv_gtk_config_cflags - ac_gtk_config_libs=$ac_cv_gtk_config_libs + if test "$have_gtk" = no; then + # + # we don't have GTK 2. Let's look for GTK 1. + # + AC_MSG_RESULT(checking for GTK 1.x with pkg-config based tests...) - # 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) + pkgs='' + ok="yes" + pkg_check_version gtk+ 1.2 ; ac_gtk_version_string="$vers" + pkg_check_version glib 1.0 + pkg_check_version gdk_pixbuf 0.1 + have_gtk="$ok" + + # Now check for Gnome... + # + if test "$have_gtk" = yes -a "$with_gnome" = yes; then + old_pkgs="$pkgs" + ok=yes + pkg_check_version capplet 1.0 + pkg_check_version gnomeui 1.0 + pkg_check_version gdk_pixbuf 0.1 + have_gnome="$ok" + + if test "$have_gnome" = no; then + pkgs="$old_pkgs" + else + AC_DEFINE(HAVE_CRAPPLET) + fi + fi 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) + if test "$have_gtk" = yes; then + parse_gtk_version_string + jurassic_gtk=no else - AC_MSG_RESULT($ac_gnome_config_libs) + have_gnome=no fi - fi - GNOME_DATADIR="" - if test "$have_gnome" = yes -a "$have_gtk" = yes; then - GNOME_DATADIR=`$gnome_config --datadir` - fi + if test "$have_gtk" = yes; then + AC_CACHE_CHECK([for Gtk includes], ac_cv_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=`$pkg_config --libs $pkgs`]) + fi + ac_gtk_config_cflags=$ac_cv_gtk_config_cflags + ac_gtk_config_libs=$ac_cv_gtk_config_libs + ac_gnome_config_cflags=$ac_gtk_config_cflags + ac_gnome_config_libs=$ac_gtk_config_libs - # 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 + else + # + # the old way... + # run {gnome,gtk}-config based tests. + # + AC_MSG_RESULT(checking for GTK 1.x with gtk-config based tests...) + AC_PATH_PROGS(glib_config, glib12-config glib-config,, $gtk_path) + AC_PATH_PROGS(gtk_config, gtk12-config gtk-config,, $gtk_path) - if test "$have_gtk" = yes; then - INCLUDES="$INCLUDES $ac_gtk_config_cflags" - GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs" - AC_DEFINE(HAVE_GTK) + 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=`$gtk_config --version`]) + ac_gtk_version_string=$ac_cv_gtk_version_string + parse_gtk_version_string + fi + + if test "$have_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`]) + fi + ac_gtk_config_cflags=$ac_cv_gtk_config_cflags + ac_gtk_config_libs=$ac_cv_gtk_config_libs + + # Check for Gnome Capplet support. + # Note that this is only needed with Gnome 1.x, not Gnome 2.x. + # In a Gnome 2.x world, libcapplet will not exist. + # (In fact, this likely won't even be checked, since in a Gnome 2.x + # world, we will probably be up in the "$pkg_config" branch instead + # of here in the "$gnome_config" branch.) + # + if test "$have_gnome" = yes -a "$have_gtk" = yes; then + gnome_config_libs="gtk capplet gnomeui gdk_pixbuf" + AC_MSG_CHECKING(for Gnome capplet includes) + AC_CACHE_VAL(ac_cv_gnome_config_cflags, + [if ( $gnome_config --cflags $gnome_config_libs 2>&1 | \ + 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 | + 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 + + # 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 + + fi # end of {gnome,gtk}-config based tests + + if test "$have_gtk" = yes -a "$have_gtk2" = no; then + # check for this function that was not in libcapplet 1.2. + # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x) + AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate, + [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true], + $ac_gnome_config_libs) + fi + + + GNOME_DATADIR="" + if test "$have_gtk" = yes; then + if test -n "$pkg_config"; then + if test "$have_gtk2" = yes; then + GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` + else + GNOME_DATADIR=`$pkg_config --variable=prefix gtk+` + fi + else + GNOME_DATADIR=`$gtk_config --prefix` + fi + GNOME_DATADIR="$GNOME_DATADIR/share" + fi + + # .desktop files go in different places in Gnome 1.x and Gnome 2.x... + if test "$have_gtk2" = yes; then + GNOME_PANELDIR='$(GNOME_PANELDIR2)' + else + GNOME_PANELDIR='$(GNOME_PANELDIR1)' + 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) + + if test "$have_gtk2" = yes; then + GTK_EXTRA_OBJS="" + else + GTK_EXTRA_OBJS="\$(GTK_EXTRA_OBJS)" + fi + fi + +fi + + +# Check for the Gnome Help Browser. +# +if test "$have_gtk" = yes; then + AC_CHECK_PROGS(have_gnome_help, yelp gnome-help-browser, no) + if test "$have_gnome_help" != no; then + have_gnome_help=yes + fi +fi + + +############################################################################### +# +# Check for -lxml +# +############################################################################### + +have_xml=no +with_xml_req=unspecified +xml_halfassed=no +AC_ARG_WITH(xml, +[ --with-xml The XML toolkit is needed for some parts of + the Gtk interface. Without it, the configuration + interface will be much less featureful.], +[with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes]) + +# if --with-xml=/directory/ was specified, remember that directory so that +# we can also look for the `xml-config' program in that directory. +case "$with_xml" in + /*) + xml_dir="$with_xml" + ;; + *) + xml_dir="" + ;; +esac + +HANDLE_X_PATH_ARG(with_xml, --with-xml, XML) + +if test "$with_xml" != yes -a "$with_xml" != no ; then + echo "error: must be yes or no: --with-xml=$with_xml" + exit 1 +fi + +if test "$with_xml" = yes; then + have_xml=no + have_old_xml=no + + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for for xml-config. + # + xml_path="$PATH" + + if test ! -z "$gtk_dir"; then + # canonicalize slashes. + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + xml_path="$foo:$xml_path" + fi + + if test ! -z "$gnome_dir"; then + # canonicalize slashes. + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + xml_path="$foo:$xml_path" + fi + + if test -n "$pkg_config" ; then + # + # the new way... + # run pkg-config based tests. + # + pkgs="" + ok="yes" + + # If we have Gtk 2.x, then *only* XML 2.x will work. + # If we have Gtk 1.x, or don't have Gtk at all, then + # either XML 1.x or 2.x will work. + + # First check for XML 2.x. + # + pkg_check_version libxml-2.0 2.4.6 + + # If that didn't work (we don't have XML 2.x) and we *don't* have + # Gtk 2.x, then check to see if we have XML 1.x + # + if test "$ok" = no -a "$have_gtk2" = no; then + ok=yes + pkg_check_version libxml 1.0 + fi + + have_xml="$ok" + + if test "$have_xml" = yes; then + AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags, + [ac_cv_xml_config_cflags=`$pkg_config --cflags $pkgs`]) + AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs, + [ac_cv_xml_config_libs=`$pkg_config --libs $pkgs`]) + ac_xml_config_cflags=$ac_cv_xml_config_cflags + ac_xml_config_libs=$ac_cv_xml_config_libs + fi + + else + # + # the old way... + # run {xml2,xml}-config based tests. + # + + AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path) + + # If we found the xml-config program, run it to get flags. + # + if test -n "$xml_config" ; then + AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags, + [ac_cv_xml_config_cflags=`$xml_config --cflags`]) + AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs, + [ac_cv_xml_config_libs=`$xml_config --libs`]) + ac_xml_config_cflags=$ac_cv_xml_config_cflags + ac_xml_config_libs=$ac_cv_xml_config_libs + fi + + ac_save_xml_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags" + + # first try which is the new way... + # + AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],, + [#include ]) + + # if that didn't work, then try just which is the old way... + # + if test "$have_xml" = no; then + AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],, + [#include ]) + fi + + CPPFLAGS="$ac_save_xml_CPPFLAGS" + fi + + + have_zlib=no + if test "$have_xml" = yes; then + # we have the XML headers; now make sure zlib is around. + # yes, it's stupid we have to do this too, but there is + # dependency screwage in Gnome. + AC_CHECK_X_LIB(z, zlibVersion, [have_zlib=yes]) + if test "$have_zlib" = no; then + xml_halfassed=yes + have_xml=no + fi + fi + + if test "$have_xml" = yes; then + # we have the header, now check for the library + have_xml=no + xml_halfassed=yes + AC_CHECK_X_LIB(c, xmlParseChunk, + [have_xml=yes + xml_halfassed=no + XML_LIBS="$ac_xml_config_libs" + AC_DEFINE(HAVE_XML)], + [true], + $ac_xml_config_libs) + fi + + if test "$have_xml" = yes; then + INCLUDES="$INCLUDES $ac_xml_config_cflags" + GTK_LIBS="$GTK_LIBS $ac_xml_config_libs" + AC_DEFINE(HAVE_XML) + if test "$have_old_xml" = yes; then + AC_DEFINE(HAVE_OLD_XML_HEADERS) + fi fi fi @@ -1894,7 +2720,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. @@ -1906,7 +2733,7 @@ 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, GL/glx.h, [ac_cv_have_mesa_gl=yes]) + AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes]) ]) ac_have_mesa_gl=$ac_cv_have_mesa_gl @@ -1932,15 +2759,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 @@ -1972,6 +2799,32 @@ if test "$with_gl" = yes; then #line __oline__ "configure" #include "confdefs.h" #include +#ifndef MESA_MAJOR_VERSION +# include +# 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 @@ -1981,10 +2834,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 @@ -1995,9 +2850,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 @@ -2016,28 +2874,6 @@ EOF # AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)], [true], $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 @@ -2064,11 +2900,21 @@ 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/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, + [#include ]) + if test "$have_gle3" = yes ; then + have_gle=yes; + else + 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, + [#include ]) + fi fi if test "$have_gle" = yes ; then @@ -2092,6 +2938,13 @@ if test "$with_gle" = yes; then # [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, @@ -2103,6 +2956,9 @@ if test "$with_gle" = yes; then 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 @@ -2122,7 +2978,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) @@ -2131,7 +2988,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"],, + [#include ]) elif test "$with_xpm" != no; then echo "error: must be yes or no: --with-xpm=$with_xpm" exit 1 @@ -2146,6 +3004,259 @@ if test "$have_motif" = yes -a "$have_xpm" = yes ; then fi fi +############################################################################### +# +# Check for -lgdk_pixbuf. +# +############################################################################### + +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. (The path here is + ignored if GTK 2.x is being used.)], + [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 + have_gdk_pixbuf2=no + + if test -n "$pkg_config" ; then + # + # the new way... + # run pkg-config based tests. + # + pkgs='' + ok="yes" + + # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work. + # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work. + # If we don't have Gtk at all, then either will work. + + if test "$have_gtk" = no -o "$have_gtk2" = yes; then + # + # we don't have Gtk; or we have Gtk 2.x. Check for pixbuf 2.x. + # + AC_MSG_RESULT(checking for gdk_pixbuf 2.x with gtk-config based tests...) + 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" + have_gdk_pixbuf2="$ok" + fi + + if test "$have_gtk" = no -o "$have_gtk2" = no; then + # + # we don't have Gtk; or we have Gtk 1.x. + # If we don't have pixbuf 2.x, then check for pixbuf 1.x. + # + if test "$have_gdk_pixbuf2" = no; then + pkgs='' + ok="yes" + AC_MSG_RESULT(checking for gdk_pixbuf 1.x with gtk-config based tests...) + pkg_check_version gdk_pixbuf 0.0 + pkg_check_version gdk_pixbuf_xlib 0.0 + have_gdk_pixbuf="$ok" + fi + fi + + 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 + fi + + + if test "$have_gdk_pixbuf" = no; then + # + # the old way... + # run gdk-pixbuf-config based tests. + # note that we can't assume that the existence of "pkg-config" means + # that we don't have to look for gdk-pixbuf-config -- in Gnome 1.4, + # pkg-config exists, but doesn't know about pixbuf. + # + + AC_MSG_RESULT(checking for gdk_pixbuf with gdk-pixbuf-config based tests...) + + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for for gdk-pixbuf-config. + # + gdk_pixbuf_path="$PATH" + + if test ! -z "$gtk_dir"; then + # canonicalize slashes. + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + gdk_pixbuf_path="$foo:$gdk_pixbuf_path" + fi + + if test ! -z "$gnome_dir"; then + # canonicalize slashes. + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + gdk_pixbuf_path="$foo:$gdk_pixbuf_path" + fi + + AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path) + + # If we found the gdk-pixbuf-config program, run it to get flags. + # + if test -n "$gdk_pixbuf_config" ; then + AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags, + [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`]) + AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs, + [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`]) + + # note that "gdk-pixbuf-config --libs" produces a link line including + # -lgdk_pixbuf, but there's no way to get it to produce one that also + # includes -lgdk_pixbuf_xlib. Since we don't know *exactly* what the + # name of the library will be, construct it with sed... + # M4 sucks!! + changequote(X,Y) + ac_cv_gdk_pixbuf_config_libs=`echo $ac_cv_gdk_pixbuf_config_libs | \ + sed 's@ \(-lgdk_pixbuf\([-_a-zA-Z0-9.]*\)\) @ \1 -lgdk_pixbuf_xlib\2 @'` + changequote([,]) + + ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags + ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs + fi + fi + + ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags" + + if test "$have_gdk_pixbuf" = no; then + # + # we appear to have pixbuf; check for headers/libs to be sure. + # + + 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 + fi + + CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS" + + if test "$have_gdk_pixbuf" = yes; then + # we have the headers, now check for the libraries + have_gdk_pixbuf=no + gdk_pixbuf_halfassed=yes + + # 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 + have_gdk_pixbuf2=no + fi +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 for 'phosphor' +# +############################################################################### + +PTY_LIBS= +AC_CHECK_HEADERS(pty.h util.h) +AC_CHECK_X_LIB(util, forkpty, + [PTY_LIBS="-lutil" + AC_DEFINE(HAVE_FORKPTY)]) + ############################################################################### # @@ -2156,7 +3267,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) @@ -2164,7 +3275,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 @@ -2222,7 +3334,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 @@ -2254,202 +3367,131 @@ 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 fi -############################################################################### -# -# Check for the SGI Iris Video Library. -# -############################################################################### - -have_sgivideo=no -with_sgivideo_req=unspecified -AC_ARG_WITH(sgivideo, -[ --with-sgivideo Include support for SGI's Iris Video Library.], - [with_sgivideo="$withval"; with_sgivideo_req="$withval"], - [with_sgivideo=yes]) - -HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video) - -if test "$with_sgivideo" = yes; then - AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes) - if test "$have_sgivideo" = yes; then - have_sgivideo=no - AC_CHECK_LIB(vl, vlOpenVideo, [have_sgivideo=yes]) - if test "$have_sgivideo" = yes; then - SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o" - SGI_VIDEO_LIBS="-lvl" - AC_DEFINE(HAVE_SGI_VIDEO) - fi - fi -elif test "$with_sgivideo" != no; then - echo "error: must be yes or no: --with-sgivideo=$with_sgivideo" - exit 1 -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. +# so first see if "fortune zippy" works. Else, use plain "fortune". # -# If that doesn't work, look in /usr/games, and if it's there, use -# the full pathname. +# We used to dig around in Emacs to look for the "yow" program, but +# most people who have Emacs also have "fortune zippy", so nevermind. # ############################################################################### -with_zippy_req="" -AC_ARG_WITH(zippy,[ - --with-zippy=PROGRAM Some demos are able to run an external program and +with_fortune_req="" +AC_ARG_WITH(fortune,[ + --with-fortune=PROGRAM Some demos are able to run an external program and display its text; this names the program to use by default (though it can be overridden with X - resources.) 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]) + resources.) Default is "/usr/games/fortune".], + [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes]) -if test "$with_zippy" = no || test "$with_zippy" = yes ; then - with_zippy="" - with_zippy_req="" +if test "$with_fortune" = no || test "$with_fortune" = yes ; then + with_fortune="" + with_fortune_req="" fi -if test -n "$with_zippy_req" ; then - ac_cv_zippy_program="" - case "$with_zippy_req" in +if test -n "$with_fortune_req" ; then + ac_cv_fortune_program="" + case "$with_fortune_req" in /*) - AC_MSG_CHECKING([for $with_zippy_req]) - if test -x "$with_zippy_req" ; then + + set dummy $with_fortune_req ; fortune_tmp=$2 + AC_MSG_CHECKING([for $fortune_tmp]) + if test -x "$fortune_tmp" ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) - with_zippy="" + with_fortune="" fi ;; *) + set dummy $with_fortune_req ; fortune_tmp=$2 # don't cache - unset ac_cv_path_zip2 - AC_PATH_PROG(zip2, $with_zippy_req, []) - if test "$zip2" = ""; then - with_zippy="" + unset ac_cv_path_fortune_tmp + AC_PATH_PROG(fortune_tmp, $fortune_tmp, []) + if test -z "$fortune_tmp" ; then + with_fortune="" fi ;; esac - ac_cv_zippy_program="$with_zippy" + ac_cv_fortune_program="$with_fortune" -elif test -n "$ac_cv_zippy_program"; then - AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program]) +elif test -n "$ac_cv_fortune_program"; then + AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program]) fi -if test ! -n "$ac_cv_zippy_program"; then +unset ac_cv_path_fortune_tmp +unset fortune_tmp - AC_CHECK_PROGS(emacs_exe, emacs) - AC_CHECK_PROGS(xemacs_exe, xemacs) +if test -z "$ac_cv_fortune_program" ; then - ac_cv_zippy_program="" - eargs='-batch -q -nw --eval' + # first look for fortune in /usr/games/ (and use absolute path) + AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games") - 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 + # if it's not there, look on $PATH (and don't use absolute path) + if test -z "$fortune_tmp" ; then + AC_CHECK_PROGS(fortune_tmp, fortune) fi - 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) - 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 - fi - fi - fi + # if we didn't find anything, then just assume /usr/games/ + if test -z "$fortune_tmp" ; then + fortune_tmp="/usr/games/fortune" fi - # 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 + ac_cv_fortune_program="$fortune_tmp" + + # now check to see whether "fortune zippy" works. + # + fortune_tmp="$fortune_tmp zippy" + AC_MSG_CHECKING([for zippy quotes]) + if ( $fortune_tmp >/dev/null 2>&1 ); then + ac_cv_fortune_program="$fortune_tmp" + AC_MSG_RESULT($fortune_tmp) + else + AC_MSG_RESULT(no) fi -fi -if test -z "$ac_cv_zippy_program" ; then - ac_cv_zippy_program=fortune fi -AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program") +unset ac_cv_path_fortune_tmp +unset fortune_tmp + +AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program") + + +############################################################################### +# +# Check whether it's ok to install some hacks as setuid (e.g., "sonar") +# This should be safe, but let's give people the option. +# +############################################################################### + +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' + (which is needed in order to ping other hosts.) +], + [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"]) + +HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks) + +if test "$setuid_hacks" = yes; then + true +elif test "$setuid_hacks" != no; then + echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks" + exit 1 +fi ############################################################################### @@ -2473,7 +3515,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 @@ -2493,6 +3535,10 @@ 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 "$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)" @@ -2506,17 +3552,35 @@ 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 NEED_SETUID=yes - INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)' else NEED_SETUID=no - INSTALL_SETUID='$(INSTALL_PROGRAM)' +fi + +if test "$setuid_hacks" = yes; then + SETUID_HACKS=yes +else + SETUID_HACKS=no fi tab=' ' if test "$have_gl" = yes; then GL_EXES='$(GL_EXES)' + GL_UTIL_EXES='$(GL_UTIL_EXES)' GL_MEN='$(GL_MEN)' GL_KLUDGE="${tab} " else @@ -2525,12 +3589,115 @@ fi if test "$have_gle" = yes; then GLE_EXES='$(GLE_EXES)' - GLE_MEN='$(GLE_MEN)' GLE_KLUDGE="${tab} " else GLE_KLUDGE="-${tab} " 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='! ' +else + GNOMEHELP_Y='! ' + GNOMEHELP_N='' +fi + + +# Now that we know whether we have Gnome, we can decide where the XML +# config files get installed. +# +if test -z "$HACK_CONF_DIR" ; then + if test -n "$GNOME_DATADIR" ; then + HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers' + else + HACK_CONF_DIR='${prefix}/lib/xscreensaver/config' + fi +fi + + + +# After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value +# so that we know where to install the Gtk pixmaps. +# +# It should usually be "/usr/share/pixmaps/", but we can't just use +# "$(prefix)/share/pixmaps" because that would usually result in +# "/usr/X11R6/share/pixmaps/", which is wrong. It needs to be the +# Gnome/Gtk prefix, not the overall prefix. +# +if test -n "$GNOME_DATADIR" ; then + GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver' +elif test "$have_gtk" = yes; then + if test -n "$pkg_config"; then + if test "$have_gtk2" = yes; then + GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` + else + GLADE_DATADIR=`$pkg_config --variable=prefix gtk+` + fi + else + GLADE_DATADIR=`$gtk_config --prefix` + fi + GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver" +else + GLADE_DATADIR='' +fi + + +# Set PO_DATADIR to something sensible. +# +AC_MSG_CHECKING([for locale directory]) +if test -n "$GNOME_DATADIR" ; then + PO_DATADIR="$GNOME_DATADIR" +elif test "$have_gtk" = yes; then + if test -n "$pkg_config"; then + if test "$have_gtk2" = yes; then + PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0` + else + PO_DATADIR=`$pkg_config --variable=prefix gtk+` + fi + else + PO_DATADIR=`$gtk_config --prefix` + fi + 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=$datadir + eval dd=${dd} + eval dd=${dd} + eval dd=${dd} + eval dd=${dd} + eval dd=${dd} + 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;'` + ############################################################################### # @@ -2545,35 +3712,52 @@ 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(PASSWD_LIBS) AC_SUBST(INSTALL_SETUID) +AC_SUBST(SETUID_HACKS) AC_SUBST(INSTALL_DIRS) AC_SUBST(NEED_SETUID) AC_SUBST(INSTALL_PAM) -AC_SUBST(SGI_VIDEO_OBJS) -AC_SUBST(SGI_VIDEO_LIBS) + +AC_SUBST(OBJCC) +AC_SUBST(EXES_OSX) +AC_SUBST(SCRIPTS_OSX) +AC_SUBST(MEN_OSX) AC_SUBST(PASSWD_SRCS) AC_SUBST(PASSWD_OBJS) AC_SUBST(XMU_SRCS) AC_SUBST(XMU_OBJS) +AC_SUBST(XMU_LIBS) 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(JPEG_EXES) AC_SUBST(GL_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(HACKDIR) AC_SUBST(GNOME_DATADIR) +AC_SUBST(GLADE_DATADIR) +AC_SUBST(PO_DATADIR) +AC_SUBST(GNOME_PANELDIR) +AC_SUBST(HACK_CONF_DIR) +AC_SUBST(GTK_EXTRA_OBJS) APPDEFAULTS=$ac_x_app_defaults AC_SUBST(APPDEFAULTS) @@ -2588,7 +3772,9 @@ AC_OUTPUT(Makefile driver/Makefile hacks/Makefile hacks/glx/Makefile - driver/XScreenSaver.ad) + po/Makefile.in + driver/XScreenSaver.ad + driver/xscreensaver.kss) ############################################################################### # @@ -2614,7 +3800,8 @@ warn() { warnpre if test "$warning" = long ; then echo '' ; fi warning=yes - echo "$warn_prefix $@" + rest="$@" + echo "$warn_prefix $rest" } warnL() { @@ -2622,11 +3809,13 @@ warnL() { warnpre warning=yes if test "$was" != no ; then echo '' ; fi - echo "$warn_prefix $@" + rest="$@" + echo "$warn_prefix $rest" } warn2() { - echo " $@" + rest="$@" + echo " $rest" warning=long } @@ -2671,18 +3860,46 @@ 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 +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;" @@ -2701,24 +3918,72 @@ 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 "$gtk2_halfassed" != no ; then + warnL "GTK version $gtk2_halfassed was found, but at least one supporting" + warn2 "library ($gtk2_halfassed_lib) was not, so GTK 2.x can't be used." + 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 -if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then +if test "$with_gnome_req" = yes -a "$have_gnome" = no \ + -a "$have_gtk2" = no; then + # don't issue this warning if we have GTK2 -- in that case, the + # Gnome-specific code isn't needed. warn 'Use of the Gnome Control Panel was requested, but the necessary' warn2 'headers and/or libraries were not found.' fi +if test "$have_gtk" = yes ; then + if test "$have_xml" = no ; then + if test "$with_xml_req" = yes ; then + warn 'Use of the XML library was requested, but the necessary' + warn2 'headers and/or libraries were not found.' + else + warn 'GTK is being used, but the XML library was not found.' + fi + + if test "$xml_halfassed" = yes ; then + + if test "$have_zlib" = yes ; then + which="XML libraries" + else + which="\`zlib' library" + fi + + echo '' + warn2 'More specifically, we found the headers, but not the' + warn2 "$which; so either XML is half-installed on this" + warn2 "system, or something else went wrong. The \`config.log'" + warn2 'file might contain some clues.' + fi + + echo '' + warn2 "Without XML, the per-display-mode \`Settings' dialogs" + warn2 'will not be available. Specify the location of the XML' + warn2 'library through the --with-xml option to configure.' + fi +fi + +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!" @@ -2735,37 +4000,107 @@ 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_xpm" = no -a "$have_gdk_pixbuf" = no || \ + test "$gdk_pixbuf_halfassed" = yes; then + + 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 "$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 "$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 'could be. You should consider installing Pixbuf or' + warn2 'XPM and re-running configure. The Pixbuf library is' + warn2 'a part of GNOME. The XPM library comes with most' + warn2 'X11 installations; you can also find it at the X11' + warn2 'archive sites, such as .' + echo '' + warn2 'GDK-Pixbuf is recommended over XPM, as it provides' + warn2 '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 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then - preferred_mesagl=3.0 + preferred_mesagl=3.4 + mgv="$ac_mesagl_version_string" + 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." elif test \! "$ac_mesagl_version" -gt 2006; then - warnL "MesaGL version $ac_mesagl_version_string is being used." - warn2 "MesaGL versions 2.6 and earlier have a security bug." - warn2 "It is strongly recommended that you upgrade to at" - warn2 "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 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 @@ -2789,8 +4124,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 .' @@ -2799,6 +4133,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' @@ -2822,11 +4161,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 @@ -2834,13 +4173,9 @@ 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 "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then - warn 'Use of the Iris Video Library 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," +if test -n "$with_fortune_req"; then + if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then + warnL "$with_fortune_req was requested as the Fortune program," warn2 "but was not found. The default will be used instead." fi fi @@ -2873,17 +4208,24 @@ eval HACKDIR=${HACKDIR} eval HACKDIR=${HACKDIR} eval HACKDIR=${HACKDIR} eval HACKDIR=${HACKDIR} +eval HACK_CONF_DIR=${HACK_CONF_DIR} +eval HACK_CONF_DIR=${HACK_CONF_DIR} +eval HACK_CONF_DIR=${HACK_CONF_DIR} +eval HACK_CONF_DIR=${HACK_CONF_DIR} +eval HACK_CONF_DIR=${HACK_CONF_DIR} +eval HACK_CONF_DIR=${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.]) @@ -2897,8 +4239,8 @@ 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]*\)-.*$/\1/'` +rpmv=`(rpm -qv xscreensaver) 2>/dev/null | \ + sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'` changequote([,]) if test \! -z "$rpmv" ; then @@ -2917,29 +4259,16 @@ if test \! -z "$rpmv" ; then echo "" if test "$rpmbdir" = "$rpmhdir" ; then - warn2 "The RPM version was installed in $rpmbdir." + warn2 "The RPM version was installed in $rpmbdir/." else - warn2 "The RPM version was installed in $rpmbdir," - warn2 "with demos in $rpmhdir." + warn2 "The RPM version was installed in $rpmbdir/," + warn2 "with demos in $rpmhdir/." fi do_dir_warning=yes 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 test "${bindir}" = "${HACKDIR}" ; then do_dir_warning=yes fi @@ -2950,18 +4279,27 @@ 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 (100+ different executables) will" - echo " also be installed in ${HACKDIR}." + echo " The various graphics demos (180+ 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 will be installed in ${HACK_CONF_DIR}/" + echo '' +fi