summaryrefslogtreecommitdiffstats
path: root/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'configure.in')
-rw-r--r--configure.in5655
1 files changed, 5655 insertions, 0 deletions
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..9aa7e2d
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,5655 @@
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+dnl
+AC_DIVERT_PUSH(1)dnl
+esyscmd([sed -e 's/^/# /' -e '/Portions of this code/,$d' COPYRIGHT])dnl
+AC_DIVERT_POP()dnl
+
+AC_INIT(BIND, [9.11], [info@isc.org], [], [https://www.isc.org/downloads/BIND/])
+AC_PREREQ(2.59)
+
+AC_CONFIG_HEADER(config.h)
+AC_CONFIG_MACRO_DIR([libtool.m4])
+
+AC_CANONICAL_HOST
+
+AC_PROG_MAKE_SET
+
+#
+# GNU libtool support
+#
+case $build_os in
+sunos*)
+ # Just set the maximum command line length for sunos as it otherwise
+ # takes a exceptionally long time to work it out. Required for libtool.
+
+ lt_cv_sys_max_cmd_len=4096;
+ ;;
+esac
+
+AC_PROG_LIBTOOL
+AC_PROG_INSTALL
+AC_PROG_LN_S
+
+AC_SUBST(STD_CINCLUDES)
+AC_SUBST(STD_CDEFINES)
+AC_SUBST(STD_CWARNINGS)
+AC_SUBST(CCOPT)
+AC_SUBST(CCNOOPT)
+AC_SUBST(BACKTRACECFLAGS)
+
+# Warn if the user specified libbind, which is now deprecated
+AC_ARG_ENABLE(libbind, AS_HELP_STRING([--enable-libbind], [deprecated]))
+
+case "$enable_libbind" in
+ yes)
+ AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution.
+It is available from http://www.isc.org as a separate download.])
+ ;;
+ no|'')
+ ;;
+esac
+
+AC_ARG_ENABLE(buffer_useinline, AS_HELP_STRING([--enable-buffer-useinline],
+ [define ISC_BUFFER_USEINLINE when compiling [[default=yes]]]),
+ if test yes = "${enable}"
+ then
+ AC_DEFINE([ISC_BUFFER_USEINLINE], [1],
+ [Define if you want to use inline buffers])
+ fi,
+ AC_DEFINE([ISC_BUFFER_USEINLINE], [1]))
+
+AC_ARG_ENABLE(warn_shadow,
+ AS_HELP_STRING([--enable-warn-shadow],
+ [turn on -Wshadow when compiling]))
+
+AC_ARG_ENABLE(warn_error,
+ AS_HELP_STRING([--enable-warn-error],
+ [turn on -Werror when compiling]))
+
+AC_ARG_ENABLE(developer,
+ AS_HELP_STRING([--enable-developer],
+ [enable developer build settings]))
+XTARGETS=
+case "$enable_developer" in
+yes)
+ STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1"
+ test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
+ test "${enable_querytrace+set}" = set || enable_querytrace=yes
+ test "${with_atf+set}" = set || with_atf=yes
+ test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes
+ test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
+ test "${enable_symtable+set}" = set || enable_symtable=all
+ test "${enable_warn_error+set}" = set || enable_warn_error=yes
+ test "${enable_warn_shadow+set}" = set || enable_warn_shadow=yes
+ test "${with_zlib+set}" = set || with_zlib=yes
+ XTARGETS='${XTARGETS}'
+ ;;
+esac
+AC_SUBST(XTARGETS)
+
+# American Fuzzy Lop
+AC_ARG_ENABLE(afl,
+ AS_HELP_STRING([--enable-afl],
+ [enable American Fuzzy Lop test harness
+ [default=no]]),
+ [AC_DEFINE([ENABLE_AFL], [1],
+ [Define to enable American Fuzzy Lop test harness])])
+case "$enable_afl" in
+yes)
+ LIBS="$LIBS -lpthread"
+ ;;
+esac
+
+
+#libseccomp sandboxing
+AC_CHECK_FUNCS(getrandom)
+AC_ARG_ENABLE(seccomp,
+ AS_HELP_STRING([--enable-seccomp],
+ [enable support for libseccomp system call
+ filtering [default=no]]))
+case "$enable_seccomp" in
+ yes)
+ case $host_os in
+ linux*)
+ ;;
+ *)
+ AC_MSG_WARN([seccomp is not supported on non-linux platforms; disabling it])
+ enable_seccomp=no
+ ;;
+ esac
+ AC_SEARCH_LIBS(seccomp_init, [seccomp])
+ if test "X$ac_cv_search_seccomp_init" = "X-lseccomp" ; then
+ AC_TRY_RUN([
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <errno.h>
+ #include <sys/prctl.h>
+ #include <linux/seccomp.h>
+
+ int main(void)
+ {
+ int ret;
+
+ ret = prctl(PR_GET_SECCOMP, 0, 0, 0, 0);
+ if (ret < 0) {
+ switch (errno) {
+ case ENOSYS:
+ return 1;
+ case EINVAL:
+ return 1;
+ default:
+ return 1;
+ }
+ }
+ ret =
+ prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0);
+ if (ret < 0) {
+ switch (errno) {
+ case EINVAL:
+ return 1;
+ case EFAULT:
+ return 0;
+ default:
+ return 1;
+ }
+ }
+ return 1;
+ }
+ ]
+ , AC_DEFINE([HAVE_LIBSECCOMP], 1,
+ [Define to use libseccomp system call filtering.])
+ , []
+ )
+ fi
+ ;;
+ *)
+ ;;
+esac
+
+#
+# Make very sure that these are the first files processed by
+# config.status, since we use the processed output as the input for
+# AC_SUBST_FILE() substitutions in other files.
+#
+AC_CONFIG_FILES([make/rules make/includes])
+
+AC_PATH_PROG(AR, ar)
+ARFLAGS="cruv"
+AC_SUBST(AR)
+AC_SUBST(ARFLAGS)
+
+# The POSIX ln(1) program. Non-POSIX systems may substitute
+# "copy" or something.
+LN=ln
+AC_SUBST(LN)
+
+case "$AR" in
+ "")
+ AC_MSG_ERROR([
+ar program not found. Please fix your PATH to include the directory in
+which ar resides, or set AR in the environment with the full path to ar.
+])
+
+ ;;
+esac
+
+#
+# Etags.
+#
+AC_PATH_PROGS(ETAGS, etags emacs-etags)
+
+#
+# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
+# GNU emacs etags, and it requires the -L flag.
+#
+if test "X$ETAGS" != "X"; then
+ AC_MSG_CHECKING(for Exuberant Ctags etags)
+ if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
+ AC_MSG_RESULT(yes)
+ ETAGS="$ETAGS -L"
+ else
+ AC_MSG_RESULT(no)
+ fi
+fi
+AC_SUBST(ETAGS)
+
+#
+# Perl is optional; it is used only by some of the system test scripts.
+# Note: the backtrace feature (see below) uses perl to build the symbol table,
+# but it still compiles without perl, in which case an empty table will be used.
+#
+AC_PATH_PROGS(PERL, perl5 perl)
+AC_SUBST(PERL)
+
+#
+# Python is also optional; it is used by the tools in bin/python.
+# If python is unavailable, we simply don't build those.
+#
+AC_ARG_WITH(python,
+ AS_HELP_STRING([--with-python=PATH],
+ [specify path to python interpreter]),
+ use_python="$withval", use_python="unspec")
+AC_ARG_WITH(python-install-dir,
+ AS_HELP_STRING([--with-python-install-dir=PATH],
+ [installation directory for Python modules]),
+ use_python_install_dir="$withval", use_python_install_dir="unspec")
+
+python="python python3 python3.5 python3.4 python3.3 python3.2 python2 python2.7"
+
+testargparse='try: import argparse
+except: exit(1)'
+
+testply='try: from ply import *
+except: exit(1)'
+
+testminvers='import sys
+if (sys.version_info < (2,7)) or (sys.version_info < (3,2) and sys.version_info >= (3,0)):
+ exit(1)'
+
+case "$use_python" in
+ no)
+ AC_MSG_CHECKING([for python support])
+ AC_MSG_RESULT(disabled)
+ ;;
+ unspec|yes|*)
+ case "$use_python" in
+ unspec|yes|'')
+ for p in $python
+ do
+ AC_PATH_PROGS(PYTHON, $p)
+ if test "X$PYTHON" = "X"; then
+ continue;
+ fi
+ AC_MSG_CHECKING([python2 version >= 2.7 or python3 version >= 3.2])
+ if ${PYTHON:-false} -c "$testminvers"; then
+ AC_MSG_RESULT([found])
+ else
+ AC_MSG_RESULT([not found])
+ unset ac_cv_path_PYTHON
+ unset PYTHON
+ continue
+ fi
+ AC_MSG_CHECKING([python module 'argparse'])
+ if ${PYTHON:-false} -c "$testargparse"; then
+ AC_MSG_RESULT([found])
+ else
+ AC_MSG_RESULT([not found])
+ unset ac_cv_path_PYTHON
+ unset PYTHON
+ continue
+ fi
+
+ AC_MSG_CHECKING([python module 'ply'])
+ if ${PYTHON:-false} -c "$testply"; then
+ AC_MSG_RESULT([found])
+ break
+ else
+ AC_MSG_RESULT([not found])
+ unset ac_cv_path_PYTHON
+ unset PYTHON
+ fi
+ done
+ if test "X$PYTHON" != "X"
+ then
+ case "$use_python_install_dir" in
+ unspec)
+ PYTHON_INSTALL_DIR=""
+ PYTHON_INSTALL_LIB=""
+ ;;
+ *)
+ PYTHON_INSTALL_DIR="$use_python_install_dir"
+ PYTHON_INSTALL_LIB="--install-lib=$use_python_install_dir"
+ ;;
+ esac
+ else
+ AC_MSG_CHECKING([for python support])
+ case "$use_python" in
+ unspec)
+ AC_MSG_RESULT(disabled)
+ ;;
+ yes)
+ AC_MSG_ERROR([missing python])
+ ;;
+ esac
+ fi
+ ;;
+ *)
+ case "$use_python" in
+ /*)
+ PYTHON="$use_python"
+ ;;
+ *)
+ AC_PATH_PROGS(PYTHON, $use_python)
+ ;;
+ esac
+ AC_MSG_CHECKING([python2 version >= 2.7 or python3 version >= 3.2])
+ if ${PYTHON:-false} -c "$testminvers"; then
+ AC_MSG_RESULT([found])
+ else
+ AC_MSG_ERROR([not found])
+ fi
+ AC_MSG_CHECKING([python module 'argparse'])
+ if ${PYTHON:-false} -c "$testargparse"; then
+ AC_MSG_RESULT([found, using $PYTHON])
+ else
+ AC_MSG_ERROR([not found])
+ fi
+ AC_MSG_CHECKING([python module 'ply'])
+ if ${PYTHON:-false} -c "$testply"; then
+ AC_MSG_RESULT([found, using $PYTHON])
+ else
+ AC_MSG_ERROR([not found])
+ fi
+ ;;
+ esac
+ ;;
+esac
+
+PYTHON_TOOLS=''
+CHECKDS=''
+COVERAGE=''
+KEYMGR=''
+if test "X$PYTHON" != "X"; then
+ PYTHON_TOOLS=python
+ CHECKDS=checkds
+ COVERAGE=coverage
+ KEYMGR=keymgr
+fi
+AC_SUBST(CHECKDS)
+AC_SUBST(COVERAGE)
+AC_SUBST(KEYMGR)
+AC_SUBST(PYTHON_TOOLS)
+AC_SUBST(PYTHON_INSTALL_DIR)
+AC_SUBST(PYTHON_INSTALL_LIB)
+
+#
+# Special processing of paths depending on whether --prefix,
+# --sysconfdir or --localstatedir arguments were given. What's
+# desired is some compatibility with the way previous versions
+# of BIND built; they defaulted to /usr/local for most parts of
+# the installation, but named.boot/named.conf was in /etc
+# and named.pid was in /var/run.
+#
+# So ... if none of --prefix, --sysconfdir or --localstatedir are
+# specified, set things up that way. If --prefix is given, use
+# it for sysconfdir and localstatedir the way configure normally
+# would. To change the prefix for everything but leave named.conf
+# in /etc or named.pid in /var/run, then do this the usual configure way:
+# ./configure --prefix=/somewhere --sysconfdir=/etc
+# ./configure --prefix=/somewhere --localstatedir=/var
+#
+# To put named.conf and named.pid in /usr/local with everything else,
+# set the prefix explicitly to /usr/local even though that's the default:
+# ./configure --prefix=/usr/local
+#
+case "$prefix" in
+ NONE)
+ case "$sysconfdir" in
+ '${prefix}/etc')
+ sysconfdir=/etc
+ ;;
+ esac
+ case "$localstatedir" in
+ '${prefix}/var')
+ localstatedir=/var
+ ;;
+ esac
+ ;;
+esac
+expanded_sysconfdir=`eval echo $sysconfdir`
+AC_SUBST(expanded_sysconfdir)
+
+#
+# Make sure INSTALL uses an absolute path, else it will be wrong in all
+# Makefiles, since they use make/rules.in and INSTALL will be adjusted by
+# configure based on the location of the file where it is substituted.
+# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
+# subdirectory of install-sh, This relative path will be wrong for all
+# directories more than one level down from install-sh.
+#
+case "$INSTALL" in
+ /*)
+ ;;
+ *)
+ #
+ # Not all systems have dirname.
+ #
+ changequote({, })
+ ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
+ changequote([, ])
+
+ ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
+ test "X$ac_dir" = "X$ac_prog" && ac_dir=.
+ test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
+ INSTALL="$ac_dir/$ac_prog"
+ ;;
+esac
+
+AC_PROG_CC
+AC_PROG_CC_C99
+
+#
+# OS dependent CC flags
+#
+case "$host" in
+ # OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or
+ # -D_XOPEN_SOURCE_EXTENDED.
+ *-dec-osf*)
+ STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET"
+ CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET"
+ ;;
+ #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros
+ *-hp-hpux*)
+ STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED"
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
+ LIBS="-lxnet $LIBS"
+ ;;
+ # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros
+ *-solaris*)
+ STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__"
+ CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
+ ;;
+ # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides
+ # parts of the IPv6 Advanced Socket API as a result. This is stupid
+ # as it breaks how the two halves (Basic and Advanced) of the IPv6
+ # Socket API were designed to be used but we have to live with it.
+ # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
+ *-linux* | *-kfreebsd*-gnu*)
+ STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE"
+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ ;;
+ #
+ # Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use.
+ # Setting this is sufficient to select the correct behavior for BIND 9.
+ #
+ *-darwin*)
+ STD_CDEFINES="$STD_CDEFINES -D__APPLE_USE_RFC_3542"
+ CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542"
+ ;;
+esac
+
+#
+# CCNOOPT defaults to -O0 on gcc and disables optimization when is last
+#
+if test "X$CCNOOPT" = "X" -a "X$GCC" = "Xyes"; then
+ CCNOOPT="-O0"
+fi
+
+AC_HEADER_STDC
+
+AC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/mman.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h sys/socket.h net/route.h linux/netlink.h linux/rtnetlink.h,,,
+[$ac_includes_default
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+])
+
+AC_C_CONST
+AC_C_INLINE
+AC_C_VOLATILE
+AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
+AC_C_FLEXIBLE_ARRAY_MEMBER
+
+#
+# Check for the existence of mmap to enable the fast format zones
+#
+AC_CHECK_FUNCS(mmap)
+
+#
+# Older versions of HP/UX don't define seteuid() and setegid()
+#
+AC_CHECK_FUNCS(seteuid setresuid)
+AC_CHECK_FUNCS(setegid setresgid)
+
+# BSDI doesn't have ftello fseeko
+AC_CHECK_FUNCS(ftello fseeko)
+
+#
+# UnixWare 7.1.1 with the feature supplement to the UDK compiler
+# is reported to not support "static inline" (RT #1212).
+#
+AC_MSG_CHECKING(for static inline breakage)
+AC_TRY_COMPILE([
+ static inline int foo1() {
+ return 0;
+ }
+
+ static inline int foo2() {
+ return foo1();
+ }
+ ], [foo1();],
+ [AC_MSG_RESULT(no)],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])])
+
+AC_TYPE_SIZE_T
+AC_TYPE_SSIZE_T
+AC_TYPE_UINTPTR_T
+
+AC_CHECK_TYPE(socklen_t,
+[AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)],
+[
+AC_TRY_COMPILE(
+[
+#include <sys/types.h>
+#include <sys/socket.h>
+int getsockname(int, struct sockaddr *, size_t *);
+],[],
+[AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)],
+[AC_DEFINE(ISC_SOCKADDR_LEN_T, int)])
+],
+[
+#include <sys/types.h>
+#include <sys/socket.h>
+])
+AC_SUBST(ISC_SOCKADDR_LEN_T)
+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 for uname library routine
+#
+AC_MSG_CHECKING(for uname)
+AC_TRY_COMPILE([
+#include <sys/utsname.h>
+#include <stdio.h>
+],
+[
+struct utsname uts;
+uname(&uts);
+printf("running on %s %s %s for %s\n",
+ uts.sysname, uts.release, uts.version, uts.machine);
+],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_UNAME)],
+ [AC_MSG_RESULT(no)
+ AC_MSG_WARN([uname is not correctly supported])])
+
+#
+# check for GCC noreturn attribute
+#
+AC_MSG_CHECKING(for GCC noreturn attribute)
+AC_TRY_COMPILE([],[void foo() __attribute__((noreturn));],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
+ ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
+ ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"])
+AC_SUBST(ISC_PLATFORM_NORETURN_PRE)
+AC_SUBST(ISC_PLATFORM_NORETURN_POST)
+
+#
+# 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 have kqueue
+#
+AC_ARG_ENABLE(kqueue,
+ AS_HELP_STRING([--enable-kqueue],
+ [use BSD kqueue when available [default=yes]]),
+ want_kqueue="$enableval", want_kqueue="yes")
+case $want_kqueue in
+yes)
+ AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
+ case $ac_cv_have_kqueue in
+ yes)
+ ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
+ ;;
+ *)
+ ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
+ ;;
+ esac
+ ;;
+*)
+ ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVEKQUEUE)
+
+#
+# check if we have epoll. Linux kernel 2.4 has epoll_create() which fails,
+# so we need to try running the code, not just test its existence.
+#
+AC_ARG_ENABLE(epoll,
+ AS_HELP_STRING([--enable-epoll],
+ [use Linux epoll when available [default=auto]]),
+ want_epoll="$enableval", want_epoll="auto")
+case $want_epoll in
+auto)
+ AC_MSG_CHECKING(epoll support)
+ AC_TRY_RUN([
+#include <sys/epoll.h>
+int main() {
+ if (epoll_create(1) < 0)
+ return (1);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"])
+ ;;
+yes)
+ ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
+ ;;
+*)
+ ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVEEPOLL)
+
+#
+# check if we support /dev/poll
+#
+AC_ARG_ENABLE(devpoll,
+ AS_HELP_STRING([--enable-devpoll],
+ [use /dev/poll when available [default=yes]]),
+ want_devpoll="$enableval", want_devpoll="yes")
+case $want_devpoll in
+yes)
+ AC_CHECK_HEADERS(sys/devpoll.h devpoll.h,
+ ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
+ ,
+ ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
+ )
+ ;;
+*)
+ ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL)
+
+#
+# check if we need to #include sys/select.h explicitly
+#
+case $ac_cv_header_unistd_h in
+yes)
+AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set)
+AC_TRY_COMPILE([
+#include <sys/types.h> /* Ultrix */
+#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
+
+#
+# GeoIP support?
+#
+GEOIPLINKSRCS=
+GEOIPLINKOBJS=
+AC_ARG_WITH(geoip,
+ AS_HELP_STRING([--with-geoip=PATH],
+ [Build with GeoIP support (yes|no|path)]),
+ use_geoip="$withval", use_geoip="no")
+
+if test "yes" = "$use_geoip"
+then
+ for d in /usr /usr/local /opt/local
+ do
+ if test -f $d/include/GeoIP.h
+ then
+ use_geoip=$d
+ break
+ fi
+ done
+fi
+
+case "$use_geoip" in
+ no|'')
+ AC_MSG_CHECKING([for GeoIP support])
+ AC_MSG_RESULT([disabled])
+ ;;
+ *)
+ if test -d "$use_geoip" -o -L "$use_geoip"
+ then
+ CFLAGS="$CFLAGS -I$use_geoip/include"
+ CPPFLAGS="$CPPFLAGS -I$use_geoip/include"
+ LIBS="$LIBS -L$use_geoip/lib"
+ case "$host_os" in
+ netbsd*|openbsd*|solaris*)
+ LIBS="$LIBS -Wl,-rpath=$use_geoip/lib"
+ ;;
+ esac
+ elif test "yes" = "$use_geoip"
+ then
+ AC_MSG_ERROR([GeoIP path not found])
+ else
+ AC_MSG_ERROR([GeoIP path $use_geoip does not exist])
+ fi
+ AC_CHECK_HEADER(GeoIP.h, [],
+ [AC_MSG_ERROR([GeoIP header file not found])]
+ )
+ AC_SEARCH_LIBS(GeoIP_id_by_addr_gl, GeoIP, [],
+ [AC_MSG_ERROR([suitable GeoIP library not found])]
+ )
+ AC_SEARCH_LIBS(fabsf, m, [],
+ [AC_MSG_ERROR([Math library not found])]
+ )
+ AC_DEFINE(HAVE_GEOIP, 1, Build with GeoIP support)
+ GEOIPLINKSRCS='${GEOIPLINKSRCS}'
+ GEOIPLINKOBJS='${GEOIPLINKOBJS}'
+ AC_MSG_CHECKING([for GeoIP support])
+ AC_MSG_RESULT([yes])
+
+ AC_MSG_CHECKING([for GeoIP Country IPv6 support])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([
+ #include <GeoIP.h>
+ #include <netinet/in.h>
+ ], [
+ struct in6_addr in6;
+ GeoIP_country_name_by_ipnum_v6(NULL, in6);
+ ])],
+ [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_GEOIP_V6, 1, Build with GeoIP Country IPv6 support)
+ ],
+ [AC_MSG_RESULT([no])]
+ )
+
+ AC_MSG_CHECKING([for GeoIP City IPv6 support])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([
+ #include <GeoIP.h>
+ #include <GeoIPCity.h>
+ #include <netinet/in.h>
+ ], [
+ struct in6_addr in6;
+ int i = GEOIP_CITY_EDITION_REV0_V6;
+ GeoIP_record_by_ipnum_v6(NULL, in6);
+ ])],
+ [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_GEOIP_CITY_V6, 1, Build with GeoIP City IPv6 support)
+ ],
+ [AC_MSG_RESULT([no])]
+ )
+ ;;
+esac
+AC_SUBST(GEOIPLINKSRCS)
+AC_SUBST(GEOIPLINKOBJS)
+
+AC_MSG_CHECKING(for GSSAPI library)
+AC_ARG_WITH(gssapi,
+ AS_HELP_STRING([--with-gssapi=[PATH|[/path/]krb5-config]],
+ [Specify path for system-supplied GSSAPI
+ [default=yes]]),
+ use_gssapi="$withval", use_gssapi="yes")
+
+# first try using krb5-config, if that does not work then fall back to "yes" method.
+
+case "$use_gssapi" in
+*/krb5-config|krb5-config)
+ AC_MSG_RESULT(trying $use_gssapi)
+ if test krb5-config = "$use_gssapi"
+ then
+ AC_PATH_PROG(KRB5_CONFIG, $use_gssapi)
+ else
+ KRB5_CONFIG="$use_gssapi"
+ fi
+ gssapi_cflags=`$KRB5_CONFIG --cflags gssapi`
+ gssapi_libs=`$KRB5_CONFIG --libs gssapi`
+ saved_cppflags="$CPPFLAGS"
+ CPPFLAGS="$gssapi_cflags $CPPFLAGS"
+ AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
+ [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"])
+ if test "" = "$ISC_PLATFORM_GSSAPIHEADER"; then
+ AC_MSG_RESULT([krb5-config: gssapi.h not found])
+ CPPFLAGS="$saved_cppflags"
+ use_gssapi="yes"
+ else
+ AC_CHECK_HEADERS(krb5/krb5.h krb5.h,
+ [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"])
+ if test "" = "$ISC_PLATFORM_KRB5HEADER"; then
+ AC_MSG_RESULT([krb5-config: krb5.h not found])
+ CPPFLAGS="$saved_cppflags"
+ use_gssapi="yes"
+ else
+ CPPFLAGS="$saved_cppflags"
+ saved_libs="$LIBS"
+ LIBS=$gssapi_libs
+ AC_MSG_CHECKING([krb5-config linking as $LIBS])
+ AC_TRY_LINK( , [gss_acquire_cred();krb5_init_context()],
+ gssapi_linked=yes, gssapi_linked=no)
+ case $gssapi_linked in
+ yes) AC_MSG_RESULT([krb5-config: linked]);;
+ no) AC_MSG_RESULT([krb5-config: could not determine proper GSSAPI linkage])
+ use_gssapi="yes"
+ ;;
+ esac
+ LIBS=$saved_libs
+ fi
+ fi
+ if test "yes" = "$use_gssapi"; then
+ AC_MSG_CHECKING([for GSSAPI library, non krb5-config method])
+ fi
+ ;;
+esac
+
+case "$host" in
+*darwin*)
+ if test "yes" = "$use_gssapi"
+ then
+ use_gssapi=framework
+ fi
+ ;;
+esac
+
+# gssapi is just the framework, we really require kerberos v5, so
+# look for those headers (the gssapi headers must be there, too)
+# The problem with this implementation is that it doesn't allow
+# for the specification of gssapi and krb5 headers in different locations,
+# which probably ought to be fixed although fixing might raise the issue of
+# trying to build with incompatible versions of gssapi and krb5.
+if test "yes" = "$use_gssapi"
+then
+ # first, deal with the obvious
+ if test \( -f /usr/include/kerberosv5/krb5.h -o \
+ -f /usr/include/krb5/krb5.h -o \
+ -f /usr/include/krb5.h \) -a \
+ \( -f /usr/include/gssapi.h -o \
+ -f /usr/include/gssapi/gssapi.h \)
+ then
+ use_gssapi=/usr
+ else
+ krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr"
+ for d in $krb5dirs
+ do
+ if test -f $d/include/gssapi/gssapi_krb5.h -o \
+ -f $d/include/krb5.h
+ then
+ if test -f $d/include/gssapi/gssapi.h -o \
+ -f $d/include/gssapi.h
+ then
+ use_gssapi=$d
+ break
+ fi
+ fi
+ use_gssapi="no"
+ done
+ fi
+fi
+
+case "$use_gssapi" in
+ no)
+ AC_MSG_RESULT(disabled)
+ USE_GSSAPI=''
+ ;;
+ yes)
+ AC_MSG_ERROR([--with-gssapi must specify a path])
+ ;;
+ */krb5-config|krb5-config)
+ USE_GSSAPI='-DGSSAPI'
+ DST_GSSAPI_INC="$gssapi_cflags"
+ DNS_GSSAPI_LIBS="$gssapi_libs"
+ ;;
+ framework)
+ USE_GSSAPI='-DGSSAPI'
+ ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <Kerberos/Kerberos.h>"
+ ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <Kerberos/Kerberos.h>"
+ DNS_GSSAPI_LIBS="-framework Kerberos"
+ AC_MSG_RESULT(framework)
+ ;;
+
+ *)
+ AC_MSG_RESULT(looking in $use_gssapi/lib)
+ USE_GSSAPI='-DGSSAPI'
+ saved_cppflags="$CPPFLAGS"
+ CPPFLAGS="-I$use_gssapi/include $CPPFLAGS"
+ AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
+ [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"
+ gssapi_hack="#include <$ac_header>"])
+
+ if test "" = "$ISC_PLATFORM_GSSAPIHEADER"; then
+ AC_MSG_ERROR([gssapi.h not found])
+ fi
+
+ AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h,
+ [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"
+ gssapi_krb5_hack="#include <$ac_header>"])
+
+ AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h,
+ [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"
+ krb5_hack="#include <$ac_header>"])
+
+ if test "" = "$ISC_PLATFORM_KRB5HEADER"; then
+ AC_MSG_ERROR([krb5.h not found])
+ fi
+
+ #
+ # XXXDCL This probably doesn't work right on all systems.
+ # It will need to be worked on as problems become evident.
+ #
+ # Essentially the problems here relate to two different
+ # areas. The first area is building with either KTH
+ # or MIT Kerberos, particularly when both are present on
+ # the machine. The other is static versus dynamic linking.
+ #
+ # On the KTH vs MIT issue, Both have libkrb5 that can mess
+ # up the works if one implementation ends up trying to
+ # use the other's krb. This is unfortunately a situation
+ # that very easily arises.
+ #
+ # Dynamic linking when the dependency information is built
+ # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes
+ # all such problems go away, but when that setup is not
+ # present, because either the dynamic libraries lack
+ # dependencies or static linking is being done, then the
+ # problems start to show up.
+ saved_libs="$LIBS"
+ for TRY_LIBS in \
+ "-lgssapi_krb5" \
+ "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \
+ "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \
+ "-lgssapi" \
+ "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \
+ "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
+ "-lgssapi -lkrb5 -lgssapi_krb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
+ "-lgssapi -lkrb5 -lhx509 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
+ "-lgss -lkrb5"
+ do
+ # Note that this does not include $saved_libs, because
+ # on FreeBSD machines this configure script has added
+ # -L/usr/local/lib to LIBS, which can make the
+ # -lgssapi_krb5 test succeed with shared libraries even
+ # when you are trying to build with KTH in /usr/lib.
+ if test "/usr" = "$use_gssapi"
+ then
+ LIBS="$TRY_LIBS"
+ else
+ LIBS="-L$use_gssapi/lib $TRY_LIBS"
+ fi
+ AC_MSG_CHECKING(linking as $TRY_LIBS)
+ AC_TRY_LINK([
+#include <sys/types.h>
+$gssapi_hack
+$gssapi_krb5_hack
+$krb5_hack
+ ] , [gss_acquire_cred(NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);krb5_init_context(NULL);
+#if defined(HAVE_GSSAPI_KRB5_H) || defined(HAVE_GSSAPI_GSSAPI_KRB5_H)
+gsskrb5_register_acceptor_identity(NULL);
+#endif],
+ gssapi_linked=yes, gssapi_linked=no)
+ case $gssapi_linked in
+ yes) AC_MSG_RESULT(yes); break ;;
+ no) AC_MSG_RESULT(no) ;;
+ esac
+ done
+
+ CPPFLAGS="$saved_cppflags"
+
+ case $gssapi_linked in
+ no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;;
+ esac
+
+ #
+ # XXXDCL Major kludge. Tries to cope with KTH in /usr/lib
+ # but MIT in /usr/local/lib and trying to build with KTH.
+ # /usr/local/lib can end up earlier on the link lines.
+ # Like most kludges, this one is not only inelegant it
+ # is also likely to be the wrong thing to do at least as
+ # many times as it is the right thing. Something better
+ # needs to be done.
+ #
+ if test "/usr" = "$use_gssapi" -a \
+ -f /usr/local/lib/libkrb5.a; then
+ FIX_KTH_VS_MIT=yes
+ fi
+
+ case "$FIX_KTH_VS_MIT" in
+ yes)
+ case "$enable_static_linking" in
+ yes) gssapi_lib_suffix=".a" ;;
+ *) gssapi_lib_suffix=".so" ;;
+ esac
+
+ for lib in $LIBS; do
+ case $lib in
+ -L*)
+ ;;
+ -l*)
+ new_lib=`echo $lib |
+ sed -e s%^-l%$use_gssapi/lib/lib% \
+ -e s%$%$gssapi_lib_suffix%`
+ NEW_LIBS="$NEW_LIBS $new_lib"
+ ;;
+ *)
+ AC_MSG_ERROR([KTH vs MIT Kerberos confusion!])
+ ;;
+ esac
+ done
+ LIBS="$NEW_LIBS"
+ ;;
+ esac
+
+ DST_GSSAPI_INC="-I$use_gssapi/include"
+ DNS_GSSAPI_LIBS="$LIBS"
+
+ AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include)
+ LIBS="$saved_libs"
+ ;;
+esac
+
+AC_SUBST(ISC_PLATFORM_HAVEGSSAPI)
+AC_SUBST(ISC_PLATFORM_GSSAPIHEADER)
+AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER)
+AC_SUBST(ISC_PLATFORM_KRB5HEADER)
+
+AC_SUBST(USE_GSSAPI)
+AC_SUBST(DST_GSSAPI_INC)
+AC_SUBST(DNS_GSSAPI_LIBS)
+DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS"
+
+#
+# Applications linking with libdns also need to link with these libraries.
+#
+
+AC_SUBST(DNS_CRYPTO_LIBS)
+
+#
+# was --with-randomdev specified?
+#
+AC_MSG_CHECKING(for random device)
+AC_ARG_WITH(randomdev,
+ AS_HELP_STRING([--with-randomdev=PATH],
+ [Specify path for random device]),
+ use_randomdev="$withval", use_randomdev="unspec")
+
+case "$use_randomdev" in
+ unspec)
+ case "$cross_compiling" in
+ yes)
+ AC_MSG_RESULT(unspecified)
+ AC_MSG_ERROR([ need --with-randomdev=PATH or --with-randomdev=no])
+ esac
+ case "$host" in
+ *-openbsd*)
+ devrandom=/dev/arandom
+ ;;
+ *)
+ 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
+
+#
+# Only check dsa signature generation on these platforms when performing
+# system tests.
+#
+CHECK_DSA=0
+if grep "#define PATH_RANDOMDEV " confdefs.h > /dev/null
+then
+ case "$host" in
+ *darwin*|*freebsd*)
+ CHECK_DSA=1
+ ;;
+ esac
+fi
+AC_SUBST(CHECK_DSA)
+
+#
+# Do we have arc4random(), etc ?
+# Will use stir and if not exist addrandom
+#
+AC_CHECK_FUNCS(arc4random)
+AC_CHECK_FUNCS(arc4random_stir)
+AC_CHECK_FUNCS(arc4random_addrandom)
+
+sinclude(config.threads.in)dnl
+
+if $use_threads
+then
+ if test "X$GCC" = "Xyes"; then
+ case "$host" in
+ *-freebsd*)
+ CC="$CC -pthread"
+ CCOPT="$CCOPT -pthread"
+ CCNOOPT="$CCNOOPT -pthread"
+ STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+ ;;
+ *-openbsd*)
+ CC="$CC -pthread"
+ CCOPT="$CCOPT -pthread"
+ CCNOOPT="$CCNOOPT -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"
+ CCNOOPT="$CCNOOPT -pthread"
+ ;;
+ *-solaris*)
+ CC="$CC -mt"
+ CCOPT="$CCOPT -mt"
+ CCNOOPT="$CCNOOPT -mt"
+ ;;
+ *-ibm-aix*)
+ STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+ ;;
+ *-sco-sysv*uw*|*-*-sysv*UnixWare*)
+ CC="$CC -Kthread"
+ CCOPT="$CCOPT -Kthread"
+ CCNOOPT="$CCNOOPT -Kthread"
+ ;;
+ *-*-sysv*OpenUNIX*)
+ CC="$CC -Kpthread"
+ CCOPT="$CCOPT -Kpthread"
+ CCNOOPT="$CCNOOPT -Kpthread"
+ ;;
+ esac
+ fi
+ ALWAYS_DEFINES="-D_REENTRANT"
+ ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
+ THREADOPTOBJS='${THREADOPTOBJS}'
+ THREADOPTSRCS='${THREADOPTSRCS}'
+ thread_dir=pthreads
+ #
+ # We'd like to use sigwait() too
+ #
+ AC_CHECK_FUNC(sigwait,
+ AC_DEFINE(HAVE_SIGWAIT),
+ 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),)
+
+ AC_CHECK_FUNC(pthread_attr_setstacksize,
+ AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
+
+ AC_ARG_WITH(locktype,
+ AS_HELP_STRING([--with-locktype=ARG],
+ [Specify mutex lock type
+ (adaptive or standard)]),
+ locktype="$withval", locktype="adaptive")
+
+ case "$locktype" in
+ adaptive)
+ AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
+
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+ #endif
+ #include <pthread.h>
+ ]], [[
+ return (PTHREAD_MUTEX_ADAPTIVE_NP);
+ ]])],
+ [ AC_MSG_RESULT(using adaptive lock type)
+ AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
+ [Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ],
+ [ AC_MSG_RESULT(using standard lock type) ])
+ ;;
+ standard)
+ AC_MSG_RESULT(using standard lock type)
+ ;;
+ *)
+ AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.])
+ ;;
+ esac
+
+ AC_CHECK_HEADERS(sched.h)
+
+ case "$host" in
+ *solaris-*)
+ AC_CHECK_LIB(rt, sched_yield)
+ ;;
+ esac
+
+ AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np)
+
+ #
+ # 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),)
+ case $host in
+ *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
+ *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
+ AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
+ ;;
+ *-freebsd6.*)
+ AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
+ ;;
+ esac
+ ;;
+ #
+ # 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 functions relating to thread naming
+ AC_CHECK_FUNCS(pthread_setname_np pthread_set_name_np)
+ AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
+
+ #
+ # Look for sysconf to allow detection of the number of processors.
+ #
+ AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
+
+else
+ ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
+ thread_dir=nothreads
+ THREADOPTOBJS=""
+ THREADOPTSRCS=""
+ ALWAYS_DEFINES=""
+fi
+
+AC_SUBST(ALWAYS_DEFINES)
+AC_SUBST(ISC_PLATFORM_USETHREADS)
+AC_SUBST(THREADOPTOBJS)
+AC_SUBST(THREADOPTSRCS)
+ISC_THREAD_DIR=$thread_dir
+AC_SUBST(ISC_THREAD_DIR)
+
+AC_MSG_CHECKING(for libtool)
+AC_ARG_WITH(libtool, AS_HELP_STRING([--with-libtool], [use GNU libtool]),
+ use_libtool="$withval", use_libtool="no")
+
+case $use_libtool in
+ yes)
+ AC_MSG_RESULT(yes)
+ AM_PROG_LIBTOOL
+ O=lo
+ A=la
+ LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
+ LIBTOOL_MODE_COMPILE='--mode=compile --tag=CC'
+ LIBTOOL_MODE_INSTALL='--mode=install --tag=CC'
+ LIBTOOL_MODE_LINK='--mode=link --tag=CC'
+ LIBTOOL_MODE_UNINSTALL='--mode=uninstall --tag=CC'
+ INSTALL_LIBRARY='${INSTALL_PROGRAM}'
+ case "$host" in
+ *) LIBTOOL_ALLOW_UNDEFINED= ;;
+ esac
+ case "$host" in
+ *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;;
+ *) LIBTOOL_IN_MAIN= ;;
+ esac;
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ O=o
+ A=a
+ LIBTOOL=
+ AC_SUBST(LIBTOOL)
+ LIBTOOL_MKDEP_SED=
+ LIBTOOL_MODE_COMPILE=
+ LIBTOOL_MODE_INSTALL=
+ LIBTOOL_MODE_LINK=
+ LIBTOOL_MODE_UNINSTALL=
+ LIBTOOL_ALLOW_UNDEFINED=
+ LIBTOOL_IN_MAIN=
+ INSTALL_LIBRARY='${INSTALL_DATA}'
+ ;;
+esac
+AC_SUBST(INSTALL_LIBRARY)
+
+#
+# was --enable-native-pkcs11 specified?
+# (note it implies both --without-openssl and --with-pkcs11)
+#
+AC_ARG_ENABLE(native-pkcs11,
+ AS_HELP_STRING([--enable-native-pkcs11],
+ [use native PKCS11 for all crypto [default=no]]),
+ want_native_pkcs11="$enableval", want_native_pkcs11="no")
+
+#
+# was --with-openssl specified?
+#
+AC_ARG_WITH(openssl,
+ AS_HELP_STRING([--with-openssl[=PATH]],
+ [Build with OpenSSL [yes|no|path].
+ (Crypto is required for DNSSEC)]),
+ use_openssl="$withval", use_openssl="auto")
+
+#
+# was --with-pkcs11 specified?
+#
+AC_ARG_WITH(pkcs11,
+ AS_HELP_STRING([--with-pkcs11[=PATH]],
+ [Build with PKCS11 support [yes|no|path]
+ (PATH is for the PKCS11 provider)]),
+ use_pkcs11="$withval", use_pkcs11="auto")
+
+#
+# were --with-ecdsa, --with-gost, --with-eddsa, --with-aes specified
+#
+AC_ARG_WITH(ecdsa, AS_HELP_STRING([--with-ecdsa], [Crypto ECDSA]),
+ with_ecdsa="$withval", with_ecdsa="auto")
+AC_ARG_WITH(gost,
+ AS_HELP_STRING([--with-gost], [Crypto GOST [yes|no|raw|asn1].]),
+ with_gost="$withval", with_gost="auto")
+AC_ARG_WITH(eddsa, AS_HELP_STRING([--with-eddsa], [Crypto EDDSA [yes|all|no].]),
+ with_eddsa="$withval", with_eddsa="auto")
+AC_ARG_WITH(aes, AS_HELP_STRING([--with-aes], [Crypto AES]),
+ with_aes="$withval", with_aes="checkcc")
+
+#
+# was --enable-openssl-hash specified?
+#
+AC_ARG_ENABLE(openssl-hash,
+ AS_HELP_STRING([--enable-openssl-hash],
+ [use OpenSSL for hash functions [default=no]]),
+ want_openssl_hash="$enableval", want_openssl_hash="checkcc")
+
+#
+# Client Cookie algorithm choice
+#
+AC_ARG_WITH(cc-alg,
+ AS_HELP_STRING([--with-cc-alg=ALG],
+ [choose the algorithm for Client Cookie
+ [aes|sha1|sha256]]),
+ with_cc_alg="$withval", with_cc_alg="auto")
+
+case $with_cc_alg in
+ *1)
+ with_cc_alg="sha1"
+ ;;
+ *2*)
+ with_cc_alg="sha256"
+ ;;
+ auto)
+ if test "no" != "$with_aes"
+ then
+ with_aes="yes"
+ fi
+ ;;
+ *)
+ with_cc_alg="aes"
+ if test "no" != "$with_aes"
+ then
+ with_aes="yes"
+ fi
+ ;;
+esac
+if test "checkcc" = "with_aes"
+then
+ with_aes="no"
+fi
+
+AC_MSG_CHECKING(for OpenSSL library)
+OPENSSL_WARNING=
+openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw"
+if test "yes" = "$want_native_pkcs11"
+then
+ use_openssl="native_pkcs11"
+ AC_MSG_RESULT(use of native PKCS11 instead)
+fi
+
+if test "auto" = "$use_openssl"
+then
+ for d in $openssldirs
+ do
+ if test -f $d/include/openssl/opensslv.h
+ then
+ use_openssl=$d
+ break
+ fi
+ done
+fi
+OPENSSL_ECDSA=""
+OPENSSL_GOST=""
+OPENSSL_ED25519=""
+gosttype="raw"
+case "$with_gost" in
+ raw)
+ with_gost="yes"
+ ;;
+ asn1)
+ AC_DEFINE(PREFER_GOSTASN1, 1,
+ [Define if GOST private keys are encoded in ASN.1.])
+ gosttype="asn1"
+ with_gost="yes"
+ ;;
+ auto|yes|no)
+ ;;
+ *)
+ AC_MSG_ERROR(unknown GOST private key encoding)
+ ;;
+esac
+
+case "$use_openssl" in
+ native_pkcs11)
+ AC_MSG_RESULT(disabled because of native PKCS11)
+ DST_OPENSSL_INC=""
+ CRYPTO="-DPKCS11CRYPTO"
+ OPENSSLECDSALINKOBJS=""
+ OPENSSLECDSALINKSRCS=""
+ OPENSSLEDDSALINKOBJS=""
+ OPENSSLEDDSALINKSRCS=""
+ OPENSSLGOSTLINKOBJS=""
+ OPENSSLGOSTLINKSRCS=""
+ OPENSSLLINKOBJS=""
+ OPENSSLLINKSRCS=""
+ ;;
+ no)
+ AC_MSG_RESULT(no)
+ DST_OPENSSL_INC=""
+ CRYPTO=""
+ OPENSSLECDSALINKOBJS=""
+ OPENSSLECDSALINKSRCS=""
+ OPENSSLEDDSALINKOBJS=""
+ OPENSSLEDDSALINKSRCS=""
+ OPENSSLGOSTLINKOBJS=""
+ OPENSSLGOSTLINKSRCS=""
+ OPENSSLLINKOBJS=""
+ OPENSSLLINKSRCS=""
+ ;;
+ auto)
+ DST_OPENSSL_INC=""
+ CRYPTO=""
+ OPENSSLECDSALINKOBJS=""
+ OPENSSLECDSALINKSRCS=""
+ OPENSSLEDDSALINKOBJS=""
+ OPENSSLEDDSALINKSRCS=""
+ OPENSSLGOSTLINKOBJS=""
+ OPENSSLGOSTLINKSRCS=""
+ OPENSSLLINKOBJS=""
+ OPENSSLLINKSRCS=""
+ AC_MSG_ERROR(
+[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path
+If you don't want OpenSSL, use --without-openssl])
+ ;;
+ *)
+ if test "yes" = "$want_native_pkcs11"
+ then
+ AC_MSG_RESULT()
+ AC_MSG_ERROR([OpenSSL and native PKCS11 cannot be used together.])
+ fi
+ if test "yes" = "$use_openssl"
+ then
+ # User did not specify a path - guess it
+ for d in $openssldirs
+ do
+ if test -f $d/include/openssl/opensslv.h
+ then
+ use_openssl=$d
+ break
+ fi
+ done
+ if test "yes" = "$use_openssl"
+ then
+ AC_MSG_RESULT(not found)
+ AC_MSG_ERROR(
+[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path])
+ fi
+ elif ! test -f "$use_openssl"/include/openssl/opensslv.h
+ then
+ AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found])
+ fi
+ CRYPTO='-DOPENSSL'
+ if test "/usr" = "$use_openssl"
+ then
+ DST_OPENSSL_INC=""
+ DST_OPENSSL_LIBS="-lcrypto"
+ else
+ DST_OPENSSL_INC="-I$use_openssl/include"
+ case $host in
+ *-solaris*)
+ DST_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto"
+ ;;
+ *-hp-hpux*)
+ DST_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto"
+ ;;
+ *-apple-darwin*)
+ #
+ # Apple's ld seaches for serially for dynamic
+ # then static libraries. This means you can't
+ # use -L to override dynamic system libraries
+ # with static ones when linking. Instead
+ # we specify a absolute path.
+ #
+ if test -f "$use_openssl/lib/libcrypto.dylib"
+ then
+ DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
+ else
+ DST_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a"
+ fi
+ ;;
+ *)
+ DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
+ ;;
+ esac
+ fi
+ AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include)
+
+ saved_cc="$CC"
+ saved_cflags="$CFLAGS"
+ saved_libs="$LIBS"
+ CFLAGS="$DST_OPENSSL_INC $CFLAGS"
+ LIBS="$DST_OPENSSL_LIBS $LIBS"
+ AC_MSG_CHECKING(whether linking with OpenSSL works)
+ AC_TRY_RUN([
+#include <openssl/err.h>
+int main() {
+ ERR_clear_error();
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)
+ AC_MSG_ERROR(Could not run test program using OpenSSL from
+$use_openssl/lib and $use_openssl/include.
+Please check the argument to --with-openssl and your
+shared library configuration (e.g., LD_LIBRARY_PATH).)],
+ [AC_MSG_RESULT(assuming it does work on target platform)])
+
+ AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
+ AC_TRY_LINK([
+#include <openssl/opensslv.h>
+#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 0x10100004L)
+#include <openssl/crypto.h>
+#else
+#include <openssl/err.h>
+#include <openssl/dso.h>
+#endif
+],
+[
+#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 0x10100004L)
+OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_ALL_BUILTIN, NULL);
+#else
+DSO_METHOD_dlfcn();
+#endif
+],
+ [AC_MSG_RESULT(no)],
+ [LIBS="$LIBS -ldl"
+ AC_TRY_LINK([
+#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 0x10100004L)
+#include <openssl/crypto.h>
+#else
+#include <openssl/err.h>
+#include <openssl/dso.h>
+#endif
+],
+[
+#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 0x10100004L)
+OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_ALL_BUILTIN, NULL);
+#else
+DSO_METHOD_dlfcn();
+#endif
+],
+ [AC_MSG_RESULT(yes)
+ DST_OPENSSL_LIBS="$DST_OPENSSL_LIBS -ldl"
+ ],
+ [AC_MSG_RESULT(unknown)
+ AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)],
+ [AC_MSG_RESULT(assuming it does work on target platform)])
+ ],
+ [AC_MSG_RESULT(assuming it does work on target platform)]
+ )
+
+ AC_MSG_CHECKING(for OpenSSL FIPS mode support)
+ have_fips_mode=""
+ AC_TRY_LINK([#include <openssl/crypto.h>],
+ [FIPS_mode();],
+ have_fips_mode=yes,
+ have_fips_mode=no)
+ if test "x$have_fips_mode" = "xyes"
+ then
+ AC_DEFINE([HAVE_FIPS_MODE], [1],
+ [Define if OpenSSL provides FIPS_mode()])
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_MSG_CHECKING(for OpenSSL DSA support)
+ if test -f $use_openssl/include/openssl/dsa.h
+ then
+ AC_DEFINE(HAVE_OPENSSL_DSA)
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512)
+
+ AC_CHECK_FUNCS([DH_get0_key ECDSA_SIG_get0 RSA_set0_key DSA_get0_pqg])
+
+ AC_MSG_CHECKING(for OpenSSL ECDSA support)
+ have_ecdsa=""
+ AC_TRY_RUN([
+#include <openssl/ecdsa.h>
+#include <openssl/objects.h>
+int main() {
+ EC_KEY *ec256, *ec384;
+
+#if !defined(HAVE_EVP_SHA256) || !defined(HAVE_EVP_SHA384)
+ return (1);
+#endif
+ ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
+ ec384 = EC_KEY_new_by_curve_name(NID_secp384r1);
+ if (ec256 == NULL || ec384 == NULL)
+ return (2);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ have_ecdsa="yes"],
+ [AC_MSG_RESULT(no)
+ have_ecdsa="no"],
+ [AC_MSG_RESULT(using --with-ecdsa)])
+ case "$with_ecdsa" in
+ yes)
+ case "$have_ecdsa" in
+ no) AC_MSG_ERROR([ecdsa not supported]) ;;
+ *) have_ecdsa=yes ;;
+ esac
+ ;;
+ no)
+ have_ecdsa=no ;;
+ *)
+ case "$have_ecdsa" in
+ yes|no) ;;
+ *) AC_MSG_ERROR([need --with-ecdsa=[[yes or no]]]) ;;
+ esac
+ ;;
+ esac
+ case $have_ecdsa in
+ yes)
+ OPENSSL_ECDSA="yes"
+ OPENSSLECDSALINKOBJS='${OPENSSLECDSALINKOBJS}'
+ OPENSSLECDSALINKSRCS='${OPENSSLECDSALINKSRCS}'
+ AC_DEFINE(HAVE_OPENSSL_ECDSA, 1,
+ [Define if your OpenSSL version supports ECDSA.])
+ ;;
+ *)
+ ;;
+ esac
+
+ AC_MSG_CHECKING(for OpenSSL GOST support)
+ have_gost=""
+ case "$use_pkcs11" in
+ auto|no)
+ ;;
+ *)
+ if $use_threads; then
+ CC="$CC -pthread"
+ fi
+ ;;
+ esac
+ AC_TRY_RUN([
+#include <openssl/conf.h>
+#include <openssl/engine.h>
+int main() {
+#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 0x10000000L)
+ ENGINE *e;
+ EC_KEY *ek;
+
+ ek = NULL;
+ OPENSSL_config(NULL);
+
+ e = ENGINE_by_id("gost");
+ if (e == NULL)
+ return (1);
+ if (ENGINE_init(e) <= 0)
+ return (1);
+ return (0);
+#else
+ return (1);
+#endif
+}
+],
+ [AC_MSG_RESULT(yes)
+ have_gost="yes"],
+ [AC_MSG_RESULT(no)
+ have_gost="no"],
+ [AC_MSG_RESULT(using --with-gost)])
+ case "$with_gost" in
+ yes)
+ case "$have_gost" in
+ no) AC_MSG_ERROR([gost not supported]) ;;
+ *) have_gost=yes ;;
+ esac
+ ;;
+ no)
+ have_gost=no ;;
+ *)
+ case "$have_gost" in
+ yes|no) ;;
+ *) AC_MSG_ERROR([need --with-gost=[[yes, no, raw or asn1]]]) ;;
+ esac
+ ;;
+ esac
+ case $have_gost in
+ yes)
+ OPENSSL_GOST="yes"
+ OPENSSLGOSTLINKOBJS='${OPENSSLGOSTLINKOBJS}'
+ OPENSSLGOSTLINKSRCS='${OPENSSLGOSTLINKSRCS}'
+ AC_DEFINE(HAVE_OPENSSL_GOST, 1,
+ [Define if your OpenSSL version supports GOST.])
+ ;;
+ *)
+ ;;
+ esac
+
+ AC_MSG_CHECKING(for OpenSSL Ed25519 support)
+ have_ed25519=""
+ have_ed448=""
+ AC_TRY_RUN([
+#include <openssl/evp.h>
+#include <openssl/objects.h>
+int main() {
+ EVP_PKEY_CTX *ctx;
+
+ ctx = EVP_PKEY_CTX_new_id(NID_ED25519, NULL);
+ if (ctx == NULL)
+ return (2);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ have_ed25519="yes"],
+ [AC_MSG_RESULT(no)
+ have_ed25519="no"],
+ [AC_MSG_RESULT(using --with-eddsa)])
+ case "$with_eddsa" in
+ yes|all)
+ case "$have_ed25519" in
+ no) AC_MSG_ERROR([eddsa not supported]) ;;
+ *) have_ed25519=yes ;;
+ esac
+ ;;
+ no)
+ have_ed25519=no ;;
+ *)
+ case "$have_ed25519" in
+ yes|no) ;;
+ *) AC_MSG_ERROR([need --with-eddsa=[[yes, all or no]]]) ;;
+ esac
+ ;;
+ esac
+ case $have_ed25519 in
+ yes)
+ OPENSSL_ED25519="yes"
+ OPENSSLEDDSALINKOBJS='${OPENSSLEDDSALINKOBJS}'
+ OPENSSLEDDSALINKSRCS='${OPENSSLEDDSALINKSRCS}'
+ AC_DEFINE(HAVE_OPENSSL_ED25519, 1,
+ [Define if your OpenSSL version supports Ed25519.])
+ AC_MSG_CHECKING(for OpenSSL Ed448 support)
+ AC_TRY_RUN([
+#include <openssl/evp.h>
+#include <openssl/objects.h>
+int main() {
+ EVP_PKEY_CTX *ctx;
+
+ ctx = EVP_PKEY_CTX_new_id(NID_ED448, NULL);
+ if (ctx == NULL)
+ return (2);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ have_ed448="yes"],
+ [AC_MSG_RESULT(no)
+ have_ed448="no"],
+ [AC_MSG_RESULT(using --with-eddsa)])
+ case $with_eddsa in
+ all)
+ have_ed448=yes ;;
+ *)
+ ;;
+ esac
+ case $have_ed448 in
+ yes)
+ AC_DEFINE(HAVE_OPENSSL_ED448, 1,
+ [Define if your OpenSSL version supports Ed448.])
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+
+ have_aes="no"
+ AC_MSG_CHECKING(for OpenSSL AES support)
+ AC_TRY_RUN([
+#include <openssl/evp.h>
+int main() {
+ const EVP_CIPHER *aes128, *aes192, *aes256;
+
+ aes128 = EVP_aes_128_ecb();
+ aes192 = EVP_aes_192_ecb();
+ aes256 = EVP_aes_256_ecb();
+ if (aes128 == NULL || aes192 == NULL || aes256 == NULL)
+ return (1);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ have_aes="evp"],
+ [AC_CHECK_FUNC(AES_encrypt,
+ [AC_MSG_RESULT(yes)
+ have_aes="yes"],
+ [AC_MSG_RESULT(no)])],
+ [AC_MSG_RESULT(using --with-aes)
+ # Expect cross-compiling with a modern OpenSSL
+ have_aes="evp"])
+
+ ISC_OPENSSL_INC=""
+ ISC_OPENSSL_LIBS=""
+ if test "yes" = "$with_aes"
+ then
+ case "$have_aes" in
+ evp)
+ AC_DEFINE(HAVE_OPENSSL_EVP_AES, 1,
+ [Define if your OpenSSL version supports EVP AES])
+ ISC_OPENSSL_INC="$DST_OPENSSL_INC"
+ ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS"
+ ;;
+ yes)
+ AC_DEFINE(HAVE_OPENSSL_AES, 1,
+ [Define if your OpenSSL version supports AES])
+ ISC_OPENSSL_INC="$DST_OPENSSL_INC"
+ ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS"
+ ;;
+ *)
+ ;;
+ esac
+ fi
+
+ CC="$saved_cc"
+ CFLAGS="$saved_cflags"
+ LIBS="$saved_libs"
+ OPENSSLLINKOBJS='${OPENSSLLINKOBJS}'
+ OPENSSLLINKSRCS='${OPENSSLLINKSRCS}'
+
+ ;;
+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(OPENSSLECDSALINKOBJS)
+AC_SUBST(OPENSSLECDSALINKSRCS)
+AC_SUBST(OPENSSLEDDSALINKOBJS)
+AC_SUBST(OPENSSLEDDSALINKSRCS)
+AC_SUBST(OPENSSLGOSTLINKOBJS)
+AC_SUBST(OPENSSLGOSTLINKSRCS)
+AC_SUBST(OPENSSLLINKOBJS)
+AC_SUBST(OPENSSLLINKSRCS)
+AC_SUBST(OPENSSL_ECDSA)
+AC_SUBST(OPENSSL_ED25519)
+AC_SUBST(OPENSSL_GOST)
+
+DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DST_OPENSSL_LIBS"
+
+ISC_PLATFORM_WANTAES="#undef ISC_PLATFORM_WANTAES"
+if test "yes" = "$with_aes"
+then
+ if test "X$CRYPTO" = "X"
+ then
+ with_aes="no"
+ fi
+fi
+if test "yes" = "$with_aes"
+then
+ ISC_PLATFORM_WANTAES="#define ISC_PLATFORM_WANTAES 1"
+fi
+AC_SUBST(ISC_PLATFORM_WANTAES)
+
+#
+# Choose Client Cookie algorithm
+#
+
+AC_MSG_CHECKING(for the Algorithm for Client Cookie)
+if test "auto" = "$with_cc_alg"
+then
+ if test "yes" = "$with_aes"
+ then
+ with_cc_alg="aes"
+ else
+ with_cc_alg="sha256"
+ fi
+fi
+case $with_cc_alg in
+ sha1)
+ AC_MSG_RESULT(sha1)
+ if test "X$CRYPTO" = "X-DOPENSSL"
+ then
+ if test "checkcc" = "$want_openssl_hash"
+ then
+ want_openssl_hash="yes"
+ fi
+ fi
+ AC_DEFINE(HMAC_SHA1_CC, 1,
+ [Use HMAC-SHA1 for Client Cookie generation])
+ ;;
+ sha256)
+ AC_MSG_RESULT(sha256)
+ if test "X$CRYPTO" = "X-DOPENSSL"
+ then
+ if test "checkcc" = "$want_openssl_hash"
+ then
+ want_openssl_hash="yes"
+ fi
+ fi
+ AC_DEFINE(HMAC_SHA256_CC, 1,
+ [Use HMAC-SHA256 for Client Cookie generation])
+ ;;
+ aes)
+ AC_MSG_RESULT(aes)
+ if test "yes" != "$with_aes"
+ then
+ AC_MSG_ERROR("Client Cookie wants to use unavailable AES");
+ fi
+ AC_DEFINE(AES_CC, 1,
+ [Use AES for Client Cookie generation])
+ ;;
+esac
+if test "checkcc" = "$want_openssl_hash"
+then
+ want_openssl_hash="no"
+fi
+
+#
+# Use OpenSSL for hash functions
+#
+
+AC_MSG_CHECKING(for using OpenSSL for hash functions)
+ISC_PLATFORM_OPENSSLHASH="#undef ISC_PLATFORM_OPENSSLHASH"
+case $want_openssl_hash in
+ yes)
+ if test "$CRYPTO" != "-DOPENSSL"
+ then
+ AC_MSG_ERROR([No OpenSSL for hash functions])
+ fi
+ AC_MSG_RESULT(yes)
+ ISC_PLATFORM_OPENSSLHASH="#define ISC_PLATFORM_OPENSSLHASH 1"
+ ISC_OPENSSL_INC="$DST_OPENSSL_INC"
+ ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS"
+ ;;
+ no)
+ AC_MSG_RESULT(no)
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_OPENSSLHASH)
+AC_SUBST(ISC_OPENSSL_INC)
+AC_SUBST(ISC_OPENSSL_LIBS)
+
+#
+# PKCS11 (aka crypto hardware) support (--with moved just after openssl)
+#
+AC_MSG_CHECKING(for PKCS11 support)
+
+if test "auto" = "$use_pkcs11"
+then
+ if test "yes" = "$want_native_pkcs11"
+ then
+ use_pkcs11="yes"
+ else
+ use_pkcs11="no"
+ fi
+fi
+
+case "$use_pkcs11" in
+ no)
+ AC_MSG_RESULT(no)
+ USE_PKCS11=""
+ PKCS11_TEST=""
+ PKCS11_TOOLS=""
+ ISC_PK11_C=""
+ ISC_PK11_O=""
+ ISC_PK11_API_C=""
+ ISC_PK11_API_O=""
+ ISC_PK11_RESULT_C=""
+ ISC_PK11_RESULT_O=""
+ ISC_ISCPK11_API_C=""
+ ISC_ISCPK11_API_O=""
+ ;;
+ yes|*)
+ AC_MSG_RESULT(yes)
+ if ! $use_threads; then
+ AC_MSG_ERROR([PKCS11 requires thread support])
+ fi
+ if test "X$CRYPTO" = "X-DOPENSSL"
+ then
+ AC_MSG_CHECKING(for OpenSSL with PKCS11 support)
+ saved_cc="$CC"
+ saved_cflags="$CFLAGS"
+ saved_libs="$LIBS"
+ CC="$CC -pthread"
+ CFLAGS="$CFLAGS $DST_OPENSSL_INC"
+ LIBS="$LIBS $DST_OPENSSL_LIBS"
+ AC_TRY_RUN([
+#include <openssl/conf.h>
+#include <openssl/engine.h>
+int main() {
+ ENGINE *e;
+
+ OPENSSL_config(NULL);
+ e = ENGINE_by_id("pkcs11");
+ if (e == NULL)
+ return (1);
+ if (ENGINE_init(e) <= 0)
+ return (1);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ PKCS11_TEST=pkcs11ssl
+ PKCS11_ENGINE='-DPKCS11_ENGINE="\"pkcs11\""'],
+ [AC_MSG_RESULT(no)
+ PKCS11_TEST=''
+ PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'],
+ [AC_MSG_RESULT(cross compile, defaulting to no)
+ PKCS11_TEST=''
+ PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'])
+ CC="$saved_cc"
+ CFLAGS="$saved_cflags"
+ LIBS="$saved_libs"
+ else
+ PKCS11_TEST=''
+ PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'
+
+ fi
+ USE_PKCS11='-DUSE_PKCS11'
+ PKCS11_TOOLS=pkcs11
+ AC_CHECK_FUNC(getpassphrase, AC_DEFINE(HAVE_GETPASSPHRASE),)
+ ISC_PK11_C="pk11.c"
+ ISC_PK11_O="pk11.$O"
+ ISC_PK11_API_C="pk11_api.c"
+ ISC_PK11_API_O="pk11_api.$O"
+ ISC_PK11_RESULT_C="pk11_result.c"
+ ISC_PK11_RESULT_O="pk11_result.$O"
+ ISC_ISCPK11_API_C="unix/pk11_api.c"
+ ISC_ISCPK11_API_O="unix/pk11_api.$O"
+ ;;
+esac
+AC_SUBST(USE_PKCS11)
+AC_SUBST(PKCS11_TOOLS)
+AC_SUBST(PKCS11_ENGINE)
+AC_SUBST(ISC_PK11_C)
+AC_SUBST(ISC_PK11_O)
+AC_SUBST(ISC_PK11_API_C)
+AC_SUBST(ISC_PK11_API_O)
+AC_SUBST(ISC_PK11_RESULT_C)
+AC_SUBST(ISC_PK11_RESULT_O)
+AC_SUBST(ISC_ISCPK11_API_C)
+AC_SUBST(ISC_ISCPK11_API_O)
+
+AC_MSG_CHECKING(for PKCS11 tools)
+case "$use_pkcs11" in
+ no)
+ PKCS11_PROVIDER="undefined"
+ AC_MSG_RESULT(disabled)
+ ;;
+ yes|'')
+ PKCS11_PROVIDER="undefined"
+ AC_MSG_RESULT(enabled)
+ ;;
+ *)
+ PKCS11_PROVIDER="$use_pkcs11"
+ AC_MSG_RESULT([enabled, PKCS11 provider is $PKCS11_PROVIDER])
+ ;;
+esac
+
+AC_SUBST(PKCS11_PROVIDER)
+
+PKCS11_ECDSA=""
+PKCS11_GOST=""
+PKCS11_ED25519=""
+set_pk11_flavor="no"
+AC_MSG_CHECKING(for native PKCS11)
+
+case "$want_native_pkcs11" in
+ yes)
+ AC_MSG_RESULT(using native PKCS11 crypto)
+ PKCS11LINKOBJS='${PKCS11LINKOBJS}'
+ PKCS11LINKSRCS='${PKCS11LINKSRCS}'
+ PKCS11_TEST=pkcs11
+ AC_MSG_CHECKING(for PKCS11 ECDSA)
+ case "$with_ecdsa" in
+ no)
+ AC_MSG_RESULT(disabled)
+ ;;
+ *)
+ AC_MSG_RESULT(enabled)
+ PKCS11_ECDSA="yes"
+ AC_DEFINE(HAVE_PKCS11_ECDSA, 1,
+ [Define if your PKCS11 provider supports ECDSA.])
+ ;;
+ esac
+ AC_MSG_CHECKING(for PKCS11 GOST)
+ case "$with_gost" in
+ yes)
+ AC_MSG_RESULT(enabled)
+ PKCS11_GOST="yes"
+ AC_DEFINE(HAVE_PKCS11_GOST, 1,
+ [Define if your PKCS11 provider supports GOST.])
+ ;;
+ *)
+ AC_MSG_RESULT(disabled)
+ ;;
+ esac
+ AC_MSG_CHECKING(for PKCS11 Ed25519)
+ case "$with_eddsa" in
+ yes|all)
+ AC_MSG_RESULT(enabled)
+ PKCS11_ED25519="yes"
+ AC_DEFINE(HAVE_PKCS11_ED25519, 1,
+ [Define if your PKCS11 provider supports Ed25519.])
+ AC_MSG_CHECKING(for PKCS11 Ed448)
+ case "$with_eddsa" in
+ all)
+ AC_MSG_RESULT(enabled)
+ AC_DEFINE(HAVE_PKCS11_ED448, 1,
+ [Define if your PKCS11 provider supports Ed448.])
+ ;;
+ *)
+ AC_MSG_RESULT(disabled)
+ ;;
+ esac
+ ;;
+ *)
+ AC_MSG_RESULT(disabled)
+ ;;
+ esac
+ AC_MSG_CHECKING(for PKCS11 flavor)
+ case "$PKCS11_PROVIDER" in
+ *nfast*)
+ AC_MSG_RESULT(Thales nCipher)
+ # default
+ pk11_flavor="PK11_THALES_FLAVOR"
+ set_pk11_flavor="yes"
+ ;;
+ *libsofthsm2*)
+ AC_MSG_RESULT(SoftHSMv2)
+ pk11_flavor="PK11_SOFTHSMV2_FLAVOR"
+ set_pk11_flavor="yes"
+ ;;
+ *libsofthsm*)
+ AC_MSG_RESULT(SoftHSM)
+ pk11_flavor="PK11_SOFTHSMV1_FLAVOR"
+ set_pk11_flavor="yes"
+ ;;
+ *cryptech*)
+ AC_MSG_RESULT(Cryptech)
+ pk11_flavor="PK11_CRYPTECH_FLAVOR"
+ set_pk11_flavor="yes"
+ ;;
+ *Keyper*)
+ AC_MSG_RESULT(AEP Keyper)
+ pk11_flavor="PK11_AEP_FLAVOR"
+ set_pk11_flavor="yes"
+ ;;
+ undefined)
+ AC_MSG_RESULT(undefined provider?)
+ ;;
+ *)
+ AC_MSG_RESULT(unknown provider: tweaks are in lib/isc/include/pk11/site.h)
+ ;;
+ esac
+ if test "yes" = "$set_pk11_flavor" ; then
+ CFLAGS="$CFLAGS -DPK11_FLAVOR=$pk11_flavor"
+ fi
+ ;;
+ no|'')
+ AC_MSG_RESULT(disabled)
+ ;;
+esac
+
+AC_SUBST(PKCS11LINKOBJS)
+AC_SUBST(PKCS11LINKSRCS)
+AC_SUBST(CRYPTO)
+AC_SUBST(PKCS11_ECDSA)
+AC_SUBST(PKCS11_GOST)
+AC_SUBST(PKCS11_ED25519)
+AC_SUBST(PKCS11_TEST)
+
+# for PKCS11 benchmarks
+
+have_clock_gt=no
+AC_CHECK_FUNC(clock_gettime,have_clock_gt=yes,)
+if test "no" = "$have_clock_gt"; then
+ AC_CHECK_LIB(rt,clock_gettime,have_clock_gt=rt,)
+fi
+
+if test "no" != "$have_clock_gt"; then
+ AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if clock_gettime is available.])
+fi
+
+if test "rt" = "$have_clock_gt"; then
+ LIBS="-lrt $LIBS"
+fi
+
+#
+# was --with-lmdb specified?
+#
+AC_MSG_CHECKING(for lmdb library)
+AC_ARG_WITH(lmdb,
+ AS_HELP_STRING([--with-lmdb[=PATH]],
+ [build with LMDB library [yes|no|path]]),
+ use_lmdb="$withval", use_lmdb="auto")
+
+have_lmdb=""
+case "$use_lmdb" in
+ no)
+ lmdb_libs=""
+ ;;
+ auto|yes)
+ for d in /usr /usr/local /opt/local
+ do
+ if test -f "${d}/include/lmdb.h"
+ then
+ if test ${d} != /usr
+ then
+ lmdb_cflags="-I ${d}/include"
+ LIBS="$LIBS -L${d}/lib"
+ fi
+ have_lmdb="yes"
+ fi
+ done
+ ;;
+ *)
+ if test -f "${use_lmdb}/include/lmdb.h"
+ then
+ lmdb_cflags="-I${use_lmdb}/include"
+ LIBS="$LIBS -L${use_lmdb}/lib"
+ have_lmdb="yes"
+ else
+ AC_MSG_ERROR([$use_lmdb/include/lmdb.h not found.])
+ fi
+ ;;
+esac
+
+if test "X${have_lmdb}" != "X"
+then
+ AC_MSG_RESULT(yes)
+ AC_SEARCH_LIBS([mdb_env_create], [lmdb], [],
+ [AC_MSG_ERROR([found lmdb include but not library.])
+ have_lmdb=""])
+elif test "X$use_lmdb" = Xyes
+then
+ AC_MSG_ERROR([include/lmdb.h not found.])
+else
+ AC_MSG_RESULT(no)
+fi
+
+NZD_TOOLS=""
+NZDSRCS=
+NZDTARGETS=
+if test "X${have_lmdb}" != "X"
+then
+ CFLAGS="$CFLAGS $lmdb_cflags"
+ AC_DEFINE(HAVE_LMDB, 1, [Define if lmdb was found])
+ NZD_TOOLS="nzd"
+ NZDSRCS='${NZDSRCS}'
+ NZDTARGETS='${NZDTARGETS}'
+fi
+AC_SUBST(NZD_TOOLS)
+AC_SUBST(NZDSRCS)
+AC_SUBST(NZDTARGETS)
+
+#
+# was --with-libxml2 specified?
+#
+AC_MSG_CHECKING(for libxml2 library)
+AC_ARG_WITH(libxml2,
+ AS_HELP_STRING([--with-libxml2[=PATH]],
+ [build with libxml2 library [yes|no|path]]),
+ use_libxml2="$withval", use_libxml2="auto")
+
+case "$use_libxml2" in
+ no)
+ DST_LIBXML2_INC=""
+ ;;
+ auto|yes)
+ case X`(xml2-config --version) 2>/dev/null` in
+ X2.[[6789]].*)
+ libxml2_libs=`xml2-config --libs`
+ libxml2_cflags=`xml2-config --cflags`
+ ;;
+ *)
+ if test "yes" = "$use_libxml2" ; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR(required libxml2 version not available)
+ else
+ libxml2_libs=
+ libxml2_cflags=
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ if test -f "$use_libxml2/bin/xml2-config" ; then
+ libxml2_libs=`$use_libxml2/bin/xml2-config --libs`
+ libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags`
+ fi
+ ;;
+esac
+
+if test "X$libxml2_libs" != "X"
+then
+ CFLAGS="$CFLAGS $libxml2_cflags"
+ LIBS="$LIBS $libxml2_libs"
+ #
+ # Sanity check xml2-config output.
+ #
+ AC_TRY_LINK([#include <libxml/xmlwriter.h>],
+ [return(xmlTextWriterStartElement(NULL, NULL));],
+ AC_MSG_RESULT(yes),
+ AC_MSG_ERROR(xml2-config returns badness))
+ AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found])
+ XMLSTATS=1
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST(XMLSTATS)
+
+#
+# was --with-libjson specified?
+#
+AC_MSG_CHECKING(for json library)
+AC_ARG_WITH(libjson,
+ AS_HELP_STRING([--with-libjson[=PATH]],
+ [build with libjson0 library [yes|no|path]]),
+ use_libjson="$withval", use_libjson="auto")
+
+have_libjson=""
+have_libjson_c=""
+case "$use_libjson" in
+ no)
+ libjson_libs=""
+ ;;
+ auto|yes)
+ for d in /usr /usr/local /opt/local
+ do
+ if test -f "${d}/include/json/json.h"
+ then
+ if test ${d} != /usr
+ then
+ libjson_cflags="-I ${d}/include"
+ LIBS="$LIBS -L${d}/lib"
+ fi
+ have_libjson="yes"
+ elif test -f "${d}/include/json-c/json.h"
+ then
+ if test ${d} != /usr
+ then
+ libjson_cflags="-I ${d}/include"
+ LIBS="$LIBS -L${d}/lib"
+ fi
+ have_libjson="yes"
+ have_libjson_c="yes"
+ fi
+ done
+ ;;
+ *)
+ if test -f "${use_libjson}/include/json/json.h"
+ then
+ libjson_cflags="-I${use_libjson}/include"
+ LIBS="$LIBS -L${use_libjson}/lib"
+ have_libjson="yes"
+ elif test -f "${use_libjson}/include/json-c/json.h"
+ then
+ libjson_cflags="-I${use_libjson}/include"
+ LIBS="$LIBS -L${use_libjson}/lib"
+ have_libjson="yes"
+ have_libjson_c="yes"
+ else
+ AC_MSG_ERROR([$use_libjson/include/json{,-c}/json.h not found.])
+ fi
+ ;;
+esac
+
+if test "X${have_libjson}" != "X"
+then
+ AC_MSG_RESULT(yes)
+ AC_SEARCH_LIBS([json_object_new_int64], [json json-c], [],
+ [AC_MSG_ERROR([found libjson include but not library.])
+ have_libjson=""])
+elif test "X$use_libjson" = Xyes
+then
+ AC_MSG_ERROR([include/json{,-c}/json.h not found.])
+else
+ AC_MSG_RESULT(no)
+fi
+
+if test "X${have_libjson}" != "X"
+then
+ CFLAGS="$CFLAGS $libjson_cflags"
+ AC_DEFINE(HAVE_JSON, 1, [Define if libjson was found])
+ if test "X${have_libjson_c}" = Xyes
+ then
+ AC_DEFINE(HAVE_JSON_C, 1, [Define if json-c was found])
+ fi
+ JSONSTATS=1
+fi
+AC_SUBST(JSONSTATS)
+
+#
+# was --with-zlib specified?
+#
+AC_MSG_CHECKING(for zlib library)
+AC_ARG_WITH(zlib,
+ AS_HELP_STRING([--with-zlib[=PATH]],
+ [build with zlib for HTTP compression
+ [default=yes]]),
+ with_zlib="$withval", with_zlib="auto")
+
+have_zlib=""
+case "$with_zlib" in
+ no)
+ zlib_libs=""
+ ;;
+ auto|yes)
+ for d in /usr /usr/local /opt/local
+ do
+ if test -f "${d}/include/zlib.h"
+ then
+ if test ${d} != /usr
+ then
+ zlib_cflags="-I ${d}/include"
+ LIBS="$LIBS -L${d}/lib"
+ fi
+ have_zlib="yes"
+ fi
+ done
+ ;;
+ *)
+ if test -f "${with_zlib}/include/zlib.h"
+ then
+ zlib_cflags="-I${with_zlib}/include"
+ LIBS="$LIBS -L${with_zlib}/lib"
+ have_zlib="yes"
+ else
+ AC_MSG_ERROR([$with_zlib/include/zlib.h not found.])
+ fi
+ ;;
+esac
+
+if test "X${have_zlib}" != "X"
+then
+ AC_MSG_RESULT(yes)
+ AC_SEARCH_LIBS([deflate], [z], [],
+ [AC_MSG_ERROR([found zlib include but not library.])
+ have_zlib=""])
+elif test "X$with_zlib" = Xyes
+then
+ AC_MSG_ERROR([include/zlib.h not found.])
+else
+ AC_MSG_RESULT(no)
+fi
+
+ZLIB=
+if test "X${have_zlib}" != "X"
+then
+ CFLAGS="$CFLAGS $zlib_cflags"
+ AC_DEFINE(HAVE_ZLIB, 1, [Define if zlib was found])
+ ZLIB=1
+fi
+AC_SUBST(ZLIB)
+
+
+#
+# In solaris 10, SMF can manage named service
+#
+AC_CHECK_LIB(scf, smf_enable_instance)
+
+#
+# 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.
+#
+
+#
+# Large File
+#
+AC_ARG_ENABLE(largefile,
+ AS_HELP_STRING([--enable-largefile], [64-bit file support]),
+ want_largefile="yes", want_largefile="no")
+case $want_largefile in
+ yes)
+ ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+ ;;
+ *)
+ ;;
+esac
+
+#
+# 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 -Wformat -Wpointer-arith"
+ AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing)
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror -fno-strict-aliasing"
+ AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no])
+ CFLAGS="$SAVE_CFLAGS"
+ if test "yes" = "$FNOSTRICTALIASING"; then
+ AC_MSG_RESULT(yes)
+ STD_CWARNINGS="$STD_CWARNINGS -fno-strict-aliasing"
+ else
+ AC_MSG_RESULT(no)
+ fi
+ #
+ # turn off delete null pointer checks
+ #
+ AC_MSG_CHECKING(if "$CC" supports -fno-delete-null-pointer-checks)
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror -fno-delete-null-pointer-checks"
+ AC_TRY_COMPILE(,, [FNODELETENULLPOINTERCHECKS=yes],
+ [FNODELETENULLPOINTERCHECKS=no])
+ CFLAGS="$SAVE_CFLAGS"
+ if test "yes" = "$FNODELETENULLPOINTERCHECKS"; then
+ AC_MSG_RESULT(yes)
+ STD_CWARNINGS="$STD_CWARNINGS -fno-delete-null-pointer-checks"
+ else
+ AC_MSG_RESULT(no)
+ fi
+ case "$host" in
+ *-hp-hpux*)
+ CFLAGS="$CFLAGS -Wl,+vnocompatwarnings"
+ BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings"
+ ;;
+ esac
+ if test "X$enable_warn_shadow" = Xyes; then
+ STD_CWARNINGS="$STD_CWARNINGS -Wshadow"
+ fi
+ if test "X$enable_warn_error" = Xyes; then
+ STD_CWARNINGS="$STD_CWARNINGS -Werror"
+ fi
+else
+ case $host in
+ *-dec-osf*)
+ CC="$CC -std"
+ CCOPT="$CCOPT -std"
+ CCNOOPT="$CCNOOPT -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,2193,2236"
+ ;;
+ esac
+ CCOPT="$CCOPT -Ae -z"
+ CCNOOPT="$CCNOOPT -Ae -z"
+ CFLAGS="$CFLAGS -Wl,+vnocompatwarnings"
+ BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings"
+ 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)
+# )
+#
+# Use this for now, instead:
+#
+case "$host" in
+ mips-sgi-irix*)
+ ;;
+ *-linux*)
+ ;;
+ *)
+ AC_CHECK_LIB(socket, socket)
+ AC_CHECK_LIB(nsl, inet_addr)
+ ;;
+esac
+
+#
+# Work around Solaris's select() limitations.
+#
+case "$host" in
+ *-solaris2.[[89]]|*-solaris2.1?)
+ AC_DEFINE(FD_SETSIZE, 65536,
+ [Solaris hack to get select_large_fdset.])
+ ;;
+esac
+
+#
+# Purify support
+#
+AC_MSG_CHECKING(whether to use purify)
+AC_ARG_WITH(purify,
+ AS_HELP_STRING([--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 = "$purify_path"; 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)
+
+#
+# Google/Great Performance Tools CPU Profiler
+#
+AC_MSG_CHECKING(whether to use gperftools profiler)
+AC_ARG_WITH(gperftools-profiler,
+ AS_HELP_STRING([--with-gperftools-profiler],
+ [use gperftools CPU profiler]),
+ use_profiler="$withval", use_profiler="no")
+
+case $use_profiler in
+ yes)
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([HAVE_GPERFTOOLS_PROFILER], 1,
+ [Define to use gperftools CPU profiler.])
+ LIBS="$LIBS -lprofiler"
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ ;;
+esac
+
+#
+# enable/disable dumping stack backtrace. Also check if the system supports
+# glibc-compatible backtrace() function.
+#
+AC_ARG_ENABLE(backtrace,
+ AS_HELP_STRING([--enable-backtrace],
+ [log stack backtrace on abort [default=yes]]),
+ want_backtrace="$enableval", want_backtrace="yes")
+case $want_backtrace in
+yes)
+ ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1"
+ AC_TRY_LINK([#include <execinfo.h>],
+ [return (backtrace((void **)0, 0));],
+ [AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],)
+ ;;
+*)
+ ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_USEBACKTRACE)
+
+AC_ARG_ENABLE(symtable,
+ AS_HELP_STRING([--enable-symtable],
+ [use internal symbol table for backtrace
+ [all|minimal(default)|none]]),
+ want_symtable="$enableval", want_symtable="minimal")
+case $want_symtable in
+yes|all|minimal) # "yes" is a hidden value equivalent to "minimal"
+ if test "" = "$PERL"
+ then
+ AC_MSG_ERROR([Internal symbol table requires perl but no perl is found.
+Install perl or explicitly disable the feature by --disable-symtable.])
+ fi
+ if test "yes" = "$use_libtool"; then
+ AC_MSG_WARN([Internal symbol table does not work with libtool. Disabling symbol table.])
+ else
+ # we generate the internal symbol table only for those systems
+ # known to work to avoid unexpected build failure. Also, warn
+ # about unsupported systems when the feature is enabled
+ # manually.
+ case $host_os in
+ freebsd*|netbsd*|openbsd*|linux*|solaris*|darwin*)
+ MKSYMTBL_PROGRAM="$PERL"
+ if test "all" = "$want_symtable"; then
+ ALWAYS_MAKE_SYMTABLE="yes"
+ fi
+ ;;
+ *)
+ if test "yes" = "$want_symtable" -o "all" = "$want_symtable"
+ then
+ AC_MSG_WARN([this system is not known to generate internal symbol table safely; disabling it])
+ fi
+ esac
+ fi
+ ;;
+*)
+ ;;
+esac
+AC_SUBST(MKSYMTBL_PROGRAM)
+AC_SUBST(ALWAYS_MAKE_SYMTABLE)
+
+#
+# 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)
+AC_SUBST(LIBTOOL_MODE_COMPILE)
+AC_SUBST(LIBTOOL_MODE_INSTALL)
+AC_SUBST(LIBTOOL_MODE_LINK)
+AC_SUBST(LIBTOOL_MODE_UNINSTALL)
+AC_SUBST(LIBTOOL_ALLOW_UNDEFINED)
+AC_SUBST(LIBTOOL_IN_MAIN)
+
+BIND9_CO_RULE=".c.$O:"
+AC_SUBST(BIND9_CO_RULE)
+
+#
+# Here begins a very long section to determine the system's networking
+# capabilities. The order of the tests is significant.
+#
+
+#
+# IPv6
+#
+AC_ARG_ENABLE(ipv6,
+ AS_HELP_STRING([--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,
+ AS_HELP_STRING([--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 (in6.s6_addr[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 (in6.s6_addr[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)
+ ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
+ result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
+ 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_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
+ ISC_IPV6_H="ipv6.h"
+ ISC_IPV6_O="ipv6.$O"
+ ISC_ISCIPV6_O="unix/ipv6.$O"
+ ISC_IPV6_C="ipv6.c"
+ ;;
+esac
+
+AC_MSG_CHECKING(for struct sockaddr_storage)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+$isc_netinetin6_hack
+$isc_netinet6in6_hack
+],
+[struct sockaddr_storage storage; return (0);],
+[AC_MSG_RESULT(yes)
+ISC_PLATFORM_HAVESOCKADDRSTORAGE="#define ISC_PLATFORM_HAVESOCKADDRSTORAGE 1"],
+[AC_MSG_RESULT(no)
+ISC_PLATFORM_HAVESOCKADDRSTORAGE="#undef ISC_PLATFORM_HAVESOCKADDRSTORAGE"])
+
+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_PLATFORM_HAVESOCKADDRSTORAGE)
+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_SUBST(ISC_PLATFORM_HAVESCOPEID)
+
+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 with IPv6 support])
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+main() {
+char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)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"],
+ [AC_MSG_RESULT(assuming inet_ntop not needed)
+ ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"])
+
+
+# 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 working inet_pton with IPv6 support])
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
+ inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
+ (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
+ [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 inet_pton needed)
+ 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_SUBST(ISC_PLATFORM_NEEDNTOP)
+AC_SUBST(ISC_PLATFORM_NEEDPTON)
+
+#
+# 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)
+
+#
+# Allow forcibly disabling TCP Fast Open support as autodetection might yield
+# confusing results on some systems (e.g. FreeBSD; see set_tcp_fastopen()
+# comment in lib/isc/unix/socket.c).
+#
+
+AC_ARG_ENABLE(tcp_fastopen,
+ AS_HELP_STRING([--disable-tcp-fastopen],
+ [disable TCP Fast Open support [default=autodetect]]))
+
+AC_MSG_CHECKING(for TCP_FASTOPEN socket option)
+case "$enable_tcp_fastopen" in
+yes|''|autodetect)
+ AC_EGREP_CPP(has_tfo, [
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/tcp.h>
+#ifdef TCP_FASTOPEN
+int has_tfo() { return (0); }
+#endif
+],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_HAVETFO="#define ISC_PLATFORM_HAVETFO 1"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVETFO="#undef ISC_PLATFORM_HAVETFO"])
+
+ ;;
+ no)
+ AC_MSG_RESULT(disabled)
+ ISC_PLATFORM_HAVETFO="#undef ISC_PLATFORM_HAVETFO"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVETFO)
+
+#
+# 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"
+ ISC_IRS_NEEDADDRINFO="#undef ISC_IRS_NEEDADDRINFO"
+ AC_DEFINE(HAVE_ADDRINFO)],
+ [AC_MSG_RESULT(no)
+ ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"
+ ISC_IRS_NEEDADDRINFO="#define ISC_IRS_NEEDADDRINFO 1"])
+AC_SUBST(ISC_LWRES_NEEDADDRINFO)
+AC_SUBST(ISC_IRS_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)
+
+#
+# Sadly, the definitions of system-supplied getnameinfo(3) vary. Try to catch
+# known variations here:
+#
+AC_MSG_CHECKING(for getnameinfo prototype definitions)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *, socklen_t, char *,
+ socklen_t, char *, socklen_t, unsigned int);],
+[ return (0);],
+ [AC_MSG_RESULT(socklen_t for buflen; u_int for flags)
+ AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t,
+ [Define to the sockaddr length type used by getnameinfo(3).])
+ AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t,
+ [Define to the buffer length type used by getnameinfo(3).])
+ AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int,
+ [Define to the flags type used by getnameinfo(3).])],
+[AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *, socklen_t, char *,
+ size_t, char *, size_t, int);],
+[ return (0);],
+ [AC_MSG_RESULT(size_t for buflen; int for flags)
+ AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t)
+ AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
+ AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
+[AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *, size_t, char *,
+ size_t, char *, size_t, int);],
+[ return (0);],
+ [AC_MSG_RESULT(size_t for buflen; int for flags)
+ AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, size_t)
+ AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
+ AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
+[AC_MSG_RESULT(not match any subspecies; assume standard definition)
+AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t)
+AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t)
+AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])])
+
+#
+# ...and same for gai_strerror().
+#
+AC_MSG_CHECKING(for gai_strerror prototype definitions)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+char *gai_strerror(int ecode);],
+[ return (0); ],
+ [AC_MSG_RESULT(returning char *)
+ AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [char *],
+ [return type of gai_strerror])],
+[AC_MSG_RESULT(not match any subspecies; assume standard definition)
+AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [const char *])])
+
+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)
+AC_SUBST(ISC_IRS_GETNAMEINFOSOCKLEN)
+
+AC_ARG_ENABLE(getifaddrs,
+ AS_HELP_STRING([--enable-getifaddrs],
+ [enable the use of getifaddrs() [yes|no].]),
+ want_getifaddrs="$enableval", want_getifaddrs="yes")
+
+#
+# This interface iteration code for getifaddrs() will fall back to using
+# /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6
+# addresses.
+#
+case $want_getifaddrs in
+glibc)
+AC_MSG_WARN("--enable-getifaddrs=glibc is no longer required")
+AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
+;;
+yes)
+AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
+;;
+no)
+;;
+esac
+
+#
+# Look for a sysctl call to get the list of network interfaces.
+#
+case $ac_cv_header_sys_sysctl_h in
+yes)
+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)])
+;;
+esac
+
+#
+# Check for some other useful functions that are not ever-present.
+#
+
+# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC
+# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77
+# reportedly defines strsep() without declaring it in <string.h> when
+# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and
+# AC_CHECK_FUNC() incorrectly succeeds because it declares
+# the function itself.
+AC_MSG_CHECKING(for correctly declared strsep())
+AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");],
+ [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
+ [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
+AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
+
+AC_CHECK_FUNC(memmove,
+ [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"],
+ [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"])
+AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE)
+
+AC_CHECK_FUNC(strtoul,
+ [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL"
+ LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL"
+ GENRANDOMLIB=""],
+ [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1"
+ LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1"
+ GENRANDOMLIB='${ISCLIBS}'])
+AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL)
+AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL)
+AC_SUBST(GENRANDOMLIB)
+
+AC_CHECK_FUNC(strlcpy,
+ [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"
+ LWRES_PLATFORM_NEEDSTRLCPY="#undef LWRES_PLATFORM_NEEDSTRLCPY"],
+ [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"
+ LWRES_PLATFORM_NEEDSTRLCPY="#define LWRES_PLATFORM_NEEDSTRLCPY 1"])
+AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY)
+AC_SUBST(LWRES_PLATFORM_NEEDSTRLCPY)
+
+AC_CHECK_FUNC(strlcat,
+ [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"],
+ [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"])
+AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT)
+
+AC_CHECK_FUNC(strcasestr,
+ [ISC_PLATFORM_NEEDSTRCASESTR="#undef ISC_PLATFORM_NEEDSTRCASESTR"],
+ [ISC_PLATFORM_NEEDSTRCASESTR="#define ISC_PLATFORM_NEEDSTRCASESTR 1"])
+AC_SUBST(ISC_PLATFORM_NEEDSTRCASESTR)
+
+AC_SUBST(READLINE_LIB)
+AC_ARG_WITH(readline,
+ AS_HELP_STRING([--with-readline[=LIBSPEC]],
+ [specify readline library [default auto]]),
+ use_readline="$withval", use_readline="auto")
+case "$use_readline" in
+no) ;;
+*)
+ saved_LIBS="$LIBS"
+ case "$use_readline" in
+ yes|auto) try_readline="-ledit"; or_readline="-lreadline" ;;
+ *) try_readline="$use_readline"
+ esac
+ for readline in "$try_readline" $or_readline
+ do
+ LIBS="$readline"
+ AC_MSG_NOTICE(checking for readline with $readline)
+ AC_CHECK_FUNCS(readline)
+ if test "yes" = "$ac_cv_func_readline"
+ then
+ READLINE_LIB="$readline"
+ break
+ fi
+ for lib in -lterminfo -ltermcap -lncurses -lcurses
+ do
+ AC_MSG_NOTICE(checking for readline with $readline $lib)
+ unset ac_cv_func_readline
+ LIBS="$readline $lib"
+ AC_CHECK_FUNCS(readline)
+ if test "yes" = "$ac_cv_func_readline"
+ then
+ READLINE_LIB="$readline $lib"
+ break
+ fi
+ done
+ if test "yes" = "$ac_cv_func_readline"
+ then
+ break
+ fi
+ done
+ if test "auto" != "$use_readline" &&
+ test "X$READLINE_LIB" = "X"
+ then
+ AC_MSG_ERROR([The readline library was not found.])
+ fi
+ LIBS="$saved_LIBS"
+ ;;
+esac
+if test "yes" = "$ac_cv_func_readline"
+then
+ case "$READLINE_LIB" in
+ *edit*)
+ AC_CHECK_HEADERS(editline/readline.h)
+ AC_CHECK_HEADERS(edit/readline/readline.h)
+ AC_CHECK_HEADERS(edit/readline/history.h)
+ ;;
+ esac
+ AC_CHECK_HEADERS(readline/readline.h)
+ AC_CHECK_HEADERS(readline/history.h)
+fi
+
+ISC_PRINT_OBJS=
+ISC_PRINT_SRCS=
+ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
+ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'
+ISC_PLATFORM_NEEDSPRINTF='#undef ISC_PLATFORM_NEEDSPRINTF'
+ISC_PLATFORM_NEEDVSNPRINTF='#undef ISC_PLATFORM_NEEDVSNPRINTF'
+LWRES_PLATFORM_NEEDVSNPRINTF='#undef LWRES_PLATFORM_NEEDVSNPRINTF'
+
+AC_MSG_CHECKING(sprintf return type)
+AC_TRY_COMPILE([
+#include <stdio.h>
+],
+[ char buf[2]; return(*sprintf(buf,"x"));],
+[AC_MSG_RESULT(char *)
+ISC_PRINT_OBJS="print.$O"
+ISC_PRINT_SRCS="print.c"
+ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
+LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
+],[AC_MSG_RESULT(int)])
+
+AC_CHECK_FUNC(vsnprintf, [],
+ [ISC_PRINT_OBJS="print.$O"
+ ISC_PRINT_SRCS="print.c"
+ ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
+ LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
+
+AC_MSG_CHECKING(printf for %z support)
+AC_TRY_RUN([
+#include <stdio.h>
+
+int
+main() {
+ size_t j = 0;
+ char buf[100];
+ buf[0] = 0;
+ sprintf(buf, "%zu", j);
+ return ((buf[0] == '0' && buf[1] == '\0') ? 0 : 1);
+}
+],
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)
+ ISC_PRINT_OBJS="print.$O"
+ ISC_PRINT_SRCS="print.c"
+ ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1'
+ ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1'
+ ISC_PLATFORM_NEEDFSRINTF='#define ISC_PLATFORM_NEEDSPRINTF 1'
+ ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
+ LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"],
+ [AC_MSG_RESULT(assuming target platform supports %z)])
+
+AC_SUBST(ISC_PLATFORM_NEEDPRINTF)
+AC_SUBST(ISC_PLATFORM_NEEDFPRINTF)
+AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
+AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
+AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
+AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
+
+ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
+ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
+AC_SUBST(ISC_EXTRA_OBJS)
+AC_SUBST(ISC_EXTRA_SRCS)
+
+AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
+#
+# Use our own SPNEGO implementation?
+#
+AC_ARG_ENABLE(isc-spnego,
+ AS_HELP_STRING([--disable-isc-spnego],
+ [use SPNEGO from GSSAPI library]))
+
+if test -n "$USE_GSSAPI"
+then
+ case "$enable_isc_spnego" in
+ yes|'')
+ USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO'
+ DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O"
+ DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c"
+ AC_MSG_RESULT(using SPNEGO from lib/dns)
+ ;;
+ no)
+ AC_MSG_RESULT(using SPNEGO from GSSAPI library)
+ ;;
+ esac
+fi
+
+AC_SUBST(USE_ISC_SPNEGO)
+
+AC_SUBST(DST_EXTRA_OBJS)
+AC_SUBST(DST_EXTRA_SRCS)
+
+#
+# Security Stuff
+#
+# Note it is very recommended to *not* disable chroot(),
+# this is only because chroot() was made obsolete by Posix.
+AC_ARG_ENABLE(chroot, AS_HELP_STRING([--disable-chroot], [disable chroot]))
+case "$enable_chroot" in
+ yes|'')
+ AC_CHECK_FUNCS(chroot)
+ ;;
+ no)
+ ;;
+esac
+AC_ARG_ENABLE(linux-caps,
+ AS_HELP_STRING([--disable-linux-caps],
+ [disable linux capabilities]))
+case "$enable_linux_caps" in
+ yes|'')
+ AC_CHECK_HEADERS(linux/types.h)
+ AC_CHECK_HEADERS([sys/capability.h])
+ AC_CHECK_HEADERS([linux/capability.h], [], [],
+ [#ifdef HAVE_LINUX_TYPES_H
+ #include <linux/types.h>
+ #endif
+ ])
+ AC_CHECK_LIB(cap, cap_set_proc)
+ ;;
+ no)
+ ;;
+esac
+AC_CHECK_HEADERS(sys/prctl.h)
+
+AC_CHECK_HEADERS(sys/un.h,
+ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
+,
+ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
+)
+AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
+
+case "$host" in
+*-solaris*)
+ AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
+ [Define if connect does not honour the permission on the UNIX domain socket.])
+ ;;
+*-sunos*)
+ AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
+ [Define if connect does not honour the permission on the UNIX domain socket.])
+ ;;
+esac
+
+#
+# Time Zone Stuff
+#
+AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET))
+
+AC_MSG_CHECKING(for optarg declaration)
+AC_TRY_COMPILE([
+#include <unistd.h>
+],
+[optarg = 0;],
+[AC_MSG_RESULT(yes)],
+[AC_MSG_RESULT(no)
+GEN_NEED_OPTARG="-DNEED_OPTARG=1"
+AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])])
+
+#
+# Check for nanoseconds in file stats
+#
+AC_MSG_CHECKING(st_mtim.tv_nsec)
+AC_TRY_COMPILE([#include <sys/fcntl.h>],[struct stat s; return(s.st_mtim.tv_nsec);],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_HAVESTATNSEC="#define ISC_PLATFORM_HAVESTATNSEC 1"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVESTATNSEC="#undef ISC_PLATFORM_HAVESTATNSEC"])
+AC_SUBST(ISC_PLATFORM_HAVESTATNSEC)
+
+#
+# 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_ARG_WITH(rlimtype, , rlimtype="$withval", rlimtype="long long int")
+ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE $rlimtype"
+AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming $rlimtype)])
+])
+AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
+
+#
+# Older HP-UX doesn't have gettune
+#
+case "$host" in
+ *-hp-hpux*)
+ AC_CHECK_HEADERS(sys/dyntune.h)
+ ;;
+ *)
+ ;;
+esac
+
+
+#
+# Compaq TruCluster requires more code for handling cluster IP aliases
+#
+case "$host" in
+ *-dec-osf*)
+ AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS")
+ AC_CHECK_FUNC(clua_getaliasaddress,
+ AC_DEFINE(HAVE_TRUCLUSTER, 1,
+ [Define if running under Compaq TruCluster]))
+ ;;
+ *)
+ ;;
+esac
+
+#
+# Some hosts need msg_namelen to match the size of the socket structure.
+# Some hosts don't set msg_namelen appropriately on return from recvmsg().
+#
+case $host in
+*os2*|*hp-mpeix*)
+ AC_DEFINE(BROKEN_RECVMSG, 1,
+ [Define if recvmsg() does not meet all of the BSD socket API specifications.])
+ ;;
+esac
+
+#
+# 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"
+AC_SUBST(IRS_PLATFORM_USEDECLSPEC)
+IRS_PLATFORM_USEDECLSPEC="#undef IRS_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
+ *-aix5.[[123]].*)
+ hack_shutup_pthreadonceinit=yes
+ ;;
+ *-bsdi3.1*)
+ hack_shutup_sputaux=yes
+ ;;
+ *-bsdi4.0*)
+ hack_shutup_sigwait=yes
+ hack_shutup_sputaux=yes
+ ;;
+ [*-bsdi4.[12]*])
+ hack_shutup_stdargcast=yes
+ ;;
+ [*-solaris2.[89]])
+ hack_shutup_pthreadonceinit=yes
+ ;;
+ *-solaris2.1[[0-9]])
+ AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [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
+
+AC_CHECK_HEADERS(strings.h,
+ ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1"
+,
+ ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH"
+)
+AC_SUBST(ISC_PLATFORM_HAVESTRINGSH)
+
+#
+# Check for if_nametoindex() for IPv6 scoped addresses support
+#
+AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
+ ac_cv_have_if_nametoindex=no)
+case $ac_cv_have_if_nametoindex in
+no)
+ case "$host" in
+ *-hp-hpux*)
+ AC_CHECK_LIB(ipv6, if_nametoindex,
+ ac_cv_have_if_nametoindex=yes
+ LIBS="-lipv6 $LIBS",)
+ ;;
+ esac
+esac
+case $ac_cv_have_if_nametoindex in
+yes)
+ ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1"
+ AC_DEFINE(HAVE_IF_NAMETOINDEX, 1,
+ [Define to 1 if you have the if_nametoindex function.])
+ ;;
+*)
+ ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX)
+
+AC_CHECK_FUNCS(nanosleep usleep explicit_bzero)
+
+#
+# Machine architecture dependent features
+#
+have_stdatomic=no
+AC_MSG_CHECKING(for usable stdatomic.h)
+AC_TRY_COMPILE([
+#include <stdio.h>
+#include <stdatomic.h>
+],
+[
+atomic_int_fast32_t val = 0; atomic_fetch_add_explicit(&val, 1, memory_order_relaxed);
+],
+ [AC_MSG_RESULT(yes)
+ have_stdatomic=yes
+ ISC_PLATFORM_HAVESTDATOMIC="#define ISC_PLATFORM_HAVESTDATOMIC 1"],
+ [AC_MSG_RESULT(no)
+ have_stdatomic=no
+ ISC_PLATFORM_HAVESTDATOMIC="#undef ISC_PLATFORM_HAVESTDATOMIC"])
+
+AC_ARG_ENABLE(atomic,
+ AS_HELP_STRING([--enable-atomic],
+ [enable machine specific atomic operations [default=autodetect]]),
+ enable_atomic="$enableval",
+ enable_atomic="autodetect")
+case "$enable_atomic" in
+ yes|''|autodetect)
+ case "$host" in
+ powerpc-ibm-aix*)
+ if test "X$GCC" = "Xyes"; then
+ AC_MSG_CHECKING([if asm("ics"); works])
+ AC_TRY_COMPILE(,[
+ main() { asm("ics"); exit(0); }
+ ],
+ [AC_MSG_RESULT(yes)
+ use_atomic=yes],
+ [
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Wa,-many"
+ AC_TRY_RUN([
+ main() { asm("ics"); exit(0); }
+ ],
+ [AC_MSG_RESULT([yes, required -Wa,-many])
+ use_atomic=yes],
+ [AC_MSG_RESULT([no, use_atomic disabled])
+ CFLAGS="$saved_cflags"
+ use_atomic=no],
+ [AC_MSG_RESULT([cross compile, assume yes])
+ CFLAGS="$saved_cflags"
+ use_atomic=yes])
+ ]
+ )
+ else
+ use_atomic=yes
+ fi
+ ;;
+ *)
+ use_atomic=yes
+ ;;
+ esac
+ ;;
+ no)
+ have_stdatomic=no
+ ISC_PLATFORM_HAVESTDATOMIC="#undef ISC_PLATFORM_HAVESTDATOMIC"
+ use_atomic=no
+ arch=noatomic
+ ;;
+esac
+
+if test "X$have_stdatomic" = "Xyes"; then
+ AC_MSG_CHECKING(if -latomic is needed to use 64-bit stdatomic.h primitives)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([#include <stdatomic.h>],
+ [atomic_int_fast64_t val = 0; atomic_fetch_add_explicit(&val, 1, memory_order_relaxed);])],
+ [AC_MSG_RESULT(no)
+ ISC_ATOMIC_LIBS=""],
+ [AC_MSG_RESULT(yes)
+ ISC_ATOMIC_LIBS="-latomic"]
+ )
+ LIBS="$LIBS $ISC_ATOMIC_LIBS"
+fi
+
+AC_SUBST(ISC_PLATFORM_HAVESTDATOMIC)
+
+ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM"
+ISC_PLATFORM_USEGCCASM="#undef ISC_PLATFORM_USEGCCASM"
+ISC_PLATFORM_USESTDASM="#undef ISC_PLATFORM_USESTDASM"
+ISC_PLATFORM_USEMACASM="#undef ISC_PLATFORM_USEMACASM"
+if test "yes" = "$use_atomic"; then
+ have_atomic=yes # set default
+ case "$host" in
+ [i[3456]86-*])
+ # XXX: some old x86 architectures actually do not support
+ # (some of) these operations. Do we need stricter checks?
+ AC_CHECK_SIZEOF([void *])
+ if test $ac_cv_sizeof_void_p = 8; then
+ arch=x86_64
+ have_xaddq=yes
+ else
+ arch=x86_32
+ fi
+ ;;
+ x86_64-*|amd64-*)
+ AC_CHECK_SIZEOF([void *])
+ if test $ac_cv_sizeof_void_p = 8; then
+ arch=x86_64
+ have_xaddq=yes
+ else
+ arch=x86_32
+ fi
+ ;;
+ alpha*-*)
+ arch=alpha
+ ;;
+ powerpc-*|powerpc64-*)
+ arch=powerpc
+ ;;
+ mips-*|mipsel-*|mips64-*|mips64el-*)
+ arch=mips
+ ;;
+ ia64-*)
+ arch=ia64
+ ;;
+ *)
+ have_atomic=no
+ arch=noatomic
+ ;;
+ esac
+ AC_MSG_CHECKING([architecture type for atomic operations])
+ AC_MSG_RESULT($arch)
+fi
+
+if test "yes" = "$have_atomic"; then
+ AC_MSG_CHECKING([compiler support for inline assembly code])
+
+ compiler=generic
+ # Check whether the compiler supports the assembly syntax we provide.
+ if test "X$GCC" = "Xyes"; then
+ # GCC's ASM extension always works
+ compiler=gcc
+ if test $arch = "x86_64"; then
+ # We can share the same code for gcc with x86_32
+ arch=x86_32
+ fi
+ if test $arch = "powerpc"; then
+ #
+ # The MacOS (and maybe others) uses "r0" for register
+ # zero. Under linux/ibm it is "0" for register 0.
+ # Probe to see if we have a MacOS style assembler.
+ #
+ AC_MSG_CHECKING([Checking for MacOS style assembler syntax])
+ AC_TRY_COMPILE(, [
+ __asm__ volatile ("li r0, 0x0\n"::);
+ ], [
+ AC_MSG_RESULT(yes)
+ compiler="mac"
+ ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1"
+ ], [AC_MSG_RESULT(no)])
+ fi
+ else
+ case "$host" in
+ alpha*-dec-osf*)
+ # Tru64 compiler has its own syntax for inline
+ # assembly.
+ AC_TRY_COMPILE(, [
+#ifndef __DECC
+#error "unexpected compiler"
+#endif
+ return (0);],
+ [compiler=osf],)
+ ;;
+ powerpc-ibm-aix*)
+ compiler=aix
+ ;;
+ esac
+ fi
+ case "$compiler" in
+ gcc)
+ ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1"
+ ;;
+ osf)
+ ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1"
+ ;;
+ aix)
+ ;;
+ mac)
+ ;;
+ *)
+ # See if the generic __asm function works. If not,
+ # we need to disable the atomic operations.
+ AC_TRY_LINK(, [
+ __asm("nop")
+ ],
+ [compiler="standard"
+ ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"],
+ [compiler="not supported (atomic operations disabled)"
+ have_atomic=no
+ arch=noatomic ]);
+ ;;
+ esac
+
+ AC_MSG_RESULT($compiler)
+fi
+
+if test "yes" = "$have_atomic"; then
+ ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1"
+ ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1"
+ ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1"
+ if test "yes" = "$have_xaddq"; then
+ ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1"
+ ISC_PLATFORM_HAVEATOMICSTOREQ="#define ISC_PLATFORM_HAVEATOMICSTOREQ 1"
+ else
+ ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ"
+ ISC_PLATFORM_HAVEATOMICSTOREQ="#undef ISC_PLATFORM_HAVEATOMICSTOREQ"
+ fi
+else
+ ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD"
+ ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG"
+ ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE"
+ ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ"
+ ISC_PLATFORM_HAVEATOMICSTOREQ="#undef ISC_PLATFORM_HAVEATOMICSTOREQ"
+fi
+
+AC_SUBST(ISC_PLATFORM_HAVEXADD)
+AC_SUBST(ISC_PLATFORM_HAVEXADDQ)
+AC_SUBST(ISC_PLATFORM_HAVECMPXCHG)
+AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE)
+AC_SUBST(ISC_PLATFORM_HAVEATOMICSTOREQ)
+
+AC_SUBST(ISC_PLATFORM_USEGCCASM)
+AC_SUBST(ISC_PLATFORM_USEOSFASM)
+AC_SUBST(ISC_PLATFORM_USESTDASM)
+AC_SUBST(ISC_PLATFORM_USEMACASM)
+
+ISC_ARCH_DIR=$arch
+AC_SUBST(ISC_ARCH_DIR)
+
+#
+# Check for __builtin_expect
+#
+AC_MSG_CHECKING([compiler support for __builtin_expect])
+AC_TRY_LINK(, [
+ return (__builtin_expect(1, 1) ? 1 : 0);
+], [
+ have_builtin_expect=yes
+ AC_MSG_RESULT(yes)
+], [
+ have_builtin_expect=no
+ AC_MSG_RESULT(no)
+])
+if test "yes" = "$have_builtin_expect"; then
+ AC_DEFINE(HAVE_BUILTIN_EXPECT, 1, [Define to 1 if the compiler supports __builtin_expect.])
+fi
+
+#
+# Check for __builtin_clz
+#
+AC_MSG_CHECKING([compiler support for __builtin_clz])
+AC_TRY_LINK(, [
+ return (__builtin_clz(0xff) == 24 ? 1 : 0);
+], [
+ have_builtin_clz=yes
+ AC_MSG_RESULT(yes)
+], [
+ have_builtin_clz=no
+ AC_MSG_RESULT(no)
+])
+if test "yes" = "$have_builtin_clz"; then
+ AC_DEFINE(HAVE_BUILTIN_CLZ, 1, [Define to 1 if the compiler supports __builtin_clz.])
+fi
+
+#
+# CPU relax (for spin locks)
+#
+if $use_threads
+then
+ case "$host" in
+ [i[3456]86-*])
+ # x86_32
+ AC_MSG_CHECKING([if asm("rep; nop"); works])
+ AC_TRY_COMPILE(,[asm("rep; nop");],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"],
+ [AC_MSG_RESULT(no)],
+ [AC_MSG_RESULT([cross compile, assume yes])
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"])
+ ;;
+ x86_64-*|amd64-*)
+ # x86_64
+ AC_MSG_CHECKING([if asm("rep; nop"); works])
+ AC_TRY_COMPILE(,[asm("rep; nop");],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"],
+ [AC_MSG_RESULT(no)],
+ [AC_MSG_RESULT([cross compile, assume yes])
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"])
+ ;;
+ ia64-*)
+ # ia64
+ AC_MSG_CHECKING([if asm("hint @pause"); works])
+ AC_TRY_COMPILE(,[asm("hint @pause");],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"],
+ [AC_MSG_RESULT(no)],
+ [AC_MSG_RESULT([cross compile, assume yes])
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"])
+ ;;
+ sparc-*)
+ # sparc
+ AC_MSG_CHECKING([if cpu_relax(); or __cpu_relax(); works])
+ AC_CHECK_FUNC(cpu_relax,
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP cpu_relax()"],
+ [AC_CHECK_FUNC(__cpu_relax,
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP __cpu_relax()"],
+ [AC_MSG_RESULT(no)])])
+ ;;
+ esac
+fi
+
+AC_SUBST(ISC_PLATFORM_BUSYWAITNOP)
+
+#
+# Activate "rrset-order fixed" or not?
+#
+AC_ARG_ENABLE(fixed-rrset,
+ AS_HELP_STRING([--enable-fixed-rrset],
+ [enable fixed rrset ordering [default=no]]),
+ enable_fixed="$enableval", enable_fixed="no")
+case "$enable_fixed" in
+ yes)
+ AC_DEFINE(DNS_RDATASET_FIXED, 1,
+ [Define to enable "rrset-order fixed" syntax.])
+ ;;
+ no)
+ ;;
+ *)
+ ;;
+esac
+
+#
+# Enable response policy rewriting using NS IP addresses
+#
+AC_ARG_ENABLE(rpz-nsip,
+ AS_HELP_STRING([--disable-rpz-nsip],
+ [disable rpz nsip rules [default=enabled]]),
+ enable_nsip="$enableval", enable_nsip="yes")
+case "$enable_nsip" in
+ yes)
+ AC_DEFINE(ENABLE_RPZ_NSIP, 1,
+ [Define to enable rpz-nsip rules.])
+ ;;
+ no)
+ ;;
+ *)
+ ;;
+esac
+
+#
+# Enable response policy rewriting using NS name
+#
+AC_ARG_ENABLE(rpz-nsdname,
+ AS_HELP_STRING([--disable-rpz-nsdname],
+ [disable rpz nsdname rules [default=enabled]]),
+ enable_nsdname="$enableval", enable_nsdname="yes")
+case "$enable_nsdname" in
+ yes)
+ AC_DEFINE(ENABLE_RPZ_NSDNAME, 1,
+ [Define to enable rpz-nsdname rules.])
+ ;;
+ no)
+ ;;
+ *)
+ ;;
+esac
+
+#
+# Activate "filter-aaaa-on-v4/v6" or not?
+#
+AC_ARG_ENABLE(filter-aaaa,
+ [ --enable-filter-aaaa enable filtering of AAAA records [[default=no]]],
+ enable_filter="$enableval",
+ enable_filter="no")
+case "$enable_filter" in
+ yes)
+ AC_DEFINE(ALLOW_FILTER_AAAA, 1,
+ [Define to enable the "filter-aaaa-on-v4" and "filter-aaaa-on-v6" options.])
+ ;;
+ no)
+ ;;
+ *)
+ ;;
+esac
+
+#
+# Activate dnstap?
+#
+AC_ARG_ENABLE(dnstap,
+ AS_HELP_STRING([--enable-dnstap],
+ [enable dnstap support
+ (requires fstrm, protobuf-c)]),
+ use_dnstap=$enableval, use_dnstap=no)
+
+DNSTAP=
+DNSTAPSRCS=
+DNSTAPOBJS=
+DNSTAPTARGETS=
+DNSTAP_PB_C_H=
+if test "x$use_dnstap" != "xno"; then
+ if ! $use_threads; then
+ AC_MSG_ERROR([Dnstap requires threads.])
+ fi
+ AC_ARG_WITH([protobuf-c],
+ AS_HELP_STRING([--with-protobuf-c=path],
+ [Path where protobuf-c is installed,
+ for dnstap]), [
+ # workaround for protobuf-c includes at old dir
+ # before protobuf-c-1.0.0
+ if test -f $withval/include/google/protobuf-c/protobuf-c.h
+ then
+ CFLAGS="$CFLAGS -I$withval/include/google"
+ else
+ CFLAGS="$CFLAGS -I$withval/include"
+ fi
+ LDFLAGS="$LDFLAGS -L$withval/lib"
+ AC_PATH_PROG([PROTOC_C], [protoc-c], [],
+ [$PATH$PATH_SEPARATOR$withval/bin])
+ ], [
+ # workaround for protobuf-c includes at old dir
+ # before protobuf-c-1.0.0
+ if test -f /usr/include/google/protobuf-c/protobuf-c.h
+ then
+ CFLAGS="$CFLAGS -I/usr/include/google"
+ else
+ if test -f /usr/local/include/google/protobuf-c/protobuf-c.h
+ then
+ CFLAGS="$CFLAGS -I/usr/local/include/google"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ fi
+ fi
+ AC_PATH_PROG([PROTOC_C],[protoc-c])
+ ])
+ if test -z "$PROTOC_C"; then
+ AC_MSG_ERROR([The protoc-c program was not found.])
+ fi
+ AC_ARG_WITH([libfstrm], AS_HELP_STRING([--with-libfstrm=path],
+ [Path where libfstrm is installed, for dnstap]), [
+ CFLAGS="$CFLAGS -I$withval/include"
+ LDFLAGS="$LDFLAGS -L$withval/lib"
+ AC_PATH_PROG([FSTRM_CAPTURE], [fstrm_capture], [], [$PATH$PATH_SEPARATOR$withval/bin])
+ ],[
+ AC_PATH_PROG([FSTRM_CAPTURE], [fstrm_capture])
+ ])
+
+ AC_SEARCH_LIBS([fstrm_iothr_init], [fstrm], [],
+ AC_MSG_ERROR([The fstrm library was not found. Please install fstrm!]))
+ AC_SEARCH_LIBS([protobuf_c_message_pack], [protobuf-c], [],
+ AC_MSG_ERROR([The protobuf-c library was not found. Please install protobuf-c!]))
+
+ AC_DEFINE(HAVE_DNSTAP, 1, [Define to 1 to enable dnstap support])
+ DNSTAP=dnstap
+ DNSTAPSRCS='${DNSTAPSRCS}'
+ DNSTAPOBJS='${DNSTAPOBJS}'
+ DNSTAPTARGETS='${DNSTAPTARGETS}'
+ DNSTAP_PB_C_H="dnstap.pb-c.h"
+fi
+AC_SUBST(DNSTAP)
+AC_SUBST(DNSTAPSRCS)
+AC_SUBST(DNSTAPOBJS)
+AC_SUBST(DNSTAPTARGETS)
+AC_SUBST(DNSTAP_PB_C_H)
+
+#
+# The following sets up how non-blocking i/o is established.
+# Sunos, cygwin and solaris 2.x (x<5) require special handling.
+#
+case "$host" in
+*-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
+*-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
+*-solaris2.[[01234]])
+ AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
+ AC_DEFINE(USE_FIONBIO_IOCTL, 1,
+ [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
+ ;;
+*) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
+ [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
+ ;;
+esac
+#
+# Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
+# This prevents the source address being set.
+#
+case "$host" in
+*-solaris2.[[012345]]|*-solaris2.5.1)
+ AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
+ [Define if you cannot bind() before connect() for TCP sockets.])
+ ;;
+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.
+#
+
+#
+# Look for TeX.
+#
+
+AC_PATH_PROGS(LATEX, latex, latex)
+AC_SUBST(LATEX)
+
+AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
+AC_SUBST(PDFLATEX)
+
+AC_PATH_PROGS(DBLATEX, dblatex, dblatex)
+AC_SUBST(DBLATEX)
+
+#
+# Look for w3m
+#
+
+AC_PATH_PROGS(W3M, w3m, w3m)
+AC_SUBST(W3M)
+
+#
+# Look for pandoc
+#
+AC_PATH_PROG(PANDOC, pandoc, pandoc)
+AC_SUBST(PANDOC)
+
+
+#
+# Look for xsltproc (libxslt)
+#
+
+AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
+AC_SUBST(XSLTPROC)
+
+#
+# Look for xmllint (libxml2)
+#
+
+AC_PATH_PROG(XMLLINT, xmllint, xmllint)
+AC_SUBST(XMLLINT)
+
+#
+# Look for Doxygen
+#
+
+AC_PATH_PROG(DOXYGEN, doxygen, doxygen)
+AC_SUBST(DOXYGEN)
+
+#
+# Look for curl
+#
+
+AC_PATH_PROG(CURL, curl, curl)
+AC_SUBST(CURL)
+
+#
+# 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)
+])
+
+#
+# Look for Docbook-XSL stylesheets. Location probably varies by system.
+# If it's not explicitly specified, guess where it might be found, based on
+# where SGML stuff lives on some systems (FreeBSD is the only one we're sure
+# of at the moment).
+#
+AC_MSG_CHECKING(for Docbook-XSL path)
+AC_ARG_WITH(docbook-xsl,
+ AS_HELP_STRING([--with-docbook-xsl[=PATH]],
+ [specify path for Docbook-XSL stylesheets]),
+ docbook_path="$withval", docbook_path="auto")
+case "$docbook_path" in
+auto)
+ AC_MSG_RESULT(auto)
+ docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook-ns /usr/local/share/xsl/docbook /usr/share/xsl/docbook /opt/local/share/xsl/docbook-xsl /opt/local/share/xsl/docbook-xsl-nons /usr/share/xml/docbook/stylesheet/docbook-xsl"
+ ;;
+*)
+ docbook_xsl_trees="$withval"
+ AC_MSG_RESULT($docbook_xsl_trees)
+ ;;
+esac
+
+#
+# Look for stylesheets we need.
+#
+
+NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees)
+NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees)
+
+#
+# Same dance for dblatex
+#
+dblatex_xsl_trees="/usr/local/share/xml/docbook/stylesheet/dblatex /usr/pkg/share/xml/docbook/stylesheet/dblatex /usr/share/xml/docbook/stylesheet/dblatex"
+NOM_PATH_FILE(XSLT_DBLATEX_STYLE, xsl/docbook.xsl, $dblatex_xsl_trees)
+NOM_PATH_FILE(XSLT_DBLATEX_FASTBOOK, xsl/latex_book_fast.xsl, $dblatex_xsl_trees)
+
+#
+# IDN support using idnkit
+#
+AC_ARG_WITH(idnkit,
+ AS_HELP_STRING([--with-idnkit[=PATH]],
+ [enable IDN support using idnkit [yes|no|path]]),
+ use_idnkit="$withval", use_idnkit="no")
+case "$use_idnkit" in
+yes)
+ if test X$prefix = XNONE ; then
+ idnkit_path=/usr/local
+ else
+ idnkit_path=$prefix
+ fi
+ ;;
+no)
+ ;;
+*)
+ idnkit_path="$use_idnkit"
+ ;;
+esac
+
+iconvinc=
+iconvlib=
+AC_ARG_WITH(libiconv,
+ AS_HELP_STRING([--with-libiconv[=IPREFIX]],
+ [GNU libiconv are in IPREFIX [default PREFIX]]),
+ use_libiconv="$withval", use_libiconv="no")
+case "$use_libiconv" in
+yes)
+ if test X$prefix = XNONE ; then
+ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
+ else
+ iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
+ fi
+ ;;
+no)
+ iconvlib=
+ ;;
+*)
+ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
+ ;;
+esac
+
+AC_ARG_WITH(iconv,
+ AS_HELP_STRING([--with-iconv[=LIBSPEC]],
+ [specify iconv library [default -liconv]]),
+ iconvlib="$withval")
+case "$iconvlib" in
+no)
+ iconvlib=
+ ;;
+yes)
+ iconvlib=-liconv
+ ;;
+esac
+
+AC_ARG_WITH(idnlib,
+ AS_HELP_STRING([--with-idnlib=ARG], [specify libidnkit]),
+ idnlib="$withval", idnlib="no")
+if test "yes" = "$idnlib"; then
+ AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
+fi
+
+IDNKIT_LIBS=
+if test "no" != "$use_idnkit"; then
+ AC_DEFINE(WITH_IDNKIT, 1, [define if idnkit support is to be included.])
+ STD_CINCLUDES="$STD_CINCLUDES -I$idnkit_path/include"
+ if test "no" != "$idnlib"; then
+ IDNKIT_LIBS="$idnlib $iconvlib"
+ else
+ IDNKIT_LIBS="-L$idnkit_path/lib -lidnkit $iconvlib"
+ fi
+fi
+AC_SUBST(IDNKIT_LIBS)
+
+#
+# IDN support using libidn2
+#
+
+LIBIDN2_CFLAGS=
+LIBIDN2_LDFLAGS=
+LIBIDN2_LIBS=
+AC_ARG_WITH(libidn2,
+ AS_HELP_STRING([--with-libidn2[=PATH]], [enable IDN support using GNU libidn2 [yes|no|path]]),
+ use_libidn2="$withval", use_libidn2="no")
+AS_CASE([$use_libidn2],
+ [no],[:],
+ [yes],[:],
+ [*],[
+ LIBIDN2_CFLAGS="-I$use_libidn2/include"
+ LIBIDN2_LDFLAGS="-L$use_libidn2/lib"
+ ])
+
+AS_IF([test "$use_libidn2" != "no"],
+ [save_CFLAGS="$CFLAGS"
+ save_LIBS="$LIBS"
+ save_LDFLAGS="$LDFLAGS"
+ CFLAGS="$LIBIDN2_CFLAGS $CFLAGS"
+ LDFLAGS="$LIBIDN2_LDFLAGS $LDFLAGS"
+ AC_SEARCH_LIBS([idn2_to_ascii_8z], [idn2],
+ [AC_DEFINE(WITH_IDN_SUPPORT, 1, [define if IDN input support is to be included.])
+ AC_DEFINE(WITH_LIBIDN2, 1, [define if libidn2 support is to be included.])
+ LIBIDN2_LIBS="$LIBIDN2_LDFLAGS -lidn2"],
+ [AC_MSG_ERROR([libidn2 requested, but not found])])
+ AC_TRY_LINK([#include <idn2.h>],
+ [idn2_to_unicode_8zlz(".", NULL, IDN2_NONTRANSITIONAL|IDN2_NFC_INPUT);],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(WITH_IDN_OUT_SUPPORT, 1, [define if IDN output support is to be included.])],
+ [AC_MSG_RESULT([no])])
+ CFLAGS="$save_CFLAGS"
+ LIBS="$save_LIBS"
+ LDFLAGS="$save_LDFLAGS"
+ ])
+AC_SUBST([LIBIDN2_CFLAGS])
+AC_SUBST([LIBIDN2_LIBS])
+
+#
+# IDN support in general
+#
+
+# check if idnkit and libidn2 are not used at the same time
+if test "$use_idnkit" != no && test "$use_libidn2" != no; then
+ AC_MSG_ERROR([idnkit and libidn2 cannot be used at the same time.])
+fi
+# the IDN support is on
+if test "$use_idnkit" != no || test "$use_libidn2" != no; then
+ AC_DEFINE(WITH_IDN_SUPPORT, 1, [define if IDN input support is to be included.])
+ if test "$use_libidn2" = no || test "$use_libidn2_out" != no; then
+ AC_DEFINE(WITH_IDN_OUT_SUPPORT, 1, [define if IDN output support is to be included.])
+ fi
+fi
+
+#
+# Check whether to build Automated Test Framework unit tests
+#
+AC_ARG_WITH(atf,
+ AS_HELP_STRING([--with-atf],[support Automated Test Framework]),
+ atf="$withval", atf="no")
+if test "yes" = "$atf"; then
+ atf=`pwd`/unit/atf
+ ATFBUILD=atf-src
+ AC_SUBST(ATFBUILD)
+ AC_CONFIG_COMMANDS([atf-config],
+ [(
+ mkdir -p unit/atf-src;
+ cd unit/atf-src;
+ case "$srcdir" in
+ /*) ;;
+ *) srcdir="../../$srcdir";;
+ esac
+ ${SHELL} "${srcdir}${srcdir:+/unit/atf-src/}./configure" --enable-tools --disable-shared MISSING=: --prefix $atfdir;
+ ) || AC_MSG_ERROR([Failed to configure ATF.]) ],
+ [atfdir=`pwd`/unit/atf])
+ AC_MSG_RESULT(building ATF from bind9/unit/atf-src)
+fi
+
+ATFLIBS=
+if test "no" != "$atf"; then
+ AC_DEFINE(ATF_TEST, 1, [define if ATF unit tests are to be built.])
+ STD_CINCLUDES="$STD_CINCLUDES -I$atf/include"
+ ATFBIN="$atf/bin"
+ ATFLIBS="-L$atf/lib -latf-c"
+ AC_CHECK_LIB(m, exp, libm=yes, libm=no)
+ if test "yes" = "$libm"; then
+ ATFLIBS="$ATFLIBS -lm"
+ fi
+ UNITTESTS=tests
+fi
+AC_SUBST(ATFBIN)
+AC_SUBST(ATFLIBS)
+AC_SUBST(UNITTESTS)
+
+AC_CHECK_HEADERS(locale.h)
+AC_CHECK_FUNCS(setlocale)
+
+#
+# was --with-tuning specified?
+#
+AC_ARG_WITH(tuning,
+ AS_HELP_STRING([--with-tuning=ARG],
+ [Specify server tuning (large or default)]),
+ use_tuning="$withval", use_tuning="no")
+
+case "$use_tuning" in
+ large)
+ if ! $use_threads; then
+ AC_MSG_ERROR([Large-system tuning requires threads.])
+ fi
+ AC_DEFINE(TUNE_LARGE, 1, [Define to use large-system tuning.])
+ AC_MSG_RESULT(using large-system tuning)
+ ;;
+ no|default)
+ AC_MSG_RESULT(using default tuning)
+ ;;
+ yes|*)
+ AC_MSG_ERROR([You must specify "large" or "default" for --with-tuning.])
+ ;;
+esac
+
+#
+# was --enable-querytrace specified?
+#
+AC_ARG_ENABLE(querytrace,
+ AS_HELP_STRING([--enable-querytrace],
+ [enable very verbose query trace logging
+ [default=no]]),
+ want_querytrace="$enableval", want_querytrace="no")
+
+AC_MSG_CHECKING([whether to enable query trace logging])
+case "$want_querytrace" in
+yes)
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(WANT_QUERYTRACE, 1, [Define to enable very verbose query trace logging.])
+ ;;
+no)
+ AC_MSG_RESULT(no)
+ ;;
+*)
+ AC_MSG_ERROR("--enable-querytrace requires yes or no")
+ ;;
+esac
+
+#
+# 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)
+AC_SUBST(BIND9_IRS_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"
+ BIND9_IRS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/irs/include"
+else
+ BIND9_ISC_BUILDINCLUDE=""
+ BIND9_ISCCC_BUILDINCLUDE=""
+ BIND9_ISCCFG_BUILDINCLUDE=""
+ BIND9_DNS_BUILDINCLUDE=""
+ BIND9_LWRES_BUILDINCLUDE=""
+ BIND9_BIND9_BUILDINCLUDE=""
+ BIND9_IRS_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_PRODUCT="PRODUCT=\"${PRODUCT}\""
+AC_SUBST(BIND9_PRODUCT)
+BIND9_DESCRIPTION="DESCRIPTION=\"${DESCRIPTION}\""
+AC_SUBST(BIND9_DESCRIPTION)
+BIND9_VERSION="${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}"
+AC_SUBST(BIND9_VERSION)
+BIND9_MAJOR="MAJOR=${MAJORVER}.${MINORVER}"
+AC_SUBST(BIND9_MAJOR)
+BIND9_VERSIONSTRING="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}${DESCRIPTION:+ }${DESCRIPTION}"
+AC_SUBST(BIND9_VERSIONSTRING)
+BIND9_VERSIONSHORT="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}"
+AC_SUBST(BIND9_VERSIONSHORT)
+
+BIND9_SRCID="SRCID=unset_id"
+if test -f "${srcdir}/srcid"; then
+ . "${srcdir}/srcid"
+ BIND9_SRCID="SRCID=$SRCID"
+elif test -d "${srcdir}/.git"; then
+ BIND9_SRCID="SRCID="`(cd "${srcdir}";git rev-parse --short HEAD)`
+fi
+
+AC_SUBST(BIND9_SRCID)
+
+if test -z "$ac_configure_args"; then
+ BIND9_CONFIGARGS="defaults"
+else
+ for a in $ac_configure_args
+ do
+ BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a"
+ done
+fi
+BIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`"
+BIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}"
+AC_SUBST(BIND9_CONFIGARGS)
+
+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(LIBDNS_MAPAPI)
+LIBDNS_MAPAPI="$srcdir/lib/dns/mapapi"
+
+AC_SUBST_FILE(LIBBIND9_API)
+LIBBIND9_API="$srcdir/lib/bind9/api"
+
+AC_SUBST_FILE(LIBLWRES_API)
+LIBLWRES_API="$srcdir/lib/lwres/api"
+
+AC_SUBST_FILE(LIBIRS_API)
+LIBIRS_API="$srcdir/lib/irs/api"
+
+#
+# Configure any DLZ drivers.
+#
+# If config.dlz.in selects one or more DLZ drivers, it will set
+# CONTRIB_DLZ to a non-empty value, which will be our clue to
+# build DLZ drivers in contrib.
+#
+# This section has to come after the libtool stuff because it needs to
+# know how to name the driver object files.
+#
+
+CONTRIB_DLZ=""
+DLZ_DRIVER_INCLUDES=""
+DLZ_DRIVER_LIBS=""
+DLZ_DRIVER_SRCS=""
+DLZ_DRIVER_OBJS=""
+DLZ_SYSTEM_TEST=""
+DLZ_DRIVER_MYSQL_INCLUDES=""
+DLZ_DRIVER_MYSQL_LIBS=""
+
+#
+# Configure support for building a shared library object
+#
+# Even when libtool is available it can't always be relied upon
+# to build an object that can be dlopen()'ed, but this is necessary
+# for building the dlzexternal system test, so we'll try it the
+# old-fashioned way.
+#
+SO="so"
+SO_CFLAGS=""
+SO_LDFLAGS=""
+SO_LD=""
+SO_TARGETS=""
+SO_STRIP="cat"
+
+AC_ARG_WITH(dlopen,
+ AS_HELP_STRING([--with-dlopen=ARG],
+ [support dynamically loadable DLZ drivers]),
+ dlopen="$withval", dlopen="yes")
+
+case $host in
+ *-sunos*) dlopen="no"
+ ;;
+esac
+
+if test "yes" = "$dlopen"; then
+ AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
+ if test "yes" = "$have_dl"; then
+ LIBS="-ldl $LIBS"
+ fi
+ AC_CHECK_FUNCS(dlopen dlclose dlsym,,dlopen=no)
+fi
+
+if test "yes" = "$dlopen"; then
+ case $host in
+ *-linux*|*-gnu*)
+ SO_CFLAGS="-fPIC"
+ SO_LDFLAGS=""
+ if test "yes" = "$have_dl"
+ then
+ if test "yes" = "$use_libtool"; then
+ SO_LDFLAGS="-Xcompiler -shared"
+ SO_LD="${CC}"
+ else
+ SO_LDFLAGS="-shared"
+ SO_LD="${CC}"
+ fi
+ else
+ SO_LDFLAGS="-shared"
+ SO_LD="ld"
+ fi
+ ;;
+ *-freebsd*|*-openbsd*)
+ LDFLAGS="${LDFLAGS} -Wl,-E"
+ SO_CFLAGS="-fpic"
+ if test "yes" = "$use_libtool"; then
+ SO_LDFLAGS="-Xcompiler -shared"
+ SO_LD="${CC}"
+ else
+ SO_LDFLAGS="-shared"
+ SO_LD="${CC}"
+ fi
+ ;;
+ *-netbsd*)
+ SO_CFLAGS="-fpic"
+ SO_LDFLAGS="-Bshareable -x"
+ SO_LD="ld"
+ SO_STRIP="sed -e s/-Wl,//g"
+ ;;
+ *-solaris*)
+ SO_CFLAGS="-KPIC"
+ SO_LDFLAGS="-G -z text"
+ SO_LD="ld"
+ ;;
+ *-hp-hpux*)
+ SO=sl
+ SO_CFLAGS="+z"
+ SO_LDFLAGS="-b +vnocompatwarnings"
+ SO_LD="ld"
+ ;;
+ *)
+ SO_CFLAGS="-fPIC"
+ ;;
+ esac
+
+ if test "X$GCC" = "Xyes"; then
+ SO_CFLAGS="-fPIC"
+ if test -z "$SO_LD"
+ then
+ if test "yes" = "$use_libtool"; then
+ SO_LDFLAGS="-Xcompiler -shared"
+ SO_LD="${CC}"
+ else
+ SO_LDFLAGS="-shared"
+ SO_LD="${CC}"
+ fi
+ fi
+ fi
+
+ # If we still don't know how to make shared objects, don't make any.
+ if test -n "$SO_LD"; then
+ SO_TARGETS="\${SO_TARGETS}"
+ AC_DEFINE(ISC_DLZ_DLOPEN, 1,
+ [Define to allow building of objects for dlopen().])
+ fi
+fi
+CFLAGS="$CFLAGS $SO_CFLAGS"
+
+AC_SUBST(SO)
+AC_SUBST(SO_CFLAGS)
+AC_SUBST(SO_LDFLAGS)
+AC_SUBST(SO_LD)
+AC_SUBST(SO_STRIP)
+AC_SUBST(SO_TARGETS)
+
+sinclude(contrib/dlz/config.dlz.in)
+AC_MSG_CHECKING(contributed DLZ drivers)
+
+if test -n "$CONTRIB_DLZ"
+then
+ AC_MSG_RESULT(yes)
+ DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
+ AC_CONFIG_FILES([$DLZ_DRIVER_RULES
+ contrib/dlz/modules/mysql/Makefile
+ contrib/dlz/modules/mysqldyn/Makefile])
+else
+ AC_MSG_RESULT(no)
+ DLZ_DRIVER_RULES=/dev/null
+fi
+
+AC_SUBST(CONTRIB_DLZ)
+AC_SUBST(DLZ_DRIVER_INCLUDES)
+AC_SUBST(DLZ_DRIVER_LIBS)
+AC_SUBST(DLZ_DRIVER_SRCS)
+AC_SUBST(DLZ_DRIVER_OBJS)
+AC_SUBST(DLZ_SYSTEM_TEST)
+AC_SUBST(DLZ_DRIVER_MYSQL_INCLUDES)
+AC_SUBST(DLZ_DRIVER_MYSQL_LIBS)
+AC_SUBST_FILE(DLZ_DRIVER_RULES)
+
+if test "yes" = "$cross_compiling"; then
+ if test -z "$BUILD_CC"; then
+ AC_MSG_ERROR([BUILD_CC not set])
+ fi
+ BUILD_CFLAGS="$BUILD_CFLAGS"
+ BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
+ BUILD_LDFLAGS="$BUILD_LDFLAGS"
+ BUILD_LIBS="$BUILD_LIBS"
+else
+ BUILD_CC="$CC"
+ BUILD_CFLAGS="$CFLAGS"
+ BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
+ BUILD_LDFLAGS="$LDFLAGS"
+ BUILD_LIBS="$LIBS"
+fi
+
+NEWFLAGS=""
+for e in $BUILD_LDFLAGS ; do
+ case $e in
+ -L*)
+ case $host_os in
+ netbsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ freebsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ solaris*)
+ ee=`echo $e | sed -e 's%^-L%-R%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+done
+BUILD_LDFLAGS="$NEWFLAGS"
+
+NEWFLAGS=""
+for e in $DNS_GSSAPI_LIBS ; do
+ case $e in
+ -L*)
+ case $host_os in
+ netbsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ freebsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ solaris*)
+ ee=`echo $e | sed -e 's%^-L%-R%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+done
+DNS_GSSAPI_LIBS="$NEWFLAGS"
+
+NEWFLAGS=""
+for e in $ISC_OPENSSL_LIBS ; do
+ case $e in
+ -L*)
+ case $host_os in
+ netbsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ freebsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ solaris*)
+ ee=`echo $e | sed -e 's%^-L%-R%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+done
+ISC_OPENSSL_LIBS="$NEWFLAGS"
+
+NEWFLAGS=""
+for e in $DNS_CRYPTO_LIBS ; do
+ case $e in
+ -L*)
+ case $host_os in
+ netbsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ freebsd*)
+ ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ solaris*)
+ ee=`echo $e | sed -e 's%^-L%-R%'`
+ NEWFLAGS="$NEWFLAGS $e $ee"
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $e"
+ ;;
+ esac
+done
+DNS_CRYPTO_LIBS="$NEWFLAGS"
+
+AC_SUBST(BUILD_CC)
+AC_SUBST(BUILD_CFLAGS)
+AC_SUBST(BUILD_CPPFLAGS)
+AC_SUBST(BUILD_LDFLAGS)
+AC_SUBST(BUILD_LIBS)
+
+#
+# Commands to run at the end of config.status.
+# Don't just put these into configure, it won't work right if somebody
+# runs config.status directly (which autoconf allows).
+#
+
+AC_CONFIG_COMMANDS(
+ [chmod],
+ [chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter])
+
+#
+# Files to configure. These are listed here because we used to
+# specify them as arguments to AC_OUTPUT. It's (now) ok to move these
+# elsewhere if there's a good reason for doing so.
+#
+
+AC_CONFIG_FILES([
+ make/Makefile
+ make/mkdep
+ Makefile
+ bin/Makefile
+ bin/check/Makefile
+ bin/confgen/Makefile
+ bin/confgen/unix/Makefile
+ bin/delv/Makefile
+ bin/dig/Makefile
+ bin/dnssec/Makefile
+ bin/named/Makefile
+ bin/named/unix/Makefile
+ bin/nsupdate/Makefile
+ bin/pkcs11/Makefile
+ bin/python/Makefile
+ bin/python/isc/Makefile
+ bin/python/isc/utils.py
+ bin/python/isc/tests/Makefile
+ bin/python/dnssec-checkds.py
+ bin/python/dnssec-coverage.py
+ bin/python/dnssec-keymgr.py
+ bin/python/isc/__init__.py
+ bin/python/isc/checkds.py
+ bin/python/isc/coverage.py
+ bin/python/isc/dnskey.py
+ bin/python/isc/eventlist.py
+ bin/python/isc/keydict.py
+ bin/python/isc/keyevent.py
+ bin/python/isc/keymgr.py
+ bin/python/isc/keyseries.py
+ bin/python/isc/keyzone.py
+ bin/python/isc/policy.py
+ bin/python/isc/rndc.py
+ bin/python/isc/tests/dnskey_test.py
+ bin/python/isc/tests/policy_test.py
+ bin/rndc/Makefile
+ bin/tests/Makefile
+ bin/tests/headerdep_test.sh
+ bin/tests/optional/Makefile
+ bin/tests/pkcs11/Makefile
+ bin/tests/pkcs11/benchmarks/Makefile
+ bin/tests/system/Makefile
+ bin/tests/system/conf.sh
+ bin/tests/system/dlz/prereq.sh
+ bin/tests/system/dlzexternal/Makefile
+ bin/tests/system/dlzexternal/ns1/dlzs.conf
+ bin/tests/system/dyndb/Makefile
+ bin/tests/system/dyndb/driver/Makefile
+ bin/tests/system/inline/checkdsa.sh
+ bin/tests/system/lwresd/Makefile
+ bin/tests/system/pipelined/Makefile
+ bin/tests/system/rndc/Makefile
+ bin/tests/system/rsabigexponent/Makefile
+ bin/tests/system/tkey/Makefile
+ bin/tests/virtual-time/Makefile
+ bin/tests/virtual-time/conf.sh
+ bin/tools/Makefile
+ contrib/scripts/check-secure-delegation.pl
+ contrib/scripts/zone-edit.sh
+ doc/Makefile
+ doc/arm/Makefile
+ doc/arm/noteversion.xml
+ doc/arm/pkgversion.xml
+ doc/arm/releaseinfo.xml
+ doc/doxygen/Doxyfile
+ doc/doxygen/Makefile
+ doc/doxygen/doxygen-input-filter
+ doc/misc/Makefile
+ doc/tex/Makefile
+ doc/tex/armstyle.sty
+ doc/xsl/Makefile
+ doc/xsl/isc-docbook-chunk.xsl
+ doc/xsl/isc-docbook-html.xsl
+ doc/xsl/isc-manpage.xsl
+ doc/xsl/isc-notes-html.xsl
+ isc-config.sh
+ lib/Makefile
+ lib/bind9/Makefile
+ lib/bind9/include/Makefile
+ lib/bind9/include/bind9/Makefile
+ lib/dns/Makefile
+ lib/dns/include/Makefile
+ lib/dns/include/dns/Makefile
+ lib/dns/include/dst/Makefile
+ lib/dns/tests/Makefile
+ lib/irs/Makefile
+ lib/irs/include/Makefile
+ lib/irs/include/irs/Makefile
+ lib/irs/include/irs/netdb.h
+ lib/irs/include/irs/platform.h
+ lib/irs/tests/Makefile
+ lib/isc/$arch/Makefile
+ lib/isc/$arch/include/Makefile
+ lib/isc/$arch/include/isc/Makefile
+ lib/isc/$thread_dir/Makefile
+ lib/isc/$thread_dir/include/Makefile
+ lib/isc/$thread_dir/include/isc/Makefile
+ lib/isc/Makefile
+ lib/isc/include/Makefile
+ lib/isc/include/isc/Makefile
+ lib/isc/include/isc/platform.h
+ lib/isc/include/pk11/Makefile
+ lib/isc/include/pkcs11/Makefile
+ lib/isc/tests/Makefile
+ lib/isc/nls/Makefile
+ lib/isc/unix/Makefile
+ lib/isc/unix/include/Makefile
+ lib/isc/unix/include/isc/Makefile
+ lib/isc/unix/include/pkcs11/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/isccfg/tests/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/tests/Makefile
+ lib/lwres/unix/Makefile
+ lib/lwres/unix/include/Makefile
+ lib/lwres/unix/include/lwres/Makefile
+ lib/samples/Makefile
+ lib/samples/Makefile-postinstall
+ unit/Makefile
+ unit/unittest.sh
+])
+
+#
+# Do it
+#
+
+AC_OUTPUT
+
+#
+# Now that the Makefiles exist we can ensure that everything is rebuilt.
+#
+AC_ARG_WITH(make-clean,
+ AS_HELP_STRING([--with-make-clean],
+ [run "make clean" at end of configure [yes|no]]),
+ make_clean="$withval", make_clean="yes")
+case "$make_clean" in
+yes)
+ if test "yes" != "$no_create"
+ then
+ if test "yes" = "$silent"
+ then
+ make clean > /dev/null
+ else
+ make clean
+ fi
+ fi
+ ;;
+esac
+
+AC_ARG_ENABLE(full-report,
+ AS_HELP_STRING([--enable-full-report],
+ [report values of all configure options]))
+
+report() {
+ echo "==============================================================================="
+ echo "Configuration summary:"
+ echo "-------------------------------------------------------------------------------"
+ echo "Optional features enabled:"
+ if $use_threads; then
+ echo " Multiprocessing support (--enable-threads)"
+ if test "yes" = "$enable_full_report" -o "standard" = "$locktype"; then
+ echo " Mutex lock type: $locktype"
+ fi
+ fi
+ test "large" = "$use_tuning" && echo " Large-system tuning (--with-tuning)"
+ test "no" = "$use_dnstap" || \
+ echo " Allow 'dnstap' packet logging (--enable-dnstap)"
+ test "no" = "$use_geoip" || echo " GeoIP access control (--with-geoip)"
+ test "no" = "$use_gssapi" || echo " GSS-API (--with-gssapi)"
+ if test "yes" = "$enable_full_report" -o "aes" != "$with_cc_alg"; then
+ echo " Algorithm: $with_cc_alg"
+ fi
+
+ # these lines are only printed if run with --enable-full-report
+ if test "yes" = "$enable_full_report"; then
+ test "no" = "$enable_ipv6" -o "no" = "$found_ipv6" || \
+ echo " IPv6 support (--enable-ipv6)"
+ test "X$CRYPTO" = "X" -o "yes" = "$want_native_pkcs11" || \
+ echo " OpenSSL cryptography/DNSSEC (--with-openssl)"
+ test "X$PYTHON" = "X" || echo " Python tools (--with-python)"
+ test "X$XMLSTATS" = "X" || echo " XML statistics (--with-libxml2)"
+ test "X$JSONSTATS" = "X" || echo " JSON statistics (--with-libjson)"
+ test "X$ZLIB" = "X" || echo " HTTP zlib compression (--with-zlib)"
+ test "X$NZD_TOOLS" = "X" || echo " LMDB database to store configuration for 'addzone' zones (--with-lmdb)"
+ test "no" = "$use_libidn2" || echo " IDN support (--with-libidn2)"
+ fi
+
+ if test "no" != "$use_pkcs11"; then
+ if test "yes" = "$want_native_pkcs11"; then
+ echo " Native PKCS#11/Cryptoki support (--enable-native-pkcs11)"
+ else
+ echo " PKCS#11/Cryptoki support using OpenSSL (--with-pkcs11)"
+ fi
+ echo " Provider library: $PKCS11_PROVIDER"
+ fi
+ if test "yes" = "$OPENSSL_GOST" -o "yes" = "$PKCS11_GOST"; then
+ echo " GOST algorithm support (encoding: $gosttype) (--with-gost)"
+ fi
+ test "yes" = "$OPENSSL_ECDSA" -o "$PKCS11_ECDSA" && \
+ echo " ECDSA algorithm support (--with-ecdsa)"
+ test "yes" = "$OPENSSL_ED25519" -o "$PKCS11_ED25519" && \
+ echo " EDDSA algorithm support (--with-eddsa)"
+ test "yes" = "$enable_fixed" && \
+ echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)"
+ test "yes" = "$enable_filter" && \
+ echo " AAAA filtering (--enable-filter-aaaa)"
+ test "yes" = "$enable_seccomp" && \
+ echo " Use libseccomp system call filtering (--enable-seccomp)"
+ test "yes" = "$want_backtrace" && \
+ echo " Print backtrace on crash (--enable-backtrace)"
+ test "minimal" = "$want_symtable" && \
+ echo " Use symbol table for backtrace, named only (--enable-symtable)"
+ test "yes" = "$want_symtable" -o "all" = "$want_symtable" && \
+ echo " Use symbol table for backtrace, all binaries (--enable-symtable=all)"
+ test "no" = "$use_libtool" || echo " Use GNU libtool (--with-libtool)"
+ test "yes" = "$want_querytrace" && \
+ echo " Very verbose query trace logging (--enable-querytrace)"
+ test "no" = "$atf" || echo " Automated Testing Framework (--with-atf)"
+
+ echo " Dynamically loadable zone (DLZ) drivers:"
+ test "no" = "$use_dlz_bdb" || \
+ echo " Berkeley DB (--with-dlz-bdb)"
+ test "no" = "$use_dlz_ldap" || \
+ echo " LDAP (--with-dlz-ldap)"
+ test "no" = "$use_dlz_mysql" || \
+ echo " MySQL (--with-dlz-mysql)"
+ test "no" = "$use_dlz_odbc" || \
+ echo " ODBC (--with-dlz-odbc)"
+ test "no" = "$use_dlz_postgres" || \
+ echo " Postgres (--with-dlz-postgres)"
+ test "no" = "$use_dlz_filesystem" || \
+ echo " Filesystem (--with-dlz-filesystem)"
+ test "no" = "$use_dlz_stub" || \
+ echo " Stub (--with-dlz-stub)"
+ test "$use_dlz_bdb $use_dlz_ldap $use_dlz_mysql $use_dlz_odbc $use_dlz_postgres $use_dlz_filesystem $use_dlz_stub" = "no no no no no no no" && echo " None"
+
+ echo "-------------------------------------------------------------------------------"
+
+ echo "Features disabled or unavailable on this platform:"
+ $use_threads || echo " Multiprocessing support (--enable-threads)"
+ test "no" = "$enable_ipv6" -o "no" = "$found_ipv6" && \
+ echo " IPv6 support (--enable-ipv6)"
+ test "large" = "$use_tuning" || echo " Large-system tuning (--with-tuning)"
+
+ test "no" = "$use_dnstap" && \
+ echo " Allow 'dnstap' packet logging (--enable-dnstap)"
+ test "no" = "$use_geoip" && echo " GeoIP access control (--with-geoip)"
+ test "no" = "$use_gssapi" && echo " GSS-API (--with-gssapi)"
+
+ test "yes" = "$enable_fixed" || \
+ echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)"
+
+ if test "X$CRYPTO" = "X" -o "yes" = "$want_native_pkcs11"
+ then
+ echo " OpenSSL cryptography/DNSSEC (--with-openssl)"
+ elif test "no" = "$use_pkcs11"; then
+ echo " PKCS#11/Cryptoki support (--with-pkcs11)"
+ fi
+ test "yes" = "$want_native_pkcs11" ||
+ echo " Native PKCS#11/Cryptoki support (--enable-native-pkcs11)"
+ test "X$CRYPTO" = "X" -o "yes" = "$OPENSSL_GOST" -o "yes" = "$PKCS11_GOST" || \
+ echo " GOST algorithm support (--with-gost)"
+ test "X$CRYPTO" = "X" -o "yes" = "$OPENSSL_ECDSA" -o "yes" = "$PKCS11_ECDSA" || \
+ echo " ECDSA algorithm support (--with-ecdsa)"
+ test "X$CRYPTO" = "X" -o "yes" = "$OPENSSL_ED25519" -o "yes" = "$PKCS11_ED25519" || \
+ echo " EDDSA algorithm support (--with-eddsa)"
+
+ test "yes" = "$enable_seccomp" || \
+ echo " Use libseccomp system call filtering (--enable-seccomp)"
+ test "yes" = "$want_backtrace" || \
+ echo " Print backtrace on crash (--enable-backtrace)"
+ test "yes" = "$want_querytrace" || \
+ echo " Very verbose query trace logging (--enable-querytrace)"
+
+ test "yes" = "$use_libtool" || echo " Use GNU libtool (--with-libtool)"
+ test "no" = "$atf" && echo " Automated Testing Framework (--with-atf)"
+
+ test "X$PYTHON" = "X" && echo " Python tools (--with-python)"
+ test "X$XMLSTATS" = "X" && echo " XML statistics (--with-libxml2)"
+ test "X$JSONSTATS" = "X" && echo " JSON statistics (--with-libjson)"
+ test "X$ZLIB" = "X" && echo " HTTP zlib compression (--with-zlib)"
+ test "X$NZD_TOOLS" = "X" && echo " LMDB database to store configuration for 'addzone' zones (--with-lmdb)"
+ test "no" = "$use_libidn2" && echo " IDN support (--with-libidn2)"
+
+ echo "-------------------------------------------------------------------------------"
+ echo "Configured paths:"
+ echo " prefix: $prefix"
+ echo " sysconfdir: $sysconfdir"
+ echo " localstatedir: $localstatedir"
+ echo "-------------------------------------------------------------------------------"
+ echo "Compiler: $CC"
+ $CC --version 2>&1 | sed 's/^/ /'
+
+ if test "X$ac_unrecognized_opts" != "X"; then
+ echo "Unrecognized options:"
+ echo " $ac_unrecognized_opts"
+ fi
+
+ if test "yes" != "$enable_full_report"; then
+ echo "-------------------------------------------------------------------------------"
+ echo "For more detail, use --enable-full-report."
+ fi
+ echo "==============================================================================="
+}
+
+if test "yes" != "$silent"; then
+ report
+fi
+
+if test "X$CRYPTO" = "X"; then
+cat << \EOF
+BIND 9 is being built without cryptography support. This means it will
+not have DNSSEC support. Use --with-openssl, or --with-pkcs11 and
+--enable-native-pkcs11 to enable cryptography.
+EOF
+fi
+
+# Tell Emacs to edit this file in shell mode.
+# Local Variables:
+# mode: sh
+# End: