configure.in revision 712bf9b0cc4ed34f4bf33b437f8b0e45853b93ce
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob Halley# Copyright (C) 1998-2001 Internet Software Consortium.
9a5087bf58f651bfff841192aba5afd06760d6ceTinderbox User#
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews# Permission to use, copy, modify, and distribute this software for any
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# purpose with or without fee is hereby granted, provided that the above
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic Updater# copyright notice and this permission notice appear in all copies.
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob Halley#
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob Halley# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob Halleydnl
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinesyscmd([sed "s/^/# /" COPYRIGHT])dnl
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_DIVERT_POP()dnl
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_REVISION($Revision: 1.310 $)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_INIT(lib/dns/name.c)
9a5087bf58f651bfff841192aba5afd06760d6ceTinderbox UserAC_PREREQ(2.13)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_CONFIG_HEADER(config.h)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_CONFIG_SUBDIRS(lib/bind)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_CANONICAL_HOST
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_PROG_MAKE_SET
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_PROG_RANLIB
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_PROG_INSTALL
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_SUBST(STD_CINCLUDES)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_SUBST(STD_CDEFINES)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_SUBST(STD_CWARNINGS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_SUBST(CCOPT)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_PATH_PROG(AR, ar)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinARFLAGS="cruv"
9d557856c2a19ec95ee73245f60a92f8675cf5baTinderbox UserAC_SUBST(AR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_SUBST(ARFLAGS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# The POSIX ln(1) program. Non-POSIX systems may substitute
9fbbfb5757a1e3e86d7dea62c4e63ffc2303ca2bAutomatic Updater# "copy" or something.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinLN=ln
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_SUBST(LN)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usercase "$AR" in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein "")
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein AC_MSG_ERROR([
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userar program not found. Please fix your PATH to include the directory in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinwhich ar resides, or set AR in the environment with the full path to ar.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein])
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinesac
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Etags.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserAC_PATH_PROGS(ETAGS, etags emacs-etags)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# GNU emacs etags, and it requires the -L flag.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User#
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userif test "X$ETAGS" != "X"; then
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User AC_MSG_CHECKING(for Exuberant Ctags etags)
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User AC_MSG_RESULT(yes)
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews ETAGS="$ETAGS -L"
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews else
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews AC_MSG_RESULT(no)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User fi
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrewsfi
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_SUBST(ETAGS)
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews#
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# Perl is optional; it is used only by some of the system test scripts.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User#
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark AndrewsAC_PATH_PROGS(PERL, perl5 perl)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_SUBST(PERL)
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews#
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# Special processing of paths depending on whether --prefix,
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# --sysconfdir or --localstatedir arguments were given. What's
731cc132f22dbc9e0ecd7035dce314a61076d31bAutomatic Updater# desired is some compatability with the way previous versions
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# of BIND built; they defaulted to /usr/local for most parts of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the installation, but named.boot/named.conf was in /etc
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# and named.pid was in /var/run.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# So ... if none of --prefix, --sysconfdir or --localstatedir are
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# specified, set things up that way. If --prefix is given, use
731cc132f22dbc9e0ecd7035dce314a61076d31bAutomatic Updater# it for sysconfdir and localstatedir the way configure normally
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# would. To change the prefix for everything but leave named.conf
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# in /etc or named.pid in /var/run, then do this the usual configure way:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# ./configure --prefix=/somewhere --sysconfdir=/etc
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# ./configure --prefix=/somewhere --localstatedir=/var
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# To put named.conf and named.pid in /usr/local with everything else,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# set the prefix explicitly to /usr/local even though that's the default:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# ./configure --prefix=/usr/local
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincase "$prefix" in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User NONE)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein case "$sysconfdir" in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User '${prefix}/etc')
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein sysconfdir=/etc
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User esac
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews case "$localstatedir" in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User '${prefix}/var')
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews localstatedir=/var
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews ;;
18fa75b694d056da4be3ebfc2185d007d4882752Automatic Updater esac
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ;;
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrewsesac
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews#
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# Make sure INSTALL uses an absolute path, else it will be wrong in all
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# Makefiles, since they use make/rules.in and INSTALL will be adjusted by
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# configure based on the location of the file where it is substituted.
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
9d557856c2a19ec95ee73245f60a92f8675cf5baTinderbox User# subdirectory of install-sh, This relative path will be wrong for all
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# directories more than one level down from install-sh.
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews#
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usercase "$INSTALL" in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /*)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein #
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # Not all systems have dirname.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein #
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein changequote({, })
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User changequote([, ])
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein test "$ac_dir" = "$ac_prog" && ac_dir=.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein INSTALL="$ac_dir/$ac_prog"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinesac
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# On these hosts, we really want to use cc, not gcc, even if it is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# found. The gcc that these systems have will not correctly handle
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# pthreads.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# However, if the user sets $CC to be something, let that override
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# our change.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userif test "X$CC" = "X" ; then
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein case "$host" in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *-dec-osf*)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein CC="cc"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *-solaris*)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User # Use Sun's cc if it is available, but watch
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # out for /usr/ucb/cc; it will never be the right
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # compiler to use.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein #
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User # If setting CC here fails, the AC_PROG_CC done
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User # below might still find gcc.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for ac_dir in $PATH; do
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User test -z "$ac_dir" && ac_dir=.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein case "$ac_dir" in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /usr/ucb)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # exclude
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User *)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if test -f "$ac_dir/cc"; then
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User CC="$ac_dir/cc"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein break
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein fi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
d71e2e0c61df16ff37c9934c371a4a60c08974f7Mark Andrews esac
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein IFS="$ac_save_ifs"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User *-hp-hpux*)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User CC="cc"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User mips-sgi-irix*)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein CC="cc"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein esac
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userfi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_PROG_CC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_HEADER_STDC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/sysctl.h net/if6.h)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_C_CONST
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_C_INLINE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# UnixWare 7.1.1 with the feature supplement to the UDK compiler
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# is reported to not support "static inline" (RT #1212).
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAC_MSG_CHECKING(for static inline breakage)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAC_TRY_COMPILE(, [
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein foo1();
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User }
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User static inline int foo1() {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User return 0;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User }
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein static inline int foo2() {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User return foo1();
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ],
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein [AC_MSG_RESULT(no)],
[AC_MSG_RESULT(yes)
AC_DEFINE(inline, )])
AC_TYPE_SIZE_T
AC_CHECK_TYPE(ssize_t, int)
AC_HEADER_TIME
AC_MSG_CHECKING(for long long)
AC_TRY_COMPILE([],[long long i = 0; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
AC_SUBST(ISC_PLATFORM_HAVELONGLONG)
#
# check if we have lifconf
#
AC_MSG_CHECKING(for struct lifconf)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>
],
[
struct lifconf lifconf;
lifconf.lifc_len = 0;
]
,
[AC_MSG_RESULT(yes)
ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"])
AC_SUBST(ISC_PLATFORM_HAVELIFCONF)
#
# check if we need to #include sys/select.h explicitly
#
case $ac_cv_header_unistd_h in
yes)
AC_MSG_CHECKING(if unistd.h defines fd_set)
AC_TRY_COMPILE([
#include <unistd.h>],
[fd_set read_set; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
[AC_MSG_RESULT(no)
case $ac_cv_header_sys_select_h in
yes)
ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
;;
no)
AC_MSG_ERROR([need either working unistd.h or sys/select.h])
;;
esac
])
;;
no)
case $ac_cv_header_sys_select_h in
yes)
ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
;;
no)
AC_MSG_ERROR([need either unistd.h or sys/select.h])
;;
esac
;;
esac
AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)
#
# Find the machine's endian flavor.
#
AC_C_BIGENDIAN
#
# was --with-openssl specified?
#
AC_MSG_CHECKING(for OpenSSL library)
AC_ARG_WITH(openssl,
[ --with-openssl[=PATH] Build with OpenSSL [yes|no|path].
(Required for DNSSEC)],
use_openssl="$withval", use_openssl="no")
case "$use_openssl" in
no)
AC_MSG_RESULT(no)
DST_OPENSSL_INC=""
USE_OPENSSL=""
;;
*)
if test "$use_openssl" = "yes"
then
# User did not specify a path - guess it
openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg"
for d in $openssldirs
do
if test -f $d/include/openssl/opensslv.h
then
use_openssl=$d
break
fi
done
if test "$use_openssl" = "yes"
then
AC_MSG_RESULT(not found)
AC_MSG_ERROR(
[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path])
fi
fi
USE_OPENSSL='-DOPENSSL'
DST_OPENSSL_INC="-I$use_openssl/include"
DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
AC_MSG_RESULT(using openssl from $use_openssl/lib and $use_openssl/include)
AC_MSG_CHECKING(OpenSSL library version)
saved_cflags="$CFLAGS"
saved_libs="$LIBS"
CFLAGS="$CFLAGS $DST_OPENSSL_INC"
LIBS="$LIBS $DNS_OPENSSL_LIBS"
AC_TRY_RUN([
#include <stdio.h>
#include <openssl/opensslv.h>
int main() {
if (OPENSSL_VERSION_NUMBER >= 0x0090581fL)
return (0);
printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
OPENSSL_VERSION_NUMBER);
printf("Require OPENSSL_VERSION_NUMBER 0x0090581f or greater\n\n");
return (1);
}
],
[AC_MSG_RESULT(ok)],
[AC_MSG_RESULT(not compatible)
AC_MSG_ERROR(you need OpenSSL 0.9.5a or newer)],
[AC_MSG_RESULT(assuming target platform has compatible version)])
CFLAGS="$saved_cflags"
LIBS="$saved_libs"
;;
esac
#
# This would include the system openssl path (and linker options to use
# it as needed) if it is found.
#
AC_SUBST(DST_OPENSSL_INC)
AC_SUBST(DNS_OPENSSL_LIBS)
AC_SUBST(USE_OPENSSL)
#
# was --with-gssapi specified?
#
#AC_MSG_CHECKING(for GSSAPI library)
#AC_ARG_WITH(gssapi,
#[ --with-gssapi=PATH Specify path for system-supplied GSSAPI],
# use_gssapi="$withval", use_gssapi="no")
#
#case "$use_gssapi" in
# no)
# USE_GSSAPI=''
# DST_GSSAPI_INC=''
# DNS_GSSAPI_LIBS=''
# AC_MSG_RESULT(not specified)
# ;;
# yes)
# AC_MSG_ERROR([--with-gssapi must specify a path])
# ;;
# *)
# USE_GSSAPI='-DGSSAPI'
# DST_GSSAPI_INC="-I$use_gssapi/include"
# DNS_GSSAPI_LIBS="-L$use_gssapi/lib -lgssapi_krb5"
# AC_MSG_RESULT(using gssapi from $use_gssapi/lib and $use_gssapi/include)
# ;;
#esac
USE_GSSAPI=''
DST_GSSAPI_INC=''
DNS_GSSAPI_LIBS=''
AC_SUBST(USE_GSSAPI)
AC_SUBST(DST_GSSAPI_INC)
AC_SUBST(DNS_GSSAPI_LIBS)
#
# was --with-randomdev specified?
#
AC_MSG_CHECKING(for random device)
AC_ARG_WITH(randomdev,
[ --with-randomdev=PATH Specify path for random device],
use_randomdev="$withval", use_randomdev="unspec")
case "$use_randomdev" in
unspec)
case "$host" in
*-openbsd*)
devrandom=/dev/srandom
;;
*)
devrandom=/dev/random
;;
esac
AC_MSG_RESULT($devrandom)
AC_CHECK_FILE($devrandom,
AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
"$devrandom"),)
;;
yes)
AC_MSG_ERROR([--with-randomdev must specify a path])
;;
no)
AC_MSG_RESULT(disabled)
;;
*)
AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
AC_MSG_RESULT(using "$use_randomdev")
;;
esac
#
# Begin pthreads checking.
#
# First, decide whether to use multithreading or not.
#
# Enable multithreading by default on systems where it is known
# to work well, and where debugging of multithreaded programs
# is supported.
#
AC_MSG_CHECKING(whether to build with thread support)
case $host in
*-dec-osf*)
use_threads=true ;;
[*-solaris2.[0-6]])
# Thread signals are broken on Solaris 2.6; they are sometimes
# delivered to the wrong thread.
use_threads=false ;;
*-solaris*)
use_threads=true ;;
*-ibm-aix*)
use_threads=true ;;
*-hp-hpux10*)
use_threads=false ;;
*-hp-hpux11*)
use_threads=true ;;
*-sgi-irix*)
use_threads=true ;;
*-sco-sysv*uw*|*-*-sysv*UnixWare*)
# UnixWare
use_threads=false ;;
*-*-sysv*OpenUNIX*)
# UnixWare
use_threads=true ;;
*-netbsd*)
# Socket I/O optimizations introduced in 9.2 expose a
# bug in unproven-pthreads; see PR #12650
use_threads=false ;;
*-openbsd*)
# OpenBSD users have reported that named dumps core on
# startup when built with threads.
use_threads=false ;;
*-freebsd*)
use_threads=false ;;
*-bsdi*)
# Thread signals do not appear to work reliably on BSDI.
use_threads=false ;;
*-linux*)
# Threads are disabled on Linux by default because most
# Linux kernels produce unusable core dumps from multithreaded
# programs, and because of limitations in setuid().
use_threads=false ;;
*)
use_threads=false ;;
esac
AC_ARG_ENABLE(threads,
[ --enable-threads enable multithreading])
case "$enable_threads" in
yes)
use_threads=true
;;
no)
use_threads=false
;;
'')
# Use system-dependent default
;;
*)
AC_MSG_ERROR([--enable-threads takes yes or no])
;;
esac
if $use_threads
then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
if $use_threads
then
#
# Search for / configure pthreads in a system-dependent fashion.
#
case "$host" in
*-netbsd*)
# NetBSD has multiple pthreads implementations. The
# recommended one to use is "unproven-pthreads". The
# older "mit-pthreads" may also work on some NetBSD
# versions. The PTL2 thread library does not
# currently work with bind9, but can be chosen with
# the --with-ptl2 option for those who wish to
# experiment with it.
CC="gcc"
AC_MSG_CHECKING(which NetBSD thread library to use)
AC_ARG_WITH(ptl2,
[ --with-ptl2 on NetBSD, use the ptl2 thread library (experimental)],
use_ptl2="$withval", use_ptl2="no")
: ${LOCALBASE:=/usr/pkg}
if test "X$use_ptl2" = "Xyes"
then
AC_MSG_RESULT(PTL2)
AC_MSG_WARN(
[linking with PTL2 is highly experimental and not expected to work])
CC=ptlgcc
else
if test ! -d $LOCALBASE/pthreads
then
AC_MSG_RESULT(none)
AC_MSG_ERROR("could not find thread libraries")
fi
if $use_threads
then
AC_MSG_RESULT(mit-pthreads/unproven-pthreads)
pkg="$LOCALBASE/pthreads"
lib1="-L$pkg/lib -Wl,-R$pkg/lib"
lib2="-lpthread -lm -lgcc -lpthread"
LIBS="$lib1 $lib2 $LIBS"
CPPFLAGS="$CPPFLAGS -I$pkg/include"
STD_CINCLUDES="$STD_CINCLUDES -I$pkg/include"
fi
fi
;;
*)
AC_CHECK_LIB(pthread, pthread_create,,
AC_CHECK_LIB(pthread, __pthread_create,,
AC_CHECK_LIB(pthread, __pthread_create_system,,
AC_CHECK_LIB(c_r, pthread_create,,
AC_CHECK_LIB(c, pthread_create,,
AC_MSG_ERROR("could not find thread libraries"))))))
;;
esac
fi
if $use_threads
then
#
# We'd like to use sigwait() too
#
AC_CHECK_LIB(c, sigwait,
AC_DEFINE(HAVE_SIGWAIT),
AC_CHECK_LIB(pthread, sigwait,
AC_DEFINE(HAVE_SIGWAIT),
AC_CHECK_LIB(pthread, _Psigwait,
AC_DEFINE(HAVE_SIGWAIT),))
)
AC_CHECK_FUNC(pthread_attr_getstacksize,
AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
#
# Additional OS-specific issues related to pthreads and sigwait.
#
case "$host" in
#
# One more place to look for sigwait.
#
*-freebsd*)
AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
;;
#
# BSDI 3.0 through 4.0.1 needs pthread_init() to be
# called before certain pthreads calls. This is deprecated
# in BSD/OS 4.1.
#
*-bsdi3.*|*-bsdi4.0*)
AC_DEFINE(NEED_PTHREAD_INIT)
;;
#
# LinuxThreads requires some changes to the way we
# deal with signals.
#
*-linux*)
AC_DEFINE(HAVE_LINUXTHREADS)
;;
#
# Ensure the right sigwait() semantics on Solaris and make
# sure we call pthread_setconcurrency.
#
*-solaris*)
AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
AC_CHECK_FUNC(pthread_setconcurrency,
AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
;;
#
# UnixWare does things its own way.
#
*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
;;
esac
#
# Look for sysconf to allow detection of the number of processors.
#
AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
if test "X$GCC" = "Xyes"; then
case "$host" in
*-freebsd*)
CC="$CC -pthread"
CCOPT="$CCOPT -pthread"
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
;;
*-openbsd*)
CC="$CC -pthread"
CCOPT="$CCOPT -pthread"
;;
*-solaris*)
LIBS="$LIBS -lthread"
;;
*-ibm-aix*)
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
;;
esac
else
case $host in
*-dec-osf*)
CC="$CC -pthread"
CCOPT="$CCOPT -pthread"
;;
*-solaris*)
CC="$CC -mt"
CCOPT="$CCOPT -mt"
;;
*-ibm-aix*)
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
;;
*-sco-sysv*uw*|*-*-sysv*UnixWare*)
CC="$CC -Kthread"
CCOPT="$CCOPT -Kthread"
;;
*-*-sysv*OpenUNIX*)
CC="$CC -Kpthread"
CCOPT="$CCOPT -Kpthread"
;;
esac
fi
ALWAYS_DEFINES="-D_REENTRANT"
ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
thread_dir=pthreads
else
ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
thread_dir=nothreads
ALWAYS_DEFINES=""
fi
AC_SUBST(ALWAYS_DEFINES)
AC_SUBST(ISC_PLATFORM_USETHREADS)
ISC_THREAD_DIR=$thread_dir
AC_SUBST(ISC_THREAD_DIR)
#
# flockfile is usually provided by pthreads, but we may want to use it
# even if compiled with --disable-threads. getc_unlocked might also not
# be defined.
#
AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
#
# Indicate what the final decision was regarding threads.
#
AC_MSG_CHECKING(whether to build with threads)
if $use_threads; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
#
# End of pthreads stuff.
#
#
# Additional compiler settings.
#
MKDEPCC="$CC"
MKDEPCFLAGS="-M"
IRIX_DNSSEC_WARNINGS_HACK=""
if test "X$GCC" = "Xyes"; then
STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings"
else
case $host in
*-dec-osf*)
CC="$CC -std"
CCOPT="$CCOPT -std"
MKDEPCC="$CC"
;;
*-hp-hpux*)
CC="$CC -Ae -z"
# The version of the C compiler that constantly warns about
# 'const' as well as alignment issues is unfortunately not
# able to be discerned via the version of the operating
# system, nor does cc have a version flag.
case "`$CC +W 123 2>&1`" in
*Unknown?option*)
STD_CWARNINGS="+w1"
;;
*)
# Turn off the pointlessly noisy warnings.
STD_CWARNINGS="+w1 +W 474,530"
;;
esac
CCOPT="$CCOPT -Ae -z"
LIBS="-Wl,+vnocompatwarnings $LIBS"
MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
;;
*-sgi-irix*)
STD_CWARNINGS="-fullwarn -woff 1209"
#
# Silence more than 250 instances of
# "prototyped function redeclared without prototype"
# and 11 instances of
# "variable ... was set but never used"
# from lib/dns/sec/openssl.
#
IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
;;
*-solaris*)
MKDEPCFLAGS="-xM"
;;
*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
# UnixWare
CC="$CC -w"
;;
esac
fi
AC_SUBST(MKDEPCC)
AC_SUBST(MKDEPCFLAGS)
AC_SUBST(MKDEPPROG)
AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
#
# NLS
#
AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
#
# -lxnet buys us one big porting headache... standards, gotta love 'em.
#
# AC_CHECK_LIB(xnet, socket, ,
# AC_CHECK_LIB(socket, socket)
# AC_CHECK_LIB(nsl, inet_ntoa)
# )
#
# Use this for now, instead:
#
case "$host" in
mips-sgi-irix*)
;;
*)
AC_CHECK_LIB(socket, socket)
AC_CHECK_LIB(nsl, inet_ntoa)
;;
esac
#
# Purify support
#
AC_MSG_CHECKING(whether to use purify)
AC_ARG_WITH(purify,
[ --with-purify[=PATH] use Rational purify],
use_purify="$withval", use_purify="no")
case "$use_purify" in
no)
;;
yes)
AC_PATH_PROG(purify_path, purify, purify)
;;
*)
purify_path="$use_purify"
;;
esac
case "$use_purify" in
no)
AC_MSG_RESULT(no)
PURIFY=""
;;
*)
if test -f $purify_path || test $purify_path = purify; then
AC_MSG_RESULT($purify_path)
PURIFYFLAGS="`echo $PURIFYOPTIONS`"
PURIFY="$purify_path $PURIFYFLAGS"
else
AC_MSG_ERROR([$purify_path not found.
Please choose the proper path with the following command:
configure --with-purify=PATH
])
fi
;;
esac
AC_SUBST(PURIFY)
#
# GNU libtool support
#
AC_ARG_WITH(libtool,
[ --with-libtool use GNU libtool (following indented options supported)],
use_libtool="$withval", use_libtool="no")
case $use_libtool in
yes)
AM_PROG_LIBTOOL
O=lo
A=la
LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
;;
*)
O=o
A=a
LIBTOOL=
AC_SUBST(LIBTOOL)
LIBTOOL_MKDEP_SED=
;;
esac
#
# File name extension for static archive files, for those few places
# where they are treated differently from dynamic ones.
#
SA=a
AC_SUBST(O)
AC_SUBST(A)
AC_SUBST(SA)
AC_SUBST(LIBTOOL_MKDEP_SED)
#
# build libbind?
#
AC_ARG_ENABLE(libbind,
[ --enable-libbind build libbind [default=no]])
case "$enable_libbind" in
yes)
LIBBIND=lib/bind
AC_SUBST(LIBBIND)
;;
no|'')
;;
esac
#
# Here begins a very long section to determine the system's networking
# capabilities. The order of the tests is signficant.
#
#
# IPv6
#
AC_ARG_ENABLE(ipv6,
[ --enable-ipv6 use IPv6 [default=autodetect]])
case "$enable_ipv6" in
yes|''|autodetect)
AC_DEFINE(WANT_IPV6)
;;
no)
;;
esac
#
# We do the IPv6 compilation checking after libtool so that we can put
# the right suffix on the files.
#
AC_MSG_CHECKING(for IPv6 structures)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>],
[struct sockaddr_in6 sin6; return (0);],
[AC_MSG_RESULT(yes)
found_ipv6=yes],
[AC_MSG_RESULT(no)
found_ipv6=no])
#
# See whether IPv6 support is provided via a Kame add-on.
# This is done before other IPv6 linking tests to LIBS is properly set.
#
AC_MSG_CHECKING(for Kame IPv6 support)
AC_ARG_WITH(kame,
[ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]],
use_kame="$withval", use_kame="no")
case "$use_kame" in
no)
;;
yes)
kame_path=/usr/local/v6
;;
*)
kame_path="$use_kame"
;;
esac
case "$use_kame" in
no)
AC_MSG_RESULT(no)
;;
*)
if test -f $kame_path/lib/libinet6.a; then
AC_MSG_RESULT($kame_path/lib/libinet6.a)
LIBS="-L$kame_path/lib -linet6 $LIBS"
else
AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
Please choose the proper path with the following command:
configure --with-kame=PATH
])
fi
;;
esac
#
# Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
# Including it on Kame-using platforms is very bad, though, because
# Kame uses #error against direct inclusion. So include it on only
# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
# This is done before the in6_pktinfo check because that's what
# netinet6/in6.h is needed for.
#
changequote({, })
case "$host" in
*-bsdi4.[01]*)
ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
isc_netinet6in6_hack="#include <netinet6/in6.h>"
;;
*)
ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
isc_netinet6in6_hack=""
;;
esac
changequote([, ])
#
# This is similar to the netinet6/in6.h issue.
#
case "$host" in
*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
# UnixWare
ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
isc_netinetin6_hack="#include <netinet/in6.h>"
;;
*)
ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
isc_netinetin6_hack=""
;;
esac
#
# Now delve deeper into the suitability of the IPv6 support.
#
case "$found_ipv6" in
yes)
ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
AC_MSG_CHECKING(for in6_addr)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
],
[struct in6_addr in6; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
isc_in_addr6_hack=""],
[AC_MSG_RESULT(no)
ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
isc_in_addr6_hack="#define in6_addr in_addr6"])
AC_MSG_CHECKING(for in6addr_any)
AC_TRY_LINK([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
$isc_in_addr6_hack
],
[struct in6_addr in6; in6 = in6addr_any; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
AC_MSG_CHECKING(for in6addr_loopback)
AC_TRY_LINK([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
$isc_in_addr6_hack
],
[struct in6_addr in6; in6 = in6addr_loopback; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1"
LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"])
AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
],
[struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
[AC_MSG_RESULT(yes)
result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
[AC_MSG_RESULT(no)
result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
LWRES_HAVE_SIN6_SCOPE_ID="$result"
AC_MSG_CHECKING(for in6_pktinfo)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
],
[struct in6_pktinfo xyzzy; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
[AC_MSG_RESULT(no -- disabling runtime ipv6 support)
ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
;;
no)
ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
ISC_IPV6_H="ipv6.h"
ISC_IPV6_O="ipv6.$O"
ISC_ISCIPV6_O="unix/ipv6.$O"
ISC_IPV6_C="ipv6.c"
;;
esac
AC_SUBST(ISC_PLATFORM_HAVEIPV6)
AC_SUBST(LWRES_PLATFORM_HAVEIPV6)
AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
AC_SUBST(ISC_PLATFORM_HAVEINADDR6)
AC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK)
AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
AC_SUBST(ISC_IPV6_H)
AC_SUBST(ISC_IPV6_O)
AC_SUBST(ISC_ISCIPV6_O)
AC_SUBST(ISC_IPV6_C)
AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
AC_MSG_CHECKING([for struct if_laddrreq])
AC_TRY_LINK([
#include <sys/types.h>
#include <net/if6.h>
],[ struct if_laddrreq a; ],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"])
AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ)
AC_MSG_CHECKING([for struct if_laddrconf])
AC_TRY_LINK([
#include <sys/types.h>
#include <net/if6.h>
],[ struct if_laddrconf a; ],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"])
AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF)
#
# Check for network functions that are often missing. We do this
# after the libtool checking, so we can put the right suffix on
# the files. It also needs to come after checking for a Kame add-on,
# which provides some (all?) of the desired functions.
#
AC_MSG_CHECKING([for inet_ntop])
AC_TRY_LINK([
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>],
[inet_ntop(0, 0, 0, 0); return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
[AC_MSG_RESULT(no)
ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"])
# On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
# addresses with less than four octets, like "1.2.3". Also leading
# zeros should also be rejected.
AC_MSG_CHECKING([for inet_pton])
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
main() { char a[4]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 0); }],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
[AC_MSG_RESULT(no)
ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
[AC_MSG_RESULT(assuming target platform has working inet_pton)
ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"])
AC_MSG_CHECKING([for inet_aton])
AC_TRY_LINK([
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>],
[struct in_addr in; inet_aton(0, &in); return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"],
[AC_MSG_RESULT(no)
ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_aton.$O"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_aton.c"
ISC_PLATFORM_NEEDATON="#define ISC_PLATFORM_NEEDATON 1"])
AC_SUBST(ISC_PLATFORM_NEEDNTOP)
AC_SUBST(ISC_PLATFORM_NEEDPTON)
AC_SUBST(ISC_PLATFORM_NEEDATON)
#
# Look for a 4.4BSD-style sa_len member in struct sockaddr.
#
case "$host" in
*-dec-osf*)
# Turn on 4.4BSD style sa_len support.
AC_DEFINE(_SOCKADDR_LEN)
;;
esac
AC_MSG_CHECKING(for sa_len in struct sockaddr)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>],
[struct sockaddr sa; sa.sa_len = 0; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
AC_SUBST(ISC_PLATFORM_HAVESALEN)
AC_SUBST(LWRES_PLATFORM_HAVESALEN)
#
# Look for a 4.4BSD or 4.3BSD struct msghdr
#
AC_MSG_CHECKING(for struct msghdr flavor)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>],
[struct msghdr msg; msg.msg_flags = 0; return (0);],
[AC_MSG_RESULT(4.4BSD)
ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
[AC_MSG_RESULT(4.3BSD)
ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)
#
# Look for in_port_t.
#
AC_MSG_CHECKING(for type in_port_t)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netinet/in.h>],
[in_port_t port = 25; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
AC_SUBST(ISC_PLATFORM_NEEDPORTT)
#
# Check for addrinfo
#
AC_MSG_CHECKING(for struct addrinfo)
AC_TRY_COMPILE([
#include <netdb.h>],
[struct addrinfo a; return (0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
AC_DEFINE(HAVE_ADDRINFO)],
[AC_MSG_RESULT(no)
ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"])
AC_SUBST(ISC_LWRES_NEEDADDRINFO)
#
# Check for rrsetinfo
#
AC_MSG_CHECKING(for struct rrsetinfo)
AC_TRY_COMPILE([
#include <netdb.h>],
[struct rrsetinfo r; return (0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"],
[AC_MSG_RESULT(no)
ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"])
AC_SUBST(ISC_LWRES_NEEDRRSETINFO)
AC_MSG_CHECKING(for int sethostent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = sethostent(0); return(0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
[AC_MSG_RESULT(no)
ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
AC_SUBST(ISC_LWRES_SETHOSTENTINT)
AC_MSG_CHECKING(for int endhostent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = endhostent(); return(0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
[AC_MSG_RESULT(no)
ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
AC_SUBST(ISC_LWRES_ENDHOSTENTINT)
AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
AC_TRY_COMPILE([
#include <netdb.h>
struct netent *getnetbyaddr(in_addr_t, int);],
[],
[AC_MSG_RESULT(yes)
ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
[AC_MSG_RESULT(no)
ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)
AC_MSG_CHECKING(for int setnetent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = setnetent(0); return(0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
[AC_MSG_RESULT(no)
ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
AC_SUBST(ISC_LWRES_SETNETENTINT)
AC_MSG_CHECKING(for int endnetent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = endnetent(); return(0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
[AC_MSG_RESULT(no)
ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
AC_SUBST(ISC_LWRES_ENDNETENTINT)
AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
AC_TRY_COMPILE([
#include <netdb.h>
struct hostent *gethostbyaddr(const void *, size_t, int);],
[return(0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
[AC_MSG_RESULT(no)
ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)
AC_MSG_CHECKING(for h_errno in netdb.h)
AC_TRY_COMPILE([
#include <netdb.h>],
[h_errno = 1; return(0);],
[AC_MSG_RESULT(yes)
ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
[AC_MSG_RESULT(no)
ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
AC_SUBST(ISC_LWRES_NEEDHERRNO)
AC_CHECK_FUNC(getipnodebyname,
[ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
[ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
AC_CHECK_FUNC(getnameinfo,
[ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
[ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
AC_CHECK_FUNC(getaddrinfo,
[ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
AC_DEFINE(HAVE_GETADDRINFO)],
[ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
#
# Look for a sysctl call to get the list of network interfaces.
#
AC_MSG_CHECKING(for interface list sysctl)
AC_EGREP_CPP(found_rt_iflist, [
#include <sys/param.h>
#include <sys/sysctl.h>
#include <sys/socket.h>
#ifdef NET_RT_IFLIST
found_rt_iflist
#endif
],
[AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_IFLIST_SYSCTL)],
[AC_MSG_RESULT(no)])
#
# Check for some other useful functions that are not ever-present.
#
AC_CHECK_FUNC(strsep,
[ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
[ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
AC_CHECK_FUNC(vsnprintf,
[ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"],
[ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS print.$O"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS print.c"
ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"])
AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
AC_SUBST(ISC_EXTRA_OBJS)
AC_SUBST(ISC_EXTRA_SRCS)
#
# Determine the printf format characters to use when printing
# values of type isc_int64_t. We make the assumption that platforms
# where a "long long" is the same size as a "long" (e.g., Alpha/OSF1)
# want "%ld" and everyone else can use "%lld". Win32 uses "%I64d",
# but that's defined elsewhere since we don't use configure on Win32.
#
AC_MSG_CHECKING(printf format modifier for 64-bit integers)
AC_TRY_RUN([main() { exit(!(sizeof(long long int) == sizeof(long int))); }],
[AC_MSG_RESULT(l)
ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'],
[AC_MSG_RESULT(ll)
ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'],
[AC_MSG_RESULT(assuming target platform uses ll)
ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'])
AC_SUBST(ISC_PLATFORM_QUADFORMAT)
#
# Security Stuff
#
AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT))
AC_ARG_ENABLE(linux-caps,
[ --disable-linux-caps disable linux capabilities])
case "$enable_linux_caps" in
yes|'')
AC_CHECK_HEADERS(linux/capability.h)
;;
no)
;;
esac
AC_CHECK_HEADERS(sys/prctl.h)
#
# BSD/OS, and perhaps some others, don't define rlim_t.
#
AC_MSG_CHECKING(for type rlim_t)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>],
[rlim_t rl = 19671212; return (0);],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"],
[AC_MSG_RESULT(no)
AC_MSG_CHECKING(type of rlim_cur)
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
[AC_MSG_RESULT(int)
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
[AC_MSG_RESULT(long int)
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
[AC_MSG_RESULT(long long int)
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
[AC_MSG_ERROR([unable to determine sizeof rlim_cur])
],[AC_MSG_ERROR(this cannot happen)])
],[AC_MSG_ERROR(this cannot happen)])
],[AC_MSG_ERROR(cannot determine type of rlim_cur when cross compiling - define rlim_t)])
])
AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
#
# Microsoft has their own way of handling shared libraries that requires
# additional qualifiers on extern variables. Unix systems don't need it.
#
AC_SUBST(ISC_PLATFORM_USEDECLSPEC)
ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC"
AC_SUBST(LWRES_PLATFORM_USEDECLSPEC)
LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC"
#
# Random remaining OS-specific issues involving compiler warnings.
# XXXDCL print messages to indicate some compensation is being done?
#
AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"
case "$host" in
*-bsdi3.1*)
hack_shutup_sputaux=yes
;;
*-bsdi4.0*)
hack_shutup_sigwait=yes
hack_shutup_sputaux=yes
;;
[*-bsdi4.[12]*])
hack_shutup_stdargcast=yes
;;
*-solaris2.8)
hack_shutup_pthreadonceinit=yes
;;
esac
case "$hack_shutup_pthreadonceinit" in
yes)
#
# Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
#
ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
;;
esac
case "$hack_shutup_sigwait" in
yes)
#
# Shut up a -Wmissing-prototypes warning for sigwait().
#
AC_DEFINE(SHUTUP_SIGWAIT)
;;
esac
case "$hack_shutup_sputaux" in
yes)
#
# Shut up a -Wmissing-prototypes warning from <stdio.h>.
#
AC_DEFINE(SHUTUP_SPUTAUX)
;;
esac
case "$hack_shutup_stdargcast" in
yes)
#
# Shut up a -Wcast-qual warning from va_start().
#
AC_DEFINE(SHUTUP_STDARG_CAST)
;;
esac
#
# The following sections deal with tools used for formatting
# the documentation. They are all optional, unless you are
# a developer editing the documentation source.
#
# Directory trees where SGML files are commonly found.
sgmltrees="/usr/pkg/share/sgml /usr/local/share/sgml"
#
# Look for openjade. Plain jade is no longer supported.
#
AC_PATH_PROGS(OPENJADE, openjade, openjade)
AC_SUBST(OPENJADE)
#
# Look for TeX.
#
AC_PATH_PROGS(JADETEX, jadetex, jadetex)
AC_SUBST(JADETEX)
AC_PATH_PROGS(PDFJADETEX, pdfjadetex, pdfjadetex)
AC_SUBST(PDFJADETEX)
#
# Subroutine for searching for an ordinary file (e.g., a stylesheet)
# in a number of directories:
#
# NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
#
# If the file FILENAME is found in one of the DIRECTORIES, the shell
# variable VARIABLE is defined to its absolute pathname. Otherwise,
# it is set to FILENAME, with no directory prefix (that's not terribly
# useful, but looks less confusing in substitutions than leaving it
# empty). The variable VARIABLE will be substituted into output files.
#
AC_DEFUN(NOM_PATH_FILE, [
$1=""
AC_MSG_CHECKING(for $2)
for d in $3
do
f=$d/$2
if test -f $f
then
$1=$f
AC_MSG_RESULT($f)
break
fi
done
if test "X[$]$1" = "X"
then
AC_MSG_RESULT("not found");
$1=$2
fi
AC_SUBST($1)
])
NOM_PATH_FILE(SGMLCATALOG, catalog, $sgmltrees)
#
# Look for the HTML stylesheet html/docbook.dsl, used for
# formatting man pages in HTML. Its location varies,
# so far we have seen:
#
# NetBSD /usr/pkg/share/docbook/dsssl/modular/
# FreeBSD /usr/local/share/docbook/dsssl/modular/
# Linux /usr/local/share/dsssl/docbook/
#
# Ditto for the print stylesheet print/docbook.dsl.
#
stylepath=""
for d in $sgmltrees
do
for s in docbook/dsssl/modular dsssl/docbook
do
stylepath="$stylepath $d/$s"
done
done
NOM_PATH_FILE(HTMLSTYLE, html/docbook.dsl, $stylepath)
NOM_PATH_FILE(PRINTSTYLE, print/docbook.dsl, $stylepath)
#
# Look for XML declarations
#
NOM_PATH_FILE(XMLDCL, docbook/dsssl/modular/dtds/decls/xml.dcl, $sgmltrees)
#
# Look for docbook2man-spec.pl
#
NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees)
#
# Substitutions
#
AC_SUBST(BIND9_TOP_BUILDDIR)
BIND9_TOP_BUILDDIR=`pwd`
AC_SUBST(BIND9_ISC_BUILDINCLUDE)
AC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
AC_SUBST(BIND9_DNS_BUILDINCLUDE)
AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
if test "X$srcdir" != "X"; then
BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
else
BIND9_ISC_BUILDINCLUDE=""
BIND9_ISCCC_BUILDINCLUDE=""
BIND9_ISCCFG_BUILDINCLUDE=""
BIND9_DNS_BUILDINCLUDE=""
BIND9_LWRES_BUILDINCLUDE=""
BIND9_BIND9_BUILDINCLUDE=""
fi
AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
AC_SUBST_FILE(BIND9_MAKE_RULES)
BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
. $srcdir/version
BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}"
AC_SUBST(BIND9_VERSION)
AC_SUBST_FILE(LIBISC_API)
LIBISC_API=$srcdir/lib/isc/api
AC_SUBST_FILE(LIBISCCC_API)
LIBISCCC_API=$srcdir/lib/isccc/api
AC_SUBST_FILE(LIBISCCFG_API)
LIBISCCFG_API=$srcdir/lib/isccfg/api
AC_SUBST_FILE(LIBDNS_API)
LIBDNS_API=$srcdir/lib/dns/api
AC_SUBST_FILE(LIBBIND9_API)
LIBBIND9_API=$srcdir/lib/bind9/api
AC_SUBST_FILE(LIBLWRES_API)
LIBLWRES_API=$srcdir/lib/lwres/api
AC_OUTPUT(
make/rules
make/includes
Makefile
make/Makefile
make/mkdep
lib/Makefile
lib/isc/Makefile
lib/isc/include/Makefile
lib/isc/include/isc/Makefile
lib/isc/include/isc/platform.h
lib/isc/unix/Makefile
lib/isc/unix/include/Makefile
lib/isc/unix/include/isc/Makefile
lib/isc/nls/Makefile
lib/isc/$thread_dir/Makefile
lib/isc/$thread_dir/include/Makefile
lib/isc/$thread_dir/include/isc/Makefile
lib/isccc/Makefile
lib/isccc/include/Makefile
lib/isccc/include/isccc/Makefile
lib/isccfg/Makefile
lib/isccfg/include/Makefile
lib/isccfg/include/isccfg/Makefile
lib/dns/Makefile
lib/dns/include/Makefile
lib/dns/include/dns/Makefile
lib/dns/sec/Makefile
lib/dns/sec/dst/Makefile
lib/dns/sec/dst/include/Makefile
lib/dns/sec/dst/include/dst/Makefile
lib/bind9/Makefile
lib/bind9/include/Makefile
lib/bind9/include/bind9/Makefile
lib/lwres/Makefile
lib/lwres/include/Makefile
lib/lwres/include/lwres/Makefile
lib/lwres/include/lwres/netdb.h
lib/lwres/include/lwres/platform.h
lib/lwres/man/Makefile
lib/lwres/unix/Makefile
lib/lwres/unix/include/Makefile
lib/lwres/unix/include/lwres/Makefile
lib/lwres/win32/Makefile
lib/lwres/win32/include/Makefile
lib/lwres/win32/include/lwres/Makefile
lib/tests/Makefile
lib/tests/include/Makefile
lib/tests/include/tests/Makefile
bin/Makefile
bin/check/Makefile
bin/named/Makefile
bin/named/unix/Makefile
bin/rndc/Makefile
bin/rndc/unix/Makefile
bin/dig/Makefile
bin/nsupdate/Makefile
bin/tests/Makefile
bin/tests/names/Makefile
bin/tests/master/Makefile
bin/tests/rbt/Makefile
bin/tests/db/Makefile
bin/tests/tasks/Makefile
bin/tests/timers/Makefile
bin/tests/dst/Makefile
bin/tests/mem/Makefile
bin/tests/net/Makefile
bin/tests/sockaddr/Makefile
bin/tests/system/Makefile
bin/tests/system/conf.sh
bin/tests/system/lwresd/Makefile
bin/tests/system/tkey/Makefile
bin/tests/headerdep_test.sh
bin/dnssec/Makefile
doc/Makefile
doc/arm/Makefile
doc/arm/nominum-docbook-html.dsl
doc/arm/nominum-docbook-print.dsl
doc/arm/validate.sh
doc/misc/Makefile
docutil/docbook2man-wrapper.sh
isc-config.sh
)
chmod a+x isc-config.sh
# Tell Emacs to edit this file in shell mode.
# Local Variables:
# mode: sh
# End: