-dnl Process this file with autoconf to produce a configure script.
-dnl $Id: configure.in 7811 2008-04-30 07:06:58Z iulius $
-dnl
-dnl Please try to follow GNU conventions and autoconf manual conventions as
-dnl much as possible in this file so that any macros we develop can be easily
-dnl contributed to the macro archive and possibly rolled into future versions
-dnl of autoconf so that we can stop supporting them. This means, for example,
-dnl that code excerpts should probably follow the GNU coding standards rather
-dnl than INN's.
-dnl
-dnl The macro archive is at <http://www.gnu.org/software/ac-archive/>. Due to
-dnl the submission format and significant changes to autoconf's internal
-dnl architecture and building-block macros, I'm waiting until INN is switched
-dnl to autoconf 2.52 or later and we can convert this file into a bunch of
-dnl separate files before submitting macros to that archive.
-dnl
-dnl If a check is any way non-trivial, please package it up in a macro with
-dnl AC_DEFUN. This will allow us to easily break up this (far too long) file
-dnl into a directory full of .m4 files for particular checks once we switch to
-dnl autoconf 2.52 or later. Please also put any long code blocks into a
-dnl separate macro rather than in-line in the test macro; this will make
-dnl quoting issues much easier. See the existing tests for details on how to
-dnl do this.
-dnl
-dnl Try to do as much with AC_DEFINE and as little with AC_SUBST as is
-dnl reasonable; obviously, makefile things like library paths and so forth and
-dnl paths to programs have to use AC_SUBST, but any compile-time parameters
-dnl are easier to handle with AC_DEFINE. (And AC_SUBST is slower.)
-dnl
-dnl And remember: If you don't have any alternative available if your check
-dnl for something fails, and there's no purpose served in aborting configure
-dnl instead of the compile if what you're checking for is missing, don't
-dnl bother checking for it. Compile-time errors often produce a lot more
-dnl useful information for someone debugging a problem than configure-time
-dnl errors.
+# innduct
+# tailing reliable realtime streaming feeder for inn
+# configure.in
+#
+# Copyright (C) 2010 Ian Jackson <ijackson@chiark.greenend.org.uk>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# (I believe that when you compile and link this as part of the inn2
+# build, with the Makefile runes I have provided, all the libraries
+# and files which end up included in innduct are licence-compatible
+# with GPLv3. If not then please let me know. -Ian Jackson.)
+
+AC_INIT(duct.c)
+AC_CONFIG_AUX_DIR(autoconf-aux)
+AM_INIT_AUTOMAKE(innduct, 1.0)
-AC_REVISION($Revision: 7811 $)dnl
-AC_PREREQ(2.13)
-AC_INIT(Makefile.global.in)
-AC_CONFIG_AUX_DIR(support)
-AC_PREFIX_DEFAULT(/usr/local/news)
-
-dnl Make sure $prefix is set so that we can use it internally.
-test x"$prefix" = xNONE && prefix="$ac_default_prefix"
-
-dnl Linking against in-tree libraries need to know the current directory (the
-dnl top of the build directory, not the source directory).
-builddir=`pwd`
-AC_SUBST(builddir)
-
-dnl Earlier versions of INN used --with-largefiles, which was the wrong flag
-dnl from the perspective of what --with and --enable are supposed to mean.
-dnl Catch the old usage and error out.
-if test x"$with_largefiles" != x ; then
- AC_MSG_ERROR([Use --enable-largefiles instead of --with-largefiles])
-fi
-
-dnl Used to check whether -o can be provided with -c with the chosen
-dnl compiler. We need this if we're not using libtool so that object files
-dnl can be built in subdirectories. This macro is stolen shamelessly from
-dnl the libtool macros; there's a better version in Autoconf that we should
-dnl eventually use that tests twice.
-AC_DEFUN([INN_PROG_CC_C_O],
-[AC_REQUIRE([AC_OBJEXT])
-AC_MSG_CHECKING([if $CC supports -c -o file.$ac_objext])
-AC_CACHE_VAL([inn_cv_compiler_c_o],
-[rm -f -r conftest 2>/dev/null
-mkdir conftest
-cd conftest
-echo "int some_variable = 0;" > conftest.$ac_ext
-mkdir out
-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-# that will create temporary files in the current directory regardless of
-# the output directory. Thus, making CWD read-only will cause this test
-# to fail, enabling locking or at least warning the user not to do parallel
-# builds.
-chmod -w .
-save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
-compiler_c_o=no
-if { (eval $ac_compile) 2> out/conftest.err; } \
- && test -s out/conftest2.$ac_objext; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s out/conftest.err; then
- inn_cv_compiler_c_o=no
- else
- inn_cv_compiler_c_o=yes
- fi
-else
- # Append any errors to the config.log.
- cat out/conftest.err 1>&AC_FD_CC
- inn_cv_compiler_c_o=no
-fi
-CFLAGS="$save_CFLAGS"
-chmod u+w .
-rm -f conftest* out/*
-rmdir out
-cd ..
-rmdir conftest
-rm -f -r conftest 2>/dev/null])
-compiler_c_o=$inn_cv_compiler_c_o
-AC_MSG_RESULT([$compiler_c_o])])
-
-dnl A few tests need to happen before any of the libtool tests in order to
-dnl avoid error messages. We therefore lift them up to the top of the file.
AC_PROG_CC
-AC_AIX
-AC_ISC_POSIX
-INN_PROG_CC_C_O
-
-dnl Check to see if the user wants to use libtool. We only invoke the libtool
-dnl setup macros if they do. Keep this call together with the libtool setup
-dnl so that the arguments to configure will be together in configure --help.
-inn_use_libtool=no
-AC_ARG_ENABLE(libtool,
- [ --enable-libtool Use libtool for lib generation [default=no]],
- if test "$enableval" = yes ; then
- inn_use_libtool=yes
- fi)
-if test x"$inn_use_libtool" = xyes ; then
- AC_PROG_LIBTOOL
- EXTLIB='la'
- EXTOBJ='lo'
- LIBTOOL='$(top)/libtool'
- LIBTOOLCC='$(top)/libtool --mode=compile'
- LIBTOOLLD='$(top)/libtool --mode=link'
- CCOUTPUT='-c -o $@ $<'
-else
- AC_CANONICAL_HOST
- EXTLIB='a'
- EXTOBJ='o'
- LIBTOOL=''
- LIBTOOLCC=''
- LIBTOOLLD=''
- if test x"$compiler_c_o" = xyes ; then
- CCOUTPUT='-c -o $@ $<'
- else
- CCOUTPUT='-c $< && if test x"$(@F)" != x"$@" ; then mv $(@F) $@ ; fi'
- fi
- AC_SUBST(LIBTOOL)
-fi
-AC_SUBST(EXTLIB)
-AC_SUBST(EXTOBJ)
-AC_SUBST(LIBTOOLCC)
-AC_SUBST(LIBTOOLLD)
-AC_SUBST(CCOUTPUT)
-
-dnl INN has quite a few more configurable paths than autoconf supports by
-dnl default. For right now, those additional paths are configured with
-dnl --with-*-dir options. This is the generic macro for those arguments; it
-dnl takes the name of the directory, the path relative to $prefix if none
-dnl given to configure, the variable to set, and the help string.
-AC_DEFUN([INN_ARG_DIR],
-[AC_ARG_WITH([$1-dir], [$4], [$3=$with_$1_dir], [$3=$prefix/$2])
-AC_SUBST($3)])
-
-dnl And here are all the paths.
-dnl
-dnl FIXME: We should honor bindir, libdir, includedir, and mandir at the
-dnl least, and we should use libdir over --with-lib-dir.
-INN_ARG_DIR(control, bin/control, CONTROLDIR,
- [ --with-control-dir=PATH Path for control programs [PREFIX/bin/control]])
-INN_ARG_DIR(db, db, DBDIR,
- [ --with-db-dir=PATH Path for news database files [PREFIX/db]])
-INN_ARG_DIR(doc, doc, DOCDIR,
- [ --with-doc-dir=PATH Path for news documentation [PREFIX/doc]])
-INN_ARG_DIR(etc, etc, ETCDIR,
- [ --with-etc-dir=PATH Path for news config files [PREFIX/etc]])
-INN_ARG_DIR(filter, bin/filter, FILTERDIR,
- [ --with-filter-dir=PATH Path for embedded filters [PREFIX/bin/filter]])
-INN_ARG_DIR(lib, lib, LIBDIR,
- [ --with-lib-dir=PATH Path for news library files [PREFIX/lib]])
-INN_ARG_DIR(log, log, LOGDIR,
- [ --with-log-dir=PATH Path for news logs [PREFIX/log]])
-INN_ARG_DIR(run, run, RUNDIR,
- [ --with-run-dir=PATH Path for news PID/runtime files [PREFIX/run]])
-INN_ARG_DIR(spool, spool, SPOOLDIR,
- [ --with-spool-dir=PATH Path for news storage [PREFIX/spool]])
-INN_ARG_DIR(tmp, tmp, tmpdir,
- [ --with-tmp-dir=PATH Path for temporary files [PREFIX/tmp]])
-
-dnl This is actually given to AC_SUBST later on when we check whether the
-dnl system has the LOG_NEWS facility.
-AC_ARG_WITH(syslog-facility,
-[ --with-syslog-facility=LOG_FAC Syslog facility [LOG_NEWS or LOG_LOCAL1]],
- SYSLOG_FACILITY=$with_syslog_facility,
- SYSLOG_FACILITY=none)
-
-dnl INN allows the user and group INN will run as to be specified, as well as
-dnl the user to receive nightly reports and the like. These are all fairly
-dnl similar, so factor the commonality into this macro. Takes the name of
-dnl what we're looking for, the default, the variable to set, the help string,
-dnl and the comment for config.h.
-AC_DEFUN([INN_ARG_USER],
-[AC_ARG_WITH([news-$1], [$4], [$3=$with_news_$1], [$3=$2])
-AC_SUBST($3)
-AC_DEFINE_UNQUOTED($3, "$[$3]", [$5])])
-
-dnl And here they are.
-INN_ARG_USER(user, news, NEWSUSER,
- [ --with-news-user=USER News user name [news]],
- [The user that INN should run as.])
-INN_ARG_USER(group, news, NEWSGRP,
- [ --with-news-group=GROUP News group name [news]],
- [The group that INN should run as.])
-INN_ARG_USER(master, usenet, NEWSMASTER,
- [ --with-news-master=USER News master (address for reports) [usenet]],
- [The user who gets all INN-related e-mail.])
-
-dnl INN defaults to a umask of 002 with the corresponding directory and file
-dnl permissions, mostly for historical reasons. If the user sets the umask to
-dnl something else, change all of the permissions.
-NEWSUMASK=02
-FILEMODE=0664
-DIRMODE=0775
-RUNDIRMODE=0770
-AC_ARG_WITH(news-umask,
- [ --with-news-umask=UMASK umask for news files [002]],
- with_news_umask=`echo "$with_news_umask" | sed 's/^0*//'`
- if test "x$with_news_umask" = x22 ; then
- NEWSUMASK=022
- FILEMODE=0644
- DIRMODE=0755
- RUNDIRMODE=0750
- else
- if test "x$with_news_umask" != x2 ; then
- AC_MSG_ERROR(Valid umasks are 02 or 022)
- fi
- fi)
-AC_SUBST(NEWSUMASK)
-AC_SUBST(FILEMODE)
-AC_SUBST(DIRMODE)
-AC_SUBST(RUNDIRMODE)
-AC_DEFINE_UNQUOTED(ARTFILE_MODE, $FILEMODE,
- [Mode that incoming articles are created with.])
-AC_DEFINE_UNQUOTED(BATCHFILE_MODE, $FILEMODE,
- [Mode that batch files are created with.])
-AC_DEFINE_UNQUOTED(GROUPDIR_MODE, $DIRMODE,
- [Mode that directories are created with.])
-AC_DEFINE_UNQUOTED(NEWSUMASK, $NEWSUMASK,
- [The umask used by all INN programs.])
-
-dnl inews used to be installed setgid, but may not be secure. Only do this if
-dnl it's explicitly requested at configure time.
-INEWSMODE=0550
-AC_ARG_ENABLE(setgid-inews,
- [ --enable-setgid-inews Install inews setgid],
- if test "x$enableval" = xyes ; then
- INEWSMODE=02555
- fi)
-AC_SUBST(INEWSMODE)
-
-dnl rnews used to be installed setuid root so that it could be run by the uucp
-dnl user for incoming batches, but this isn't necessary unless you're using
-dnl UUCP (which most people aren't) and only setuid news is required. Only do
-dnl this if it's explicitly requested at configure time.
-RNEWSGRP=$NEWSGRP
-RNEWSMODE=0500
-AC_ARG_ENABLE(uucp-rnews,
- [ --enable-uucp-rnews Install rnews setuid, group uucp],
- if test "x$enableval" = xyes ; then
- RNEWSGRP=uucp
- RNEWSMODE=04550
- fi)
-AC_SUBST(RNEWSGRP)
-AC_SUBST(RNEWSMODE)
-
-dnl Choose the log compression method; the argument should not be a full path,
-dnl just the name of the compression type.
-AC_ARG_WITH(log-compress,
- [ --with-log-compress=METHOD Log compression method [gzip]],
- LOG_COMPRESS=$with_log_compress,
- LOG_COMPRESS=gzip)
-case "$LOG_COMPRESS" in
-bzip2) LOG_COMPRESSEXT=".bz2" ;;
-gzip) LOG_COMPRESSEXT=".gz" ;;
-*) LOG_COMPRESSEXT=".Z" ;;
-esac
-AC_SUBST(LOG_COMPRESS)
-AC_SUBST(LOG_COMPRESSEXT)
-
-dnl inndstart by default only allows ports 119 and 433 below 1024; if the user
-dnl wants to use some other port as well, they must use this option.
-AC_ARG_WITH(innd-port,
- [ --with-innd-port=PORT Additional low-numbered port for inndstart],
- AC_DEFINE_UNQUOTED(INND_PORT, $with_innd_port,
- [Additional valid low-numbered port for inndstart.]))
-
-dnl By default, we omit all IPv6 support. This option enables it.
-AC_ARG_ENABLE(ipv6,
- [ --enable-ipv6 Enable IPv6 support],
- if test "x$enableval" = xyes ; then
- inn_enable_ipv6_tests=yes
- AC_DEFINE(HAVE_INET6, 1, [Define to enable IPv6 support.])
- fi)
-
-dnl Maximum number of sockets that can be listened on.
-AC_ARG_WITH(max-sockets,
- [ --with-max-sockets=N Maximum number of listening sockets in innd],,
- [with_max_sockets=15])
-AC_DEFINE_UNQUOTED(MAX_SOCKETS, $with_max_sockets,
- [Maximum number of sockets that innd can listen on.])
-
-dnl This will eventually be a runtime option rather than a compile-time
-dnl option.
-AC_ARG_ENABLE(tagged-hash,
- [ --enable-tagged-hash Use tagged hash table for history],
- if test "x$enableval" = xyes ; then
- DO_DBZ_TAGGED_HASH=DO
- AC_DEFINE(DO_TAGGED_HASH, 1,
- [Define to use tagged hash for the history file.])
- else
- DO_DBZ_TAGGED_HASH=DONT
- fi)
-AC_SUBST(DO_DBZ_TAGGED_HASH)
-
-dnl Whether to enable the keyword generation code in innd. Use of this code
-dnl requires a regular expression library, which is checked for later on.
-inn_enable_keywords=0
-AC_ARG_ENABLE(keywords,
- [ --enable-keywords Automatic keyword generation support],
- if test x"$enableval" = xyes ; then
- inn_enable_keywords=1
- fi)
-AC_DEFINE_UNQUOTED(DO_KEYWORDS, $inn_enable_keywords,
- [Define to 1 to compile in support for keyword generation code.])
-
-dnl Whether to use the OS flags to enable large file support. Ideally this
-dnl should just always be turned on if possible and the various parts of INN
-dnl that read off_t's from disk should adjust somehow to the size, but INN
-dnl isn't there yet. Currently tagged hash doesn't work with large file
-dnl support due to assumptions about the size of off_t.
-AC_ARG_ENABLE(largefiles,
- [ --enable-largefiles Support for files larger than 2GB [default=no]],
- [case "${enableval}" in
- yes) inn_enable_largefiles=yes
- if test x"$DO_DBZ_TAGGED_HASH" = xDO ; then
-AC_MSG_ERROR([--enable-tagged-hash conflicts with --enable-largefiles.])
- fi ;;
- no) inn_enable_largefiles=no ;;
- *) AC_MSG_ERROR(invalid argument to --enable-largefiles) ;;
- esac])
-
-dnl Override the automatically detected path to sendmail. Used later on.
-AC_ARG_WITH(sendmail,
- [ --with-sendmail=PATH Path to sendmail],
- SENDMAIL=$with_sendmail)
-
-dnl Specify the path to the Kerberos libraries if the user wants to build
-dnl auth_krb5. Note that we don't search far and wide for the libraries if
-dnl the user doesn't specify the path.
-AC_ARG_WITH(kerberos,
- [ --with-kerberos=PATH Path to Kerberos v5 (for auth_krb5)],
- [if test x"$with_kerberos" != xno ; then
- KRB5_LDFLAGS="-L$with_kerberos/lib"
- KRB5_INC="-I$with_kerberos/include"
- fi])
-
-dnl Checks for embedded interpretors.
-dnl
-dnl FIXME: These should ideally be combined with the later logic to
-dnl determine the version, determine the compiler and linker flags, etc.
-AC_ARG_WITH(perl,
- [ --with-perl Embedded Perl script support [default=no]],
- [case "${withval}" in
- yes) DO_PERL=DO
- AC_DEFINE(DO_PERL, 1, [Define to compile in Perl script support.])
- ;;
- no) DO_PERL=DONT ;;
- *) AC_MSG_ERROR(invalid argument to --with-perl) ;;
- esac],
- DO_PERL=DONT)
-
-AC_ARG_WITH(python,
- [ --with-python Embedded Python module support [default=no]],
- [case "${withval}" in
- yes) DO_PYTHON=define
- AC_DEFINE(DO_PYTHON, 1,
- [Define to compile in Python module support.])
- ;;
- no) DO_PYTHON=DONT ;;
- *) AC_MSG_ERROR(invalid argument to --with-python) ;;
- esac],
- DO_PYTHON=DONT)
-
-dnl Set some configuration file defaults from the machine hostname.
-HOSTNAME=server.example.net
-AC_SUBST(HOSTNAME)
-
-dnl Checks for programs.
-AC_PROG_GCC_TRADITIONAL
-AC_PROG_LEX
-AC_PROG_MAKE_SET
-AC_PROG_RANLIB
-AC_PROG_YACC
-
-dnl On MacOS X Server, -traditional-cpp is needed for gcc for compiling as
-dnl well as preprocessing according to Miro Jurisic <meeroh@meeroh.org>.
-case "$CPP" in
-*-traditional-cpp*)
- CFLAGS="-traditional-cpp $CFLAGS"
- ;;
-esac
-
-case "$host" in
-
-dnl HP-UX's native compiler needs a special flag to turn on ANSI, and needs
-dnl -g on link as well as compile for debugging to work.
-*hpux*)
- if test x"$GCC" != xyes ; then
- dnl Need flag to turn on ANSI.
- CFLAGS="$CFLAGS -Ae"
-
- dnl Need -g on link command for debug to work properly.
- case "$CFLAGS" in
- *-g*)
- LDFLAGS="$LDFLAGS -g"
- ;;
- esac
- fi
- ;;
-
-dnl OSX needs '-multiply_defined suppress'
-*darwin*)
- LDFLAGS="$LDFLAGS -multiply_defined suppress"
- ;;
-
-dnl From Boyd Gerber <gerberb@zenez.com>, needed in some cases to compile
-dnl the bison-generated parser for innfeed.conf.
-*UnixWare*|*unixware*|*-sco3*)
- if test x"$GCC" != xyes ; then
- CFLAGS="$CFLAGS -Kalloca"
- fi
-esac
-
-dnl Checks for pathnames.
-
-dnl See if we have ctags; if so, set CTAGS to its full path plus the -t -w
-dnl options. Otherwise, set CTAGS to echo.
-AC_PATH_PROG(CTAGS, ctags, echo)
-if test x"$CTAGS" != xecho ; then
- CTAGS="$CTAGS -t -w"
-fi
-
-dnl Use INN_PATH_PROG if it's an error not to find a program.
-AC_DEFUN([INN_ENSURE_PATH_PROG],
-[AC_PATH_PROG($1, $2)
-if test -z "${$1}" ; then
- AC_MSG_ERROR($2 was not found in path and is required)
-fi])
-
-INN_ENSURE_PATH_PROG(_PATH_AWK,awk)
-INN_ENSURE_PATH_PROG(_PATH_EGREP,egrep)
-INN_ENSURE_PATH_PROG(_PATH_PERL,perl)
-INN_ENSURE_PATH_PROG(_PATH_SH,sh)
-INN_ENSURE_PATH_PROG(_PATH_SED,sed)
-INN_ENSURE_PATH_PROG(_PATH_SORT,sort)
-AC_PATH_PROGS(_PATH_UUX,uux,uux)
-
-dnl Check for a required version of Perl. The separate shell variable and
-dnl the changequotes are necessary for autoconf 2.13; autoconf 2.50 will
-dnl provide a different interface that will allow this to work correctly.
-changequote(<<,>>)dnl
-inn_perl_command='print $]'
-changequote([,])dnl
-AC_DEFUN([INN_PERL_VERSION],
-[AC_CACHE_CHECK(for Perl version, inn_cv_perl_version,
-[if $_PATH_PERL -e 'require $1;' > /dev/null 2>&1 ; then
- inn_cv_perl_version=`$_PATH_PERL -e "$inn_perl_command"`
-else
- AC_MSG_ERROR(Perl $1 or greater is required)
-fi])])
-
-dnl Embedded Perl requires 5.004. controlchan requires 5.004_03. Other
-dnl things may work with 5.003, but make 5.004_03 the minimum level; anyone
-dnl should really have at least that these days.
-INN_PERL_VERSION(5.004_03)
-
-dnl Look for PGP 5.0's pgpv, then pgp, then pgpgpg (not sure why anyone would
-dnl have pgpgpg and not gpgv, but it doesn't hurt). Separately look for
-dnl GnuPG (which we prefer).
-pgpverify=true
-AC_PATH_PROGS(PATH_GPGV, gpgv)
-AC_PATH_PROGS(_PATH_PGP, pgpv pgp pgpgpg)
-if test -z "$_PATH_PGP" && test -z "$PATH_GPGV" ; then
- pgpverify=false
-fi
-AC_SUBST(pgpverify)
-
-dnl Look for a program that takes an ftp URL as a command line argument and
-dnl retrieves the file to the current directory. Shame we can't also use
-dnl lynx -source; it only writes to stdout. ncftp as of version 3 doesn't
-dnl support this any more (it comes with ncftpget instead), but if someone
-dnl has ncftp and not ncftpget they have an earlier version.
-AC_PATH_PROGS(GETFTP, wget ncftpget ncftp, $prefix/bin/simpleftp)
-
-dnl Look for both compress and gzip, since the UUCP batching scripts require
-dnl both. If we're using a log compression method other than compress or
-dnl gzip, check for it too and make sure whatever log compressor we're using
-dnl exists. If we don't find compress or gzip for the UUCP scripts, just
-dnl use the bare program names in the hope that the path will be better at
-dnl the time the script runs (or that the script will never run).
-case "$LOG_COMPRESS" in
-compress|gzip) ;;
-*) INN_ENSURE_PATH_PROG(LOG_COMPRESS, "$LOG_COMPRESS")
-esac
-AC_PATH_PROG(COMPRESS, compress, compress)
-if test x"$LOG_COMPRESS" = xcompress ; then
- if test x"$COMPRESS" = xcompress ; then
- AC_MSG_ERROR(compress not found but specified for log compression)
- fi
- LOG_COMPRESS="$COMPRESS"
-fi
-AC_PATH_PROG(GZIP, gzip, gzip)
-if test x"$LOG_COMPRESS" = xgzip ; then
- if test x"$GZIP" = xgzip ; then
- AC_MSG_ERROR(gzip not found but specified for log compression)
- fi
- LOG_COMPRESS="$GZIP"
-fi
-
-dnl Figure out what program to use to uncompress .Z files. On systems that
-dnl have gzip but don't have compress, we can use gzip for this purpose and
-dnl should rather than hoping compres will be found at runtime.
-if test x"$COMPRESS" = xcompress && test x"$GZIP" != xgzip ; then
- UNCOMPRESS="$GZIP -d"
-else
- UNCOMPRESS="$COMPRESS -d"
-fi
-AC_SUBST(UNCOMPRESS)
-
-dnl Search for sendmail, checking the path first and then some common
-dnl locations. If --with-sendmail was given, that path overrides.
-if test "${with_sendmail+set}" = set ; then
- AC_MSG_CHECKING(for sendmail)
- AC_MSG_RESULT($SENDMAIL)
-else
- AC_PATH_PROG(SENDMAIL, sendmail, , "/usr/sbin:/usr/lib")
- if test -z "$SENDMAIL" ; then
- AC_MSG_ERROR(sendmail not found, re-run with --with-sendmail)
- fi
-fi
-
-dnl FIXME: innshellvars* wants to know if we have uustat, send-uucp expects
-dnl it to be in the old subst DO/DONT format. Should take a path.
-AC_CHECK_PROG(HAVE_UUSTAT, uustat, DO, DONT)
-AC_SUBST(HAVE_UUSTAT)
-
-dnl If we're compiling with Python support, make sure Python is available.
-if test x"$DO_PYTHON" = xdefine ; then
- INN_ENSURE_PATH_PROG(_PATH_PYTHON, python)
-fi
-
-dnl Search for a particular library, and if found, add that library to the
-dnl specified variable (the third argument) and run the commands given in the
-dnl fourth argument, if any. This is for libraries we don't want to pollute
-dnl LIBS with.
-AC_DEFUN([INN_SEARCH_AUX_LIBS],
-[inn_save_LIBS=$LIBS
-LIBS=${$3}
-AC_SEARCH_LIBS($1, $2,
- [$3=$LIBS
- $4], $5, $6)
-LIBS=$inn_save_LIBS
-AC_SUBST($3)])
-
-dnl Checks for libraries. Use AC_SEARCH_LIBS where possible to avoid
-dnl adding libraries when the function is found in libc. In several
-dnl cases, we explicitly just add the library to LIBS on success rather
-dnl than using default actions so as not to clutter config.h with defines
-dnl we never use.
-
-dnl Check for setproctitle in libc first, then libutil if not found there.
-dnl We have a replacement function if we can't find it, and then we also need
-dnl to check for pstat.
-AC_SEARCH_LIBS(setproctitle, util,
- [AC_DEFINE(HAVE_SETPROCTITLE, 1,
- [Define if you have the setproctitle function.])],
- [LIBOBJS="$LIBOBJS setproctitle.o"
- AC_CHECK_FUNCS(pstat)])
-
-dnl The rat's nest of networking libraries. The common cases are not to
-dnl need any extra libraries, or to need -lsocket -lnsl. We need to avoid
-dnl linking with libnsl unless we need it, though, since on some OSes where
-dnl it isn't necessary it will totally break networking. Unisys also
-dnl includes gethostbyname in libsocket but needs libnsl for socket().
-AC_SEARCH_LIBS(gethostbyname, nsl)
-AC_SEARCH_LIBS(socket, socket, ,
- [AC_CHECK_LIB(nsl, socket, LIBS="$LIBS -lsocket -lnsl", , -lsocket)])
-
-dnl Check for inet_aton. We have our own, but on Solaris the version in
-dnl libresolv is more lenient in ways that Solaris's internal DNS resolution
-dnl code requires, so if we use our own *and* link with libresolv (which may
-dnl be forced by Perl) DNS resolution fails.
-AC_SEARCH_LIBS(inet_aton, resolv)
-
-dnl Search for various additional libraries used by portions of INN.
-INN_SEARCH_AUX_LIBS(crypt, crypt, CRYPT_LIB)
-INN_SEARCH_AUX_LIBS(getspnam, shadow, SHADOW_LIB)
-
-dnl IRIX has a PAM library with the right symbols but no header files suitable
-dnl for use with it, so we have to check the header files first and then only
-dnl if one is found do we check for the library.
-inn_check_pam=1
-AC_CHECK_HEADERS([pam/pam_appl.h], ,
- [AC_CHECK_HEADER([security/pam_appl.h], , [inn_check_pam=0])])
-if test x"$inn_check_pam" = x1; then
- INN_SEARCH_AUX_LIBS([pam_start], [pam], [PAM_LIB],
- [AC_DEFINE([HAVE_PAM], 1, [Define if you have PAM.])])
-fi
-
-dnl If keyword generation support was requested, check for the appropriate
-dnl libraries.
-if test x"$inn_enable_keywords" = x1 ; then
- INN_SEARCH_AUX_LIBS(regexec, regex, REGEX_LIB, ,
- [AC_MSG_ERROR(no usable regular expression library found)])
-fi
-
-dnl Check for whether the user wants to compile with BerkeleyDB, and if so
-dnl what the path to the various components of it is.
-AC_DEFUN([INN_LIB_BERKELEYDB],
-[AC_ARG_WITH(berkeleydb,
- [ --with-berkeleydb[=PATH] Enable BerkeleyDB (for ovdb overview method)],
- BERKELEY_DB_DIR=$with_berkeleydb,
- BERKELEY_DB_DIR=no)
-AC_MSG_CHECKING(if BerkeleyDB is desired)
-if test x"$BERKELEY_DB_DIR" = xno ; then
- AC_MSG_RESULT(no)
- BERKELEY_DB_LDFLAGS=
- BERKELEY_DB_CFLAGS=
- BERKELEY_DB_LIB=
-else
- AC_MSG_RESULT(yes)
- AC_MSG_CHECKING(for BerkeleyDB location)
- if test x"$BERKELEY_DB_DIR" = xyes ; then
- for v in BerkeleyDB BerkeleyDB.3.0 BerkeleyDB.3.1 BerkeleyDB.3.2 \
- BerkeleyDB.3.3 BerkeleyDB.4.0 BerkeleyDB.4.1 BerkeleyDB.4.2 \
- BerkeleyDB.4.3 BerkeleyDB.4.4 BerkeleyDB.4.5 BerkeleyDB.4.6; do
- for d in $prefix /usr/local /opt /usr ; do
- if test -d "$d/$v" ; then
- BERKELEY_DB_DIR="$d/$v"
- break
- fi
- done
- done
- fi
- if test x"$BERKELEY_DB_DIR" = xyes ; then
- for v in db46 db45 db44 db43 db42 db41 db4 db3 db2 ; do
- if test -d "/usr/local/include/$v" ; then
- BERKELEY_DB_LDFLAGS="-L/usr/local/lib"
- BERKELEY_DB_CFLAGS="-I/usr/local/include/$v"
- BERKELEY_DB_LIB="-l$v"
- AC_MSG_RESULT(FreeBSD locations)
- break
- fi
- done
- if test x"$BERKELEY_DB_LIB" = x ; then
- for v in db44 db43 db42 db41 db4 db3 db2 ; do
- if test -d "/usr/include/$v" ; then
- BERKELEY_DB_CFLAGS="-I/usr/include/$v"
- BERKELEY_DB_LIB="-l$v"
- AC_MSG_RESULT(Linux locations)
- break
- fi
- done
- if test x"$BERKELEY_DB_LIB" = x ; then
- BERKELEY_DB_LIB=-ldb
- AC_MSG_RESULT(trying -ldb)
- fi
- fi
- else
- BERKELEY_DB_LDFLAGS="-L$BERKELEY_DB_DIR/lib"
- BERKELEY_DB_CFLAGS="-I$BERKELEY_DB_DIR/include"
- BERKELEY_DB_LIB="-ldb"
- AC_MSG_RESULT($BERKELEY_DB_DIR)
- fi
- AC_DEFINE(USE_BERKELEY_DB, 1, [Define if BerkeleyDB is available.])
-fi
-AC_SUBST(BERKELEY_DB_LDFLAGS)
-AC_SUBST(BERKELEY_DB_CFLAGS)
-AC_SUBST(BERKELEY_DB_LIB)])
-INN_LIB_BERKELEYDB
-
-dnl The dbm libraries are a special case. If we're building with BerkeleyDB,
-dnl just use the ndbm support provided by it.
-if test x"$BERKELEY_DB_LIB" != x ; then
- DBM_INC="$BERKELEY_DB_CFLAGS"
- DBM_LIB="$BERKELEY_DB_LDFLAGS $BERKELEY_DB_LIB"
- AC_SUBST([DBM_LIB])
- AC_DEFINE([HAVE_BDB_DBM], 1,
- [Define if the BerkeleyDB dbm compatibility layer is available.])
-else
- INN_SEARCH_AUX_LIBS([dbm_open], [ndbm dbm], [DBM_LIB],
- [AC_DEFINE([HAVE_DBM], 1, [Define if you have a dbm library.])])
- DBM_INC=
-fi
-AC_SUBST([DBM_INC])
-
-dnl Check for whether the user wants to compile with OpenSSL, and if so what
-dnl the path to the various components of it is.
-AC_DEFUN([INN_LIB_OPENSSL],
-[AC_ARG_WITH(openssl,
- [ --with-openssl=PATH Enable OpenSSL (for NNTP over SSL support)],
- OPENSSL_DIR=$with_openssl,
- OPENSSL_DIR=no)
-AC_MSG_CHECKING(if OpenSSL is desired)
-if test x"$OPENSSL_DIR" = xno ; then
- AC_MSG_RESULT(no)
- SSL_BIN=
- SSL_INC=
- SSL_LIB=
-else
- AC_MSG_RESULT(yes)
- AC_MSG_CHECKING(for OpenSSL location)
- if test x"$OPENSSL_DIR" = xyes ; then
- for dir in $prefix /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg \
- /usr/local /usr ; do
- if test -f "$dir/include/openssl/ssl.h" ; then
- OPENSSL_DIR=$dir
- break
- fi
- done
- fi
- if test x"$OPENSSL_DIR" = xyes ; then
- AC_MSG_ERROR(Can not find OpenSSL)
- else
- AC_MSG_RESULT($OPENSSL_DIR)
- SSL_BIN="${OPENSSL_DIR}/bin"
- SSL_INC="-I${OPENSSL_DIR}/include"
-
- # This is mildly tricky. In order to satisfy most linkers, libraries
- # have to be listed in the right order, which means that libraries
- # with dependencies on other libraries need to be listed first. But
- # the -L flag for the OpenSSL library directory needs to go first of
- # all. So put the -L flag into LIBS and accumulate actual libraries
- # into SSL_LIB, and then at the end, restore LIBS and move -L to the
- # beginning of SSL_LIB.
- inn_save_LIBS=$LIBS
- LIBS="$LIBS -L${OPENSSL_DIR}/lib"
- SSL_LIB=''
- AC_CHECK_LIB(rsaref, RSAPublicEncrypt,
- [AC_CHECK_LIB(RSAglue, RSAPublicEncrypt,
- [SSL_LIB="-lRSAglue -lrsaref"], , -lrsaref)])
- AC_CHECK_LIB(crypto, BIO_new,
- [AC_CHECK_LIB(dl, DSO_load,
- SSL_LIB="-lcrypto -ldl $SSL_LIB",
- SSL_LIB="-lcrypto $SSL_LIB",
- -lcrypto -ldl $SSL_LIB)],
- [AC_MSG_ERROR(Can not find OpenSSL)],
- $SSL_LIB)
- AC_CHECK_LIB(ssl, SSL_library_init,
- [SSL_LIB="-lssl $SSL_LIB"],
- [AC_MSG_ERROR(Can not find OpenSSL)],
- $SSL_LIB)
- SSL_LIB="-L${OPENSSL_DIR}/lib $SSL_LIB"
- LIBS=$inn_save_LIBS
- AC_DEFINE(HAVE_SSL, 1, [Define if OpenSSL is available.])
- fi
-fi
-AC_SUBST(SSL_BIN)
-AC_SUBST(SSL_INC)
-AC_SUBST(SSL_LIB)])
-INN_LIB_OPENSSL
-
-dnl Check for whether the user wants to compile with SASL, and if so what
-dnl the path to the various components of it is.
-AC_DEFUN([INN_LIB_SASL],
-[AC_ARG_WITH(sasl,
- [ --with-sasl=PATH Enable SASL (for imapfeed authentication)],
- SASL_DIR=$with_sasl,
- SASL_DIR=no)
-AC_MSG_CHECKING(if SASL is desired)
-if test x"$SASL_DIR" = xno ; then
- AC_MSG_RESULT(no)
- SASL_INC=
- SASL_LIB=
-else
- AC_MSG_RESULT(yes)
- AC_MSG_CHECKING(for SASL location)
- if test x"$SASL_DIR" = xyes ; then
- for dir in $prefix /usr/local/sasl /usr/sasl /usr/pkg /usr/local ; do
- if test -f "$dir/include/sasl/sasl.h" ; then
- SASL_DIR=$dir
- break
- fi
- done
- fi
- if test x"$SASL_DIR" = xyes ; then
- if test -f "/usr/include/sasl/sasl.h" ; then
- SASL_INC=-I/usr/include/sasl
- SASL_DIR=/usr
- AC_MSG_RESULT($SASL_DIR)
- inn_save_LIBS=$LIBS
- AC_CHECK_LIB(sasl2, sasl_getprop,
- [SASL_LIB=-lsasl2], [AC_MSG_ERROR(Can not find SASL)])
- LIBS=$inn_save_LIBS
- AC_DEFINE(HAVE_SASL, 1, [Define if SASL is available.])
- else
- AC_MSG_ERROR(Can not find SASL)
- fi
- else
- AC_MSG_RESULT($SASL_DIR)
- SASL_INC="-I${SASL_DIR}/include"
-
- inn_save_LIBS=$LIBS
- LIBS="$LIBS -L${SASL_DIR}/lib"
- AC_CHECK_LIB(sasl2, sasl_getprop,
- [SASL_LIB="-L${SASL_DIR}/lib -lsasl2"],
- [AC_MSG_ERROR(Can not find SASL)],)
- LIBS=$inn_save_LIBS
- AC_DEFINE(HAVE_SASL, 1, [Define if SASL is available.])
- fi
-fi
-AC_SUBST(SASL_INC)
-AC_SUBST(SASL_LIB)])
-INN_LIB_SASL
-
-dnl Check for Kerberos libraries for auth_krb5, and if found define KRB5_AUTH
-dnl to the relevant object file, which will enable compilation of it.
-if test x"$KRB5_INC" != x ; then
- INN_SEARCH_AUX_LIBS(krb5_parse_name, krb5, KRB5_LIB,
- [KRB5_AUTH="auth_krb5"
- KRB5_LIB="$KRB5_LDFLAGS $KRB5_LIB -lk5crypto -lcom_err"
- AC_SUBST(KRB5_AUTH)
- AC_SUBST(KRB5_INC)
- AC_CHECK_HEADERS([et/com_err.h])], , [$LIBS -lk5crypto -lcom_err])
-fi
-
-dnl Check for necessity of krb5_init_ets
-dnl OSX does not require this function
-if test x"$KRB5_INC" != x ; then
- inn_save_LIBS=$LIBS
- LIBS=$KRB5_LIB
- AC_CHECK_FUNCS(krb5_init_ets)
- LIBS=$inn_save_LIBS
-fi
-
-dnl Libraries and flags for embedded Perl. Some distributions of Linux have
-dnl Perl linked with gdbm but don't normally have gdbm installed, so on that
-dnl platform only strip -lgdbm out of the Perl libraries. Leave it in on
-dnl other platforms where it may be necessary (it isn't on Linux; Linux
-dnl shared libraries can manage their own dependencies). Strip -lc out, which
-dnl is added on some platforms, is unnecessary, and breaks compiles with
-dnl -pthread (which may be added by Python).
-dnl
-dnl If we aren't compiling with large-file support, strip out the large file
-dnl flags from inn_perl_core_flags; otherwise, innd/cc.c and lib/qio.c
-dnl disagree over the size of an off_t. Since none of our calls into Perl
-dnl use variables of type off_t, this should be harmless; in any event, it's
-dnl going to be better than the innd/cc.c breakage.
-if test x"$DO_PERL" = xDO ; then
- AC_MSG_CHECKING(for Perl linkage)
- inn_perl_core_path=`$_PATH_PERL -MConfig -e 'print $Config{archlibexp}'`
- inn_perl_core_flags=`$_PATH_PERL -MExtUtils::Embed -e ccopts`
- inn_perl_core_libs=`$_PATH_PERL -MExtUtils::Embed -e ldopts 2>&1 | tail -1`
- inn_perl_core_libs=" $inn_perl_core_libs "
- inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ -lc / /'`
- for i in $LIBS ; do
- inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed "s/ $i / /"`
- done
- case $host in
- *-linux*)
- inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ -lgdbm / /'`
- ;;
- *-cygwin*)
- inn_perl_libname=`$_PATH_PERL -MConfig -e 'print $Config{libperl}'`
- inn_perl_libname=`echo "$inn_perl_libname" | sed 's/^lib//; s/\.a$//'`
- inn_perl_core_libs="${inn_perl_core_libs}-l$inn_perl_libname"
- ;;
- esac
- inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/^ *//'`
- inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ *$//'`
- inn_perl_core_flags=" $inn_perl_core_flags "
- if test x"$inn_enable_largefiles" != xyes ; then
- for f in -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES ; do
- inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed "s/ $f / /"`
- done
- fi
- inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/^ *//'`
- inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/ *$//'`
- PERL_INC="$inn_perl_core_flags"
- PERL_LIB="$inn_perl_core_libs"
- AC_MSG_RESULT($inn_perl_core_path)
-else
- PERL_INC=''
- PERL_LIB=''
-fi
-AC_SUBST(PERL_INC)
-AC_SUBST(PERL_LIB)
-
-dnl Libraries and flags for embedded Python.
-dnl
-dnl FIXME: I wish there was a less icky way to get this.
-if test x"$DO_PYTHON" = xdefine ; then
- AC_MSG_CHECKING(for Python linkage)
- py_prefix=`$_PATH_PYTHON -c 'import sys; print sys.prefix'`
- py_ver=`$_PATH_PYTHON -c 'import sys; print sys.version[[:3]]'`
- py_libdir="${py_prefix}/lib/python${py_ver}"
- PYTHON_INC="-I${py_prefix}/include/python${py_ver}"
- py_linkage=""
- for py_linkpart in LIBS LIBC LIBM LOCALMODLIBS BASEMODLIBS \
- LINKFORSHARED LDFLAGS ; do
- py_linkage="$py_linkage "`grep "^${py_linkpart}=" \
- $py_libdir/config/Makefile \
- | sed -e 's/^.*=//'`
- done
- PYTHON_LIB="-L$py_libdir/config -lpython$py_ver $py_linkage"
- PYTHON_LIB=`echo $PYTHON_LIB | sed -e 's/[ \\t]*/ /g'`
- AC_MSG_RESULT($py_libdir)
-else
- PYTHON_LIB=""
- PYTHON_INC=""
-fi
-AC_SUBST(PYTHON_LIB)
-AC_SUBST(PYTHON_INC)
-
-dnl If configuring with large file support, determine the right flags to
-dnl use based on the platform. This is the wrong approach; autoconf 2.50
-dnl comes with a macro that takes the right approach. But this works well
-dnl enough until we switch to autoconf 2.50 or later.
-if test x"$inn_enable_largefiles" = xyes ; then
- AC_MSG_CHECKING(for largefile linkage)
- case "$host" in
- *-aix4.[01]*)
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([AIX before 4.2 does not support large files])
- ;;
- *-aix4*)
- AC_MSG_RESULT(ok)
- LFS_CFLAGS="-D_LARGE_FILES"
- LFS_LDFLAGS=""
- LFS_LIBS=""
- ;;
- *-hpux*)
- AC_MSG_RESULT(ok)
- LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
- LFS_LDFLAGS=""
- LFS_LIBS=""
- ;;
- *-irix*)
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([Large files not supported on this platform])
- ;;
- *-linux*)
- AC_MSG_RESULT(maybe)
- LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
- LFS_LDFLAGS=""
- LFS_LIBS=""
- AC_DEFINE([_GNU_SOURCE], 1,
- [Some versions of glibc need this defined for pread/pwrite.])
- ;;
- *-solaris*)
- AC_MSG_RESULT(ok)
- AC_PATH_PROG(GETCONF, getconf)
- if test -z "$GETCONF" ; then
- AC_MSG_ERROR([getconf required to configure large file support])
- fi
- LFS_CFLAGS=`$GETCONF LFS_CFLAGS`
- LFS_LDFLAGS=`$GETCONF LFS_LDFLAGS`
- LFS_LIBS=`$GETCONF LFS_LIBS`
- ;;
- *)
- AC_MSG_RESULT(maybe)
- LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
- LFS_LDFLAGS=""
- LFS_LIBS=""
- ;;
- esac
- AC_SUBST(LFS_CFLAGS)
- AC_SUBST(LFS_LDFLAGS)
- AC_SUBST(LFS_LIBS)
-fi
-
-dnl Start by checking for standard C headers. AC_HEADER_STDC will set
-dnl STDC_HEADERS if stdlib.h, stdarg.h, string.h, and float.h all exist, if
-dnl memchr (and probably the other mem functions) is in string.h, if free (and
-dnl probably malloc and friends) are in stdlib.h, and if ctype.h will work on
-dnl high-bit characters.
-AC_HEADER_STDC
-
-dnl Only if that wasn't set do we need to go hunting for other headers to
-dnl include on non-ANSI systems and check for functions that all ANSI C
-dnl systems should have.
-if test x"$ac_cv_header_stdc" = xno ; then
- AC_CHECK_HEADERS(memory.h stdlib.h strings.h)
- AC_CHECK_FUNCS(memcpy strchr)
-fi
-
-dnl Special checks for header files.
-AC_HEADER_DIRENT
-AC_HEADER_TIME
-AC_HEADER_SYS_WAIT
-
-dnl Generic checks for header files.
-AC_CHECK_HEADERS(crypt.h inttypes.h limits.h ndbm.h pam/pam_appl.h stdbool.h \
- stddef.h stdint.h string.h sys/bitypes.h sys/filio.h \
- sys/loadavg.h sys/param.h sys/select.h sys/sysinfo.h \
- sys/time.h unistd.h sys/inotify.h)
-
-dnl Some Linux systems have db1/ndbm.h instead of ndbm.h. Others have
-dnl gdbm-ndbm.h.
-if test x"$ac_cv_header_ndbm_h" = xno ; then
- AC_CHECK_HEADERS(db1/ndbm.h gdbm-ndbm.h)
-fi
-
-dnl Check to see if herrno is declared.
-AC_DEFUN([INN_NEED_HERRNO_DECLARATION],
-[AC_CACHE_CHECK([whether h_errno must be declared], inn_cv_herrno_need_decl,
-[AC_TRY_COMPILE([#include <netdb.h>], [h_errno = 0;],
- inn_cv_herrno_need_decl=no,
- inn_cv_herrno_need_decl=yes)])
-if test "$inn_cv_herrno_need_decl" = yes ; then
- AC_DEFINE([NEED_HERRNO_DECLARATION], 1,
- [Define if <netdb.h> does not declare h_errno.])
-fi])
-INN_NEED_HERRNO_DECLARATION
-
-dnl The set of standard includes, used for checking if functions need to be
-dnl declared and for tests that need to use standard functions.
-define([_INN_HEADER_SOURCE],
-[#include <stdio.h>
-#include <sys/types.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-# if !HAVE_STRCHR
-# define strchr index
-# define strrchr rindex
-# endif
-#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#else
-# if HAVE_STRINGS_H
-# include <strings.h>
-# endif
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif])
-
-dnl See if a given function needs a declaration by seeing if we can access a
-dnl function pointer for that function. This is done in a really ugly way
-dnl with hacks so that autoheader will pick up the defines properly; it's a
-dnl stop-gap solution until switching to autoconf 2.50.
-AC_DEFUN([INN_NEED_DECLARATION],
-[AC_MSG_CHECKING([whether $1 must be declared])
-AC_CACHE_VAL([inn_cv_decl_needed_$1],
-[AC_TRY_COMPILE(
-_INN_HEADER_SOURCE()
-[$3],
-[char *(*pfn) = (char *(*)) $1],
-[inn_cv_decl_needed_$1=no], [inn_cv_decl_needed_$1=yes])])
-if test $inn_cv_decl_needed_$1 = yes ; then
- AC_MSG_RESULT(yes)
- AC_DEFINE($2, 1, [Define if $1 isn't declared in the system headers.])
-else
- AC_MSG_RESULT(no)
-fi])
-INN_NEED_DECLARATION(inet_aton, [NEED_DECLARATION_INET_ATON],
-[#include <netinet/in.h>
-#include <arpa/inet.h>])
-INN_NEED_DECLARATION(inet_ntoa, [NEED_DECLARATION_INET_NTOA],
-[#include <netinet/in.h>
-#include <arpa/inet.h>])
-INN_NEED_DECLARATION(snprintf, [NEED_DECLARATION_SNPRINTF])
-INN_NEED_DECLARATION(vsnprintf, [NEED_DECLARATION_VSNPRINTF])
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_BIGENDIAN
-AC_C_CONST
-AC_STRUCT_ST_BLKSIZE
-AC_STRUCT_TM
-AC_TYPE_SIZE_T
-AC_TYPE_UID_T
-AC_TYPE_OFF_T
-AC_TYPE_PID_T
-AC_CHECK_TYPE(ptrdiff_t, long)
-AC_CHECK_TYPE(ssize_t, int)
-
-dnl Check for ISO C99 variadic macro support in the compiler.
-AC_DEFUN([INN_C_C99_VAMACROS],
-[AC_CACHE_CHECK(for C99 variadic macros, inn_cv_c_c99_vamacros,
-[AC_TRY_COMPILE(
-[#include <stdio.h>
-#define error(...) fprintf(stderr, __VA_ARGS__)],
-[error("foo"); error("foo %d", 0); return 0;],
-[inn_cv_c_c99_vamacros=yes], [inn_cv_c_c99_vamacros=no])])
-if test $inn_cv_c_c99_vamacros = yes ; then
- AC_DEFINE(HAVE_C99_VAMACROS, 1,
- [Define if the compiler supports C99 variadic macros.])
-fi])
-INN_C_C99_VAMACROS
-
-dnl Check for GNU-style variadic macro support in the compiler.
-AC_DEFUN([INN_C_GNU_VAMACROS],
-[AC_CACHE_CHECK(for GNU-style variadic macros, inn_cv_c_gnu_vamacros,
-[AC_TRY_COMPILE(
-[#include <stdio.h>
-#define error(args...) fprintf(stderr, args)],
-[error("foo"); error("foo %d", 0); return 0;],
-[inn_cv_c_gnu_vamacros=yes], [inn_cv_c_gnu_vamacros=no])])
-if test $inn_cv_c_gnu_vamacros = yes ; then
- AC_DEFINE(HAVE_GNU_VAMACROS, 1,
- [Define if the compiler supports GNU-style variadic macros.])
-fi])
-INN_C_GNU_VAMACROS
-
-dnl Check for long long int, and define HAVE_LONG_LONG if the compiler
-dnl supports it.
-AC_DEFUN([INN_C_LONG_LONG],
-[AC_CACHE_CHECK(for long long int, inn_cv_c_long_long,
-[AC_TRY_COMPILE(, [long long int i;],
- inn_cv_c_long_long=yes,
- inn_cv_c_long_long=no)])
-if test $inn_cv_c_long_long = yes ; then
- AC_DEFINE(HAVE_LONG_LONG, 1,
- [Define if the compiler supports long long int.])
-fi])
-INN_C_LONG_LONG
-
-dnl From Paul D. Smith <psmith@baynetworks.com> on the autoconf mailing list,
-dnl this is a version of AC_CHECK_TYPE that allows specification of additional
-dnl headers. It's a modified version of the standard autoconf macro.
-AC_DEFUN([INN_CHECK_TYPE],
-[AC_REQUIRE([AC_HEADER_STDC])
-AC_MSG_CHECKING(for $1)
-AC_CACHE_VAL(ac_cv_type_$1,
-[AC_EGREP_CPP(dnl
-changequote(<<, >>)dnl
-<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl
-changequote([, ]),
-[#include <sys/types.h>
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#endif
-$3],
- ac_cv_type_$1=yes,
- ac_cv_type_$1=no
-)])
-AC_MSG_RESULT($ac_cv_type_$1)
-if test x"$ac_cv_type_$1" = xno ; then
- AC_DEFINE_UNQUOTED($1, $2)
-fi])
-
-INN_CHECK_TYPE(sig_atomic_t, int, [#include <signal.h>])
-INN_CHECK_TYPE(socklen_t, int, [#include <sys/socket.h>])
-
-dnl Source used by INN_MACRO_IOV_MAX.
-define([_INN_MACRO_IOV_MAX_SOURCE],
-[[#include <sys/types.h>
-#include <stdio.h>
-#include <sys/uio.h>
-#include <errno.h>
-#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-int
-main ()
-{
- int fd, size;
- struct iovec array[1024];
- char data;
-
- FILE *f = fopen ("conftestval", "w");
- if (!f) return 1;
-#ifdef IOV_MAX
- fprintf (f, "set in limits.h\n");
-#else
-# ifdef UIO_MAXIOV
- fprintf (f, "%d\n", UIO_MAXIOV);
-# else
- fd = open ("/dev/null", O_WRONLY, 0666);
- if (fd < 0) return 1;
- for (size = 1; size <= 1024; size++)
- {
- array[size - 1].iov_base = &data;
- array[size - 1].iov_len = sizeof data;
- if (writev (fd, array, size) < 0)
- {
- if (errno != EINVAL) return 1;
- fprintf(f, "%d\n", size - 1);
- exit (0);
- }
- }
- fprintf (f, "1024\n");
-# endif /* UIO_MAXIOV */
-#endif /* IOV_MAX */
- return 0;
-}]])
-
-dnl Check for the number of elements in an iovec (IOV_MAX). SVr4 systems
-dnl appear to use that name for this limit (checked Solaris 2.6, IRIX 6.5, and
-dnl HP-UX 11.00). Linux doesn't have it, but instead has UIO_MAXIOV defined
-dnl in <iovec.h> included from <sys/uio.h>. The platforms that have IOV_MAX
-dnl appear to also offer it via sysconf(3), but it should be a constant for a
-dnl given implementation. Set IOV_MAX if it's not defined in <sys/uio.h> or
-dnl <limits.h>.
-AC_DEFUN([INN_MACRO_IOV_MAX],
-[AC_CACHE_CHECK([value of IOV_MAX], [inn_cv_macro_iov_max],
-[AC_TRY_RUN(_INN_MACRO_IOV_MAX_SOURCE(),
- inn_cv_macro_iov_max=`cat conftestval`,
- inn_cv_macro_iov_max=error, 16)
-if test x"$inn_cv_macro_iov_max" = xerror ; then
- AC_MSG_WARN([probe failure, assuming 16])
- inn_cv_macro_iov_max=16
-fi])
-if test x"$inn_cv_macro_iov_max" != x"set in limits.h" ; then
- AC_DEFINE_UNQUOTED(IOV_MAX, $inn_cv_macro_iov_max,
- [Define to the max vectors in an iovec.])
-fi])
-INN_MACRO_IOV_MAX
-
-dnl Check for SUN_LEN (size of a Unix domain socket struct, macro required
-dnl POSIX.1g but not that widespread yet).
-AC_DEFUN([INN_MACRO_SUN_LEN],
-[AC_CACHE_CHECK(for SUN_LEN, inn_cv_macro_sun_len,
-[AC_TRY_LINK(
-[#include <sys/types.h>
-#include <sys/un.h>],
-[struct sockaddr_un sun;
-int i;
-
-i = SUN_LEN(&sun);],
- inn_cv_macro_sun_len=yes,
- inn_cv_macro_sun_len=no)])
-if test x"$inn_cv_macro_sun_len" = xyes ; then
- AC_DEFINE(HAVE_SUN_LEN, 1,
- [Define if <sys/un.h> defines the SUN_LEN macro.])
-fi])
-INN_MACRO_SUN_LEN
-
-dnl BSD hosts have a tm_gmtoff element in struct tm containing the offset from
-dnl GMT/UTC for that time. This is the strongly preferred way of getting time
-dnl zone information.
-AC_DEFUN([INN_STRUCT_TM_GMTOFF],
-[AC_CACHE_CHECK(for tm_gmtoff in struct tm, inn_cv_struct_tm_gmtoff,
-[AC_TRY_LINK([#include <time.h>],
- [struct tm t; t.tm_gmtoff = 3600],
- inn_cv_struct_tm_gmtoff=yes,
- inn_cv_struct_tm_gmtoff=no)])
-if test x"$inn_cv_struct_tm_gmtoff" = xyes ; then
- AC_DEFINE([HAVE_TM_GMTOFF], 1,
- [Define if your struct tm has a tm_gmtoff member.])
-fi])
-INN_STRUCT_TM_GMTOFF
-
-dnl BSD hosts have the name of the local time zone in struct tm, which is much
-dnl nicer to use than the tzname variable (and also potentially handles
-dnl renamings of the time zone in the past).
-AC_DEFUN([INN_STRUCT_TM_ZONE],
-[AC_CACHE_CHECK(for tm_zone in struct tm, inn_cv_struct_tm_zone,
-[AC_TRY_LINK([#include <time.h>],
- [struct tm t; t.tm_zone = "UTC"],
- inn_cv_struct_tm_zone=yes,
- inn_cv_struct_tm_zone=no)])
-if test x"$inn_cv_struct_tm_zone" = xyes ; then
- AC_DEFINE([HAVE_TM_ZONE], 1,
- [Define if your struct tm has a tm_zone member.])
-fi])
-INN_STRUCT_TM_ZONE
-
-dnl Many System V hosts have an external variable timezone containing the
-dnl offset of local time from GMT/UTC. We can use this for the timezone
-dnl offset for current time, although it's not usable for anything else.
-dnl Unfortunately, some BSD varients have a function named timezone instead.
-dnl HP-UX has timezone but doesn't have altzone, which isn't good enough.
-AC_DEFUN([INN_VAR_TIMEZONE],
-[AC_CACHE_CHECK(for timezone variable, inn_cv_var_timezone,
-[AC_TRY_LINK([#include <time.h>], [timezone = 3600; altzone = 7200],
- inn_cv_var_timezone=yes,
- inn_cv_var_timezone=no)])
-if test x"$inn_cv_var_timezone" = xyes ; then
- AC_DEFINE([HAVE_VAR_TIMEZONE], 1,
- [Define if timezone is an external variable in <time.h>.])
-fi])
-INN_VAR_TIMEZONE
-
-dnl Many System V hosts and some BSD systems have an external variable tzname
-dnl containing the abbreviations of the main and alternate time zone. We can
-dnl use these as a reasonable approximation of the correct time zone names,
-dnl although they could be incorrect if the time zone name has changed in the
-dnl past.
-AC_DEFUN([INN_VAR_TZNAME],
-[AC_CACHE_CHECK(for tzname variable, inn_cv_var_tzname,
-[AC_TRY_LINK([#include <time.h>], [*tzname = "UTC"],
- inn_cv_var_tzname=yes,
- inn_cv_var_tzname=no)])
-if test x"$inn_cv_var_tzname" = xyes ; then
- AC_DEFINE([HAVE_VAR_TZNAME], 1,
- [Define if tzname is an external variable in <time.h>.])
-fi])
-INN_VAR_TZNAME
-
-dnl A modified version of AC_CHECK_SIZEOF that doesn't always AC_DEFINE, but
-dnl instead lets you execute shell code based on success or failure. This is
-dnl to avoid config.h clutter.
-AC_DEFUN(INN_IF_SIZEOF,
-[changequote(<<, >>)dnl
-dnl The name to #define.
-define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
-dnl The cache variable name.
-define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
-changequote([, ])dnl
-AC_MSG_CHECKING(size of $1)
-AC_CACHE_VAL(AC_CV_NAME,
-[AC_TRY_RUN([#include <stdio.h>
-main()
-{
- FILE *f = fopen("conftestval", "w");
- if (!f) exit(1);
- fprintf(f, "%d\n", sizeof($1));
- exit(0);
-}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0,
-ifelse([$2], , , AC_CV_NAME=$2))
-])dnl
-AC_MSG_RESULT($AC_CV_NAME)
-if test x"$AC_CV_NAME" = x"$3" ; then
- ifelse([$4], , :, [$4])
-else
- ifelse([$5], , :, [$5])
-fi
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-])
-
-dnl Find a 32 bit type, by trying likely candidates. First, check for the C9X
-dnl int32_t, then look for something else with a size of four bytes.
-INN_IF_SIZEOF(int, 4, 4, INN_INT32=int,
- [INN_IF_SIZEOF(long, 4, 4, INN_INT32=long,
- [INN_IF_SIZEOF(short, 2, 4, INN_INT32=short)])])
-INN_CHECK_TYPE(int32_t, $INN_INT32,
-[#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_SYS_BITYPES_H
-# include <sys/bitypes.h>
-#endif
-])
-
-dnl Figure out the unsigned version.
-INN_CHECK_TYPE(uint32_t, unsigned $INN_INT32,
-[#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_SYS_BITYPES_H
-# include <sys/bitypes.h>
-#endif
-])
-
-dnl Checks for library functions.
-AC_FUNC_MEMCMP
-AC_TYPE_SIGNAL
-
-dnl Source used by INN_FUNC_INET_NTOA
-define([_INN_FUNC_INET_NTOA_SOURCE],
-[#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#if STDC_HEADERS || HAVE_STRING_H
-# include <string.h>
-#endif
-
-int
-main ()
-{
- struct in_addr in;
- in.s_addr = htonl (0x7f000000L);
- return (!strcmp (inet_ntoa (in), "127.0.0.0") ? 0 : 1);
-}])
-
-dnl Check whether inet_ntoa is present and working. Since calling inet_ntoa
-dnl involves passing small structs on the stack, present and working versions
-dnl may still not function with gcc on some platforms (such as IRIX).
-AC_DEFUN([INN_FUNC_INET_NTOA],
-[AC_CACHE_CHECK(for working inet_ntoa, inn_cv_func_inet_ntoa_works,
-[AC_TRY_RUN(_INN_FUNC_INET_NTOA_SOURCE(),
- [inn_cv_func_inet_ntoa_works=yes],
- [inn_cv_func_inet_ntoa_works=no],
- [inn_cv_func_inet_ntoa_works=no])])
-if test "$inn_cv_func_inet_ntoa_works" = yes ; then
- AC_DEFINE([HAVE_INET_NTOA], 1,
- [Define if your system has a working inet_ntoa function.])
-else
- LIBOBJS="$LIBOBJS inet_ntoa.${ac_objext}"
-fi])
-INN_FUNC_INET_NTOA
-
-dnl Check whether sockaddr structs have sa_len fields
-AC_DEFUN([INN_SOCKADDR_SA_LEN],
-[AC_CACHE_CHECK(whether struct sockaddr has sa_len,
- inn_cv_struct_sockaddr_sa_len,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>],
- [struct sockaddr sa; int x = sa.sa_len;],
- [inn_cv_struct_sockaddr_sa_len=yes],
- [inn_cv_struct_sockaddr_sa_len=no])])
-if test "$inn_cv_struct_sockaddr_sa_len" = yes ; then
- AC_DEFINE([HAVE_SOCKADDR_LEN],1,
- [Define if your system has a sa_len field in struct sockaddr])
-fi])
-INN_SOCKADDR_SA_LEN
-
-dnl Check whether we have an SA_LEN macro available to us
-AC_DEFUN([INN_SA_LEN_MACRO],
-[AC_CACHE_CHECK(for SA_LEN(s) macro, inn_cv_sa_len_macro,
- [AC_TRY_LINK(
- [#include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>],
- [struct sockaddr sa; int x = SA_LEN(&sa);],
- [inn_cv_sa_len_macro=yes],
- [inn_cv_sa_len_macro=no])])
-if test "$inn_cv_sa_len_macro" = yes ; then
- AC_DEFINE([HAVE_SA_LEN_MACRO],1,
- [Define if your system has a SA_LEN(s) macro])
-fi])
-INN_SA_LEN_MACRO
-
-dnl Check to see how struct sockaddr_storage members are named.
-dnl *** Called from INN_SOCKADDR_STORAGE
-AC_DEFUN([INN_2553_SS_FAMILY],
-[AC_CACHE_CHECK(for RFC 2553 style sockaddr_storage member names,
- inn_cv_2553_ss_family,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>],
- [struct sockaddr_storage ss; int x=ss.ss_family;],
- [inn_cv_2553_ss_family=no],
- [inn_cv_2553_ss_family=yes])])
-if test "$inn_cv_2553_ss_family" = yes ; then
- AC_DEFINE([HAVE_2553_STYLE_SS_FAMILY],1,
- [Define if your system has sockaddr_storage.__ss_family])
-fi])
-
-dnl Check whether we have struct sockaddr_storage as defined by RFC 2553,
-dnl or whether we should define it ourselves.
-AC_DEFUN([INN_SOCKADDR_STORAGE],
-[AC_CACHE_CHECK(for struct sockaddr_storage, inn_cv_struct_sockaddr_storage,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>],
- [struct sockaddr_storage ss;],
- [inn_cv_struct_sockaddr_storage=yes],
- [inn_cv_struct_sockaddr_storage=no])])
-if test "$inn_cv_struct_sockaddr_storage" = yes ; then
- AC_DEFINE([HAVE_SOCKADDR_STORAGE],1,
- [Define if your system has struct sockaddr_storage])
- INN_2553_SS_FAMILY
-fi])
-INN_SOCKADDR_STORAGE
-
-dnl Source used by INN_IN6_EQ_BROKEN
-dnl Test borrowed from a bug report by tmoestl@gmx.net for glibc
-define([_INN_IN6_EQ_BROKEN_SOURCE],
-[#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-int
-main ()
-{
- struct in6_addr a;
- struct in6_addr b;
-
- inet_pton(AF_INET6,"fe80::1234:5678:abcd",&a);
- inet_pton(AF_INET6,"fe80::1234:5678:abcd",&b);
- return IN6_ARE_ADDR_EQUAL(&a,&b) ? 0 : 1;
-}])
-
-dnl Checks whether IN6_ARE_ADDR_EQUAL macro is broken (glibc 2.1.3 is)
-dnl *** only run if we're building for IPv6 (--enable-ipv6)
-AC_DEFUN([INN_IN6_EQ_BROKEN],
-[AC_CACHE_CHECK(whether IN6_ARE_ADDR_EQUAL macro is broken,
- inn_cv_in6_are_addr_equal_broken,
- [AC_TRY_RUN(_INN_IN6_EQ_BROKEN_SOURCE,
- inn_cv_in6_are_addr_equal_broken=no,
- inn_cv_in6_are_addr_equal_broken=yes,
- inn_cv_in6_are_addr_equal_broken=no)])
-if test "$inn_cv_in6_are_addr_equal_broken" = yes ; then
- AC_DEFINE([HAVE_BROKEN_IN6_ARE_ADDR_EQUAL],1,
- [Define if your IN6_ARE_ADDR_EQUAL macro is broken])
-fi])
-if test "$inn_enable_ipv6_tests" = yes ; then
- INN_IN6_EQ_BROKEN
-fi
-
-dnl Source used by INN_FUNC_SNPRINTF.
-define([_INN_FUNC_SNPRINTF_SOURCE],
-[[#include <stdio.h>
-#include <stdarg.h>
-
-char buf[2];
-
-int
-test (char *format, ...)
-{
- va_list args;
- int count;
-
- va_start (args, format);
- count = vsnprintf (buf, sizeof buf, format, args);
- va_end (args);
- return count;
-}
-
-int
-main ()
-{
- return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
- && snprintf(NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
-}]])
-
-dnl Check for a working snprintf. Some systems have snprintf, but it doesn't
-dnl null-terminate if the buffer isn't large enough or it returns -1 if the
-dnl string doesn't fit instead of returning the number of characters that
-dnl would have been formatted.
-AC_DEFUN([INN_FUNC_SNPRINTF],
-[AC_CACHE_CHECK(for working snprintf, inn_cv_func_snprintf_works,
-[AC_TRY_RUN(_INN_FUNC_SNPRINTF_SOURCE(),
- [inn_cv_func_snprintf_works=yes],
- [inn_cv_func_snprintf_works=no],
- [inn_cv_func_snprintf_works=no])])
-if test "$inn_cv_func_snprintf_works" = yes ; then
- AC_DEFINE([HAVE_SNPRINTF], 1,
- [Define if your system has a working snprintf function.])
-else
- LIBOBJS="$LIBOBJS snprintf.${ac_objext}"
-fi])
-INN_FUNC_SNPRINTF
-
-dnl Check for various other functions.
-AC_CHECK_FUNCS(atexit getloadavg getrlimit getrusage getspnam setbuffer \
- sigaction setgroups setrlimit setsid socketpair statvfs \
- strncasecmp strtoul symlink sysconf)
-
-dnl Find a way to get the file descriptor limit.
-if test x"$ac_cv_func_getrlimit" = xno ; then
- AC_CHECK_FUNCS(getdtablesize ulimit, break)
-fi
-
-dnl If we don't have statvfs, gather some more information for inndf.
-if test x"$ac_cv_func_statvfs" = xno ; then
- AC_CHECK_FUNCS(statfs)
- AC_CHECK_HEADERS(sys/vfs.h sys/mount.h)
-fi
-
-dnl If we can't find any of the following, we have replacements for them.
-AC_REPLACE_FUNCS(fseeko ftello getpagesize hstrerror inet_aton mkstemp \
- pread pwrite seteuid strcasecmp strerror strlcat strlcpy \
- strspn setenv)
-
-dnl Source used by INN_TYPE_FPOS_T_LARGE.
-define([_INN_TYPE_FPOS_T_LARGE_SOURCE],
-[#include <stdio.h>
-#include <sys/types.h>
-
-int
-main ()
-{
- fpos_t fpos = 9223372036854775807ULL;
- off_t off;
- off = fpos;
- exit(off == (off_t) 9223372036854775807ULL ? 0 : 1);
-}])
-
-dnl Check whether fpos_t is 64 bits and can be assigned to an off_t. If so,
-dnl sets HAVE_LARGE_FPOS_T; this means that a missing fseeko or ftello can be
-dnl emulated usint fgetpos and fsetpos.
-AC_DEFUN([INN_TYPE_FPOS_T_LARGE],
-[AC_CACHE_CHECK(for off_t-compatible fpos_t, inn_cv_type_fpos_t_large,
-[AC_TRY_RUN(_INN_TYPE_FPOS_T_LARGE_SOURCE(),
- [inn_cv_type_fpos_t_large=yes],
- [inn_cv_type_fpos_t_large=no],
- [inn_cv_type_fpos_t_large=no])
-if test "$inn_cv_type_fpos_t_large" = yes ; then
- AC_DEFINE([HAVE_LARGE_FPOS_T], 1,
- [Define if fpos_t is at least 64 bits and compatible with off_t.])
-fi])])
-
-dnl If replacing fseeko or ftello, see if we can use fsetpos/fgetpos.
-if test "$ac_cv_func_fseeko" = no || test "$ac_cv_func_ftello" = no ; then
- INN_TYPE_FPOS_T_LARGE
-fi
-
-dnl Source used by INN_FUNC_MMAP.
-define([_INN_FUNC_MMAP_SOURCE],
-[_INN_HEADER_SOURCE()]
-[[#include <fcntl.h>
-#include <sys/mman.h>
-
-int
-main()
-{
- int *data, *data2;
- int i, fd;
-
- /* First, make a file with some known garbage in it. Use something
- larger than one page but still an odd page size. */
- data = malloc (20000);
- if (!data) return 1;
- for (i = 0; i < 20000 / sizeof (int); i++)
- data[i] = rand();
- umask (0);
- fd = creat ("conftestmmaps", 0600);
- if (fd < 0) return 1;
- if (write (fd, data, 20000) != 20000) return 1;
- close (fd);
-
- /* Next, try to mmap the file and make sure we see the same garbage. */
- fd = open ("conftestmmaps", O_RDWR);
- if (fd < 0) return 1;
- data2 = mmap (0, 20000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
- if (data2 == (int *) -1) return 1;
- for (i = 0; i < 20000 / sizeof (int); i++)
- if (data[i] != data2[i])
- return 1;
-
- close (fd);
- unlink ("conftestmmaps");
- return 0;
-}]])
-
-
-dnl This portion is similar to what AC_FUNC_MMAP does, only it tests shared,
-dnl non-fixed mmaps.
-AC_DEFUN([INN_FUNC_MMAP],
-[AC_CACHE_CHECK(for working mmap, inn_cv_func_mmap,
-[AC_TRY_RUN(_INN_FUNC_MMAP_SOURCE(),
- inn_cv_func_mmap=yes,
- inn_cv_func_mmap=no,
- inn_cv_func_mmap=no)])
-if test $inn_cv_func_mmap = yes ; then
- AC_DEFINE(HAVE_MMAP)
-fi])
-
-dnl Source used by INN_FUNC_MMAP_NEEDS_MSYNC.
-define([_INN_FUNC_MMAP_NEEDS_MSYNC_SOURCE],
-[_INN_HEADER_SOURCE()]
-[[#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-
-int
-main()
-{
- int *data, *data2;
- int i, fd;
-
- /* First, make a file with some known garbage in it. Use something
- larger than one page but still an odd page size. */
- data = malloc (20000);
- if (!data) return 1;
- for (i = 0; i < 20000 / sizeof (int); i++)
- data[i] = rand();
- umask (0);
- fd = creat ("conftestmmaps", 0600);
- if (fd < 0) return 1;
- if (write (fd, data, 20000) != 20000) return 1;
- close (fd);
-
- /* Next, try to mmap the file and make sure we see the same garbage. */
- fd = open ("conftestmmaps", O_RDWR);
- if (fd < 0) return 1;
- data2 = mmap (0, 20000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
- if (data2 == (int *) -1) return 1;
-
- /* Finally, see if changes made to the mmaped region propagate back to
- the file as seen by read (meaning that msync isn't needed). */
- for (i = 0; i < 20000 / sizeof (int); i++)
- data2[i]++;
- if (read (fd, data, 20000) != 20000) return 1;
- for (i = 0; i < 20000 / sizeof (int); i++)
- if (data[i] != data2[i])
- return 1;
-
- close (fd);
- unlink ("conftestmmapm");
- return 0;
-}]])
-
-dnl Check whether the data read from an open file sees the changes made to an
-dnl mmaped region, or if msync has to be called for other applications to see
-dnl those changes.
-AC_DEFUN([INN_FUNC_MMAP_NEEDS_MSYNC],
-[AC_CACHE_CHECK(whether msync is needed, inn_cv_func_mmap_need_msync,
-[AC_TRY_RUN(_INN_FUNC_MMAP_NEEDS_MSYNC_SOURCE(),
- inn_cv_func_mmap_need_msync=no,
- inn_cv_func_mmap_need_msync=yes,
- inn_cv_func_mmap_need_msync=yes)])
-if test $inn_cv_func_mmap_need_msync = yes ; then
- AC_DEFINE(MMAP_NEEDS_MSYNC, 1,
- [Define if you need to call msync for calls to read to see changes.])
-fi])
-
-dnl Source used by INN_FUNC_MMAP_SEES_WRITES.
-define([_INN_FUNC_MMAP_SEES_WRITES_SOURCE],
-[[#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <sys/mman.h>
-
-/* Fractional page is probably worst case. */
-static char zbuff[1024];
-static char fname[] = "conftestw";
-
-int
-main ()
-{
- char *map;
- int i, fd;
-
- fd = open (fname, O_RDWR | O_CREAT, 0660);
- if (fd < 0) return 1;
- unlink (fname);
- write (fd, zbuff, sizeof (zbuff));
- lseek (fd, 0, SEEK_SET);
- map = mmap (0, sizeof (zbuff), PROT_READ, MAP_SHARED, fd, 0);
- if (map == (char *) -1) return 2;
- for (i = 0; fname[i]; i++)
- {
- if (write (fd, &fname[i], 1) != 1) return 3;
- if (map[i] != fname[i]) return 4;
- }
- return 0;
-}]])
-
-dnl Check if an mmaped region will see writes made to the underlying file
-dnl without an intervening msync.
-AC_DEFUN([INN_FUNC_MMAP_SEES_WRITES],
-[AC_CACHE_CHECK(whether mmap sees writes, inn_cv_func_mmap_sees_writes,
-[AC_TRY_RUN(_INN_FUNC_MMAP_SEES_WRITES_SOURCE(),
- inn_cv_func_mmap_sees_writes=yes,
- inn_cv_func_mmap_sees_writes=no,
- inn_cv_func_mmap_sees_writes=no)])
-if test $inn_cv_func_mmap_sees_writes = no ; then
- AC_DEFINE(MMAP_MISSES_WRITES, 1,
- [Define if you need to call msync after writes.])
-fi])
-
-dnl Check whether msync takes three arguments. (It takes three arguments on
-dnl Solaris and Linux, two arguments on BSDI.)
-AC_DEFUN([INN_FUNC_MSYNC_ARGS],
-[AC_CACHE_CHECK(how many arguments msync takes, inn_cv_func_msync_args,
-[AC_TRY_COMPILE(
-[#include <sys/types.h>
-#include <sys/mman.h>],
- [char *p; int psize; msync (p, psize, MS_ASYNC);],
- inn_cv_func_msync_args=3,
- inn_cv_func_msync_args=2)])
-if test $inn_cv_func_msync_args = 3 ; then
- AC_DEFINE(HAVE_MSYNC_3_ARG, 1,
- [Define if your msync function takes three arguments.])
-fi])
-
-dnl Now that all the tests are set up, do the work of the mmap tests.
-INN_FUNC_MMAP
-if test x"$inn_cv_func_mmap" = xyes ; then
- AC_CHECK_FUNCS(madvise)
- INN_FUNC_MMAP_SEES_WRITES
- INN_FUNC_MMAP_NEEDS_MSYNC
- INN_FUNC_MSYNC_ARGS
-fi
-
-dnl If AF_UNIX is set in <sys/socket.h>, assume we have Unix domain sockets.
-AC_DEFUN([INN_SYS_UNIX_SOCKETS],
-[AC_CACHE_CHECK([for Unix domain sockets], inn_cv_sys_unix_sockets,
-[AC_EGREP_CPP(yes,
-[#include <sys/socket.h>
-#ifdef AF_UNIX
-yes
-#endif],
- inn_cv_sys_unix_sockets=yes,
- inn_cv_sys_unix_sockets=no)])
-if test $inn_cv_sys_unix_sockets = yes ; then
- AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS, 1,
- [Define if you have unix domain sockets.])
-fi])
-INN_SYS_UNIX_SOCKETS
-
-dnl Determine the facility for syslog messages. Default to LOG_NEWS for
-dnl syslog facility if it's available, but if it's not, fall back on
-dnl LOG_LOCAL1. --with-syslog-facility may have already set this.
-AC_DEFUN([INN_LOG_FACILITY],
-[AC_MSG_CHECKING(log facility for news)
-AC_CACHE_VAL(inn_cv_log_facility,
-[AC_EGREP_CPP(yes,
-[#include <syslog.h>
-#ifdef LOG_NEWS
-yes
-#endif],
- inn_cv_log_facility=LOG_NEWS,
- inn_cv_log_facility=LOG_LOCAL1)])
-if test x"$SYSLOG_FACILITY" = xnone ; then
- SYSLOG_FACILITY=$inn_cv_log_facility
-fi
-AC_MSG_RESULT($SYSLOG_FACILITY)
-AC_DEFINE_UNQUOTED(LOG_INN_SERVER, $SYSLOG_FACILITY,
- [Syslog facility to use for innd logs.])
-AC_DEFINE_UNQUOTED(LOG_INN_PROG, $SYSLOG_FACILITY,
- [Syslog facility to use for INN program logs.])
-AC_SUBST(SYSLOG_FACILITY)])
-INN_LOG_FACILITY
-
-dnl Clean up our LIBS, just for grins.
-LIBS=`echo "$LIBS" | sed 's/^ *//' | sed 's/ */ /g' | sed 's/ *$//'`
-
-AC_CONFIG_HEADER(include/config.h)
-AC_OUTPUT(
- Makefile.global
- include/paths.h
- samples/inn.conf
- samples/innreport.conf
- samples/newsfeeds
- samples/sasl.conf
- scripts/inncheck
- scripts/innshellvars
- scripts/innshellvars.pl
- scripts/innshellvars.tcl
- scripts/news.daily
- support/fixscript
- ,
- chmod +x support/fixscript
-)
-
-dnl Print out some additional information on what to check.
-cat <<EOM
-
-Please check the following files before running make, to ensure that
-everything was set correctly.
-
- Makefile.global
- include/config.h
- include/paths.h
- innfeed/innfeed.h
-
-EOM
-
-dnl Finally, double-check the configured temporary directory. Some people
-dnl point this at the system temporary directories or at other world-writeable
-dnl directories, which can be a local security hole.
-if $_PATH_PERL -e "exit((stat('$tmpdir'))[[2]] & 2)" > /dev/null ; then
- :
-else
- cat <<EOM
-
-WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
-
- The temporary directory you have configured is world-writeable. It is
- currently set to $tmpdir.
-
- This directory is used by INN for temporary files and should only be
- writeable by the news user. INN does not go to great lengths to prevent
- symlink attacks and the like because it assumes this directory is not
- world-writeable. By configuring INN in this fashion, you may be
- introducing a locally exploitable security hole.
- It is STRONGLY recommended that you use a temporary directory reserved for
- INN's exclusive use, one which is not world-writeable. You can do this
- either with --with-tmp-dir or by setting --prefix to something other than
- /usr or /.
+AC_CHECK_HEADERS(sys/inotify.h)
-EOM
-fi
+AM_CONFIG_HEADER(config.h)
+AC_OUTPUT(Makefile)