AC_DEFUN(FCGI_COMMON_CHECKS, [
AC_CHECK_TYPE([ssize_t], [int])
AC_MSG_CHECKING([for sun_len in sys/un.h])
AC_EGREP_HEADER([sun_len], [sys/un.h],
[AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_SOCKADDR_UN_SUN_LEN], [1],
[Define if sockaddr_un in sys/un.h contains a sun_len component])],
AC_MSG_RESULT([no]))
AC_MSG_CHECKING([for fpos_t in stdio.h])
AC_EGREP_HEADER([fpos_t], [stdio.h],
[AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_FPOS], [1],
[Define if the fpos_t typedef is in stdio.h])],
AC_MSG_RESULT([no]))
AC_CHECK_HEADERS([sys/socket.h netdb.h netinet/in.h arpa/inet.h])
AC_CHECK_HEADERS([sys/time.h limits.h sys/param.h unistd.h])
AC_MSG_CHECKING([for a fileno() prototype in stdio.h])
AC_EGREP_HEADER([fileno], [stdio.h],
[AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_FILENO_PROTO], [1],
[Define if there's a fileno() prototype in stdio.h])],
AC_MSG_RESULT([no]))
if test "$HAVE_SYS_SOCKET_H"; then
AC_MSG_CHECKING([for socklen_t in sys/socket.h])
AC_EGREP_HEADER([socklen_t], [sys/socket.h],
[AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_SOCKLEN], [1],
[Define if the socklen_t typedef is in sys/socket.h])],
AC_MSG_RESULT([no]))
fi
AC_MSG_CHECKING([whether cross-process locking is required by accept()])
case "`uname -sr`" in
IRIX\ 5.* | SunOS\ 5.* | UNIX_System_V\ 4.0)
AC_MSG_RESULT([yes])
AC_DEFINE([USE_LOCKING], [1],
[Define if cross-process locking is required by accept()])
;;
*)
AC_MSG_RESULT([no])
;;
esac
AC_MSG_CHECKING([whether va_arg(arg, long double) crashes the compiler])
AC_TRY_COMPILE([ [long double lDblArg; va_list arg; lDblArg = va_arg(arg, long double);],
AC_MSG_RESULT([no]),
[AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_VA_ARG_LONG_DOUBLE_BUG], [1],
[Define if va_arg(arg, long double) crashes the compiler])])
AC_C_CONST
])
AC_DEFUN([ACX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
acx_pthread_ok=no
AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
AC_MSG_RESULT($acx_pthread_ok)
if test x"$acx_pthread_ok" = xno; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
fi
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
case "${host_cpu}-${host_os}" in
*solaris*)
acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
;;
esac
if test x"$acx_pthread_ok" = xno; then
for flag in $acx_pthread_flags; do
case $flag in
none)
AC_MSG_CHECKING([whether pthreads work without any flags])
;;
-*)
AC_MSG_CHECKING([whether pthreads work with $flag])
PTHREAD_CFLAGS="$flag"
;;
*)
AC_MSG_CHECKING([for the pthreads library -l$flag])
PTHREAD_LIBS="-l$flag"
;;
esac
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
AC_TRY_LINK([ [pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[acx_pthread_ok=yes])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
AC_MSG_RESULT($acx_pthread_ok)
if test "x$acx_pthread_ok" = xyes; then
break;
fi
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
done
fi
if test "x$acx_pthread_ok" = xyes; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
AC_MSG_CHECKING([for joinable pthread attribute])
AC_TRY_LINK([ [int attr=PTHREAD_CREATE_JOINABLE;],
ok=PTHREAD_CREATE_JOINABLE, ok=unknown)
if test x"$ok" = xunknown; then
AC_TRY_LINK([ [int attr=PTHREAD_CREATE_UNDETACHED;],
ok=PTHREAD_CREATE_UNDETACHED, ok=unknown)
fi
if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok,
[Define to the necessary symbol if this constant
uses a non-standard name on your system.])
fi
AC_MSG_RESULT(${ok})
if test x"$ok" = xunknown; then
AC_MSG_WARN([we do not know how to create joinable pthreads])
fi
AC_MSG_CHECKING([if more special flags are required for pthreads])
flag=no
case "${host_cpu}-${host_os}" in
*-aix* | *-freebsd*) flag="-D_THREAD_SAFE";;
*solaris* | alpha*-osf*) flag="-D_REENTRANT";;
esac
AC_MSG_RESULT(${flag})
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
else
PTHREAD_CC="$CC"
fi
AC_SUBST(PTHREAD_LIBS)
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_CC)
if test x"$acx_pthread_ok" = xyes; then
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
:
else
acx_pthread_ok=no
$2
fi
])
AC_DEFUN([AC_PROG_CC_WARNINGS], [
ansi=$1
if test -z "$ansi"; then
msg="for C compiler warning flags"
else
msg="for C compiler warning and ANSI conformance flags"
fi
AC_CACHE_CHECK($msg, ac_cv_prog_cc_warnings, [
if test -n "$CC"; then
cat > conftest.c <<EOF
int main(int argc, char **argv) { return 0; }
EOF
if test "$GCC" = "yes"; then
if test -z "$ansi"; then
ac_cv_prog_cc_warnings="-Wall"
else
ac_cv_prog_cc_warnings="-Wall -ansi -pedantic"
fi
elif $CC -flags 2>&1 | grep "Xc.*strict ANSI C" > /dev/null 2>&1 &&
$CC -c -v -Xc conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
if test -z "$ansi"; then
ac_cv_prog_cc_warnings="-v"
else
ac_cv_prog_cc_warnings="-v -Xc"
fi
elif $CC > /dev/null 2>&1 &&
$CC -c -Aa +w1 conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
if test -z "$ansi"; then
ac_cv_prog_cc_warnings="+w1"
else
ac_cv_prog_cc_warnings="+w1 -Aa"
fi
elif ! $CC > /dev/null 2>&1 &&
$CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
if test -z "$ansi"; then
ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos"
else
ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1"
fi
elif $CC > /dev/null 2>&1 | grep AIX > /dev/null 2>&1 &&
$CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
if test -z "$ansi"; then
ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"
else
ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi"
fi
elif $CC -fullwarn -ansi -ansiE > /dev/null 2>&1 &&
test -f conftest.o; then
if test -z "$ansi"; then
ac_cv_prog_cc_warnings="-fullwarn"
else
ac_cv_prog_cc_warnings="-fullwarn -ansi -ansiE"
fi
fi
rm -f conftest.*
fi
if test -n "$ac_cv_prog_cc_warnings"; then
CFLAGS="$CFLAGS $ac_cv_prog_cc_warnings"
else
ac_cv_prog_cc_warnings="unknown"
fi
])
])