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"
else
case "$host" in
*-irix5* |*-irix6.[0-3]* )
###############################################################################
#
-# Function to work around the fucked up gcc 2.96 included in Red Hat 7.0
+# 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!)
#
###############################################################################
-AC_DEFUN(AC_ESCHEW_REDHAT_GCC_LOSSAGE,
+AC_DEFUN(AC_GCC_ACCEPTS_STD,
[if test -n "$GCC"; then
- AC_MSG_CHECKING(for Red Hat GCC lossage)
- AC_CACHE_VAL(ac_cv_red_hat_gcc_lossage,
- [ac_cv_red_hat_gcc_lossage=no
- AC_EGREP_CPP(lossage,
- [#include <stdlib.h>
- #if !defined(__USE_POSIX) || !defined(__USE_SVID) || !defined(__USE_BSD)
- lossage
- #endif
- ], ac_cv_red_hat_gcc_lossage=yes)
- ])
+ AC_CACHE_CHECK([whether gcc accepts -std],
+ ac_cv_gcc_accepts_std,
+ [if ( gcc -E -std=c89 - </dev/null 2>&1 >/dev/null | \
+ 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_red_hat_gcc_lossage=$ac_cv_red_hat_gcc_lossage
- if test "$ac_cv_red_hat_gcc_lossage" = yes ; then
- rh_defines="-D_POSIX_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE";
- CC="$CC $rh_defines"
- AC_MSG_RESULT(yes: need $rh_defines)
- else
- AC_MSG_RESULT(no)
- 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
])
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
# random compiler setup
AC_CANONICAL_HOST
AC_PROG_CC_ANSI
-AC_ESCHEW_REDHAT_GCC_LOSSAGE
+AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
AC_PROG_CPP
AC_C_CONST
AC_C_INLINE
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 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; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [true],
+ [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
-lXext -lX11)
fi
fi
#
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
#line __oline__ "configure"
#include "confdefs.h"
#include <GL/gl.h>
+#ifndef MESA_MAJOR_VERSION
+# include <GL/xmesa.h>
+# define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
+# define MESA_MINOR_VERSION XMESA_MINOR_VERSION
+#endif
configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
EOF
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\".
-],
+ have it) or else to use \"fortune\".],
[with_zippy_req="$withval"; with_zippy="$withval"],[with_zippy=yes])
if test "$with_zippy" = no || test "$with_zippy" = yes ; then
AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_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
+
+
###############################################################################
#
# Done testing. Now, set up the various -I and -L variables,
LOCK_OBJS='$(NOLOCK_OBJS_1)'
fi
+INSTALL_SETUID='$(INSTALL) $(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=' '
AC_SUBST(XPM_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)
echo ' "xscreensaver-demo", and "xscreensaver-command" executables'
echo " will be installed in ${bindir}."
echo ""
- echo " The various graphics demos (100+ different executables) will"
+ echo " The various graphics demos (120+ different executables) will"
echo " also be installed in ${HACKDIR}."
echo ""
echo " If you would prefer the demos to be installed elsewhere"