1 # Copyright (C) 2004-2016 Internet Systems Consortium, Inc. ("ISC")
2 # Copyright (C) 1998-2003 Internet Software Consortium.
4 # Permission to use, copy, modify, and/or distribute this software for any
5 # purpose with or without fee is hereby granted, provided that the above
6 # copyright notice and this permission notice appear in all copies.
8 # THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
9 # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10 # AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
11 # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12 # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
13 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14 # PERFORMANCE OF THIS SOFTWARE.
18 esyscmd([sed -e 's/^/# /' -e '/Portions of this code/,$d' COPYRIGHT])dnl
21 AC_INIT(BIND, [9.9], [bind9-bugs@isc.org], [], [https://www.isc.org/downloads/BIND/])
24 AC_CONFIG_HEADER(config.h)
25 AC_CONFIG_MACRO_DIR([libtool.m4])
36 # Just set the maximum command line length for sunos as it otherwise
37 # takes a exceptionally long time to work it out. Required for libtool.
39 lt_cv_sys_max_cmd_len=4096;
47 AC_SUBST(STD_CINCLUDES)
48 AC_SUBST(STD_CDEFINES)
49 AC_SUBST(STD_CWARNINGS)
52 AC_SUBST(BACKTRACECFLAGS)
54 # Warn if the user specified libbind, which is now deprecated
55 AC_ARG_ENABLE(libbind, [ --enable-libbind deprecated])
57 case "$enable_libbind" in
59 AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution.
60 It is available from http://www.isc.org as a separate download.])
66 AC_ARG_ENABLE(warn_shadow, [ --enable-warn-shadow turn on -Wshadow when compiling])
68 AC_ARG_ENABLE(warn_error, [ --enable-warn-error turn on -Werror when compiling])
70 AC_ARG_ENABLE(developer, [ --enable-developer enable developer build settings])
71 case "$enable_developer" in
73 STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1"
74 test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
75 test "${enable_querytrace+set}" = set || enable_querytrace=yes
76 test "${with_atf+set}" = set || with_atf=yes
77 test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes
78 test "${enable_rrl+set}" = set || enable_rrl=yes
79 test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
82 test "${enable_exportlib+set}" = set || enable_exportlib=yes
85 test "${enable_exportlib+set}" = set || enable_exportlib=yes
88 test "${enable_symtable+set}" = set || enable_symtable=all
89 test "${enable_fetchlimit+set}" = set || enable_fetchlimit=yes
90 test "${enable_warn_error+set}" = set || enable_warn_error=yes
91 test "${enable_warn_shadow+set}" = set || enable_warn_shadow=yes
95 # Make very sure that these are the first files processed by
96 # config.status, since we use the processed output as the input for
97 # AC_SUBST_FILE() substitutions in other files.
99 AC_CONFIG_FILES([make/rules make/includes])
106 # The POSIX ln(1) program. Non-POSIX systems may substitute
107 # "copy" or something.
114 ar program not found. Please fix your PATH to include the directory in
115 which ar resides, or set AR in the environment with the full path to ar.
124 AC_PATH_PROGS(ETAGS, etags emacs-etags)
127 # Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
128 # GNU emacs etags, and it requires the -L flag.
130 if test "X$ETAGS" != "X"; then
131 AC_MSG_CHECKING(for Exuberant Ctags etags)
132 if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
142 # Perl is optional; it is used only by some of the system test scripts.
143 # Note: the backtrace feature (see below) uses perl to build the symbol table,
144 # but it still compiles without perl, in which case an empty table will be used.
146 AC_PATH_PROGS(PERL, perl5 perl)
150 # Python is also optional; it is used by the tools in bin/python.
151 # If python is unavailable, we simply don't build those.
154 [ --with-python=PATH Specify path to python interpreter],
155 use_python="$withval", use_python="unspec")
157 python="python python3 python3.4 python3.3 python3.2 python3.1 python3.0 python2 python2.7 python2.6 python2.5 python2.4"
158 testscript='try: import argparse
160 case "$use_python" in
162 AC_MSG_CHECKING([for python support])
163 AC_MSG_RESULT(disabled)
166 case "$use_python" in
170 AC_PATH_PROGS(PYTHON, $p)
171 if test "X$PYTHON" = "X"; then
174 AC_MSG_CHECKING([python module 'argparse'])
175 if ${PYTHON:-false} -c "$testscript"; then
176 AC_MSG_RESULT([found, using $PYTHON])
179 AC_MSG_RESULT([not found])
180 unset ac_cv_path_PYTHON
183 if test "X$PYTHON" = "X"
185 AC_MSG_CHECKING([for python support])
186 case "$use_python" in
188 AC_MSG_RESULT(disabled)
191 AC_MSG_ERROR([missing python])
197 case "$use_python" in
202 AC_PATH_PROGS(PYTHON, $use_python)
205 AC_MSG_CHECKING([python module 'argparse'])
206 if ${PYTHON:-false} -c "$testscript"; then
207 AC_MSG_RESULT([found, using $PYTHON])
210 AC_MSG_ERROR([not found])
220 if test "X$PYTHON" != "X"; then
227 AC_SUBST(PYTHON_TOOLS)
230 # Special processing of paths depending on whether --prefix,
231 # --sysconfdir or --localstatedir arguments were given. What's
232 # desired is some compatibility with the way previous versions
233 # of BIND built; they defaulted to /usr/local for most parts of
234 # the installation, but named.boot/named.conf was in /etc
235 # and named.pid was in /var/run.
237 # So ... if none of --prefix, --sysconfdir or --localstatedir are
238 # specified, set things up that way. If --prefix is given, use
239 # it for sysconfdir and localstatedir the way configure normally
240 # would. To change the prefix for everything but leave named.conf
241 # in /etc or named.pid in /var/run, then do this the usual configure way:
242 # ./configure --prefix=/somewhere --sysconfdir=/etc
243 # ./configure --prefix=/somewhere --localstatedir=/var
245 # To put named.conf and named.pid in /usr/local with everything else,
246 # set the prefix explicitly to /usr/local even though that's the default:
247 # ./configure --prefix=/usr/local
251 case "$sysconfdir" in
256 case "$localstatedir" in
265 # Make sure INSTALL uses an absolute path, else it will be wrong in all
266 # Makefiles, since they use make/rules.in and INSTALL will be adjusted by
267 # configure based on the location of the file where it is substituted.
268 # Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
269 # subdirectory of install-sh, This relative path will be wrong for all
270 # directories more than one level down from install-sh.
277 # Not all systems have dirname.
280 ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
283 ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
284 test "$ac_dir" = "$ac_prog" && ac_dir=.
285 test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
286 INSTALL="$ac_dir/$ac_prog"
291 # On these hosts, we really want to use cc, not gcc, even if it is
292 # found. The gcc that these systems have will not correctly handle
295 # However, if the user sets $CC to be something, let that override
298 if test "X$CC" = "X" ; then
304 # Use Sun's cc if it is available, but watch
305 # out for /usr/ucb/cc; it will never be the right
308 # If setting CC here fails, the AC_PROG_CC done
309 # below might still find gcc.
310 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
311 for ac_dir in $PATH; do
312 test -z "$ac_dir" && ac_dir=.
318 if test -f "$ac_dir/cc"; then
339 # gcc's optimiser is broken at -02 for ultrasparc
341 if test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then
350 # OS dependent CC flags
353 # OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or
354 # -D_XOPEN_SOURCE_EXTENDED.
356 STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET"
357 CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET"
359 #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros
361 STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED"
362 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
365 # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros
367 STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__"
368 CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
370 # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides
371 # parts of the IPv6 Advanced Socket API as a result. This is stupid
372 # as it breaks how the two halves (Basic and Advanced) of the IPv6
373 # Socket API were designed to be used but we have to live with it.
374 # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
375 *-linux* | *-kfreebsd*-gnu*)
376 STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE"
377 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
380 # Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use.
381 # Setting this is sufficient to select the correct behavior for BIND 9.
384 STD_CDEFINES="$STD_CDEFINES -D__APPLE_USE_RFC_3542"
385 CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542"
390 # CCNOOPT defaults to -O0 on gcc and disables optimization when is last
392 if test "X$CCNOOPT" = "X" -a "X$GCC" = "Xyes"; then
398 AC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h,,,
399 [$ac_includes_default
400 #ifdef HAVE_SYS_PARAM_H
401 # include <sys/param.h>
408 AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
409 AC_C_FLEXIBLE_ARRAY_MEMBER
412 # Older versions of HP/UX don't define seteuid() and setegid()
414 AC_CHECK_FUNCS(seteuid setresuid)
415 AC_CHECK_FUNCS(setegid setresgid)
417 # BSDI doesn't have ftello fseeko
418 AC_CHECK_FUNCS(ftello fseeko)
421 # UnixWare 7.1.1 with the feature supplement to the UDK compiler
422 # is reported to not support "static inline" (RT #1212).
424 AC_MSG_CHECKING(for static inline breakage)
426 static inline int foo1() {
430 static inline int foo2() {
436 AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])])
439 AC_CHECK_TYPE(ssize_t, int)
440 AC_CHECK_TYPE(uintptr_t,unsigned long)
441 AC_CHECK_TYPE(socklen_t,
442 [AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)],
446 #include <sys/types.h>
447 #include <sys/socket.h>
448 int getsockname(int, struct sockaddr *, size_t *);
450 [AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)],
451 [AC_DEFINE(ISC_SOCKADDR_LEN_T, int)])
454 #include <sys/types.h>
455 #include <sys/socket.h>
457 AC_SUBST(ISC_SOCKADDR_LEN_T)
459 AC_MSG_CHECKING(for long long)
460 AC_TRY_COMPILE([],[long long i = 0; return (0);],
462 ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
464 ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
465 AC_SUBST(ISC_PLATFORM_HAVELONGLONG)
468 # check for uname library routine
470 AC_MSG_CHECKING(for uname)
472 #include <sys/utsname.h>
478 printf("running on %s %s %s for %s\n",
479 uts.sysname, uts.release, uts.version, uts.machine);
482 AC_DEFINE(HAVE_UNAME)],
484 AC_MSG_WARN([uname is not correctly supported])])
487 # check for GCC noreturn attribute
489 AC_MSG_CHECKING(for GCC noreturn attribute)
490 AC_TRY_COMPILE([],[void foo() __attribute__((noreturn));],
492 ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
493 ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"],
495 ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
496 ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"])
497 AC_SUBST(ISC_PLATFORM_NORETURN_PRE)
498 AC_SUBST(ISC_PLATFORM_NORETURN_POST)
501 # check if we have lifconf
503 AC_MSG_CHECKING(for struct lifconf)
505 #include <sys/types.h>
506 #include <sys/socket.h>
510 struct lifconf lifconf;
511 lifconf.lifc_len = 0;
515 ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"],
517 ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"])
518 AC_SUBST(ISC_PLATFORM_HAVELIFCONF)
521 # check if we want the new statistics
523 AC_ARG_ENABLE(newstats,
524 [ --enable-newstats use the new statistics])
525 case "$enable_newstats" in
527 AC_DEFINE(NEWSTATS, 1, [Use the new XML schema for statistics])
534 # check if we want DNS RRL
537 [ --enable-rrl use DNS Response Rate Limiting])
538 case "$enable_rrl" in
540 AC_DEFINE(USE_RRL, 1, [Enable DNS Response Rate Limiting])
541 RRLLINKOBJS='${RRLOBJS}'
542 RRLLINKSRCS='${RRLSRCS}'
549 AC_SUBST(RRLLINKOBJS)
550 AC_SUBST(RRLLINKSRCS)
553 # check if we have kqueue
555 AC_ARG_ENABLE(kqueue,
556 [ --enable-kqueue use BSD kqueue when available [[default=yes]]],
557 want_kqueue="$enableval", want_kqueue="yes")
560 AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
561 case $ac_cv_have_kqueue in
563 ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
566 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
571 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
574 AC_SUBST(ISC_PLATFORM_HAVEKQUEUE)
577 # check if we have epoll. Linux kernel 2.4 has epoll_create() which fails,
578 # so we need to try running the code, not just test its existence.
581 [ --enable-epoll use Linux epoll when available [[default=auto]]],
582 want_epoll="$enableval", want_epoll="auto")
585 AC_MSG_CHECKING(epoll support)
587 #include <sys/epoll.h>
589 if (epoll_create(1) < 0)
595 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"],
597 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"],
599 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"])
602 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
605 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
608 AC_SUBST(ISC_PLATFORM_HAVEEPOLL)
611 # check if we support /dev/poll
613 AC_ARG_ENABLE(devpoll,
614 [ --enable-devpoll use /dev/poll when available [[default=yes]]],
615 want_devpoll="$enableval", want_devpoll="yes")
616 case $want_devpoll in
618 AC_CHECK_HEADERS(sys/devpoll.h devpoll.h,
619 ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
621 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
625 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
628 AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL)
631 # check if we need to #include sys/select.h explicitly
633 case $ac_cv_header_unistd_h in
635 AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set)
637 #include <sys/types.h> /* Ultrix */
638 #include <unistd.h>],
639 [fd_set read_set; return (0);],
641 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
642 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
644 case $ac_cv_header_sys_select_h in
646 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
647 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
650 AC_MSG_ERROR([need either working unistd.h or sys/select.h])
656 case $ac_cv_header_sys_select_h in
658 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
659 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
662 AC_MSG_ERROR([need either unistd.h or sys/select.h])
667 AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
668 AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)
671 # Find the machine's endian flavor.
676 # was --with-openssl specified?
679 AC_MSG_CHECKING(for OpenSSL library)
681 [ --with-openssl[=PATH] Build with OpenSSL [yes|no|path].
682 (Required for DNSSEC)],
683 use_openssl="$withval", use_openssl="auto")
685 openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw"
686 if test "$use_openssl" = "auto"
688 for d in $openssldirs
690 if test -f $d/include/openssl/opensslv.h
699 case "$use_openssl" in
704 OPENSSLGOSTLINKOBJS=""
705 OPENSSLGOSTLINKSRS=""
712 OPENSSLGOSTLINKOBJS=""
713 OPENSSLGOSTLINKSRS=""
717 [OpenSSL was not found in any of $openssldirs; use --with-openssl=/path
718 If you don't want OpenSSL, use --without-openssl])
721 if test "$use_openssl" = "yes"
723 # User did not specify a path - guess it
724 for d in $openssldirs
726 if test -f $d/include/openssl/opensslv.h
732 if test "$use_openssl" = "yes"
734 AC_MSG_RESULT(not found)
736 [OpenSSL was not found in any of $openssldirs; use --with-openssl=/path])
738 elif ! test -f "$use_openssl"/include/openssl/opensslv.h
740 AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found])
742 USE_OPENSSL='-DOPENSSL'
743 if test "$use_openssl" = "/usr"
746 DNS_OPENSSL_LIBS="-lcrypto"
748 DST_OPENSSL_INC="-I$use_openssl/include"
751 DNS_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto"
754 DNS_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto"
758 # Apple's ld seaches for serially for dynamic
759 # then static libraries. This means you can't
760 # use -L to override dynamic system libraries
761 # with static ones when linking. Instead
762 # we specify a absolute path.
764 if test -f "$use_openssl/lib/libcrypto.dylib"
766 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
768 DNS_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a"
772 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
776 AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include)
778 saved_cflags="$CFLAGS"
780 CFLAGS="$CFLAGS $DST_OPENSSL_INC"
781 LIBS="$LIBS $DNS_OPENSSL_LIBS"
782 AC_MSG_CHECKING(whether linking with OpenSSL works)
784 #include <openssl/err.h>
790 [AC_MSG_RESULT(yes)],
792 AC_MSG_ERROR(Could not run test program using OpenSSL from
793 $use_openssl/lib and $use_openssl/include.
794 Please check the argument to --with-openssl and your
795 shared library configuration (e.g., LD_LIBRARY_PATH).)],
796 [AC_MSG_RESULT(assuming it does work on target platform)])
798 AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
800 #include <openssl/err.h>
801 #include <openssl/dso.h>
803 [ DSO_METHOD_dlfcn(); ],
807 #include <openssl/err.h>
808 #include <openssl/dso.h>
809 ],[ DSO_METHOD_dlfcn(); ],
811 DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl"
813 [AC_MSG_RESULT(unknown)
814 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)],
815 [AC_MSG_RESULT(assuming it does work on target platform)])
817 [AC_MSG_RESULT(assuming it does work on target platform)]
820 AC_ARG_ENABLE(openssl-version-check,
821 [AC_HELP_STRING([--enable-openssl-version-check],
822 [Check OpenSSL Version @<:@default=yes@:>@])])
823 case "$enable_openssl_version_check" in
825 AC_MSG_CHECKING(OpenSSL library version)
828 #include <openssl/opensslv.h>
830 if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
831 OPENSSL_VERSION_NUMBER < 0x00908000L) ||
832 (OPENSSL_VERSION_NUMBER >= 0x0090804fL &&
833 OPENSSL_VERSION_NUMBER < 0x10002000L) ||
834 OPENSSL_VERSION_NUMBER >= 0x1000205fL)
836 printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
837 OPENSSL_VERSION_NUMBER);
838 printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
839 "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n"
840 "Require OPENSSL_VERSION_NUMBER 0x1000000f or greater (1.0.0)\n"
841 "Require OPENSSL_VERSION_NUMBER 0x1000100f or greater (1.0.1)\n"
842 "Require OPENSSL_VERSION_NUMBER 0x1000205f or greater (1.0.2e)\n\n");
847 [AC_MSG_RESULT(not compatible)
850 [AC_MSG_RESULT(assuming target platform has compatible version)])
853 AC_MSG_RESULT(Skipped OpenSSL version check)
857 AC_MSG_CHECKING(for OpenSSL DSA support)
858 if test -f $use_openssl/include/openssl/dsa.h
860 AC_DEFINE(HAVE_OPENSSL_DSA)
866 AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512)
868 AC_MSG_CHECKING(for OpenSSL ECDSA support)
872 #include <openssl/ecdsa.h>
873 #include <openssl/objects.h>
875 EC_KEY *ec256, *ec384;
877 #if !defined(HAVE_EVP_SHA256) || !defined(HAVE_EVP_SHA384)
880 ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
881 ec384 = EC_KEY_new_by_curve_name(NID_secp384r1);
882 if (ec256 == NULL || ec384 == NULL)
891 [AC_MSG_RESULT(using --with-ecdsa)])
892 AC_ARG_WITH(ecdsa, [ --with-ecdsa OpenSSL ECDSA],
893 with_ecdsa="$withval", with_ecdsa="auto")
894 case "$with_ecdsa" in
896 case "$have_ecdsa" in
897 no) AC_MSG_ERROR([ecdsa not supported]) ;;
904 case "$have_ecdsa" in
906 *) AC_MSG_ERROR([need --with-ecdsa=[[yes or no]]]) ;;
913 AC_DEFINE(HAVE_OPENSSL_ECDSA, 1,
914 [Define if your OpenSSL version supports ECDSA.])
920 AC_MSG_CHECKING(for OpenSSL GOST support)
923 #include <openssl/conf.h>
924 #include <openssl/engine.h>
926 #if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
931 OPENSSL_config(NULL);
933 e = ENGINE_by_id("gost");
936 if (ENGINE_init(e) <= 0)
948 [AC_MSG_RESULT(using --with-gost)])
949 AC_ARG_WITH(gost, [ --with-gost OpenSSL GOST],
950 with_gost="$withval", with_gost="auto")
954 no) AC_MSG_ERROR([gost not supported]) ;;
963 *) AC_MSG_ERROR([need --with-gost=[[yes or no]]]) ;;
970 OPENSSLGOSTLINKOBJS='${OPENSSLGOSTLINKOBJS}'
971 OPENSSLGOSTLINKSRCS='${OPENSSLGOSTLINKSRCS}'
972 AC_DEFINE(HAVE_OPENSSL_GOST, 1,
973 [Define if your OpenSSL version supports GOST.])
978 CFLAGS="$saved_cflags"
980 OPENSSLLINKOBJS='${OPENSSLLINKOBJS}'
981 OPENSSLLINKSRCS='${OPENSSLLINKSRCS}'
987 # This would include the system openssl path (and linker options to use
988 # it as needed) if it is found.
991 AC_SUBST(USE_OPENSSL)
992 AC_SUBST(DST_OPENSSL_INC)
993 AC_SUBST(OPENSSLGOSTLINKOBJS)
994 AC_SUBST(OPENSSLGOSTLINKSRCS)
995 AC_SUBST(OPENSSLLINKOBJS)
996 AC_SUBST(OPENSSLLINKSRCS)
997 AC_SUBST(OPENSSL_ECDSA)
998 AC_SUBST(OPENSSL_GOST)
1000 DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS"
1003 # Use OpenSSL for hash functions
1006 AC_ARG_ENABLE(openssl-hash,
1007 [ --enable-openssl-hash use OpenSSL for hash functions [[default=no]]],
1008 want_openssl_hash="$enableval", want_openssl_hash="no")
1009 case $want_openssl_hash in
1011 if test "$USE_OPENSSL" = ""
1013 AC_MSG_ERROR([No OpenSSL for hash functions])
1015 ISC_PLATFORM_OPENSSLHASH="#define ISC_PLATFORM_OPENSSLHASH 1"
1016 ISC_OPENSSL_INC="$DST_OPENSSL_INC"
1017 ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS"
1018 saved_cflags="$CFLAGS"
1020 CFLAGS="$CFLAGS $ISC_OPENSSL_INC"
1021 LIBS="$LIBS $ISC_OPENSSL_LIBS"
1022 AC_MSG_CHECKING([HMAC_Init() return type])
1024 #include <openssl/hmac.h>],[
1026 int n = HMAC_Init(&ctx, NULL, 0, NULL);
1027 n += HMAC_Update(&ctx, NULL, 0);
1028 n += HMAC_Final(&ctx, NULL, NULL);],[
1030 AC_DEFINE(HMAC_RETURN_INT, 1, [HMAC_*() return ints])],[
1031 AC_MSG_RESULT(void)])
1032 CFLAGS="$saved_cflags"
1036 ISC_PLATFORM_OPENSSLHASH="#undef ISC_PLATFORM_OPENSSLHASH"
1040 AC_SUBST(ISC_PLATFORM_OPENSSLHASH)
1041 AC_SUBST(ISC_OPENSSL_INC)
1044 # PKCS11 (aka crypto hardware) support
1046 # This works only with the right OpenSSL with PKCS11 engine!
1049 AC_MSG_CHECKING(for PKCS11 support)
1051 [ --with-pkcs11[=PATH] Build with PKCS11 support [yes|no|path]
1052 (PATH is for the PKCS11 provider)],
1053 use_pkcs11="$withval", use_pkcs11="no")
1055 case "$use_pkcs11" in
1057 AC_MSG_RESULT(disabled)
1062 AC_MSG_RESULT(using OpenSSL with PKCS11 support)
1063 USE_PKCS11='-DUSE_PKCS11'
1067 AC_SUBST(USE_PKCS11)
1068 AC_SUBST(PKCS11_TOOLS)
1070 AC_MSG_CHECKING(for PKCS11 tools)
1071 case "$use_pkcs11" in
1073 AC_MSG_RESULT(disabled)
1074 PKCS11_PROVIDER="undefined"
1077 AC_MSG_RESULT(PKCS11 provider is "$use_pkcs11")
1078 PKCS11_PROVIDER="$use_pkcs11"
1081 AC_SUBST(PKCS11_PROVIDER)
1083 AC_MSG_CHECKING(for GSSAPI library)
1085 [ --with-gssapi=PATH Specify path for system-supplied GSSAPI [[default=yes]]],
1086 use_gssapi="$withval", use_gssapi="yes")
1088 # gssapi is just the framework, we really require kerberos v5, so
1089 # look for those headers (the gssapi headers must be there, too)
1090 # The problem with this implementation is that it doesn't allow
1091 # for the specification of gssapi and krb5 headers in different locations,
1092 # which probably ought to be fixed although fixing might raise the issue of
1093 # trying to build with incompatible versions of gssapi and krb5.
1094 if test "$use_gssapi" = "yes"
1096 # first, deal with the obvious
1097 if test \( -f /usr/include/kerberosv5/krb5.h -o \
1098 -f /usr/include/krb5/krb5.h -o \
1099 -f /usr/include/krb5.h \) -a \
1100 \( -f /usr/include/gssapi.h -o \
1101 -f /usr/include/gssapi/gssapi.h \)
1105 krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr"
1108 if test -f $d/include/gssapi/gssapi_krb5.h -o \
1109 -f $d/include/krb5.h
1111 if test -f $d/include/gssapi/gssapi.h -o \
1112 -f $d/include/gssapi.h
1123 case "$use_gssapi" in
1125 AC_MSG_RESULT(disabled)
1129 AC_MSG_ERROR([--with-gssapi must specify a path])
1132 AC_MSG_RESULT(looking in $use_gssapi/lib)
1133 USE_GSSAPI='-DGSSAPI'
1134 saved_cppflags="$CPPFLAGS"
1135 CPPFLAGS="-I$use_gssapi/include $CPPFLAGS"
1136 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
1137 [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"
1138 gssapi_hack="#include <$ac_header>"])
1140 if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then
1141 AC_MSG_ERROR([gssapi.h not found])
1144 AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h,
1145 [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"
1146 gssapi_krb5_hack="#include <$ac_header>"])
1148 AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h,
1149 [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"
1150 krb5_hack="#include <$ac_header>"])
1152 if test "$ISC_PLATFORM_KRB5HEADER" = ""; then
1153 AC_MSG_ERROR([krb5.h not found])
1157 # XXXDCL This probably doesn't work right on all systems.
1158 # It will need to be worked on as problems become evident.
1160 # Essentially the problems here relate to two different
1161 # areas. The first area is building with either KTH
1162 # or MIT Kerberos, particularly when both are present on
1163 # the machine. The other is static versus dynamic linking.
1165 # On the KTH vs MIT issue, Both have libkrb5 that can mess
1166 # up the works if one implementation ends up trying to
1167 # use the other's krb. This is unfortunately a situation
1168 # that very easily arises.
1170 # Dynamic linking when the dependency information is built
1171 # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes
1172 # all such problems go away, but when that setup is not
1173 # present, because either the dynamic libraries lack
1174 # dependencies or static linking is being done, then the
1175 # problems start to show up.
1179 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \
1180 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \
1182 "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \
1183 "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
1184 "-lgssapi -lkrb5 -lgssapi_krb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
1185 "-lgssapi -lkrb5 -lhx509 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
1188 # Note that this does not include $saved_libs, because
1189 # on FreeBSD machines this configure script has added
1190 # -L/usr/local/lib to LIBS, which can make the
1191 # -lgssapi_krb5 test succeed with shared libraries even
1192 # when you are trying to build with KTH in /usr/lib.
1193 if test "$use_gssapi" = "/usr"
1197 LIBS="-L$use_gssapi/lib $TRY_LIBS"
1199 AC_MSG_CHECKING(linking as $TRY_LIBS)
1201 #include <sys/types.h>
1205 ] , [gss_acquire_cred(NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);krb5_init_context(NULL);
1206 #if defined(HAVE_GSSAPI_KRB5_H) || defined(HAVE_GSSAPI_GSSAPI_KRB5_H)
1207 gsskrb5_register_acceptor_identity(NULL);
1209 gssapi_linked=yes, gssapi_linked=no)
1210 case $gssapi_linked in
1211 yes) AC_MSG_RESULT(yes); break ;;
1212 no) AC_MSG_RESULT(no) ;;
1216 CPPFLAGS="$saved_cppflags"
1218 case $gssapi_linked in
1219 no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;;
1223 # XXXDCL Major kludge. Tries to cope with KTH in /usr/lib
1224 # but MIT in /usr/local/lib and trying to build with KTH.
1225 # /usr/local/lib can end up earlier on the link lines.
1226 # Like most kludges, this one is not only inelegant it
1227 # is also likely to be the wrong thing to do at least as
1228 # many times as it is the right thing. Something better
1231 if test "$use_gssapi" = "/usr" -a \
1232 -f /usr/local/lib/libkrb5.a; then
1236 case "$FIX_KTH_VS_MIT" in
1238 case "$enable_static_linking" in
1239 yes) gssapi_lib_suffix=".a" ;;
1240 *) gssapi_lib_suffix=".so" ;;
1243 for lib in $LIBS; do
1248 new_lib=`echo $lib |
1249 sed -e s%^-l%$use_gssapi/lib/lib% \
1250 -e s%$%$gssapi_lib_suffix%`
1251 NEW_LIBS="$NEW_LIBS $new_lib"
1254 AC_MSG_ERROR([KTH vs MIT Kerberos confusion!])
1262 DST_GSSAPI_INC="-I$use_gssapi/include"
1263 DNS_GSSAPI_LIBS="$LIBS"
1265 AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include)
1270 AC_SUBST(ISC_PLATFORM_HAVEGSSAPI)
1271 AC_SUBST(ISC_PLATFORM_GSSAPIHEADER)
1272 AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER)
1273 AC_SUBST(ISC_PLATFORM_KRB5HEADER)
1275 AC_SUBST(USE_GSSAPI)
1276 AC_SUBST(DST_GSSAPI_INC)
1277 AC_SUBST(DNS_GSSAPI_LIBS)
1278 DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS"
1281 # Applications linking with libdns also need to link with these libraries.
1284 AC_SUBST(DNS_CRYPTO_LIBS)
1287 # was --with-randomdev specified?
1289 AC_MSG_CHECKING(for random device)
1290 AC_ARG_WITH(randomdev,
1291 [ --with-randomdev=PATH Specify path for random device],
1292 use_randomdev="$withval", use_randomdev="unspec")
1294 case "$use_randomdev" in
1296 case "$cross_compiling" in
1298 AC_MSG_RESULT(unspecified)
1299 AC_MSG_ERROR([ need --with-randomdev=PATH or --with-randomdev=no])
1303 devrandom=/dev/arandom
1306 devrandom=/dev/random
1309 AC_MSG_RESULT($devrandom)
1310 AC_CHECK_FILE($devrandom,
1311 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
1316 AC_MSG_ERROR([--with-randomdev must specify a path])
1319 AC_MSG_RESULT(disabled)
1322 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
1323 AC_MSG_RESULT(using "$use_randomdev")
1328 # Only check dsa signature generation on these platforms when performing
1332 if grep "#define PATH_RANDOMDEV " confdefs.h > /dev/null
1343 # Do we have arc4random(), etc ? arc4random_addrandom() has been removed
1344 # from OpenBSD 5.5 onwards.
1346 AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM))
1347 AC_CHECK_FUNC(arc4random_addrandom, AC_DEFINE(HAVE_ARC4RANDOM_ADDRANDOM))
1349 sinclude(config.threads.in)dnl
1353 if test "X$GCC" = "Xyes"; then
1357 CCOPT="$CCOPT -pthread"
1358 CCNOOPT="$CCNOOPT -pthread"
1359 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1363 CCOPT="$CCOPT -pthread"
1364 CCNOOPT="$CCNOOPT -pthread"
1367 LIBS="$LIBS -lthread"
1370 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1377 CCOPT="$CCOPT -pthread"
1378 CCNOOPT="$CCNOOPT -pthread"
1383 CCNOOPT="$CCNOOPT -mt"
1386 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1388 *-sco-sysv*uw*|*-*-sysv*UnixWare*)
1390 CCOPT="$CCOPT -Kthread"
1391 CCNOOPT="$CCNOOPT -Kthread"
1395 CCOPT="$CCOPT -Kpthread"
1396 CCNOOPT="$CCNOOPT -Kpthread"
1400 ALWAYS_DEFINES="-D_REENTRANT"
1401 ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
1402 THREADOPTOBJS='${THREADOPTOBJS}'
1403 THREADOPTSRCS='${THREADOPTSRCS}'
1406 # We'd like to use sigwait() too
1408 AC_CHECK_FUNC(sigwait,
1409 AC_DEFINE(HAVE_SIGWAIT),
1410 AC_CHECK_LIB(c, sigwait,
1411 AC_DEFINE(HAVE_SIGWAIT),
1412 AC_CHECK_LIB(pthread, sigwait,
1413 AC_DEFINE(HAVE_SIGWAIT),
1414 AC_CHECK_LIB(pthread, _Psigwait,
1415 AC_DEFINE(HAVE_SIGWAIT),))))
1417 AC_CHECK_FUNC(pthread_attr_getstacksize,
1418 AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
1420 AC_CHECK_FUNC(pthread_attr_setstacksize,
1421 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
1423 AC_CHECK_HEADERS(sched.h)
1427 AC_CHECK_LIB(rt, sched_yield)
1431 AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np)
1434 # Additional OS-specific issues related to pthreads and sigwait.
1438 # One more place to look for sigwait.
1441 AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
1443 *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
1444 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
1445 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
1448 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
1453 # BSDI 3.0 through 4.0.1 needs pthread_init() to be
1454 # called before certain pthreads calls. This is deprecated
1457 *-bsdi3.*|*-bsdi4.0*)
1458 AC_DEFINE(NEED_PTHREAD_INIT)
1461 # LinuxThreads requires some changes to the way we
1462 # deal with signals.
1465 AC_DEFINE(HAVE_LINUXTHREADS)
1468 # Ensure the right sigwait() semantics on Solaris and make
1469 # sure we call pthread_setconcurrency.
1472 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
1473 AC_CHECK_FUNC(pthread_setconcurrency,
1474 AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
1477 # UnixWare does things its own way.
1479 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1480 AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
1485 # Look for sysconf to allow detection of the number of processors.
1487 AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
1489 ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
1490 thread_dir=nothreads
1496 AC_SUBST(ALWAYS_DEFINES)
1497 AC_SUBST(ISC_PLATFORM_USETHREADS)
1498 AC_SUBST(THREADOPTOBJS)
1499 AC_SUBST(THREADOPTSRCS)
1500 ISC_THREAD_DIR=$thread_dir
1501 AC_SUBST(ISC_THREAD_DIR)
1504 # was --with-libxml2 specified?
1506 AC_MSG_CHECKING(for libxml2 library)
1507 AC_ARG_WITH(libxml2,
1508 [ --with-libxml2[=PATH] Build with libxml2 library [yes|no|path]],
1509 use_libxml2="$withval", use_libxml2="auto")
1511 case "$use_libxml2" in
1516 case X`(xml2-config --version) 2>/dev/null` in
1518 libxml2_libs=`xml2-config --libs`
1519 libxml2_cflags=`xml2-config --cflags`
1522 if test "$use_libxml2" = "yes" ; then
1524 AC_MSG_ERROR(required libxml2 version not available)
1533 if test -f "$use_libxml2/bin/xml2-config" ; then
1534 libxml2_libs=`$use_libxml2/bin/xml2-config --libs`
1535 libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags`
1540 if test "X$libxml2_libs" != "X"
1542 CFLAGS="$CFLAGS $libxml2_cflags"
1543 LIBS="$LIBS $libxml2_libs"
1545 # Sanity check xml2-config output.
1547 AC_TRY_LINK([#include <libxml/xmlwriter.h>],
1548 [return(xmlTextWriterStartElement(NULL, NULL));],
1550 AC_MSG_ERROR(xml2-config returns badness))
1551 AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found])
1557 # In solaris 10, SMF can manage named service
1559 AC_CHECK_LIB(scf, smf_enable_instance)
1562 # flockfile is usually provided by pthreads, but we may want to use it
1563 # even if compiled with --disable-threads. getc_unlocked might also not
1566 AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
1567 AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
1570 # Indicate what the final decision was regarding threads.
1572 AC_MSG_CHECKING(whether to build with threads)
1573 if $use_threads; then
1580 # End of pthreads stuff.
1586 AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support],
1587 want_largefile="yes", want_largefile="no")
1588 case $want_largefile in
1590 ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
1597 # Additional compiler settings.
1601 IRIX_DNSSEC_WARNINGS_HACK=""
1603 if test "X$GCC" = "Xyes"; then
1604 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith"
1605 AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing)
1606 SAVE_CFLAGS="$CFLAGS"
1607 CFLAGS="$CFLAGS -Werror -fno-strict-aliasing"
1608 AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no])
1609 CFLAGS="$SAVE_CFLAGS"
1610 if test "$FNOSTRICTALIASING" = "yes"; then
1612 STD_CWARNINGS="$STD_CWARNINGS -fno-strict-aliasing"
1617 # turn off delete null pointer checks
1619 AC_MSG_CHECKING(if "$CC" supports -fno-delete-null-pointer-checks)
1620 SAVE_CFLAGS="$CFLAGS"
1621 CFLAGS="$CFLAGS -Werror -fno-delete-null-pointer-checks"
1622 AC_TRY_COMPILE(,, [FNODELETENULLPOINTERCHECKS=yes],
1623 [FNODELETENULLPOINTERCHECKS=no])
1624 CFLAGS="$SAVE_CFLAGS"
1625 if test "$FNODELETENULLPOINTERCHECKS" = "yes"; then
1627 STD_CWARNINGS="$STD_CWARNINGS -fno-delete-null-pointer-checks"
1633 CFLAGS="$CFLAGS -Wl,+vnocompatwarnings"
1634 BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings"
1637 if test "X$enable_warn_shadow" = Xyes; then
1638 STD_CWARNINGS="$STD_CWARNINGS -Wshadow"
1640 if test "X$enable_warn_error" = Xyes; then
1641 STD_CWARNINGS="$STD_CWARNINGS -Werror"
1648 CCNOOPT="$CCNOOPT -std"
1653 # The version of the C compiler that constantly warns about
1654 # 'const' as well as alignment issues is unfortunately not
1655 # able to be discerned via the version of the operating
1656 # system, nor does cc have a version flag.
1657 case "`$CC +W 123 2>&1`" in
1662 # Turn off the pointlessly noisy warnings.
1663 STD_CWARNINGS="+w1 +W 474,530,2193,2236"
1666 CCOPT="$CCOPT -Ae -z"
1667 CCNOOPT="$CCNOOPT -Ae -z"
1668 CFLAGS="$CFLAGS -Wl,+vnocompatwarnings"
1669 BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings"
1670 MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
1673 STD_CWARNINGS="-fullwarn -woff 1209"
1675 # Silence more than 250 instances of
1676 # "prototyped function redeclared without prototype"
1677 # and 11 instances of
1678 # "variable ... was set but never used"
1679 # from lib/dns/sec/openssl.
1681 IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
1686 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1694 AC_SUBST(MKDEPCFLAGS)
1696 AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
1701 AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
1704 # -lxnet buys us one big porting headache... standards, gotta love 'em.
1706 # AC_CHECK_LIB(xnet, socket, ,
1707 # AC_CHECK_LIB(socket, socket)
1710 # Use this for now, instead:
1718 AC_CHECK_LIB(socket, socket)
1719 AC_CHECK_LIB(nsl, inet_addr)
1724 # Work around Solaris's select() limitations.
1727 *-solaris2.[[89]]|*-solaris2.1?)
1728 AC_DEFINE(FD_SETSIZE, 65536,
1729 [Solaris hack to get select_large_fdset.])
1736 AC_MSG_CHECKING(whether to use purify)
1738 [ --with-purify[=PATH] use Rational purify],
1739 use_purify="$withval", use_purify="no")
1741 case "$use_purify" in
1745 AC_PATH_PROG(purify_path, purify, purify)
1748 purify_path="$use_purify"
1752 case "$use_purify" in
1758 if test -f $purify_path || test $purify_path = purify; then
1759 AC_MSG_RESULT($purify_path)
1760 PURIFYFLAGS="`echo $PURIFYOPTIONS`"
1761 PURIFY="$purify_path $PURIFYFLAGS"
1763 AC_MSG_ERROR([$purify_path not found.
1765 Please choose the proper path with the following command:
1767 configure --with-purify=PATH
1775 AC_ARG_WITH(libtool,
1776 [ --with-libtool use GNU libtool],
1777 use_libtool="$withval", use_libtool="no")
1779 case $use_libtool in
1784 LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
1785 LIBTOOL_MODE_COMPILE='--mode=compile --tag=CC'
1786 LIBTOOL_MODE_INSTALL='--mode=install --tag=CC'
1787 LIBTOOL_MODE_LINK='--mode=link --tag=CC'
1788 INSTALL_LIBRARY='${INSTALL_PROGRAM}'
1790 *) LIBTOOL_ALLOW_UNDEFINED= ;;
1793 *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;;
1794 *) LIBTOOL_IN_MAIN= ;;
1803 LIBTOOL_MODE_COMPILE=
1804 LIBTOOL_MODE_INSTALL=
1806 LIBTOOL_ALLOW_UNDEFINED=
1808 INSTALL_LIBRARY='${INSTALL_DATA}'
1811 AC_SUBST(INSTALL_LIBRARY)
1814 # Google/Great Performance Tools CPU Profiler
1816 AC_MSG_CHECKING(whether to use gperftools profiler)
1817 AC_ARG_WITH(gperftools-profiler,
1818 [ --with-gperftools-profiler use gperftools CPU profiler],
1819 use_profiler="$withval", use_profiler="no")
1821 case $use_profiler in
1824 AC_DEFINE([HAVE_GPERFTOOLS_PROFILER], 1,
1825 [Define to use gperftools CPU profiler.])
1826 LIBS="$LIBS -lprofiler"
1834 # enable/disable dumping stack backtrace. Also check if the system supports
1835 # glibc-compatible backtrace() function.
1837 AC_ARG_ENABLE(backtrace,
1838 [ --enable-backtrace log stack backtrace on abort [[default=yes]]],
1839 want_backtrace="$enableval", want_backtrace="yes")
1840 case $want_backtrace in
1842 ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1"
1843 AC_TRY_LINK([#include <execinfo.h>],
1844 [return (backtrace((void **)0, 0));],
1845 [AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],)
1848 ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE"
1851 AC_SUBST(ISC_PLATFORM_USEBACKTRACE)
1853 AC_ARG_ENABLE(symtable,
1854 [ --enable-symtable use internal symbol table for backtrace
1855 [[all|minimal(default)|none]]],
1856 want_symtable="$enableval", want_symtable="minimal")
1857 case $want_symtable in
1858 yes|all|minimal) # "yes" is a hidden value equivalent to "minimal"
1859 if test "$PERL" = ""
1861 AC_MSG_ERROR([Internal symbol table requires perl but no perl is found.
1862 Install perl or explicitly disable the feature by --disable-symtable.])
1864 if test "$use_libtool" = "yes"; then
1865 AC_MSG_WARN([Internal symbol table does not work with libtool. Disabling symbol table.])
1867 # we generate the internal symbol table only for those systems
1868 # known to work to avoid unexpected build failure. Also, warn
1869 # about unsupported systems when the feature is enabled
1872 freebsd*|netbsd*|openbsd*|linux*|solaris*|darwin*)
1873 MKSYMTBL_PROGRAM="$PERL"
1874 if test $want_symtable = all; then
1875 ALWAYS_MAKE_SYMTABLE="yes"
1879 if test $want_symtable = yes -o $want_symtable = all
1881 AC_MSG_WARN([this system is not known to generate internal symbol table safely; disabling it])
1889 AC_SUBST(MKSYMTBL_PROGRAM)
1890 AC_SUBST(ALWAYS_MAKE_SYMTABLE)
1893 # File name extension for static archive files, for those few places
1894 # where they are treated differently from dynamic ones.
1901 AC_SUBST(LIBTOOL_MKDEP_SED)
1902 AC_SUBST(LIBTOOL_MODE_COMPILE)
1903 AC_SUBST(LIBTOOL_MODE_INSTALL)
1904 AC_SUBST(LIBTOOL_MODE_LINK)
1905 AC_SUBST(LIBTOOL_ALLOW_UNDEFINED)
1906 AC_SUBST(LIBTOOL_IN_MAIN)
1909 # build exportable DNS library?
1911 AC_ARG_ENABLE(exportlib,
1912 [ --enable-exportlib build exportable library (GNU make required)
1914 case "$enable_exportlib" in
1917 for x in gmake gnumake make; do
1918 if $x --version 2>/dev/null | grep GNU > /dev/null; then
1923 if test -z "$gmake"; then
1924 AC_MSG_ERROR([exportlib requires GNU make. Install it or disable the feature.])
1926 LIBEXPORT=lib/export
1928 BIND9_CO_RULE="%.$O: \${srcdir}/%.c"
1931 BIND9_CO_RULE=".c.$O:"
1934 AC_SUBST(BIND9_CO_RULE)
1936 AC_ARG_WITH(export-libdir,
1937 [ --with-export-libdir[=PATH]
1938 installation directory for the export library
1939 [[EPREFIX/lib/bind9]]],
1940 export_libdir="$withval",)
1941 if test -z "$export_libdir"; then
1942 export_libdir="\${exec_prefix}/lib/bind9/"
1944 AC_SUBST(export_libdir)
1946 AC_ARG_WITH(export-includedir,
1947 [ --with-export-includedir[=PATH]
1948 installation directory for the header files of the
1949 export library [[PREFIX/include/bind9]]],
1950 export_includedir="$withval",)
1951 if test -z "$export_includedir"; then
1952 export_includedir="\${prefix}/include/bind9/"
1954 AC_SUBST(export_includedir)
1957 # Here begins a very long section to determine the system's networking
1958 # capabilities. The order of the tests is significant.
1965 [ --enable-ipv6 use IPv6 [default=autodetect]])
1967 case "$enable_ipv6" in
1969 AC_DEFINE(WANT_IPV6)
1976 # We do the IPv6 compilation checking after libtool so that we can put
1977 # the right suffix on the files.
1979 AC_MSG_CHECKING(for IPv6 structures)
1981 #include <sys/types.h>
1982 #include <sys/socket.h>
1983 #include <netinet/in.h>],
1984 [struct sockaddr_in6 sin6; return (0);],
1991 # See whether IPv6 support is provided via a Kame add-on.
1992 # This is done before other IPv6 linking tests to LIBS is properly set.
1994 AC_MSG_CHECKING(for Kame IPv6 support)
1996 [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]],
1997 use_kame="$withval", use_kame="no")
2003 kame_path=/usr/local/v6
2006 kame_path="$use_kame"
2015 if test -f $kame_path/lib/libinet6.a; then
2016 AC_MSG_RESULT($kame_path/lib/libinet6.a)
2017 LIBS="-L$kame_path/lib -linet6 $LIBS"
2019 AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
2021 Please choose the proper path with the following command:
2023 configure --with-kame=PATH
2030 # Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
2031 # Including it on Kame-using platforms is very bad, though, because
2032 # Kame uses #error against direct inclusion. So include it on only
2033 # the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
2034 # This is done before the in6_pktinfo check because that's what
2035 # netinet6/in6.h is needed for.
2040 ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
2041 LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
2042 isc_netinet6in6_hack="#include <netinet6/in6.h>"
2045 ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
2046 LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
2047 isc_netinet6in6_hack=""
2053 # This is similar to the netinet6/in6.h issue.
2056 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
2058 ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
2059 LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
2060 ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
2061 isc_netinetin6_hack="#include <netinet/in6.h>"
2064 ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
2065 LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
2066 ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
2067 isc_netinetin6_hack=""
2072 # Now delve deeper into the suitability of the IPv6 support.
2074 case "$found_ipv6" in
2076 ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
2077 LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
2079 AC_MSG_CHECKING(for in6_addr)
2081 #include <sys/types.h>
2082 #include <sys/socket.h>
2083 #include <netinet/in.h>
2084 $isc_netinetin6_hack
2085 $isc_netinet6in6_hack
2087 [struct in6_addr in6; return (0);],
2089 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
2090 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
2091 isc_in_addr6_hack=""],
2093 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
2094 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
2095 isc_in_addr6_hack="#define in6_addr in_addr6"])
2097 AC_MSG_CHECKING(for in6addr_any)
2099 #include <sys/types.h>
2100 #include <sys/socket.h>
2101 #include <netinet/in.h>
2102 $isc_netinetin6_hack
2103 $isc_netinet6in6_hack
2106 [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
2108 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
2109 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
2111 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
2112 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
2114 AC_MSG_CHECKING(for in6addr_loopback)
2116 #include <sys/types.h>
2117 #include <sys/socket.h>
2118 #include <netinet/in.h>
2119 $isc_netinetin6_hack
2120 $isc_netinet6in6_hack
2123 [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);],
2125 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
2126 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"],
2128 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1"
2129 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"])
2131 AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
2133 #include <sys/types.h>
2134 #include <sys/socket.h>
2135 #include <netinet/in.h>
2136 $isc_netinetin6_hack
2137 $isc_netinet6in6_hack
2139 [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
2141 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
2142 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
2144 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
2145 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
2146 LWRES_HAVE_SIN6_SCOPE_ID="$result"
2148 AC_MSG_CHECKING(for in6_pktinfo)
2150 #include <sys/types.h>
2151 #include <sys/socket.h>
2152 #include <netinet/in.h>
2153 $isc_netinetin6_hack
2154 $isc_netinet6in6_hack
2156 [struct in6_pktinfo xyzzy; return (0);],
2158 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
2159 [AC_MSG_RESULT(no -- disabling runtime ipv6 support)
2160 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
2163 ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
2164 LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
2165 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
2166 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
2167 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
2168 LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
2169 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
2171 ISC_IPV6_O="ipv6.$O"
2172 ISC_ISCIPV6_O="unix/ipv6.$O"
2177 AC_MSG_CHECKING(for struct sockaddr_storage)
2179 #include <sys/types.h>
2180 #include <sys/socket.h>
2181 $isc_netinetin6_hack
2182 $isc_netinet6in6_hack
2184 [struct sockaddr_storage storage; return (0);],
2186 ISC_PLATFORM_HAVESOCKADDRSTORAGE="#define ISC_PLATFORM_HAVESOCKADDRSTORAGE 1"],
2188 ISC_PLATFORM_HAVESOCKADDRSTORAGE="#undef ISC_PLATFORM_HAVESOCKADDRSTORAGE"])
2190 AC_SUBST(ISC_PLATFORM_HAVEIPV6)
2191 AC_SUBST(LWRES_PLATFORM_HAVEIPV6)
2192 AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
2193 AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
2194 AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
2195 AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
2196 AC_SUBST(ISC_PLATFORM_HAVEINADDR6)
2197 AC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
2198 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
2199 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
2200 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
2201 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK)
2202 AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
2203 AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
2204 AC_SUBST(ISC_PLATFORM_HAVESOCKADDRSTORAGE)
2205 AC_SUBST(ISC_IPV6_H)
2206 AC_SUBST(ISC_IPV6_O)
2207 AC_SUBST(ISC_ISCIPV6_O)
2208 AC_SUBST(ISC_IPV6_C)
2209 AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
2210 AC_SUBST(ISC_PLATFORM_HAVESCOPEID)
2212 AC_MSG_CHECKING([for struct if_laddrreq])
2214 #include <sys/types.h>
2215 #include <net/if6.h>
2216 ],[ struct if_laddrreq a; ],
2218 ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"],
2220 ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"])
2221 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ)
2223 AC_MSG_CHECKING([for struct if_laddrconf])
2225 #include <sys/types.h>
2226 #include <net/if6.h>
2227 ],[ struct if_laddrconf a; ],
2229 ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"],
2231 ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"])
2232 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF)
2235 # Check for network functions that are often missing. We do this
2236 # after the libtool checking, so we can put the right suffix on
2237 # the files. It also needs to come after checking for a Kame add-on,
2238 # which provides some (all?) of the desired functions.
2241 AC_MSG_CHECKING([for inet_ntop with IPv6 support])
2243 #include <sys/types.h>
2244 #include <sys/socket.h>
2245 #include <netinet/in.h>
2246 #include <arpa/inet.h>
2248 char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}],
2250 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
2253 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
2254 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
2255 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
2256 [AC_MSG_RESULT(assuming inet_ntop not needed)
2257 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"])
2260 # On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
2261 # addresses with less than four octets, like "1.2.3". Also leading
2262 # zeros should also be rejected.
2264 AC_MSG_CHECKING([for working inet_pton with IPv6 support])
2266 #include <sys/types.h>
2267 #include <sys/socket.h>
2268 #include <netinet/in.h>
2269 #include <arpa/inet.h>
2270 main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
2271 inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
2272 (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
2274 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
2276 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
2277 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
2278 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
2279 [AC_MSG_RESULT(assuming inet_pton needed)
2280 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
2281 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
2282 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"])
2284 AC_SUBST(ISC_PLATFORM_NEEDNTOP)
2285 AC_SUBST(ISC_PLATFORM_NEEDPTON)
2288 # Look for a 4.4BSD-style sa_len member in struct sockaddr.
2292 # Turn on 4.4BSD style sa_len support.
2293 AC_DEFINE(_SOCKADDR_LEN)
2297 AC_MSG_CHECKING(for sa_len in struct sockaddr)
2299 #include <sys/types.h>
2300 #include <sys/socket.h>],
2301 [struct sockaddr sa; sa.sa_len = 0; return (0);],
2303 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
2304 LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
2306 ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
2307 LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
2308 AC_SUBST(ISC_PLATFORM_HAVESALEN)
2309 AC_SUBST(LWRES_PLATFORM_HAVESALEN)
2312 # Look for a 4.4BSD or 4.3BSD struct msghdr
2314 AC_MSG_CHECKING(for struct msghdr flavor)
2316 #include <sys/types.h>
2317 #include <sys/socket.h>],
2318 [struct msghdr msg; msg.msg_flags = 0; return (0);],
2319 [AC_MSG_RESULT(4.4BSD)
2320 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
2321 [AC_MSG_RESULT(4.3BSD)
2322 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
2323 AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)
2326 # Look for in_port_t.
2328 AC_MSG_CHECKING(for type in_port_t)
2330 #include <sys/types.h>
2331 #include <netinet/in.h>],
2332 [in_port_t port = 25; return (0);],
2334 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
2336 ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
2337 AC_SUBST(ISC_PLATFORM_NEEDPORTT)
2340 # Check for addrinfo
2342 AC_MSG_CHECKING(for struct addrinfo)
2344 #include <netdb.h>],
2345 [struct addrinfo a; return (0);],
2347 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
2348 ISC_IRS_NEEDADDRINFO="#undef ISC_IRS_NEEDADDRINFO"
2349 AC_DEFINE(HAVE_ADDRINFO)],
2351 ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"
2352 ISC_IRS_NEEDADDRINFO="#define ISC_IRS_NEEDADDRINFO 1"])
2353 AC_SUBST(ISC_LWRES_NEEDADDRINFO)
2354 AC_SUBST(ISC_IRS_NEEDADDRINFO)
2357 # Check for rrsetinfo
2359 AC_MSG_CHECKING(for struct rrsetinfo)
2361 #include <netdb.h>],
2362 [struct rrsetinfo r; return (0);],
2364 ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"],
2366 ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"])
2367 AC_SUBST(ISC_LWRES_NEEDRRSETINFO)
2369 AC_MSG_CHECKING(for int sethostent)
2371 #include <netdb.h>],
2372 [int i = sethostent(0); return(0);],
2374 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
2376 ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
2377 AC_SUBST(ISC_LWRES_SETHOSTENTINT)
2379 AC_MSG_CHECKING(for int endhostent)
2381 #include <netdb.h>],
2382 [int i = endhostent(); return(0);],
2384 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
2386 ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
2387 AC_SUBST(ISC_LWRES_ENDHOSTENTINT)
2389 AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
2392 struct netent *getnetbyaddr(in_addr_t, int);],
2395 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
2397 ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
2398 AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)
2400 AC_MSG_CHECKING(for int setnetent)
2402 #include <netdb.h>],
2403 [int i = setnetent(0); return(0);],
2405 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
2407 ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
2408 AC_SUBST(ISC_LWRES_SETNETENTINT)
2410 AC_MSG_CHECKING(for int endnetent)
2412 #include <netdb.h>],
2413 [int i = endnetent(); return(0);],
2415 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
2417 ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
2418 AC_SUBST(ISC_LWRES_ENDNETENTINT)
2420 AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
2423 struct hostent *gethostbyaddr(const void *, size_t, int);],
2426 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
2428 ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
2429 AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)
2431 AC_MSG_CHECKING(for h_errno in netdb.h)
2433 #include <netdb.h>],
2434 [h_errno = 1; return(0);],
2436 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
2438 ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
2439 AC_SUBST(ISC_LWRES_NEEDHERRNO)
2442 # Sadly, the definitions of system-supplied getnameinfo(3) vary. Try to catch
2443 # known variations here:
2445 AC_MSG_CHECKING(for getnameinfo prototype definitions)
2447 #include <sys/types.h>
2448 #include <sys/socket.h>
2450 int getnameinfo(const struct sockaddr *, socklen_t, char *,
2451 socklen_t, char *, socklen_t, unsigned int);],
2453 [AC_MSG_RESULT(socklen_t for buflen; u_int for flags)
2454 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t,
2455 [Define to the sockaddr length type used by getnameinfo(3).])
2456 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t,
2457 [Define to the buffer length type used by getnameinfo(3).])
2458 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int,
2459 [Define to the flags type used by getnameinfo(3).])],
2461 #include <sys/types.h>
2462 #include <sys/socket.h>
2464 int getnameinfo(const struct sockaddr *, socklen_t, char *,
2465 size_t, char *, size_t, int);],
2467 [AC_MSG_RESULT(size_t for buflen; int for flags)
2468 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t)
2469 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
2470 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
2472 #include <sys/types.h>
2473 #include <sys/socket.h>
2475 int getnameinfo(const struct sockaddr *, size_t, char *,
2476 size_t, char *, size_t, int);],
2478 [AC_MSG_RESULT(size_t for buflen; int for flags)
2479 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, size_t)
2480 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
2481 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
2482 [AC_MSG_RESULT(not match any subspecies; assume standard definition)
2483 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t)
2484 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t)
2485 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])])
2488 # ...and same for gai_strerror().
2490 AC_MSG_CHECKING(for gai_strerror prototype definitions)
2492 #include <sys/types.h>
2493 #include <sys/socket.h>
2495 char *gai_strerror(int ecode);],
2497 [AC_MSG_RESULT(returning char *)
2498 AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [char *],
2499 [return type of gai_strerror])],
2500 [AC_MSG_RESULT(not match any subspecies; assume standard definition)
2501 AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [const char *])])
2503 AC_CHECK_FUNC(getipnodebyname,
2504 [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
2505 [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
2506 AC_CHECK_FUNC(getnameinfo,
2507 [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
2508 [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
2509 AC_CHECK_FUNC(getaddrinfo,
2510 [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
2511 AC_DEFINE(HAVE_GETADDRINFO)],
2512 [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
2513 AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
2514 AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
2515 AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
2516 AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
2517 AC_SUBST(ISC_IRS_GETNAMEINFOSOCKLEN)
2519 AC_ARG_ENABLE(getifaddrs,
2520 [ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no]].],
2521 want_getifaddrs="$enableval", want_getifaddrs="yes")
2524 # This interface iteration code for getifaddrs() will fall back to using
2525 # /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6
2528 case $want_getifaddrs in
2530 AC_MSG_WARN("--enable-getifaddrs=glibc is no longer required")
2531 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
2534 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
2541 # Look for a sysctl call to get the list of network interfaces.
2543 case $ac_cv_header_sys_sysctl_h in
2545 AC_MSG_CHECKING(for interface list sysctl)
2546 AC_EGREP_CPP(found_rt_iflist, [
2547 #include <sys/param.h>
2548 #include <sys/sysctl.h>
2549 #include <sys/socket.h>
2550 #ifdef NET_RT_IFLIST
2555 AC_DEFINE(HAVE_IFLIST_SYSCTL)],
2556 [AC_MSG_RESULT(no)])
2561 # Check for some other useful functions that are not ever-present.
2564 # We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC
2565 # because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77
2566 # reportedly defines strsep() without declaring it in <string.h> when
2567 # -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and
2568 # AC_CHECK_FUNC() incorrectly succeeds because it declares
2569 # the function itself.
2570 AC_MSG_CHECKING(for correctly declared strsep())
2571 AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");],
2572 [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
2573 [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
2574 AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
2576 AC_CHECK_FUNC(memmove,
2577 [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"],
2578 [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"])
2579 AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE)
2581 AC_CHECK_FUNC(strtoul,
2582 [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL"
2583 LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL"
2585 [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1"
2586 LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1"
2587 GENRANDOMLIB='${ISCLIBS}'])
2588 AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL)
2589 AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL)
2590 AC_SUBST(GENRANDOMLIB)
2592 AC_CHECK_FUNC(strlcpy,
2593 [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"
2594 LWRES_PLATFORM_NEEDSTRLCPY="#undef LWRES_PLATFORM_NEEDSTRLCPY"],
2595 [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"
2596 LWRES_PLATFORM_NEEDSTRLCPY="#define LWRES_PLATFORM_NEEDSTRLCPY 1"])
2597 AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY)
2598 AC_SUBST(LWRES_PLATFORM_NEEDSTRLCPY)
2600 AC_CHECK_FUNC(strlcat,
2601 [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"],
2602 [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"])
2603 AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT)
2605 AC_CHECK_FUNC(strcasestr,
2606 [ISC_PLATFORM_NEEDSTRCASESTR="#undef ISC_PLATFORM_NEEDSTRCASESTR"],
2607 [ISC_PLATFORM_NEEDSTRCASESTR="#define ISC_PLATFORM_NEEDSTRCASESTR 1"])
2608 AC_SUBST(ISC_PLATFORM_NEEDSTRCASESTR)
2610 AC_SUBST(READLINE_LIB)
2611 AC_ARG_WITH(readline,
2612 [ --with-readline[=LIBSPEC] specify readline library [default auto]],
2613 readline="$withval", readline="auto")
2618 for readline in -ledit -lreadline
2621 AC_MSG_NOTICE(checking for readline with $readline)
2622 AC_CHECK_FUNCS(readline)
2623 if test "$ac_cv_func_readline" = "yes"
2625 READLINE_LIB="$readline"
2628 for lib in -lterminfo -ltermcap -lncurses -lcurses
2630 AC_MSG_NOTICE(checking for readline with $readline $lib)
2631 unset ac_cv_func_readline
2632 LIBS="$readline $lib"
2633 AC_CHECK_FUNCS(readline)
2634 if test "$ac_cv_func_readline" = "yes"
2636 READLINE_LIB="$readline $lib"
2640 if test "$ac_cv_func_readline" = "yes"
2650 AC_MSG_NOTICE(checking for readline with $readline)
2651 AC_CHECK_FUNCS(readline)
2652 if test "$ac_cv_func_readline" = "yes"
2654 READLINE_LIB="$readline"
2656 for lib in -lterminfo -ltermcap -lncurses -lcurses
2658 AC_MSG_NOTICE(checking for readline with $readline $lib)
2659 unset ac_cv_func_readline
2660 LIBS="$readline $lib"
2661 AC_CHECK_FUNCS(readline)
2662 if test "$ac_cv_func_readline" = "yes"
2664 READLINE_LIB="$readline $lib"
2675 ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
2676 ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'
2677 ISC_PLATFORM_NEEDSPRINTF='#undef ISC_PLATFORM_NEEDSPRINTF'
2678 ISC_PLATFORM_NEEDVSNPRINTF='#undef ISC_PLATFORM_NEEDVSNPRINTF'
2679 LWRES_PLATFORM_NEEDVSNPRINTF='#undef LWRES_PLATFORM_NEEDVSNPRINTF'
2681 AC_MSG_CHECKING(sprintf return type)
2685 [ char buf[2]; return(*sprintf(buf,"x"));],
2686 [AC_MSG_RESULT(char *)
2687 ISC_PRINT_OBJS="print.$O"
2688 ISC_PRINT_SRCS="print.c"
2689 ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
2690 LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
2691 ],[AC_MSG_RESULT(int)])
2693 AC_CHECK_FUNC(vsnprintf, [],
2694 [ISC_PRINT_OBJS="print.$O"
2695 ISC_PRINT_SRCS="print.c"
2696 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
2697 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
2699 AC_MSG_CHECKING(printf for %z support)
2706 sprintf(buf, "%zu", j);
2707 exit(strcmp(buf, "0") != 0);
2710 [AC_MSG_RESULT(yes)],
2712 ISC_PRINT_OBJS="print.$O"
2713 ISC_PRINT_SRCS="print.c"
2714 ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1'
2715 ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1'
2716 ISC_PLATFORM_NEEDFSRINTF='#define ISC_PLATFORM_NEEDSPRINTF 1'
2717 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
2718 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"],
2719 [AC_MSG_RESULT(assuming target platform supports %z)])
2721 AC_SUBST(ISC_PLATFORM_NEEDPRINTF)
2722 AC_SUBST(ISC_PLATFORM_NEEDFPRINTF)
2723 AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
2724 AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
2725 AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
2726 AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
2728 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
2729 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
2730 AC_SUBST(ISC_EXTRA_OBJS)
2731 AC_SUBST(ISC_EXTRA_SRCS)
2733 AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
2735 # Use our own SPNEGO implementation?
2737 AC_ARG_ENABLE(isc-spnego,
2738 [ --disable-isc-spnego use SPNEGO from GSSAPI library])
2740 if test -n "$USE_GSSAPI"
2742 case "$enable_isc_spnego" in
2744 USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO'
2745 DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O"
2746 DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c"
2747 AC_MSG_RESULT(using SPNEGO from lib/dns)
2750 AC_MSG_RESULT(using SPNEGO from GSSAPI library)
2755 AC_SUBST(USE_ISC_SPNEGO)
2757 AC_SUBST(DST_EXTRA_OBJS)
2758 AC_SUBST(DST_EXTRA_SRCS)
2760 # Determine the printf format characters to use when printing
2761 # values of type isc_int64_t. This will normally be "ll", but where
2762 # the compiler treats "long long" as a alias for "long" and printf
2763 # doesn't know about "long long" use "l". Hopefully the sprintf
2764 # will produce a inconsistent result in the later case. If the compiler
2765 # fails due to seeing "%lld" we fall back to "l".
2767 # Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses
2768 # %ld even for (long long)/
2770 # Win32 uses "%I64d", but that's defined elsewhere since we don't use
2771 # configure on Win32.
2773 AC_MSG_CHECKING(printf format modifier for 64-bit integers)
2777 long long int j = 0;
2780 sprintf(buf, "%lld", j);
2781 exit((sizeof(long long int) != sizeof(long int))? 0 :
2782 (strcmp(buf, "0") != 0));
2786 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
2787 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'],
2789 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
2790 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'],
2791 [AC_MSG_RESULT(assuming target platform uses ll)
2792 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
2793 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'])
2794 AC_SUBST(ISC_PLATFORM_QUADFORMAT)
2795 AC_SUBST(LWRES_PLATFORM_QUADFORMAT)
2801 # Note it is very recommended to *not* disable chroot(),
2802 # this is only because chroot() was made obsolete by Posix.
2803 AC_ARG_ENABLE(chroot,
2804 [ --disable-chroot disable chroot])
2805 case "$enable_chroot" in
2807 AC_CHECK_FUNCS(chroot)
2812 AC_ARG_ENABLE(linux-caps,
2813 [ --disable-linux-caps disable linux capabilities])
2814 case "$enable_linux_caps" in
2816 AC_CHECK_HEADERS(linux/types.h)
2817 AC_CHECK_HEADERS([sys/capability.h])
2818 AC_CHECK_HEADERS([linux/capability.h], [], [],
2819 [#ifdef HAVE_LINUX_TYPES_H
2820 #include <linux/types.h>
2823 AC_CHECK_LIB(cap, cap_set_proc)
2828 AC_CHECK_HEADERS(sys/prctl.h)
2830 AC_CHECK_HEADERS(sys/un.h,
2831 ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
2833 ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
2835 AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
2839 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
2840 [Define if connect does not honour the permission on the UNIX domain socket.])
2843 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
2844 [Define if connect does not honour the permission on the UNIX domain socket.])
2851 AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET))
2853 AC_MSG_CHECKING(for optarg declaration)
2858 [AC_MSG_RESULT(yes)],
2860 GEN_NEED_OPTARG="-DNEED_OPTARG=1"
2861 AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])])
2864 # BSD/OS, and perhaps some others, don't define rlim_t.
2866 AC_MSG_CHECKING(for type rlim_t)
2868 #include <sys/types.h>
2869 #include <sys/time.h>
2870 #include <sys/resource.h>],
2871 [rlim_t rl = 19671212; return (0);],
2873 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"],
2876 AC_MSG_CHECKING(type of rlim_cur)
2878 #include <sys/types.h>
2879 #include <sys/time.h>
2880 #include <sys/resource.h>
2881 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
2883 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
2886 #include <sys/types.h>
2887 #include <sys/time.h>
2888 #include <sys/resource.h>
2889 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
2890 [AC_MSG_RESULT(long int)
2891 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
2894 #include <sys/types.h>
2895 #include <sys/time.h>
2896 #include <sys/resource.h>
2897 main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
2898 [AC_MSG_RESULT(long long int)
2899 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
2900 [AC_MSG_ERROR([unable to determine sizeof rlim_cur])
2901 ],[AC_MSG_ERROR(this cannot happen)])
2902 ],[AC_MSG_ERROR(this cannot happen)])
2904 AC_ARG_WITH(rlimtype, , rlimtype="$withval", rlimtype="long long int")
2905 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE $rlimtype"
2906 AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming $rlimtype)])
2908 AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
2911 # Older HP-UX doesn't have gettune
2915 AC_CHECK_HEADERS(sys/dyntune.h)
2923 # Compaq TruCluster requires more code for handling cluster IP aliases
2927 AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS")
2928 AC_CHECK_FUNC(clua_getaliasaddress,
2929 AC_DEFINE(HAVE_TRUCLUSTER, 1,
2930 [Define if running under Compaq TruCluster]))
2937 # Some hosts need msg_namelen to match the size of the socket structure.
2938 # Some hosts don't set msg_namelen appropriately on return from recvmsg().
2942 AC_DEFINE(BROKEN_RECVMSG, 1,
2943 [Define if recvmsg() does not meet all of the BSD socket API specifications.])
2948 # Microsoft has their own way of handling shared libraries that requires
2949 # additional qualifiers on extern variables. Unix systems don't need it.
2951 AC_SUBST(ISC_PLATFORM_USEDECLSPEC)
2952 ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC"
2953 AC_SUBST(LWRES_PLATFORM_USEDECLSPEC)
2954 LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC"
2955 AC_SUBST(IRS_PLATFORM_USEDECLSPEC)
2956 IRS_PLATFORM_USEDECLSPEC="#undef IRS_PLATFORM_USEDECLSPEC"
2959 # Random remaining OS-specific issues involving compiler warnings.
2960 # XXXDCL print messages to indicate some compensation is being done?
2962 AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
2963 ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"
2967 hack_shutup_pthreadonceinit=yes
2970 hack_shutup_sputaux=yes
2973 hack_shutup_sigwait=yes
2974 hack_shutup_sputaux=yes
2977 hack_shutup_stdargcast=yes
2980 hack_shutup_pthreadonceinit=yes
2982 *-solaris2.1[[0-9]])
2983 AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [hack_shutup_pthreadonceinit=yes], )
2987 case "$hack_shutup_pthreadonceinit" in
2990 # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
2992 ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
2996 case "$hack_shutup_sigwait" in
2999 # Shut up a -Wmissing-prototypes warning for sigwait().
3001 AC_DEFINE(SHUTUP_SIGWAIT)
3005 case "$hack_shutup_sputaux" in
3008 # Shut up a -Wmissing-prototypes warning from <stdio.h>.
3010 AC_DEFINE(SHUTUP_SPUTAUX)
3014 case "$hack_shutup_stdargcast" in
3017 # Shut up a -Wcast-qual warning from va_start().
3019 AC_DEFINE(SHUTUP_STDARG_CAST)
3023 AC_CHECK_HEADERS(strings.h,
3024 ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1"
3026 ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH"
3028 AC_SUBST(ISC_PLATFORM_HAVESTRINGSH)
3031 # Check for if_nametoindex() for IPv6 scoped addresses support
3033 AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
3034 ac_cv_have_if_nametoindex=no)
3035 case $ac_cv_have_if_nametoindex in
3039 AC_CHECK_LIB(ipv6, if_nametoindex,
3040 ac_cv_have_if_nametoindex=yes
3041 LIBS="-lipv6 $LIBS",)
3045 case $ac_cv_have_if_nametoindex in
3047 ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1"
3048 AC_DEFINE(HAVE_IF_NAMETOINDEX, 1,
3049 [Define to 1 if you have the if_nametoindex function.])
3053 ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX"
3056 AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX)
3058 AC_CHECK_FUNCS(nanosleep usleep)
3061 # Machine architecture dependent features
3063 AC_ARG_ENABLE(atomic,
3064 [ --enable-atomic enable machine specific atomic operations
3065 [[default=autodetect]]],
3066 enable_atomic="$enableval",
3067 enable_atomic="autodetect")
3068 case "$enable_atomic" in
3072 if test "X$GCC" = "Xyes"; then
3073 AC_MSG_CHECKING([if asm("isc"); works])
3075 main() { asm("ics"); exit(0); }
3080 saved_cflags="$CFLAGS"
3081 CFLAGS="$CFLAGS -Wa,-many"
3083 main() { asm("ics"); exit(0); }
3085 [AC_MSG_RESULT([yes, required -Wa,-many])
3087 [AC_MSG_RESULT([no, use_atomic disabled])
3088 CFLAGS="$saved_cflags"
3090 [AC_MSG_RESULT([cross compile, assume yes])
3091 CFLAGS="$saved_cflags"
3110 ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM"
3111 ISC_PLATFORM_USEGCCASM="#undef ISC_PLATFORM_USEGCCASM"
3112 ISC_PLATFORM_USESTDASM="#undef ISC_PLATFORM_USESTDASM"
3113 ISC_PLATFORM_USEMACASM="#undef ISC_PLATFORM_USEMACASM"
3114 if test "$use_atomic" = "yes"; then
3115 have_atomic=yes # set default
3118 # XXX: some old x86 architectures actually do not support
3119 # (some of) these operations. Do we need stricter checks?
3120 AC_CHECK_SIZEOF([void *])
3121 if test $ac_cv_sizeof_void_p = 8; then
3129 AC_CHECK_SIZEOF([void *])
3130 if test $ac_cv_sizeof_void_p = 8; then
3140 powerpc-*|powerpc64-*)
3143 mips-*|mipsel-*|mips64-*|mips64el-*)
3154 AC_MSG_CHECKING([architecture type for atomic operations])
3155 AC_MSG_RESULT($arch)
3158 if test "$have_atomic" = "yes"; then
3159 AC_MSG_CHECKING([compiler support for inline assembly code])
3162 # Check whether the compiler supports the assembly syntax we provide.
3163 if test "X$GCC" = "Xyes"; then
3164 # GCC's ASM extension always works
3166 if test $arch = "x86_64"; then
3167 # We can share the same code for gcc with x86_32
3170 if test $arch = "powerpc"; then
3172 # The MacOS (and maybe others) uses "r0" for register
3173 # zero. Under linux/ibm it is "0" for register 0.
3174 # Probe to see if we have a MacOS style assembler.
3176 AC_MSG_CHECKING([Checking for MacOS style assembler syntax])
3178 __asm__ volatile ("li r0, 0x0\n"::);
3182 ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1"
3183 ], [AC_MSG_RESULT(no)])
3188 # Tru64 compiler has its own syntax for inline
3192 #error "unexpected compiler"
3204 ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1"
3207 ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1"
3214 # See if the generic __asm function works. If not,
3215 # we need to disable the atomic operations.
3219 [compiler="standard"
3220 ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"],
3221 [compiler="not supported (atomic operations disabled)"
3227 AC_MSG_RESULT($compiler)
3230 if test "$have_atomic" = "yes"; then
3231 ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1"
3232 ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1"
3233 ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1"
3234 if test "$have_xaddq" = "yes"; then
3235 ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1"
3236 ISC_PLATFORM_HAVEATOMICSTOREQ="#define ISC_PLATFORM_HAVEATOMICSTOREQ 1"
3238 ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ"
3239 ISC_PLATFORM_HAVEATOMICSTOREQ="#undef ISC_PLATFORM_HAVEATOMICSTOREQ"
3242 ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD"
3243 ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG"
3244 ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE"
3245 ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ"
3246 ISC_PLATFORM_HAVEATOMICSTOREQ="#undef ISC_PLATFORM_HAVEATOMICSTOREQ"
3249 AC_SUBST(ISC_PLATFORM_HAVEXADD)
3250 AC_SUBST(ISC_PLATFORM_HAVEXADDQ)
3251 AC_SUBST(ISC_PLATFORM_HAVECMPXCHG)
3252 AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE)
3253 AC_SUBST(ISC_PLATFORM_HAVEATOMICSTOREQ)
3255 AC_SUBST(ISC_PLATFORM_USEGCCASM)
3256 AC_SUBST(ISC_PLATFORM_USEOSFASM)
3257 AC_SUBST(ISC_PLATFORM_USESTDASM)
3258 AC_SUBST(ISC_PLATFORM_USEMACASM)
3261 AC_SUBST(ISC_ARCH_DIR)
3264 # Check for __builtin_expect
3266 AC_MSG_CHECKING([compiler support for __builtin_expect])
3268 return (__builtin_expect(1, 1) ? 1 : 0);
3270 have_builtin_expect=yes
3273 have_builtin_expect=no
3276 if test "$have_builtin_expect" = "yes"; then
3277 AC_DEFINE(HAVE_BUILTIN_EXPECT, 1, [Define to 1 if the compiler supports __builtin_expect.])
3281 # Activate "rrset-order fixed" or not?
3283 AC_ARG_ENABLE(fixed-rrset,
3284 [ --enable-fixed-rrset enable fixed rrset ordering
3286 enable_fixed="$enableval",
3288 case "$enable_fixed" in
3290 AC_DEFINE(DNS_RDATASET_FIXED, 1,
3291 [Define to enable "rrset-order fixed" syntax.])
3300 # Enable response policy rewriting using NS IP addresses
3302 AC_ARG_ENABLE(rpz-nsip,
3303 [ --disable-rpz-nsip disable rpz-nsip rules [[default=enabled]]],
3304 enable_nsip="$enableval",
3306 case "$enable_nsip" in
3308 AC_DEFINE(ENABLE_RPZ_NSIP, 1,
3309 [Define to enable rpz-nsip rules.])
3318 # Enable response policy rewriting using NS name
3320 AC_ARG_ENABLE(rpz-nsdname,
3321 [ --disable-rpz-nsdname disable rpz-nsdname rules [[default=enabled]]],
3322 enable_nsdname="$enableval",
3323 enable_nsdname="yes")
3324 case "$enable_nsdname" in
3326 AC_DEFINE(ENABLE_RPZ_NSDNAME, 1,
3327 [Define to enable rpz-nsdname rules.])
3336 # Activate recursive fetch limits
3338 AC_ARG_ENABLE(fetchlimit,
3339 [ --enable-fetchlimit enable recursive fetch limits [[default=no]]],
3340 enable_fetchlimit="$enableval",
3341 enable_fetchlimit="no")
3342 case "$enable_fetchlimit" in
3344 AC_DEFINE(ENABLE_FETCHLIMIT, 1,
3345 [Define to enable the "fetches-per-server" and "fetches-per-zone" options.])
3354 # Activate "filter-aaaa" or not?
3356 AC_ARG_ENABLE(filter-aaaa,
3357 [ --enable-filter-aaaa enable filtering of AAAA records over IPv4
3359 enable_filter="$enableval",
3361 case "$enable_filter" in
3363 AC_DEFINE(ALLOW_FILTER_AAAA_ON_V4, 1,
3364 [Define to enable the "filter-aaaa-on-v4" option.])
3373 # The following sets up how non-blocking i/o is established.
3374 # Sunos, cygwin and solaris 2.x (x<5) require special handling.
3377 *-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
3378 *-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
3379 *-solaris2.[[01234]])
3380 AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
3381 AC_DEFINE(USE_FIONBIO_IOCTL, 1,
3382 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
3384 *) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
3385 [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
3389 # Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
3390 # This prevents the source address being set.
3393 *-solaris2.[[012345]]|*-solaris2.5.1)
3394 AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
3395 [Define if you cannot bind() before connect() for TCP sockets.])
3399 # The following sections deal with tools used for formatting
3400 # the documentation. They are all optional, unless you are
3401 # a developer editing the documentation source.
3408 AC_PATH_PROGS(LATEX, latex, latex)
3411 AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
3414 AC_PATH_PROGS(DBLATEX, dblatex, dblatex)
3421 AC_PATH_PROGS(W3M, w3m, w3m)
3425 # Look for xsltproc (libxslt)
3428 AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
3432 # Look for xmllint (libxml2)
3435 AC_PATH_PROG(XMLLINT, xmllint, xmllint)
3442 AC_PATH_PROG(DOXYGEN, doxygen, doxygen)
3449 AC_PATH_PROG(CURL, curl, curl)
3453 # Subroutine for searching for an ordinary file (e.g., a stylesheet)
3454 # in a number of directories:
3456 # NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
3458 # If the file FILENAME is found in one of the DIRECTORIES, the shell
3459 # variable VARIABLE is defined to its absolute pathname. Otherwise,
3460 # it is set to FILENAME, with no directory prefix (that's not terribly
3461 # useful, but looks less confusing in substitutions than leaving it
3462 # empty). The variable VARIABLE will be substituted into output files.
3465 AC_DEFUN(NOM_PATH_FILE, [
3467 AC_MSG_CHECKING(for $2)
3478 if test "X[$]$1" = "X"
3480 AC_MSG_RESULT("not found");
3487 # Look for Docbook-XSL stylesheets. Location probably varies by system.
3488 # If it's not explicitly specified, guess where it might be found, based on
3489 # where SGML stuff lives on some systems (FreeBSD is the only one we're sure
3490 # of at the moment).
3492 AC_MSG_CHECKING(for Docbook-XSL path)
3493 AC_ARG_WITH(docbook-xsl,
3494 [ --with-docbook-xsl=PATH Specify path for Docbook-XSL stylesheets],
3495 docbook_path="$withval", docbook_path="auto")
3496 case "$docbook_path" in
3499 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 /usr/share/xml/docbook/stylesheet/docbook-xsl"
3502 docbook_xsl_trees="$withval"
3503 AC_MSG_RESULT($docbook_xsl_trees)
3508 # Look for stylesheets we need.
3511 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees)
3512 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees)
3513 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees)
3514 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees)
3515 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees)
3516 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees)
3517 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees)
3518 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees)
3519 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees)
3522 # Same dance for dblatex
3524 dblatex_xsl_trees="/usr/local/share/xml/docbook/stylesheet/dblatex /usr/pkg/share/xml/docbook/stylesheet/dblatex /usr/share/xml/docbook/stylesheet/dblatex"
3525 NOM_PATH_FILE(XSLT_DBLATEX_STYLE, xsl/docbook.xsl, $dblatex_xsl_trees)
3526 NOM_PATH_FILE(XSLT_DBLATEX_FASTBOOK, xsl/latex_book_fast.xsl, $dblatex_xsl_trees)
3532 [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
3533 use_idn="$withval", use_idn="no")
3536 if test X$prefix = XNONE ; then
3551 AC_ARG_WITH(libiconv,
3552 [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]],
3553 use_libiconv="$withval", use_libiconv="no")
3554 case "$use_libiconv" in
3556 if test X$prefix = XNONE ; then
3557 iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
3559 iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
3566 iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
3571 [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]],
3572 iconvlib="$withval")
3583 [ --with-idnlib=ARG specify libidnkit],
3584 idnlib="$withval", idnlib="no")
3585 if test "$idnlib" = yes; then
3586 AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
3590 if test "$use_idn" != no; then
3591 AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
3592 STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
3593 if test "$idnlib" != no; then
3594 IDNLIBS="$idnlib $iconvlib"
3596 IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
3602 # Check whether to build Automated Test Framework unit tests
3605 [ --with-atf=ARG Automated Test Framework support],
3606 atf="$withval", atf="no")
3607 if test "$atf" = yes; then
3611 AC_CONFIG_COMMANDS([atf-config],
3613 mkdir -p unit/atf-src;
3617 *) srcdir="../../$srcdir";;
3619 ${SHELL} "${srcdir}${srcdir:+/unit/atf-src/}./configure" --enable-tools --disable-shared MISSING=: --prefix $atfdir;
3621 [atfdir=`pwd`/unit/atf])
3622 AC_MSG_RESULT(building ATF from bind9/unit/atf-src)
3626 if test "$atf" != no; then
3627 AC_DEFINE(ATF_TEST, 1, [define if ATF unit tests are to be built.])
3628 STD_CINCLUDES="$STD_CINCLUDES -I$atf/include"
3630 ATFLIBS="-L$atf/lib -latf-c"
3631 if test "$want_openssl_hash" = yes; then
3632 ATFLIBS="-L$atf/lib -latf-c $DNS_CRYPTO_LIBS"
3640 AC_CHECK_HEADERS(locale.h)
3641 AC_CHECK_FUNCS(setlocale)
3644 # was --enable-querytrace specified?
3646 AC_ARG_ENABLE(querytrace,
3647 [ --enable-querytrace enable very verbose query trace logging [[default=no]]],
3648 want_querytrace="$enableval", want_querytrace="no")
3650 AC_MSG_CHECKING([whether to enable query trace logging])
3651 case "$want_querytrace" in
3654 AC_DEFINE(WANT_QUERYTRACE, 1, [Define to enable very verbose query trace logging.])
3660 AC_MSG_ERROR("--enable-querytrace requires yes or no")
3667 AC_SUBST(BIND9_TOP_BUILDDIR)
3668 BIND9_TOP_BUILDDIR=`pwd`
3670 AC_SUBST(BIND9_ISC_BUILDINCLUDE)
3671 AC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
3672 AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
3673 AC_SUBST(BIND9_DNS_BUILDINCLUDE)
3674 AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
3675 AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
3676 if test "X$srcdir" != "X"; then
3677 BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
3678 BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
3679 BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
3680 BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
3681 BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
3682 BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
3684 BIND9_ISC_BUILDINCLUDE=""
3685 BIND9_ISCCC_BUILDINCLUDE=""
3686 BIND9_ISCCFG_BUILDINCLUDE=""
3687 BIND9_DNS_BUILDINCLUDE=""
3688 BIND9_LWRES_BUILDINCLUDE=""
3689 BIND9_BIND9_BUILDINCLUDE=""
3692 AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
3693 BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
3695 AC_SUBST_FILE(BIND9_MAKE_RULES)
3696 BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
3699 BIND9_PRODUCT="PRODUCT=\"${PRODUCT}\""
3700 AC_SUBST(BIND9_PRODUCT)
3701 BIND9_DESCRIPTION="DESCRIPTION=\"${DESCRIPTION}\""
3702 AC_SUBST(BIND9_DESCRIPTION)
3703 BIND9_VERSION="${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}"
3704 AC_SUBST(BIND9_VERSION)
3705 BIND9_MAJOR="MAJOR=${MAJORVER}.${MINORVER}"
3706 AC_SUBST(BIND9_MAJOR)
3707 BIND9_VERSIONSTRING="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}${DESCRIPTION:+ }${DESCRIPTION}"
3708 AC_SUBST(BIND9_VERSIONSTRING)
3709 BIND9_VERSIONSHORT="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}"
3710 AC_SUBST(BIND9_VERSIONSHORT)
3712 BIND9_SRCID="SRCID=unset"
3713 if test -f "${srcdir}/srcid"; then
3715 BIND9_SRCID="SRCID=$SRCID"
3716 elif test -d "${srcdir}/.git"; then
3717 BIND9_SRCID="SRCID="`(cd "${srcdir}";git rev-parse --short HEAD)`
3720 AC_SUBST(BIND9_SRCID)
3722 if test -z "$ac_configure_args"; then
3723 BIND9_CONFIGARGS="defaults"
3725 for a in $ac_configure_args
3727 BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a"
3730 BIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`"
3731 BIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}"
3732 AC_SUBST(BIND9_CONFIGARGS)
3734 AC_SUBST_FILE(LIBISC_API)
3735 LIBISC_API="$srcdir/lib/isc/api"
3737 AC_SUBST_FILE(LIBISCCC_API)
3738 LIBISCCC_API="$srcdir/lib/isccc/api"
3740 AC_SUBST_FILE(LIBISCCFG_API)
3741 LIBISCCFG_API="$srcdir/lib/isccfg/api"
3743 AC_SUBST_FILE(LIBDNS_API)
3744 LIBDNS_API="$srcdir/lib/dns/api"
3746 AC_SUBST_FILE(LIBBIND9_API)
3747 LIBBIND9_API="$srcdir/lib/bind9/api"
3749 AC_SUBST_FILE(LIBLWRES_API)
3750 LIBLWRES_API="$srcdir/lib/lwres/api"
3752 AC_SUBST_FILE(LIBIRS_API)
3753 LIBIRS_API="$srcdir/lib/irs/api"
3756 # Configure any DLZ drivers.
3758 # If config.dlz.in selects one or more DLZ drivers, it will set
3759 # CONTRIB_DLZ to a non-empty value, which will be our clue to
3760 # build DLZ drivers in contrib.
3762 # This section has to come after the libtool stuff because it needs to
3763 # know how to name the driver object files.
3767 DLZ_DRIVER_INCLUDES=""
3774 # Configure support for building a shared library object
3776 # Even when libtool is available it can't always be relied upon
3777 # to build an object that can be dlopen()'ed, but this is necessary
3778 # for building the dlzexternal system test, so we'll try it the
3779 # old-fashioned way.
3788 [ --with-dlopen=ARG Support dynamically loadable DLZ drivers],
3789 dlopen="$withval", dlopen="yes")
3792 *-sunos*) dlopen="no"
3796 if test "$dlopen" = "yes"; then
3797 AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
3798 if test "$have_dl" = "yes"; then
3801 AC_CHECK_FUNCS(dlopen dlclose dlsym,,dlopen=no)
3804 if test "$dlopen" = "yes"; then
3809 if test "$have_dl" = "yes"
3811 if test "$use_libtool" = "yes"; then
3812 SO_LDFLAGS="-Xcompiler -shared"
3815 SO_LDFLAGS="-shared"
3819 SO_LDFLAGS="-shared"
3823 *-freebsd*|*-openbsd*)
3825 elf=`${CC} -dM -E - < /dev/null | grep __ELF__`
3826 if test "$use_libtool" = "yes"; then
3827 SO_LDFLAGS="-Xcompiler -shared"
3830 SO_LDFLAGS="-shared"
3836 SO_LDFLAGS="-Bshareable -x"
3841 SO_LDFLAGS="-G -z text"
3847 SO_LDFLAGS="-b +vnocompatwarnings"
3855 if test "X$GCC" = "Xyes"; then
3859 if test "$use_libtool" = "yes"; then
3860 SO_LDFLAGS="-Xcompiler -shared"
3863 SO_LDFLAGS="-shared"
3869 # If we still don't know how to make shared objects, don't make any.
3870 if test -n "$SO_LD"; then
3871 SO_TARGETS="\${SO_TARGETS}"
3872 AC_DEFINE(ISC_DLZ_DLOPEN, 1,
3873 [Define to allow building of objects for dlopen().])
3879 AC_SUBST(SO_LDFLAGS)
3881 AC_SUBST(SO_TARGETS)
3883 sinclude(contrib/dlz/config.dlz.in)
3884 AC_MSG_CHECKING(contributed DLZ drivers)
3886 if test -n "$CONTRIB_DLZ"
3889 DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
3890 AC_CONFIG_FILES([$DLZ_DRIVER_RULES])
3893 DLZ_DRIVER_RULES=/dev/null
3896 AC_SUBST(CONTRIB_DLZ)
3897 AC_SUBST(DLZ_DRIVER_INCLUDES)
3898 AC_SUBST(DLZ_DRIVER_LIBS)
3899 AC_SUBST(DLZ_DRIVER_SRCS)
3900 AC_SUBST(DLZ_DRIVER_OBJS)
3901 AC_SUBST(DLZ_SYSTEM_TEST)
3902 AC_SUBST_FILE(DLZ_DRIVER_RULES)
3904 if test "$cross_compiling" = "yes"; then
3905 if test -z "$BUILD_CC"; then
3906 AC_MSG_ERROR([BUILD_CC not set])
3908 BUILD_CFLAGS="$BUILD_CFLAGS"
3909 BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
3910 BUILD_LDFLAGS="$BUILD_LDFLAGS"
3911 BUILD_LIBS="$BUILD_LIBS"
3914 BUILD_CFLAGS="$CFLAGS"
3915 BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
3916 BUILD_LDFLAGS="$LDFLAGS"
3921 for e in $BUILD_LDFLAGS ; do
3926 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3927 NEWFLAGS="$NEWFLAGS $e $ee"
3930 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3931 NEWFLAGS="$NEWFLAGS $e $ee"
3934 ee=`echo $e | sed -e 's%^-L%-R%'`
3935 NEWFLAGS="$NEWFLAGS $e $ee"
3938 NEWFLAGS="$NEWFLAGS $e"
3943 NEWFLAGS="$NEWFLAGS $e"
3947 BUILD_LDFLAGS="$NEWFLAGS"
3950 for e in $DNS_GSSAPI_LIBS ; do
3955 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3956 NEWFLAGS="$NEWFLAGS $e $ee"
3959 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3960 NEWFLAGS="$NEWFLAGS $e $ee"
3963 ee=`echo $e | sed -e 's%^-L%-R%'`
3964 NEWFLAGS="$NEWFLAGS $e $ee"
3967 NEWFLAGS="$NEWFLAGS $e"
3972 NEWFLAGS="$NEWFLAGS $e"
3976 DNS_GSSAPI_LIBS="$NEWFLAGS"
3979 for e in $DNS_CRYPTO_LIBS ; do
3984 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3985 NEWFLAGS="$NEWFLAGS $e $ee"
3988 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3989 NEWFLAGS="$NEWFLAGS $e $ee"
3992 ee=`echo $e | sed -e 's%^-L%-R%'`
3993 NEWFLAGS="$NEWFLAGS $e $ee"
3996 NEWFLAGS="$NEWFLAGS $e"
4001 NEWFLAGS="$NEWFLAGS $e"
4005 DNS_CRYPTO_LIBS="$NEWFLAGS"
4008 AC_SUBST(BUILD_CFLAGS)
4009 AC_SUBST(BUILD_CPPFLAGS)
4010 AC_SUBST(BUILD_LDFLAGS)
4011 AC_SUBST(BUILD_LIBS)
4014 # Commands to run at the end of config.status.
4015 # Don't just put these into configure, it won't work right if somebody
4016 # runs config.status directly (which autoconf allows).
4021 [chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter])
4024 # Files to configure. These are listed here because we used to
4025 # specify them as arguments to AC_OUTPUT. It's (now) ok to move these
4026 # elsewhere if there's a good reason for doing so.
4035 bin/confgen/Makefile
4036 bin/confgen/unix/Makefile
4040 bin/named/unix/Makefile
4041 bin/nsupdate/Makefile
4044 bin/python/dnssec-checkds.py
4045 bin/python/dnssec-coverage.py
4048 bin/tests/atomic/Makefile
4049 bin/tests/db/Makefile
4050 bin/tests/dst/Makefile
4051 bin/tests/dst/Kdh.+002+18602.key
4052 bin/tests/dst/Kdh.+002+18602.private
4053 bin/tests/dst/Kdh.+002+48957.key
4054 bin/tests/dst/Kdh.+002+48957.private
4055 bin/tests/dst/Ktest.+001+00002.key
4056 bin/tests/dst/Ktest.+001+54622.key
4057 bin/tests/dst/Ktest.+001+54622.private
4058 bin/tests/dst/Ktest.+003+23616.key
4059 bin/tests/dst/Ktest.+003+23616.private
4060 bin/tests/dst/Ktest.+003+49667.key
4061 bin/tests/dst/dst_2_data
4062 bin/tests/dst/t2_data_1
4063 bin/tests/dst/t2_data_2
4064 bin/tests/dst/t2_dsasig
4065 bin/tests/dst/t2_rsasig
4066 bin/tests/hashes/Makefile
4067 bin/tests/headerdep_test.sh
4068 bin/tests/master/Makefile
4069 bin/tests/mem/Makefile
4070 bin/tests/names/Makefile
4071 bin/tests/net/Makefile
4072 bin/tests/rbt/Makefile
4073 bin/tests/resolver/Makefile
4074 bin/tests/sockaddr/Makefile
4075 bin/tests/system/Makefile
4076 bin/tests/system/conf.sh
4077 bin/tests/system/builtin/Makefile
4078 bin/tests/system/dlz/prereq.sh
4079 bin/tests/system/dlzexternal/Makefile
4080 bin/tests/system/dlzexternal/ns1/named.conf
4081 bin/tests/system/fetchlimit/Makefile
4082 bin/tests/system/filter-aaaa/Makefile
4083 bin/tests/system/inline/checkdsa.sh
4084 bin/tests/system/lwresd/Makefile
4085 bin/tests/system/statistics/Makefile
4086 bin/tests/system/rpz/Makefile
4087 bin/tests/system/rrl/Makefile
4088 bin/tests/system/rsabigexponent/Makefile
4089 bin/tests/system/tkey/Makefile
4090 bin/tests/system/tsiggss/Makefile
4091 bin/tests/tasks/Makefile
4092 bin/tests/timers/Makefile
4093 bin/tests/virtual-time/Makefile
4094 bin/tests/virtual-time/conf.sh
4096 contrib/check-secure-delegation.pl
4097 contrib/zone-edit.sh
4100 doc/arm/noteversion.xml
4101 doc/arm/pkgversion.xml
4102 doc/arm/releaseinfo.xml
4103 doc/doxygen/Doxyfile
4104 doc/doxygen/Makefile
4105 doc/doxygen/doxygen-input-filter
4108 doc/tex/armstyle.sty
4110 doc/xsl/isc-docbook-chunk.xsl
4111 doc/xsl/isc-docbook-html.xsl
4112 doc/xsl/isc-manpage.xsl
4113 doc/xsl/isc-notes-html.xsl
4117 lib/bind9/include/Makefile
4118 lib/bind9/include/bind9/Makefile
4120 lib/dns/include/Makefile
4121 lib/dns/include/dns/Makefile
4122 lib/dns/include/dst/Makefile
4123 lib/dns/tests/Makefile
4125 lib/export/dns/Makefile
4126 lib/export/dns/include/Makefile
4127 lib/export/dns/include/dns/Makefile
4128 lib/export/dns/include/dst/Makefile
4129 lib/export/irs/Makefile
4130 lib/export/irs/include/Makefile
4131 lib/export/irs/include/irs/Makefile
4132 lib/export/isc/$thread_dir/Makefile
4133 lib/export/isc/$thread_dir/include/Makefile
4134 lib/export/isc/$thread_dir/include/isc/Makefile
4135 lib/export/isc/Makefile
4136 lib/export/isc/include/Makefile
4137 lib/export/isc/include/isc/Makefile
4138 lib/export/isc/nls/Makefile
4139 lib/export/isc/unix/Makefile
4140 lib/export/isc/unix/include/Makefile
4141 lib/export/isc/unix/include/isc/Makefile
4142 lib/export/isccfg/Makefile
4143 lib/export/isccfg/include/Makefile
4144 lib/export/isccfg/include/isccfg/Makefile
4145 lib/export/samples/Makefile
4146 lib/export/samples/Makefile-postinstall
4148 lib/irs/include/Makefile
4149 lib/irs/include/irs/Makefile
4150 lib/irs/include/irs/netdb.h
4151 lib/irs/include/irs/platform.h
4152 lib/isc/$arch/Makefile
4153 lib/isc/$arch/include/Makefile
4154 lib/isc/$arch/include/isc/Makefile
4155 lib/isc/$thread_dir/Makefile
4156 lib/isc/$thread_dir/include/Makefile
4157 lib/isc/$thread_dir/include/isc/Makefile
4159 lib/isc/include/Makefile
4160 lib/isc/include/isc/Makefile
4161 lib/isc/include/isc/platform.h
4162 lib/isc/tests/Makefile
4163 lib/isc/nls/Makefile
4164 lib/isc/unix/Makefile
4165 lib/isc/unix/include/Makefile
4166 lib/isc/unix/include/isc/Makefile
4168 lib/isccc/include/Makefile
4169 lib/isccc/include/isccc/Makefile
4171 lib/isccfg/include/Makefile
4172 lib/isccfg/include/isccfg/Makefile
4174 lib/lwres/include/Makefile
4175 lib/lwres/include/lwres/Makefile
4176 lib/lwres/include/lwres/netdb.h
4177 lib/lwres/include/lwres/platform.h
4178 lib/lwres/man/Makefile
4179 lib/lwres/tests/Makefile
4180 lib/lwres/unix/Makefile
4181 lib/lwres/unix/include/Makefile
4182 lib/lwres/unix/include/lwres/Makefile
4184 lib/tests/include/Makefile
4185 lib/tests/include/tests/Makefile
4197 # Now that the Makefiles exist we can ensure that everything is rebuilt.
4199 AC_ARG_WITH(make-clean,
4200 [ --with-make-clean Run "make clean" at end of configure [[yes|no]].],
4201 make_clean="$withval", make_clean="yes")
4202 case "$make_clean" in
4204 if test "$no_create" != "yes"
4211 AC_ARG_ENABLE(full-report,
4212 [ --enable-full-report report values of all configure options])
4214 echo "========================================================================"
4215 echo "Configuration summary:"
4216 echo "------------------------------------------------------------------------"
4217 echo "Optional features enabled:"
4218 $use_threads && echo " Multiprocessing support (--enable-threads)"
4220 test "$enable_rrl" = "yes" && \
4221 echo " Response Rate Limiting (--enable-rrl)"
4222 test "$enable_fetchlimit" = "yes" && \
4223 echo " Recursive fetch limits for DoS attack mitigation (--enable-fetchlimit)"
4224 test "$use_gssapi" = "no" || echo " GSS-API (--with-gssapi)"
4225 test "$use_pkcs11" = "no" || echo " PKCS#11/Cryptoki support (--with-pkcs11)"
4226 test "$enable_newstats" = "yes" && \
4227 echo " New statistics (--enable-newstats)"
4228 test "$enable_fixed" = "yes" && \
4229 echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)"
4230 test "$enable_filter" = "yes" && \
4231 echo " AAAA filtering (--enable-filter-aaaa)"
4232 test "$want_backtrace" = "yes" && \
4233 echo " Print backtrace on crash (--enable-backtrace)"
4234 test "$want_symtable" = "minimal" && \
4235 echo " Use symbol table for backtrace, named only (--enable-symtable)"
4236 test "$want_symtable" = "yes" -o "$want_symtable" = "all" && \
4237 echo " Use symbol table for backtrace, all binaries (--enable-symtable=all)"
4238 test "$want_querytrace" = "yes" && \
4239 echo " Very verbose query trace logging (--enable-querytrace)"
4240 test "$atf" = "no" || echo " Automated Testing Framework (--with-atf)"
4242 # these lines are only printed if run with --enable-full-report
4243 if test "$enable_full_report" = "yes"; then
4244 test "$enable_ipv6" = "no" -o "$found_ipv6" = "no" || \
4245 echo " IPv6 support (--enable-ipv6)"
4246 test "X$USE_OPENSSL" = "X" || \
4247 echo " OpenSSL cryptography/DNSSEC (--with-openssl)"
4248 test "$OPENSSL_GOST" != "yes" || \
4249 echo " GOST algorithm support (--with-gost)"
4250 test "$OPENSSL_ECDSA" != "yes" || \
4251 echo " ECDSA algorithm support (--with-ecdsa)"
4252 test "X$PYTHON" = "X" || echo " Python tools (--with-python)"
4253 test "X$libxml2_libs" = "X" || echo " XML statistics (--with-libxml2)"
4256 echo " Dynamically loadable zone (DLZ) drivers:"
4257 test "$use_dlz_bdb" = "no" || \
4258 echo " Berkeley DB (--with-dlz-bdb)"
4259 test "$use_dlz_ldap" = "no" || \
4260 echo " LDAP (--with-dlz-ldap)"
4261 test "$use_dlz_mysql" = "no" || \
4262 echo " MySQL (--with-dlz-mysql)"
4263 test "$use_dlz_odbc" = "no" || \
4264 echo " ODBC (--with-dlz-odbc)"
4265 test "$use_dlz_postgres" = "no" || \
4266 echo " Postgres (--with-dlz-postgres)"
4267 test "$use_dlz_filesystem" = "no" || \
4268 echo " Filesystem (--with-dlz-filesystem)"
4269 test "$use_dlz_stub" = "no" || \
4270 echo " Stub (--with-dlz-stub)"
4271 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"
4274 echo "Features disabled or unavailable on this platform:"
4275 $use_threads || echo " Multiprocessing support (--enable-threads)"
4276 test "$enable_ipv6" = "no" -o "$found_ipv6" = "no" && \
4277 echo " IPv6 support (--enable-ipv6)"
4278 test "$enable_rrl" = "yes" || \
4279 echo " Response Rate Limiting (--enable-rrl)"
4280 test "$enable_fetchlimit" = "no" && \
4281 echo " Recursive fetch limits for DoS attack mitigation (--enable-fetchlimit)"
4282 test "$use_gssapi" = "no" && echo " GSS-API (--with-gssapi)"
4283 test "$use_pkcs11" = "no" && echo " PKCS#11/Cryptoki support (--with-pkcs11)"
4284 test "X$enable_newstats" = "X" && echo " New statistics (--enable-newstats)"
4285 test "$enable_fixed" = "yes" || \
4286 echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)"
4287 test "$want_backtrace" = "yes" || \
4288 echo " Print backtrace on crash (--enable-backtrace)"
4289 test "$want_querytrace" = "yes" || \
4290 echo " Very verbose query trace logging (--enable-querytrace)"
4291 test "$atf" = "no" && echo " Automated Testing Framework (--with-atf)"
4292 test "X$USE_OPENSSL" = "X" && \
4293 echo " OpenSSL cryptography/DNSSEC (--with-openssl)"
4294 test "X$USE_OPENSSL" != "X" -a "$OPENSSL_GOST" != "yes" && \
4295 echo " GOST algorithm support (--with-gost)"
4296 test "X$USE_OPENSSL" != "X" -a "$OPENSSL_ECDSA" != "yes" && \
4297 echo " ECDSA algorithm support (--with-ecdsa)"
4298 test "X$PYTHON" = "X" && echo " Python tools (--with-python)"
4299 test "X$libxml2_libs" = "X" && echo " XML statistics (--with-libxml2)"
4301 if test "X$ac_unrecognized_opts" != "X"; then
4303 echo "Unrecognized options:"
4304 echo " $ac_unrecognized_opts"
4306 if test "$enable_full_report" != "yes"; then
4307 echo "------------------------------------------------------------------------"
4308 echo "For more detail, use --enable-full-report."
4310 echo "========================================================================"
4312 if test "X$USE_OPENSSL" = "X"; then
4314 BIND is being built without OpenSSL. This means it will not have DNSSEC support.
4318 if test "X$OPENSSL_WARNING" != "X"; then
4320 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4321 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4323 WARNING Your OpenSSL crypto library may be vulnerable to WARNING
4324 WARNING one or more of the the following known security WARNING
4325 WARNING flaws: WARNING
4327 WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937, WARNING
4328 WARNING CVE-2006-2940 and CVE-2015-3193. WARNING
4330 WARNING It is recommended that you upgrade to OpenSSL WARNING
4331 WARNING version 1.0.2e/1.0.1/1.0.0/0.9.9/0.9.8d/0.9.7l WARNING
4332 WARNING (or greater). WARNING
4334 WARNING You can disable this warning by specifying: WARNING
4336 WARNING --disable-openssl-version-check WARNING
4338 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4339 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4343 # Tell Emacs to edit this file in shell mode.