1 # Copyright (C) 2004-2012 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 "s/^/# /" COPYRIGHT])dnl
21 AC_REVISION($Revision: 1.512.8.15 $)
23 AC_INIT(lib/dns/name.c)
26 AC_CONFIG_HEADER(config.h)
37 # Just set the maximum command line length for sunos as it otherwise
38 # takes a exceptionally long time to work it out. Required for libtool.
40 lt_cv_sys_max_cmd_len=4096;
48 AC_SUBST(STD_CINCLUDES)
49 AC_SUBST(STD_CDEFINES)
50 AC_SUBST(STD_CWARNINGS)
53 # Warn if the user specified libbind, which is now deprecated
54 AC_ARG_ENABLE(libbind, [ --enable-libbind deprecated])
56 case "$enable_libbind" in
58 AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution.
59 It is available from http://www.isc.org as a separate download.])
65 AC_ARG_ENABLE(developer, [ --enable-developer enable developer build settings])
66 case "$enable_developer" in
68 test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
69 test "${with_atf+set}" = set || with_atf=yes
70 test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes
71 test "${enable_rpz_nsip+set}" = set || enable_rpz_nsip=yes
72 test "${enable_rpz_nsdname+set}" = set || enable_rpz_nsdname=yes
73 test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
76 test "${enable_exportlib+set}" = set || enable_exportlib=yes
79 test "${enable_exportlib+set}" = set || enable_exportlib=yes
85 # Make very sure that these are the first files processed by
86 # config.status, since we use the processed output as the input for
87 # AC_SUBST_FILE() substitutions in other files.
89 AC_CONFIG_FILES([make/rules make/includes])
96 # The POSIX ln(1) program. Non-POSIX systems may substitute
97 # "copy" or something.
104 ar program not found. Please fix your PATH to include the directory in
105 which ar resides, or set AR in the environment with the full path to ar.
114 AC_PATH_PROGS(ETAGS, etags emacs-etags)
117 # Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
118 # GNU emacs etags, and it requires the -L flag.
120 if test "X$ETAGS" != "X"; then
121 AC_MSG_CHECKING(for Exuberant Ctags etags)
122 if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
132 # Perl is optional; it is used only by some of the system test scripts.
133 # Note: the backtrace feature (see below) uses perl to build the symbol table,
134 # but it still compiles without perl, in which case an empty table will be used.
136 AC_PATH_PROGS(PERL, perl5 perl)
140 # Special processing of paths depending on whether --prefix,
141 # --sysconfdir or --localstatedir arguments were given. What's
142 # desired is some compatibility with the way previous versions
143 # of BIND built; they defaulted to /usr/local for most parts of
144 # the installation, but named.boot/named.conf was in /etc
145 # and named.pid was in /var/run.
147 # So ... if none of --prefix, --sysconfdir or --localstatedir are
148 # specified, set things up that way. If --prefix is given, use
149 # it for sysconfdir and localstatedir the way configure normally
150 # would. To change the prefix for everything but leave named.conf
151 # in /etc or named.pid in /var/run, then do this the usual configure way:
152 # ./configure --prefix=/somewhere --sysconfdir=/etc
153 # ./configure --prefix=/somewhere --localstatedir=/var
155 # To put named.conf and named.pid in /usr/local with everything else,
156 # set the prefix explicitly to /usr/local even though that's the default:
157 # ./configure --prefix=/usr/local
161 case "$sysconfdir" in
166 case "$localstatedir" in
175 # Make sure INSTALL uses an absolute path, else it will be wrong in all
176 # Makefiles, since they use make/rules.in and INSTALL will be adjusted by
177 # configure based on the location of the file where it is substituted.
178 # Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
179 # subdirectory of install-sh, This relative path will be wrong for all
180 # directories more than one level down from install-sh.
187 # Not all systems have dirname.
190 ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
193 ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
194 test "$ac_dir" = "$ac_prog" && ac_dir=.
195 test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
196 INSTALL="$ac_dir/$ac_prog"
201 # On these hosts, we really want to use cc, not gcc, even if it is
202 # found. The gcc that these systems have will not correctly handle
205 # However, if the user sets $CC to be something, let that override
208 if test "X$CC" = "X" ; then
214 # Use Sun's cc if it is available, but watch
215 # out for /usr/ucb/cc; it will never be the right
218 # If setting CC here fails, the AC_PROG_CC done
219 # below might still find gcc.
220 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
221 for ac_dir in $PATH; do
222 test -z "$ac_dir" && ac_dir=.
228 if test -f "$ac_dir/cc"; then
249 # gcc's optimiser is broken at -02 for ultrasparc
251 if test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then
260 # OS dependent CC flags
263 # OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or
264 # -D_XOPEN_SOURCE_EXTENDED.
266 STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET"
267 CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET"
269 #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros
271 STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED"
272 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
275 # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros
277 STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__"
278 CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
280 # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides
281 # parts of the IPv6 Advanced Socket API as a result. This is stupid
282 # as it breaks how the two halves (Basic and Advanced) of the IPv6
283 # Socket API were designed to be used but we have to live with it.
284 # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
285 *-linux* | *-kfreebsd*-gnu)
286 STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE"
287 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
290 # Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use.
291 # Setting this is sufficient to select the correct behavior for BIND 9.
294 STD_CDEFINES="$STD_CDEFINES -D__APPLE_USE_RFC_3542"
295 CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542"
301 AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h,,,
302 [$ac_includes_default
303 #ifdef HAVE_SYS_PARAM_H
304 # include <sys/param.h>
311 AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
312 AC_C_FLEXIBLE_ARRAY_MEMBER
315 # Older versions of HP/UX don't define seteuid() and setegid()
317 AC_CHECK_FUNCS(seteuid setresuid)
318 AC_CHECK_FUNCS(setegid setresgid)
321 # UnixWare 7.1.1 with the feature supplement to the UDK compiler
322 # is reported to not support "static inline" (RT #1212).
324 AC_MSG_CHECKING(for static inline breakage)
329 static inline int foo1() {
333 static inline int foo2() {
338 AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])])
341 AC_CHECK_TYPE(ssize_t, int)
342 AC_CHECK_TYPE(uintptr_t,unsigned long)
343 AC_CHECK_TYPE(socklen_t,
344 [AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)],
348 #include <sys/types.h>
349 #include <sys/socket.h>
350 int getsockname(int, struct sockaddr *, size_t *);
352 [AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)],
353 [AC_DEFINE(ISC_SOCKADDR_LEN_T, int)])
356 #include <sys/types.h>
357 #include <sys/socket.h>
359 AC_SUBST(ISC_SOCKADDR_LEN_T)
361 AC_MSG_CHECKING(for long long)
362 AC_TRY_COMPILE([],[long long i = 0; return (0);],
364 ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
366 ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
367 AC_SUBST(ISC_PLATFORM_HAVELONGLONG)
370 # check for GCC noreturn attribute
372 AC_MSG_CHECKING(for GCC noreturn attribute)
373 AC_TRY_COMPILE([],[void foo() __attribute__((noreturn));],
375 ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
376 ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"],
378 ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
379 ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"])
380 AC_SUBST(ISC_PLATFORM_NORETURN_PRE)
381 AC_SUBST(ISC_PLATFORM_NORETURN_POST)
384 # check if we have lifconf
386 AC_MSG_CHECKING(for struct lifconf)
388 #include <sys/types.h>
389 #include <sys/socket.h>
393 struct lifconf lifconf;
394 lifconf.lifc_len = 0;
398 ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"],
400 ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"])
401 AC_SUBST(ISC_PLATFORM_HAVELIFCONF)
404 # check if we have kqueue
406 AC_ARG_ENABLE(kqueue,
407 [ --enable-kqueue use BSD kqueue when available [[default=yes]]],
408 want_kqueue="$enableval", want_kqueue="yes")
411 AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
412 case $ac_cv_have_kqueue in
414 ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
417 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
422 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
425 AC_SUBST(ISC_PLATFORM_HAVEKQUEUE)
428 # check if we have epoll. Linux kernel 2.4 has epoll_create() which fails,
429 # so we need to try running the code, not just test its existence.
432 [ --enable-epoll use Linux epoll when available [[default=auto]]],
433 want_epoll="$enableval", want_epoll="auto")
436 AC_MSG_CHECKING(epoll support)
438 #include <sys/epoll.h>
440 if (epoll_create(1) < 0)
446 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"],
448 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"])
451 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
454 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
457 AC_SUBST(ISC_PLATFORM_HAVEEPOLL)
460 # check if we support /dev/poll
462 AC_ARG_ENABLE(devpoll,
463 [ --enable-devpoll use /dev/poll when available [[default=yes]]],
464 want_devpoll="$enableval", want_devpoll="yes")
465 case $want_devpoll in
467 AC_CHECK_HEADERS(sys/devpoll.h devpoll.h,
468 ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
470 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
474 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
477 AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL)
480 # check if we need to #include sys/select.h explicitly
482 case $ac_cv_header_unistd_h in
484 AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set)
486 #include <sys/types.h> /* Ultrix */
487 #include <unistd.h>],
488 [fd_set read_set; return (0);],
490 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
491 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
493 case $ac_cv_header_sys_select_h in
495 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
496 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
499 AC_MSG_ERROR([need either working unistd.h or sys/select.h])
505 case $ac_cv_header_sys_select_h in
507 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
508 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
511 AC_MSG_ERROR([need either unistd.h or sys/select.h])
516 AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
517 AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)
520 # Find the machine's endian flavor.
525 # was --with-openssl specified?
528 AC_MSG_CHECKING(for OpenSSL library)
530 [ --with-openssl[=PATH] Build with OpenSSL [yes|no|path].
531 (Required for DNSSEC)],
532 use_openssl="$withval", use_openssl="auto")
534 openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw"
535 if test "$use_openssl" = "auto"
537 for d in $openssldirs
539 if test -f $d/include/openssl/opensslv.h
548 case "$use_openssl" in
562 [OpenSSL was not found in any of $openssldirs; use --with-openssl=/path
563 If you don't want OpenSSL, use --without-openssl])
566 if test "$use_openssl" = "yes"
568 # User did not specify a path - guess it
569 for d in $openssldirs
571 if test -f $d/include/openssl/opensslv.h
577 if test "$use_openssl" = "yes"
579 AC_MSG_RESULT(not found)
581 [OpenSSL was not found in any of $openssldirs; use --with-openssl=/path])
583 elif ! test -f "$use_openssl"/include/openssl/opensslv.h
585 AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found])
587 USE_OPENSSL='-DOPENSSL'
588 if test "$use_openssl" = "/usr"
591 DNS_OPENSSL_LIBS="-lcrypto"
593 DST_OPENSSL_INC="-I$use_openssl/include"
596 DNS_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto"
599 DNS_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto"
603 # Apple's ld seaches for serially for dynamic
604 # then static libraries. This means you can't
605 # use -L to override dynamic system libraries
606 # with static ones when linking. Instead
607 # we specify a absolute path.
609 if test -f "$use_openssl/lib/libcrypto.dylib"
611 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
613 DNS_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a"
617 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
621 AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include)
623 saved_cflags="$CFLAGS"
625 CFLAGS="$CFLAGS $DST_OPENSSL_INC"
626 LIBS="$LIBS $DNS_OPENSSL_LIBS"
627 AC_MSG_CHECKING(whether linking with OpenSSL works)
629 #include <openssl/err.h>
635 [AC_MSG_RESULT(yes)],
637 AC_MSG_ERROR(Could not run test program using OpenSSL from
638 $use_openssl/lib and $use_openssl/include.
639 Please check the argument to --with-openssl and your
640 shared library configuration (e.g., LD_LIBRARY_PATH).)],
641 [AC_MSG_RESULT(assuming it does work on target platform)])
643 AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
645 #include <openssl/err.h>],
646 [ DSO_METHOD_dlfcn(); ],
650 #include <openssl/err.h>
651 ],[ DSO_METHOD_dlfcn(); ],
653 DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl"
655 [AC_MSG_RESULT(unknown)
656 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)],
657 [AC_MSG_RESULT(assuming it does work on target platform)])
659 [AC_MSG_RESULT(assuming it does work on target platform)]
662 AC_ARG_ENABLE(openssl-version-check,
663 [AC_HELP_STRING([--enable-openssl-version-check],
664 [Check OpenSSL Version @<:@default=yes@:>@])])
665 case "$enable_openssl_version_check" in
667 AC_MSG_CHECKING(OpenSSL library version)
670 #include <openssl/opensslv.h>
672 if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
673 OPENSSL_VERSION_NUMBER < 0x00908000L) ||
674 OPENSSL_VERSION_NUMBER >= 0x0090804fL)
676 printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
677 OPENSSL_VERSION_NUMBER);
678 printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
679 "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n");
684 [AC_MSG_RESULT(not compatible)
687 [AC_MSG_RESULT(assuming target platform has compatible version)])
690 AC_MSG_RESULT(Skipped OpenSSL version check)
694 AC_MSG_CHECKING(for OpenSSL DSA support)
695 if test -f $use_openssl/include/openssl/dsa.h
697 AC_DEFINE(HAVE_OPENSSL_DSA)
703 AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512)
705 AC_MSG_CHECKING(for OpenSSL ECDSA support)
709 #include <openssl/ecdsa.h>
710 #include <openssl/objects.h>
712 EC_KEY *ec256, *ec384;
714 #if !defined(HAVE_EVP_SHA256) || !defined(HAVE_EVP_SHA384)
717 ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
718 ec384 = EC_KEY_new_by_curve_name(NID_secp384r1);
719 if (ec256 == NULL || ec384 == NULL)
731 AC_DEFINE(HAVE_OPENSSL_ECDSA)
737 AC_MSG_CHECKING(for OpenSSL GOST support)
740 #include <openssl/conf.h>
741 #include <openssl/engine.h>
743 #if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
748 OPENSSL_config(NULL);
750 e = ENGINE_by_id("gost");
753 if (ENGINE_init(e) <= 0)
765 [AC_MSG_RESULT(using --with-gost)])
766 AC_ARG_WITH(gost, , with_gost="$withval", with_gost="auto")
770 no) AC_MSG_ERROR([gost not supported]) ;;
779 *) AC_MSG_ERROR([need --with-gost=[[yes or no]]]) ;;
786 AC_DEFINE(HAVE_OPENSSL_GOST, 1,
787 [Define if your OpenSSL version supports GOST.])
792 CFLAGS="$saved_cflags"
794 OPENSSLLINKOBJS='${OPENSSLLINKOBJS}'
795 OPENSSLLINKSRCS='${OPENSSLLINKSRCS}'
801 # This would include the system openssl path (and linker options to use
802 # it as needed) if it is found.
805 AC_SUBST(USE_OPENSSL)
806 AC_SUBST(DST_OPENSSL_INC)
807 AC_SUBST(OPENSSLLINKOBJS)
808 AC_SUBST(OPENSSLLINKSRCS)
809 AC_SUBST(OPENSSL_ECDSA)
810 AC_SUBST(OPENSSL_GOST)
812 DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS"
815 # Use OpenSSL for hash functions
818 AC_ARG_ENABLE(openssl-hash,
819 [ --enable-openssl-hash use OpenSSL for hash functions [[default=no]]],
820 want_openssl_hash="$enableval", want_openssl_hash="no")
821 case $want_openssl_hash in
823 if test "$USE_OPENSSL" = ""
825 AC_MSG_ERROR([No OpenSSL for hash functions])
827 ISC_PLATFORM_OPENSSLHASH="#define ISC_PLATFORM_OPENSSLHASH 1"
828 ISC_OPENSSL_INC="$DST_OPENSSL_INC"
831 ISC_PLATFORM_OPENSSLHASH="#undef ISC_PLATFORM_OPENSSLHASH"
835 AC_SUBST(ISC_PLATFORM_OPENSSLHASH)
836 AC_SUBST(ISC_OPENSSL_INC)
839 # PKCS11 (aka crypto hardware) support
841 # This works only with the right OpenSSL with PKCS11 engine!
844 AC_MSG_CHECKING(for PKCS11 support)
846 [ --with-pkcs11[=PATH] Build with PKCS11 support [yes|no|path]
847 (PATH is for the PKCS11 provider)],
848 use_pkcs11="$withval", use_pkcs11="no")
850 case "$use_pkcs11" in
852 AC_MSG_RESULT(disabled)
857 AC_MSG_RESULT(using OpenSSL with PKCS11 support)
858 USE_PKCS11='-DUSE_PKCS11'
863 AC_SUBST(PKCS11_TOOLS)
865 AC_MSG_CHECKING(for PKCS11 tools)
866 case "$use_pkcs11" in
868 AC_MSG_RESULT(disabled)
869 PKCS11_PROVIDER="undefined"
872 AC_MSG_RESULT(PKCS11 provider is "$use_pkcs11")
873 PKCS11_PROVIDER="$use_pkcs11"
876 AC_SUBST(PKCS11_PROVIDER)
878 AC_MSG_CHECKING(for GSSAPI library)
880 [ --with-gssapi=PATH Specify path for system-supplied GSSAPI [[default=yes]]],
881 use_gssapi="$withval", use_gssapi="yes")
883 # gssapi is just the framework, we really require kerberos v5, so
884 # look for those headers (the gssapi headers must be there, too)
885 # The problem with this implementation is that it doesn't allow
886 # for the specification of gssapi and krb5 headers in different locations,
887 # which probably ought to be fixed although fixing might raise the issue of
888 # trying to build with incompatible versions of gssapi and krb5.
889 if test "$use_gssapi" = "yes"
891 # first, deal with the obvious
892 if test \( -f /usr/include/kerberosv5/krb5.h -o \
893 -f /usr/include/krb5/krb5.h -o \
894 -f /usr/include/krb5.h \) -a \
895 \( -f /usr/include/gssapi.h -o \
896 -f /usr/include/gssapi/gssapi.h \)
900 krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr"
903 if test -f $d/include/gssapi/gssapi_krb5.h -o \
906 if test -f $d/include/gssapi/gssapi.h -o \
907 -f $d/include/gssapi.h
918 case "$use_gssapi" in
920 AC_MSG_RESULT(disabled)
924 AC_MSG_ERROR([--with-gssapi must specify a path])
927 AC_MSG_RESULT(looking in $use_gssapi/lib)
928 USE_GSSAPI='-DGSSAPI'
929 saved_cppflags="$CPPFLAGS"
930 CPPFLAGS="-I$use_gssapi/include $CPPFLAGS"
931 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
932 [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"])
934 if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then
935 AC_MSG_ERROR([gssapi.h not found])
938 AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h,
939 [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"])
941 AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h,
942 [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"])
944 if test "$ISC_PLATFORM_KRB5HEADER" = ""; then
945 AC_MSG_ERROR([krb5.h not found])
948 CPPFLAGS="$saved_cppflags"
951 # XXXDCL This probably doesn't work right on all systems.
952 # It will need to be worked on as problems become evident.
954 # Essentially the problems here relate to two different
955 # areas. The first area is building with either KTH
956 # or MIT Kerberos, particularly when both are present on
957 # the machine. The other is static versus dynamic linking.
959 # On the KTH vs MIT issue, Both have libkrb5 that can mess
960 # up the works if one implementation ends up trying to
961 # use the other's krb. This is unfortunately a situation
962 # that very easily arises.
964 # Dynamic linking when the dependency information is built
965 # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes
966 # all such problems go away, but when that setup is not
967 # present, because either the dynamic libraries lack
968 # dependencies or static linking is being done, then the
969 # problems start to show up.
973 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \
974 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \
976 "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \
977 "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
980 # Note that this does not include $saved_libs, because
981 # on FreeBSD machines this configure script has added
982 # -L/usr/local/lib to LIBS, which can make the
983 # -lgssapi_krb5 test succeed with shared libraries even
984 # when you are trying to build with KTH in /usr/lib.
985 if test "$use_gssapi" = "/usr"
989 LIBS="-L$use_gssapi/lib $TRY_LIBS"
991 AC_MSG_CHECKING(linking as $TRY_LIBS)
992 AC_TRY_LINK( , [gss_acquire_cred();krb5_init_context()],
993 gssapi_linked=yes, gssapi_linked=no)
994 case $gssapi_linked in
995 yes) AC_MSG_RESULT(yes); break ;;
996 no) AC_MSG_RESULT(no) ;;
1000 case $gssapi_linked in
1001 no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;;
1005 # XXXDCL Major kludge. Tries to cope with KTH in /usr/lib
1006 # but MIT in /usr/local/lib and trying to build with KTH.
1007 # /usr/local/lib can end up earlier on the link lines.
1008 # Like most kludges, this one is not only inelegant it
1009 # is also likely to be the wrong thing to do at least as
1010 # many times as it is the right thing. Something better
1013 if test "$use_gssapi" = "/usr" -a \
1014 -f /usr/local/lib/libkrb5.a; then
1018 case "$FIX_KTH_VS_MIT" in
1020 case "$enable_static_linking" in
1021 yes) gssapi_lib_suffix=".a" ;;
1022 *) gssapi_lib_suffix=".so" ;;
1025 for lib in $LIBS; do
1030 new_lib=`echo $lib |
1031 sed -e s%^-l%$use_gssapi/lib/lib% \
1032 -e s%$%$gssapi_lib_suffix%`
1033 NEW_LIBS="$NEW_LIBS $new_lib"
1036 AC_MSG_ERROR([KTH vs MIT Kerberos confusion!])
1044 DST_GSSAPI_INC="-I$use_gssapi/include"
1045 DNS_GSSAPI_LIBS="$LIBS"
1047 AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include)
1052 AC_SUBST(ISC_PLATFORM_HAVEGSSAPI)
1053 AC_SUBST(ISC_PLATFORM_GSSAPIHEADER)
1054 AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER)
1055 AC_SUBST(ISC_PLATFORM_KRB5HEADER)
1057 AC_SUBST(USE_GSSAPI)
1058 AC_SUBST(DST_GSSAPI_INC)
1059 AC_SUBST(DNS_GSSAPI_LIBS)
1060 DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS"
1063 # Applications linking with libdns also need to link with these libraries.
1066 AC_SUBST(DNS_CRYPTO_LIBS)
1069 # was --with-randomdev specified?
1071 AC_MSG_CHECKING(for random device)
1072 AC_ARG_WITH(randomdev,
1073 [ --with-randomdev=PATH Specify path for random device],
1074 use_randomdev="$withval", use_randomdev="unspec")
1076 case "$use_randomdev" in
1080 devrandom=/dev/arandom
1083 devrandom=/dev/random
1086 AC_MSG_RESULT($devrandom)
1087 AC_CHECK_FILE($devrandom,
1088 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
1092 AC_MSG_ERROR([--with-randomdev must specify a path])
1095 AC_MSG_RESULT(disabled)
1098 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
1099 AC_MSG_RESULT(using "$use_randomdev")
1104 # Do we have arc4random() ?
1106 AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM))
1108 sinclude(config.threads.in)dnl
1112 if test "X$GCC" = "Xyes"; then
1116 CCOPT="$CCOPT -pthread"
1117 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1121 CCOPT="$CCOPT -pthread"
1124 LIBS="$LIBS -lthread"
1127 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1134 CCOPT="$CCOPT -pthread"
1141 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1143 *-sco-sysv*uw*|*-*-sysv*UnixWare*)
1145 CCOPT="$CCOPT -Kthread"
1149 CCOPT="$CCOPT -Kpthread"
1153 ALWAYS_DEFINES="-D_REENTRANT"
1154 ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
1155 THREADOPTOBJS='${THREADOPTOBJS}'
1156 THREADOPTSRCS='${THREADOPTSRCS}'
1159 # We'd like to use sigwait() too
1161 AC_CHECK_FUNC(sigwait,
1162 AC_DEFINE(HAVE_SIGWAIT),
1163 AC_CHECK_LIB(c, sigwait,
1164 AC_DEFINE(HAVE_SIGWAIT),
1165 AC_CHECK_LIB(pthread, sigwait,
1166 AC_DEFINE(HAVE_SIGWAIT),
1167 AC_CHECK_LIB(pthread, _Psigwait,
1168 AC_DEFINE(HAVE_SIGWAIT),))))
1170 AC_CHECK_FUNC(pthread_attr_getstacksize,
1171 AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
1173 AC_CHECK_FUNC(pthread_attr_setstacksize,
1174 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
1177 # Additional OS-specific issues related to pthreads and sigwait.
1181 # One more place to look for sigwait.
1184 AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
1186 *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
1187 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
1188 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
1191 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
1196 # BSDI 3.0 through 4.0.1 needs pthread_init() to be
1197 # called before certain pthreads calls. This is deprecated
1200 *-bsdi3.*|*-bsdi4.0*)
1201 AC_DEFINE(NEED_PTHREAD_INIT)
1204 # LinuxThreads requires some changes to the way we
1205 # deal with signals.
1208 AC_DEFINE(HAVE_LINUXTHREADS)
1211 # Ensure the right sigwait() semantics on Solaris and make
1212 # sure we call pthread_setconcurrency.
1215 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
1216 AC_CHECK_FUNC(pthread_setconcurrency,
1217 AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
1220 # UnixWare does things its own way.
1222 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1223 AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
1228 # Look for sysconf to allow detection of the number of processors.
1230 AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
1233 ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
1234 thread_dir=nothreads
1240 AC_SUBST(ALWAYS_DEFINES)
1241 AC_SUBST(ISC_PLATFORM_USETHREADS)
1242 AC_SUBST(THREADOPTOBJS)
1243 AC_SUBST(THREADOPTSRCS)
1244 ISC_THREAD_DIR=$thread_dir
1245 AC_SUBST(ISC_THREAD_DIR)
1248 # was --with-libxml2 specified?
1250 AC_MSG_CHECKING(for libxml2 library)
1251 AC_ARG_WITH(libxml2,
1252 [ --with-libxml2[=PATH] Build with libxml2 library [yes|no|path]],
1253 use_libxml2="$withval", use_libxml2="auto")
1255 case "$use_libxml2" in
1260 case X`(xml2-config --version) 2>/dev/null` in
1262 libxml2_libs=`xml2-config --libs`
1263 libxml2_cflags=`xml2-config --cflags`
1272 if test -f "$use_libxml2/bin/xml2-config" ; then
1273 libxml2_libs=`$use_libxml2/bin/xml2-config --libs`
1274 libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags`
1279 if test "X$libxml2_libs" != "X"
1282 CFLAGS="$CFLAGS $libxml2_cflags"
1283 LIBS="$LIBS $libxml2_libs"
1284 AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found])
1290 # In solaris 10, SMF can manage named service
1292 AC_CHECK_LIB(scf, smf_enable_instance)
1295 # flockfile is usually provided by pthreads, but we may want to use it
1296 # even if compiled with --disable-threads. getc_unlocked might also not
1299 AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
1300 AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
1303 # Indicate what the final decision was regarding threads.
1305 AC_MSG_CHECKING(whether to build with threads)
1306 if $use_threads; then
1313 # End of pthreads stuff.
1319 AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support],
1320 want_largefile="yes", want_largefile="no")
1321 case $want_largefile in
1323 ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
1330 # Additional compiler settings.
1334 IRIX_DNSSEC_WARNINGS_HACK=""
1336 if test "X$GCC" = "Xyes"; then
1337 AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing)
1339 CFLAGS="$CFLAGS -fno-strict-aliasing"
1340 AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no])
1342 if test "$FNOSTRICTALIASING" = "yes"; then
1344 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing"
1347 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith"
1351 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
1363 # The version of the C compiler that constantly warns about
1364 # 'const' as well as alignment issues is unfortunately not
1365 # able to be discerned via the version of the operating
1366 # system, nor does cc have a version flag.
1367 case "`$CC +W 123 2>&1`" in
1372 # Turn off the pointlessly noisy warnings.
1373 STD_CWARNINGS="+w1 +W 474,530,2193,2236"
1376 CCOPT="$CCOPT -Ae -z"
1377 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
1378 MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
1381 STD_CWARNINGS="-fullwarn -woff 1209"
1383 # Silence more than 250 instances of
1384 # "prototyped function redeclared without prototype"
1385 # and 11 instances of
1386 # "variable ... was set but never used"
1387 # from lib/dns/sec/openssl.
1389 IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
1394 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1402 AC_SUBST(MKDEPCFLAGS)
1404 AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
1409 AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
1412 # -lxnet buys us one big porting headache... standards, gotta love 'em.
1414 # AC_CHECK_LIB(xnet, socket, ,
1415 # AC_CHECK_LIB(socket, socket)
1418 # Use this for now, instead:
1426 AC_CHECK_LIB(socket, socket)
1427 AC_CHECK_LIB(nsl, inet_addr)
1432 # Work around Solaris's select() limitations.
1435 *-solaris2.[[89]]|*-solaris2.1?)
1436 AC_DEFINE(FD_SETSIZE, 65536,
1437 [Solaris hack to get select_large_fdset.])
1444 AC_MSG_CHECKING(whether to use purify)
1446 [ --with-purify[=PATH] use Rational purify],
1447 use_purify="$withval", use_purify="no")
1449 case "$use_purify" in
1453 AC_PATH_PROG(purify_path, purify, purify)
1456 purify_path="$use_purify"
1460 case "$use_purify" in
1466 if test -f $purify_path || test $purify_path = purify; then
1467 AC_MSG_RESULT($purify_path)
1468 PURIFYFLAGS="`echo $PURIFYOPTIONS`"
1469 PURIFY="$purify_path $PURIFYFLAGS"
1471 AC_MSG_ERROR([$purify_path not found.
1473 Please choose the proper path with the following command:
1475 configure --with-purify=PATH
1484 AC_ARG_WITH(libtool,
1485 [ --with-libtool use GNU libtool],
1486 use_libtool="$withval", use_libtool="no")
1488 case $use_libtool in
1493 LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
1494 LIBTOOL_MODE_COMPILE='--mode=compile --tag=CC'
1495 LIBTOOL_MODE_INSTALL='--mode=install --tag=CC'
1496 LIBTOOL_MODE_LINK='--mode=link --tag=CC'
1498 *) LIBTOOL_ALLOW_UNDEFINED= ;;
1501 *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;;
1502 *) LIBTOOL_IN_MAIN= ;;
1511 LIBTOOL_MODE_COMPILE=
1512 LIBTOOL_MODE_INSTALL=
1514 LIBTOOL_ALLOW_UNDEFINED=
1520 # enable/disable dumping stack backtrace. Also check if the system supports
1521 # glibc-compatible backtrace() function.
1523 AC_ARG_ENABLE(backtrace,
1524 [ --enable-backtrace log stack backtrace on abort [[default=yes]]],
1525 want_backtrace="$enableval", want_backtrace="yes")
1526 case $want_backtrace in
1528 ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1"
1529 AC_TRY_LINK([#include <execinfo.h>],
1530 [return (backtrace((void **)0, 0));],
1531 [AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],)
1534 ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE"
1537 AC_SUBST(ISC_PLATFORM_USEBACKTRACE)
1539 AC_ARG_ENABLE(symtable,
1540 [ --enable-symtable use internal symbol table for backtrace
1541 [[all|minimal(default)|none]]],
1542 want_symtable="$enableval", want_symtable="minimal")
1543 case $want_symtable in
1544 yes|all|minimal) # "yes" is a hidden value equivalent to "minimal"
1545 if test "$PERL" = ""
1547 AC_MSG_ERROR([Internal symbol table requires perl but no perl is found.
1548 Install perl or explicitly disable the feature by --disable-symtable.])
1550 if test "$use_libtool" = "yes"; then
1551 AC_MSG_WARN([Internal symbol table does not work with libtool. Disabling symbol table.])
1553 # we generate the internal symbol table only for those systems
1554 # known to work to avoid unexpected build failure. Also, warn
1555 # about unsupported systems when the feature is enabled
1558 freebsd*|netbsd*|openbsd*|linux*|solaris*|darwin*)
1559 MKSYMTBL_PROGRAM="$PERL"
1560 if test $want_symtable = all; then
1561 ALWAYS_MAKE_SYMTABLE="yes"
1565 if test $want_symtable = yes -o $want_symtable = all
1567 AC_MSG_WARN([this system is not known to generate internal symbol table safely; disabling it])
1575 AC_SUBST(MKSYMTBL_PROGRAM)
1576 AC_SUBST(ALWAYS_MAKE_SYMTABLE)
1579 # File name extension for static archive files, for those few places
1580 # where they are treated differently from dynamic ones.
1587 AC_SUBST(LIBTOOL_MKDEP_SED)
1588 AC_SUBST(LIBTOOL_MODE_COMPILE)
1589 AC_SUBST(LIBTOOL_MODE_INSTALL)
1590 AC_SUBST(LIBTOOL_MODE_LINK)
1591 AC_SUBST(LIBTOOL_ALLOW_UNDEFINED)
1592 AC_SUBST(LIBTOOL_IN_MAIN)
1595 # build exportable DNS library?
1597 AC_ARG_ENABLE(exportlib,
1598 [ --enable-exportlib build exportable library (GNU make required)
1600 case "$enable_exportlib" in
1603 for x in gmake gnumake make; do
1604 if $x --version 2>/dev/null | grep GNU > /dev/null; then
1609 if test -z "$gmake"; then
1610 AC_MSG_ERROR([exportlib requires GNU make. Install it or disable the feature.])
1612 LIBEXPORT=lib/export
1614 BIND9_CO_RULE="%.$O: \${srcdir}/%.c"
1617 BIND9_CO_RULE=".c.$O:"
1620 AC_SUBST(BIND9_CO_RULE)
1622 AC_ARG_WITH(export-libdir,
1623 [ --with-export-libdir[=PATH]
1624 installation directory for the export library
1625 [[EPREFIX/lib/bind9]]],
1626 export_libdir="$withval",)
1627 if test -z "$export_libdir"; then
1628 export_libdir="\${exec_prefix}/lib/bind9/"
1630 AC_SUBST(export_libdir)
1632 AC_ARG_WITH(export-includedir,
1633 [ --with-export-includedir[=PATH]
1634 installation directory for the header files of the
1635 export library [[PREFIX/include/bind9]]],
1636 export_includedir="$withval",)
1637 if test -z "$export_includedir"; then
1638 export_includedir="\${prefix}/include/bind9/"
1640 AC_SUBST(export_includedir)
1643 # Here begins a very long section to determine the system's networking
1644 # capabilities. The order of the tests is significant.
1651 [ --enable-ipv6 use IPv6 [default=autodetect]])
1653 case "$enable_ipv6" in
1655 AC_DEFINE(WANT_IPV6)
1662 # We do the IPv6 compilation checking after libtool so that we can put
1663 # the right suffix on the files.
1665 AC_MSG_CHECKING(for IPv6 structures)
1667 #include <sys/types.h>
1668 #include <sys/socket.h>
1669 #include <netinet/in.h>],
1670 [struct sockaddr_in6 sin6; return (0);],
1677 # See whether IPv6 support is provided via a Kame add-on.
1678 # This is done before other IPv6 linking tests to LIBS is properly set.
1680 AC_MSG_CHECKING(for Kame IPv6 support)
1682 [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]],
1683 use_kame="$withval", use_kame="no")
1689 kame_path=/usr/local/v6
1692 kame_path="$use_kame"
1701 if test -f $kame_path/lib/libinet6.a; then
1702 AC_MSG_RESULT($kame_path/lib/libinet6.a)
1703 LIBS="-L$kame_path/lib -linet6 $LIBS"
1705 AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
1707 Please choose the proper path with the following command:
1709 configure --with-kame=PATH
1716 # Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
1717 # Including it on Kame-using platforms is very bad, though, because
1718 # Kame uses #error against direct inclusion. So include it on only
1719 # the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
1720 # This is done before the in6_pktinfo check because that's what
1721 # netinet6/in6.h is needed for.
1726 ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
1727 LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
1728 isc_netinet6in6_hack="#include <netinet6/in6.h>"
1731 ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
1732 LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
1733 isc_netinet6in6_hack=""
1739 # This is similar to the netinet6/in6.h issue.
1742 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1744 ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
1745 LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
1746 ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
1747 isc_netinetin6_hack="#include <netinet/in6.h>"
1750 ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
1751 LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
1752 ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
1753 isc_netinetin6_hack=""
1758 # Now delve deeper into the suitability of the IPv6 support.
1760 case "$found_ipv6" in
1762 ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
1763 LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
1765 AC_MSG_CHECKING(for in6_addr)
1767 #include <sys/types.h>
1768 #include <sys/socket.h>
1769 #include <netinet/in.h>
1770 $isc_netinetin6_hack
1771 $isc_netinet6in6_hack
1773 [struct in6_addr in6; return (0);],
1775 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
1776 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
1777 isc_in_addr6_hack=""],
1779 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
1780 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
1781 isc_in_addr6_hack="#define in6_addr in_addr6"])
1783 AC_MSG_CHECKING(for in6addr_any)
1785 #include <sys/types.h>
1786 #include <sys/socket.h>
1787 #include <netinet/in.h>
1788 $isc_netinetin6_hack
1789 $isc_netinet6in6_hack
1792 [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
1794 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
1795 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
1797 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
1798 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
1800 AC_MSG_CHECKING(for in6addr_loopback)
1802 #include <sys/types.h>
1803 #include <sys/socket.h>
1804 #include <netinet/in.h>
1805 $isc_netinetin6_hack
1806 $isc_netinet6in6_hack
1809 [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);],
1811 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
1812 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"],
1814 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1"
1815 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"])
1817 AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
1819 #include <sys/types.h>
1820 #include <sys/socket.h>
1821 #include <netinet/in.h>
1822 $isc_netinetin6_hack
1823 $isc_netinet6in6_hack
1825 [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
1827 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
1828 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
1830 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
1831 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
1832 LWRES_HAVE_SIN6_SCOPE_ID="$result"
1834 AC_MSG_CHECKING(for in6_pktinfo)
1836 #include <sys/types.h>
1837 #include <sys/socket.h>
1838 #include <netinet/in.h>
1839 $isc_netinetin6_hack
1840 $isc_netinet6in6_hack
1842 [struct in6_pktinfo xyzzy; return (0);],
1844 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
1845 [AC_MSG_RESULT(no -- disabling runtime ipv6 support)
1846 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
1849 ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
1850 LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
1851 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
1852 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
1853 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
1854 LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
1855 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
1857 ISC_IPV6_O="ipv6.$O"
1858 ISC_ISCIPV6_O="unix/ipv6.$O"
1863 AC_SUBST(ISC_PLATFORM_HAVEIPV6)
1864 AC_SUBST(LWRES_PLATFORM_HAVEIPV6)
1865 AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
1866 AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
1867 AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
1868 AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
1869 AC_SUBST(ISC_PLATFORM_HAVEINADDR6)
1870 AC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
1871 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
1872 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
1873 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
1874 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK)
1875 AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
1876 AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
1877 AC_SUBST(ISC_IPV6_H)
1878 AC_SUBST(ISC_IPV6_O)
1879 AC_SUBST(ISC_ISCIPV6_O)
1880 AC_SUBST(ISC_IPV6_C)
1881 AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
1882 AC_SUBST(ISC_PLATFORM_HAVESCOPEID)
1884 AC_MSG_CHECKING([for struct if_laddrreq])
1886 #include <sys/types.h>
1887 #include <net/if6.h>
1888 ],[ struct if_laddrreq a; ],
1890 ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"],
1892 ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"])
1893 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ)
1895 AC_MSG_CHECKING([for struct if_laddrconf])
1897 #include <sys/types.h>
1898 #include <net/if6.h>
1899 ],[ struct if_laddrconf a; ],
1901 ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"],
1903 ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"])
1904 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF)
1907 # Check for network functions that are often missing. We do this
1908 # after the libtool checking, so we can put the right suffix on
1909 # the files. It also needs to come after checking for a Kame add-on,
1910 # which provides some (all?) of the desired functions.
1913 AC_MSG_CHECKING([for inet_ntop with IPv6 support])
1915 #include <sys/types.h>
1916 #include <sys/socket.h>
1917 #include <netinet/in.h>
1918 #include <arpa/inet.h>
1920 char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}],
1922 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
1925 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
1926 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
1927 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
1928 [AC_MSG_RESULT(assuming inet_ntop not needed)
1929 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"])
1932 # On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
1933 # addresses with less than four octets, like "1.2.3". Also leading
1934 # zeros should also be rejected.
1936 AC_MSG_CHECKING([for working inet_pton with IPv6 support])
1938 #include <sys/types.h>
1939 #include <sys/socket.h>
1940 #include <netinet/in.h>
1941 #include <arpa/inet.h>
1942 main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
1943 inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
1944 (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
1946 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
1948 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
1949 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
1950 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
1951 [AC_MSG_RESULT(assuming inet_pton needed)
1952 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
1953 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
1954 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"])
1956 AC_SUBST(ISC_PLATFORM_NEEDNTOP)
1957 AC_SUBST(ISC_PLATFORM_NEEDPTON)
1960 # Look for a 4.4BSD-style sa_len member in struct sockaddr.
1964 # Turn on 4.4BSD style sa_len support.
1965 AC_DEFINE(_SOCKADDR_LEN)
1969 AC_MSG_CHECKING(for sa_len in struct sockaddr)
1971 #include <sys/types.h>
1972 #include <sys/socket.h>],
1973 [struct sockaddr sa; sa.sa_len = 0; return (0);],
1975 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
1976 LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
1978 ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
1979 LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
1980 AC_SUBST(ISC_PLATFORM_HAVESALEN)
1981 AC_SUBST(LWRES_PLATFORM_HAVESALEN)
1984 # Look for a 4.4BSD or 4.3BSD struct msghdr
1986 AC_MSG_CHECKING(for struct msghdr flavor)
1988 #include <sys/types.h>
1989 #include <sys/socket.h>],
1990 [struct msghdr msg; msg.msg_flags = 0; return (0);],
1991 [AC_MSG_RESULT(4.4BSD)
1992 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
1993 [AC_MSG_RESULT(4.3BSD)
1994 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
1995 AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)
1998 # Look for in_port_t.
2000 AC_MSG_CHECKING(for type in_port_t)
2002 #include <sys/types.h>
2003 #include <netinet/in.h>],
2004 [in_port_t port = 25; return (0);],
2006 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
2008 ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
2009 AC_SUBST(ISC_PLATFORM_NEEDPORTT)
2012 # Check for addrinfo
2014 AC_MSG_CHECKING(for struct addrinfo)
2016 #include <netdb.h>],
2017 [struct addrinfo a; return (0);],
2019 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
2020 ISC_IRS_NEEDADDRINFO="#undef ISC_IRS_NEEDADDRINFO"
2021 AC_DEFINE(HAVE_ADDRINFO)],
2023 ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"
2024 ISC_IRS_NEEDADDRINFO="#define ISC_IRS_NEEDADDRINFO 1"])
2025 AC_SUBST(ISC_LWRES_NEEDADDRINFO)
2026 AC_SUBST(ISC_IRS_NEEDADDRINFO)
2029 # Check for rrsetinfo
2031 AC_MSG_CHECKING(for struct rrsetinfo)
2033 #include <netdb.h>],
2034 [struct rrsetinfo r; return (0);],
2036 ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"],
2038 ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"])
2039 AC_SUBST(ISC_LWRES_NEEDRRSETINFO)
2041 AC_MSG_CHECKING(for int sethostent)
2043 #include <netdb.h>],
2044 [int i = sethostent(0); return(0);],
2046 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
2048 ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
2049 AC_SUBST(ISC_LWRES_SETHOSTENTINT)
2051 AC_MSG_CHECKING(for int endhostent)
2053 #include <netdb.h>],
2054 [int i = endhostent(); return(0);],
2056 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
2058 ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
2059 AC_SUBST(ISC_LWRES_ENDHOSTENTINT)
2061 AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
2064 struct netent *getnetbyaddr(in_addr_t, int);],
2067 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
2069 ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
2070 AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)
2072 AC_MSG_CHECKING(for int setnetent)
2074 #include <netdb.h>],
2075 [int i = setnetent(0); return(0);],
2077 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
2079 ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
2080 AC_SUBST(ISC_LWRES_SETNETENTINT)
2082 AC_MSG_CHECKING(for int endnetent)
2084 #include <netdb.h>],
2085 [int i = endnetent(); return(0);],
2087 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
2089 ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
2090 AC_SUBST(ISC_LWRES_ENDNETENTINT)
2092 AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
2095 struct hostent *gethostbyaddr(const void *, size_t, int);],
2098 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
2100 ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
2101 AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)
2103 AC_MSG_CHECKING(for h_errno in netdb.h)
2105 #include <netdb.h>],
2106 [h_errno = 1; return(0);],
2108 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
2110 ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
2111 AC_SUBST(ISC_LWRES_NEEDHERRNO)
2114 # Sadly, the definitions of system-supplied getnameinfo(3) vary. Try to catch
2115 # known variations here:
2117 AC_MSG_CHECKING(for getnameinfo prototype definitions)
2119 #include <sys/types.h>
2120 #include <sys/socket.h>
2122 int getnameinfo(const struct sockaddr *, socklen_t, char *,
2123 socklen_t, char *, socklen_t, unsigned int);],
2125 [AC_MSG_RESULT(socklen_t for buflen; u_int for flags)
2126 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t,
2127 [Define to the buffer length type used by getnameinfo(3).])
2128 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int,
2129 [Define to the flags type used by getnameinfo(3).])],
2131 #include <sys/types.h>
2132 #include <sys/socket.h>
2134 int getnameinfo(const struct sockaddr *, socklen_t, char *,
2135 size_t, char *, size_t, int);],
2137 [AC_MSG_RESULT(size_t for buflen; int for flags)
2138 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
2139 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
2140 [AC_MSG_RESULT(not match any subspecies; assume standard definition)
2141 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t)
2142 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])
2145 # ...and same for gai_strerror().
2147 AC_MSG_CHECKING(for gai_strerror prototype definitions)
2149 #include <sys/types.h>
2150 #include <sys/socket.h>
2152 char *gai_strerror(int ecode);],
2154 [AC_MSG_RESULT(returning char *)
2155 AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [char *],
2156 [return type of gai_strerror])],
2157 [AC_MSG_RESULT(not match any subspecies; assume standard definition)
2158 AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [const char *])])
2160 AC_CHECK_FUNC(getipnodebyname,
2161 [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
2162 [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
2163 AC_CHECK_FUNC(getnameinfo,
2164 [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
2165 [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
2166 AC_CHECK_FUNC(getaddrinfo,
2167 [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
2168 AC_DEFINE(HAVE_GETADDRINFO)],
2169 [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
2170 AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
2171 AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
2172 AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
2173 AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
2174 AC_SUBST(ISC_IRS_GETNAMEINFOSOCKLEN)
2176 AC_ARG_ENABLE(getifaddrs,
2177 [ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no]].],
2178 want_getifaddrs="$enableval", want_getifaddrs="yes")
2181 # This interface iteration code for getifaddrs() will fall back to using
2182 # /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6
2185 case $want_getifaddrs in
2187 AC_MSG_WARN("--enable-getifaddrs=glibc is no longer required")
2188 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
2191 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
2198 # Look for a sysctl call to get the list of network interfaces.
2200 case $ac_cv_header_sys_sysctl_h in
2202 AC_MSG_CHECKING(for interface list sysctl)
2203 AC_EGREP_CPP(found_rt_iflist, [
2204 #include <sys/param.h>
2205 #include <sys/sysctl.h>
2206 #include <sys/socket.h>
2207 #ifdef NET_RT_IFLIST
2212 AC_DEFINE(HAVE_IFLIST_SYSCTL)],
2213 [AC_MSG_RESULT(no)])
2218 # Check for some other useful functions that are not ever-present.
2221 # We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC
2222 # because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77
2223 # reportedly defines strsep() without declaring it in <string.h> when
2224 # -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and
2225 # AC_CHECK_FUNC() incorrectly succeeds because it declares
2226 # the function itself.
2227 AC_MSG_CHECKING(for correctly declared strsep())
2228 AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");],
2229 [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
2230 [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
2231 AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
2233 AC_CHECK_FUNC(memmove,
2234 [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"],
2235 [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"])
2236 AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE)
2238 AC_CHECK_FUNC(strtoul,
2239 [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL"
2240 LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL"
2242 [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1"
2243 LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1"
2244 GENRANDOMLIB='${ISCLIBS}'])
2245 AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL)
2246 AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL)
2247 AC_SUBST(GENRANDOMLIB)
2249 AC_CHECK_FUNC(strlcpy,
2250 [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"],
2251 [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"])
2252 AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY)
2254 AC_CHECK_FUNC(strlcat,
2255 [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"],
2256 [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"])
2257 AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT)
2261 AC_MSG_CHECKING(sprintf)
2265 [ char buf[2]; return(*sprintf(buf,"x"));],
2267 ISC_PRINT_OBJS="print.$O"
2268 ISC_PRINT_SRCS="print.c"
2269 ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
2270 LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
2272 [ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF"
2273 LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"]
2275 AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
2276 AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
2278 AC_CHECK_FUNC(vsnprintf,
2279 [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"
2280 LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"],
2281 [ISC_PRINT_OBJS="print.$O"
2282 ISC_PRINT_SRCS="print.c"
2283 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
2284 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
2285 AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
2286 AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
2287 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
2288 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
2290 AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
2292 AC_SUBST(ISC_EXTRA_OBJS)
2293 AC_SUBST(ISC_EXTRA_SRCS)
2296 # Use our own SPNEGO implementation?
2298 AC_ARG_ENABLE(isc-spnego,
2299 [ --disable-isc-spnego use SPNEGO from GSSAPI library])
2301 if test -n "$USE_GSSAPI"
2303 case "$enable_isc_spnego" in
2305 USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO'
2306 DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O"
2307 DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c"
2308 AC_MSG_RESULT(using SPNEGO from lib/dns)
2311 AC_MSG_RESULT(using SPNEGO from GSSAPI library)
2316 AC_SUBST(USE_ISC_SPNEGO)
2318 AC_SUBST(DST_EXTRA_OBJS)
2319 AC_SUBST(DST_EXTRA_SRCS)
2321 # Determine the printf format characters to use when printing
2322 # values of type isc_int64_t. This will normally be "ll", but where
2323 # the compiler treats "long long" as a alias for "long" and printf
2324 # doesn't know about "long long" use "l". Hopefully the sprintf
2325 # will produce a inconsistent result in the later case. If the compiler
2326 # fails due to seeing "%lld" we fall back to "l".
2328 # Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses
2329 # %ld even for (long long)/
2331 # Win32 uses "%I64d", but that's defined elsewhere since we don't use
2332 # configure on Win32.
2334 AC_MSG_CHECKING(printf format modifier for 64-bit integers)
2338 long long int j = 0;
2341 sprintf(buf, "%lld", j);
2342 exit((sizeof(long long int) != sizeof(long int))? 0 :
2343 (strcmp(buf, "0") != 0));
2347 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
2348 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'],
2350 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
2351 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'],
2352 [AC_MSG_RESULT(assuming target platform uses ll)
2353 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
2354 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'])
2355 AC_SUBST(ISC_PLATFORM_QUADFORMAT)
2356 AC_SUBST(LWRES_PLATFORM_QUADFORMAT)
2361 # Note it is very recommended to *not* disable chroot(),
2362 # this is only because chroot() was made obsolete by Posix.
2363 AC_ARG_ENABLE(chroot,
2364 [ --disable-chroot disable chroot])
2365 case "$enable_chroot" in
2367 AC_CHECK_FUNCS(chroot)
2372 AC_ARG_ENABLE(linux-caps,
2373 [ --disable-linux-caps disable linux capabilities])
2374 case "$enable_linux_caps" in
2376 AC_CHECK_HEADERS(linux/capability.h sys/capability.h)
2377 AC_CHECK_LIB(cap, cap_set_proc)
2382 AC_CHECK_HEADERS(sys/prctl.h)
2384 AC_CHECK_HEADERS(sys/un.h,
2385 ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
2387 ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
2389 AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
2393 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
2394 [Define if connect does not honour the permission on the UNIX domain socket.])
2397 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
2398 [Define if connect does not honour the permission on the UNIX domain socket.])
2405 AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET))
2407 AC_MSG_CHECKING(for optarg declaration)
2412 [AC_MSG_RESULT(yes)],
2414 GEN_NEED_OPTARG="-DNEED_OPTARG=1"
2415 AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])])
2418 # BSD/OS, and perhaps some others, don't define rlim_t.
2420 AC_MSG_CHECKING(for type rlim_t)
2422 #include <sys/types.h>
2423 #include <sys/time.h>
2424 #include <sys/resource.h>],
2425 [rlim_t rl = 19671212; return (0);],
2427 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"],
2430 AC_MSG_CHECKING(type of rlim_cur)
2432 #include <sys/types.h>
2433 #include <sys/time.h>
2434 #include <sys/resource.h>
2435 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
2437 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
2440 #include <sys/types.h>
2441 #include <sys/time.h>
2442 #include <sys/resource.h>
2443 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
2444 [AC_MSG_RESULT(long int)
2445 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
2448 #include <sys/types.h>
2449 #include <sys/time.h>
2450 #include <sys/resource.h>
2451 main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
2452 [AC_MSG_RESULT(long long int)
2453 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
2454 [AC_MSG_ERROR([unable to determine sizeof rlim_cur])
2455 ],[AC_MSG_ERROR(this cannot happen)])
2456 ],[AC_MSG_ERROR(this cannot happen)])
2458 AC_ARG_WITH(rlimtype, , rlimtype="$withval", rlimtype="long long int")
2459 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE $rlimtype"
2460 AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming $rlimtype)])
2462 AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
2465 # Older HP-UX doesn't have gettune
2469 AC_CHECK_HEADERS(sys/dyntune.h)
2477 # Compaq TruCluster requires more code for handling cluster IP aliases
2481 AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS")
2482 AC_CHECK_FUNC(clua_getaliasaddress,
2483 AC_DEFINE(HAVE_TRUCLUSTER, 1,
2484 [Define if running under Compaq TruCluster]))
2491 # Some hosts need msg_namelen to match the size of the socket structure.
2492 # Some hosts don't set msg_namelen appropriately on return from recvmsg().
2496 AC_DEFINE(BROKEN_RECVMSG, 1,
2497 [Define if recvmsg() does not meet all of the BSD socket API specifications.])
2502 # Microsoft has their own way of handling shared libraries that requires
2503 # additional qualifiers on extern variables. Unix systems don't need it.
2505 AC_SUBST(ISC_PLATFORM_USEDECLSPEC)
2506 ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC"
2507 AC_SUBST(LWRES_PLATFORM_USEDECLSPEC)
2508 LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC"
2509 AC_SUBST(IRS_PLATFORM_USEDECLSPEC)
2510 IRS_PLATFORM_USEDECLSPEC="#undef IRS_PLATFORM_USEDECLSPEC"
2513 # Random remaining OS-specific issues involving compiler warnings.
2514 # XXXDCL print messages to indicate some compensation is being done?
2516 AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
2517 ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"
2521 hack_shutup_pthreadonceinit=yes
2524 hack_shutup_sputaux=yes
2527 hack_shutup_sigwait=yes
2528 hack_shutup_sputaux=yes
2531 hack_shutup_stdargcast=yes
2534 hack_shutup_pthreadonceinit=yes
2536 *-solaris2.1[[0-9]])
2537 AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [hack_shutup_pthreadonceinit=yes], )
2541 case "$hack_shutup_pthreadonceinit" in
2544 # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
2546 ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
2550 case "$hack_shutup_sigwait" in
2553 # Shut up a -Wmissing-prototypes warning for sigwait().
2555 AC_DEFINE(SHUTUP_SIGWAIT)
2559 case "$hack_shutup_sputaux" in
2562 # Shut up a -Wmissing-prototypes warning from <stdio.h>.
2564 AC_DEFINE(SHUTUP_SPUTAUX)
2568 case "$hack_shutup_stdargcast" in
2571 # Shut up a -Wcast-qual warning from va_start().
2573 AC_DEFINE(SHUTUP_STDARG_CAST)
2577 AC_CHECK_HEADERS(strings.h,
2578 ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1"
2580 ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH"
2582 AC_SUBST(ISC_PLATFORM_HAVESTRINGSH)
2585 # Check for if_nametoindex() for IPv6 scoped addresses support
2587 AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
2588 ac_cv_have_if_nametoindex=no)
2589 case $ac_cv_have_if_nametoindex in
2593 AC_CHECK_LIB(ipv6, if_nametoindex,
2594 ac_cv_have_if_nametoindex=yes
2595 LIBS="-lipv6 $LIBS",)
2599 case $ac_cv_have_if_nametoindex in
2601 ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1"
2604 ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX"
2607 AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX)
2609 AC_CHECK_FUNCS(nanosleep)
2612 # Machine architecture dependent features
2614 AC_ARG_ENABLE(atomic,
2615 [ --enable-atomic enable machine specific atomic operations
2616 [[default=autodetect]]],
2617 enable_atomic="$enableval",
2618 enable_atomic="autodetect")
2619 case "$enable_atomic" in
2623 if test "X$GCC" = "Xyes"; then
2624 AC_MSG_CHECKING([if asm("isc"); works])
2626 main() { asm("ics"); exit(0); }
2631 saved_cflags="$CFLAGS"
2632 CFLAGS="$CFLAGS -Wa,-many"
2634 main() { asm("ics"); exit(0); }
2636 [AC_MSG_RESULT([yes, required -Wa,-many])
2638 [AC_MSG_RESULT([no, use_atomic disabled])
2639 CFLAGS="$saved_cflags"
2641 [AC_MSG_RESULT([cross compile, assume yes])
2642 CFLAGS="$saved_cflags"
2661 ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM"
2662 if test "$use_atomic" = "yes"; then
2663 AC_MSG_CHECKING([architecture type for atomic operations])
2664 have_atomic=yes # set default
2667 # XXX: some old x86 architectures actually do not support
2668 # (some of) these operations. Do we need stricter checks?
2669 AC_CHECK_SIZEOF([void *])
2670 if test $ac_cv_sizeof_void_p = 8; then
2678 AC_CHECK_SIZEOF([void *])
2679 if test $ac_cv_sizeof_void_p = 8; then
2689 powerpc-*|powerpc64-*)
2692 mips-*|mipsel-*|mips64-*|mips64el-*)
2703 AC_MSG_RESULT($arch)
2706 if test "$have_atomic" = "yes"; then
2707 AC_MSG_CHECKING([compiler support for inline assembly code])
2710 # Check whether the compiler supports the assembly syntax we provide.
2711 if test "X$GCC" = "Xyes"; then
2712 # GCC's ASM extension always works
2714 if test $arch = "x86_64"; then
2715 # We can share the same code for gcc with x86_32
2718 if test $arch = "powerpc"; then
2720 # The MacOS (and maybe others) uses "r0" for register
2721 # zero. Under linux/ibm it is "0" for register 0.
2722 # Probe to see if we have a MacOS style assembler.
2724 AC_MSG_CHECKING([Checking for MacOS style assembler syntax])
2726 __asm__ volatile ("li r0, 0x0\n"::);
2730 ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1"
2731 ], [AC_MSG_RESULT(no)])
2736 # Tru64 compiler has its own syntax for inline
2740 #error "unexpected compiler"
2752 ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1"
2755 ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1"
2762 # See if the generic __asm function works. If not,
2763 # we need to disable the atomic operations.
2767 [compiler="standard"
2768 ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"],
2769 [compiler="not supported (atomic operations disabled)"
2775 AC_MSG_RESULT($compiler)
2778 if test "$have_atomic" = "yes"; then
2779 ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1"
2780 ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1"
2781 ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1"
2783 ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD"
2784 ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG"
2785 ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE"
2788 if test "$have_xaddq" = "yes"; then
2789 ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1"
2791 ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ"
2794 AC_SUBST(ISC_PLATFORM_HAVEXADD)
2795 AC_SUBST(ISC_PLATFORM_HAVEXADDQ)
2796 AC_SUBST(ISC_PLATFORM_HAVECMPXCHG)
2797 AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE)
2799 AC_SUBST(ISC_PLATFORM_USEGCCASM)
2800 AC_SUBST(ISC_PLATFORM_USEOSFASM)
2801 AC_SUBST(ISC_PLATFORM_USESTDASM)
2802 AC_SUBST(ISC_PLATFORM_USEMACASM)
2805 AC_SUBST(ISC_ARCH_DIR)
2808 # Activate "rrset-order fixed" or not?
2810 AC_ARG_ENABLE(fixed-rrset,
2811 [ --enable-fixed-rrset enable fixed rrset ordering
2813 enable_fixed="$enableval",
2815 case "$enable_fixed" in
2817 AC_DEFINE(DNS_RDATASET_FIXED, 1,
2818 [Define to enable "rrset-order fixed" syntax.])
2827 # Enable response policy rewriting using NS IP addresses
2829 AC_ARG_ENABLE(rpz-nsip,
2830 [ --enable-rpz-nsip enable rpz-nsip rules [[default=no]]],
2831 enable_nsip="$enableval",
2833 case "$enable_nsip" in
2835 AC_DEFINE(ENABLE_RPZ_NSIP, 1,
2836 [Define to enable rpz-nsip rules.])
2845 # Enable response policy rewriting using NS name
2847 AC_ARG_ENABLE(rpz-nsdname,
2848 [ --enable-rpz-nsdname enable rpz-nsdname rules [[default=no]]],
2849 enable_nsdname="$enableval",
2850 enable_nsdname="no")
2851 case "$enable_nsdname" in
2853 AC_DEFINE(ENABLE_RPZ_NSDNAME, 1,
2854 [Define to enable rpz-nsdname rules.])
2863 # Activate "filter-aaaa-on-v4" or not?
2865 AC_ARG_ENABLE(filter-aaaa,
2866 [ --enable-filter-aaaa enable filtering of AAAA records over IPv4
2868 enable_filter="$enableval",
2870 case "$enable_filter" in
2872 AC_DEFINE(ALLOW_FILTER_AAAA_ON_V4, 1,
2873 [Define to enable the "filter-aaaa-on-v4" option.])
2882 # The following sets up how non-blocking i/o is established.
2883 # Sunos, cygwin and solaris 2.x (x<5) require special handling.
2886 *-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
2887 *-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
2888 *-solaris2.[[01234]])
2889 AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
2890 AC_DEFINE(USE_FIONBIO_IOCTL, 1,
2891 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
2893 *) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
2894 [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
2898 # Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
2899 # This prevents the source address being set.
2902 *-solaris2.[[012345]]|*-solaris2.5.1)
2903 AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
2904 [Define if you cannot bind() before connect() for TCP sockets.])
2908 # The following sections deal with tools used for formatting
2909 # the documentation. They are all optional, unless you are
2910 # a developer editing the documentation source.
2917 AC_PATH_PROGS(LATEX, latex, latex)
2920 AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
2927 AC_PATH_PROGS(W3M, w3m, w3m)
2931 # Look for xsltproc (libxslt)
2934 AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
2938 # Look for xmllint (libxml2)
2941 AC_PATH_PROG(XMLLINT, xmllint, xmllint)
2948 AC_PATH_PROG(DOXYGEN, doxygen, doxygen)
2952 # Subroutine for searching for an ordinary file (e.g., a stylesheet)
2953 # in a number of directories:
2955 # NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
2957 # If the file FILENAME is found in one of the DIRECTORIES, the shell
2958 # variable VARIABLE is defined to its absolute pathname. Otherwise,
2959 # it is set to FILENAME, with no directory prefix (that's not terribly
2960 # useful, but looks less confusing in substitutions than leaving it
2961 # empty). The variable VARIABLE will be substituted into output files.
2964 AC_DEFUN(NOM_PATH_FILE, [
2966 AC_MSG_CHECKING(for $2)
2977 if test "X[$]$1" = "X"
2979 AC_MSG_RESULT("not found");
2986 # Look for Docbook-XSL stylesheets. Location probably varies by system.
2987 # If it's not explicitly specified, guess where it might be found, based on
2988 # where SGML stuff lives on some systems (FreeBSD is the only one we're sure
2989 # of at the moment).
2991 AC_MSG_CHECKING(for Docbook-XSL path)
2992 AC_ARG_WITH(docbook-xsl,
2993 [ --with-docbook-xsl=PATH Specify path for Docbook-XSL stylesheets],
2994 docbook_path="$withval", docbook_path="auto")
2995 case "$docbook_path" in
2998 docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook"
3001 docbook_xsl_trees="$withval"
3002 AC_MSG_RESULT($docbook_xsl_trees)
3007 # Look for stylesheets we need.
3010 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees)
3011 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees)
3012 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees)
3013 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees)
3014 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees)
3015 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees)
3016 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees)
3017 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees)
3018 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees)
3021 # Same dance for db2latex
3023 # No idea where this lives except on FreeBSD.
3026 db2latex_xsl_trees="/usr/local/share"
3029 # Look for stylesheets we need.
3032 NOM_PATH_FILE(XSLT_DB2LATEX_STYLE, db2latex/xsl/docbook.xsl, $db2latex_xsl_trees)
3035 # Look for "admonition" image directory. Can't use NOM_PATH_FILE()
3036 # because it's a directory, so just do the same things, inline.
3039 AC_MSG_CHECKING(for db2latex/xsl/figures)
3040 for d in $db2latex_xsl_trees
3042 dd=$d/db2latex/xsl/figures
3045 XSLT_DB2LATEX_ADMONITIONS=$dd
3050 if test "X$XSLT_DB2LATEX_ADMONITIONS" = "X"
3052 AC_MSG_RESULT(not found)
3053 XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures
3055 AC_SUBST(XSLT_DB2LATEX_ADMONITIONS)
3061 [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
3062 use_idn="$withval", use_idn="no")
3065 if test X$prefix = XNONE ; then
3080 AC_ARG_WITH(libiconv,
3081 [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]],
3082 use_libiconv="$withval", use_libiconv="no")
3083 case "$use_libiconv" in
3085 if test X$prefix = XNONE ; then
3086 iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
3088 iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
3095 iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
3100 [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]],
3101 iconvlib="$withval")
3112 [ --with-idnlib=ARG specify libidnkit],
3113 idnlib="$withval", idnlib="no")
3114 if test "$idnlib" = yes; then
3115 AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
3119 if test "$use_idn" != no; then
3120 AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
3121 STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
3122 if test "$idnlib" != no; then
3123 IDNLIBS="$idnlib $iconvlib"
3125 IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
3131 # Check whether to build Automated Test Framework unit tests
3134 [ --with-atf=ARG Automated Test Framework support],
3135 atf="$withval", atf="no")
3136 if test "$atf" = yes; then
3140 AC_CONFIG_COMMANDS([atf-config],
3141 [cd unit/atf-src; ${SHELL} ./configure MISSING=: --prefix $atfdir; cd ../..],
3142 [atfdir=`pwd`/unit/atf])
3143 AC_MSG_RESULT(building ATF from bind9/unit/atf-src)
3147 if test "$atf" != no; then
3148 AC_DEFINE(ATF_TEST, 1, [define if ATF unit tests are to be built.])
3149 STD_CINCLUDES="$STD_CINCLUDES -I$atf/include"
3151 ATFLIBS="-L$atf/lib -latf-c"
3158 AC_CHECK_HEADERS(locale.h)
3159 AC_CHECK_FUNCS(setlocale)
3164 AC_SUBST(BIND9_TOP_BUILDDIR)
3165 BIND9_TOP_BUILDDIR=`pwd`
3167 AC_SUBST(BIND9_ISC_BUILDINCLUDE)
3168 AC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
3169 AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
3170 AC_SUBST(BIND9_DNS_BUILDINCLUDE)
3171 AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
3172 AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
3173 if test "X$srcdir" != "X"; then
3174 BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
3175 BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
3176 BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
3177 BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
3178 BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
3179 BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
3181 BIND9_ISC_BUILDINCLUDE=""
3182 BIND9_ISCCC_BUILDINCLUDE=""
3183 BIND9_ISCCFG_BUILDINCLUDE=""
3184 BIND9_DNS_BUILDINCLUDE=""
3185 BIND9_LWRES_BUILDINCLUDE=""
3186 BIND9_BIND9_BUILDINCLUDE=""
3189 AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
3190 BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
3192 AC_SUBST_FILE(BIND9_MAKE_RULES)
3193 BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
3196 BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}"
3197 AC_SUBST(BIND9_VERSION)
3199 if test -z "$ac_configure_args"; then
3200 BIND9_CONFIGARGS="defaults"
3202 for a in $ac_configure_args
3204 BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a"
3207 BIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`"
3208 BIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}"
3209 AC_SUBST(BIND9_CONFIGARGS)
3211 AC_SUBST_FILE(LIBISC_API)
3212 LIBISC_API=$srcdir/lib/isc/api
3214 AC_SUBST_FILE(LIBISCCC_API)
3215 LIBISCCC_API=$srcdir/lib/isccc/api
3217 AC_SUBST_FILE(LIBISCCFG_API)
3218 LIBISCCFG_API=$srcdir/lib/isccfg/api
3220 AC_SUBST_FILE(LIBDNS_API)
3221 LIBDNS_API=$srcdir/lib/dns/api
3223 AC_SUBST_FILE(LIBBIND9_API)
3224 LIBBIND9_API=$srcdir/lib/bind9/api
3226 AC_SUBST_FILE(LIBLWRES_API)
3227 LIBLWRES_API=$srcdir/lib/lwres/api
3229 AC_SUBST_FILE(LIBIRS_API)
3230 LIBIRS_API=$srcdir/lib/irs/api
3233 # Configure any DLZ drivers.
3235 # If config.dlz.in selects one or more DLZ drivers, it will set
3236 # CONTRIB_DLZ to a non-empty value, which will be our clue to
3237 # build DLZ drivers in contrib.
3239 # This section has to come after the libtool stuff because it needs to
3240 # know how to name the driver object files.
3244 DLZ_DRIVER_INCLUDES=""
3251 # Configure support for building a shared library object
3253 # Even when libtool is available it can't always be relied upon
3254 # to build an object that can be dlopen()'ed, but this is necessary
3255 # for building the dlzexternal system test, so we'll try it the
3256 # old-fashioned way.
3264 [ --with-dlopen=ARG Support dynamically loadable DLZ drivers],
3265 dlopen="$withval", dlopen="yes")
3267 if test "$dlopen" = "yes"; then
3268 AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
3269 if test "$have_dl" = "yes"; then
3272 AC_CHECK_FUNCS(dlopen dlclose dlsym,,dlopen=no)
3275 if test "$dlopen" = "yes"; then
3279 if test "$have_dl" = "yes"
3281 SO_LD="${CC} -shared"
3286 *-freebsd*|*-openbsd*|*-netbsd*)
3288 SO_LD="ld -Bshareable -x"
3292 SO_LD="ld -G -z text"
3304 if test "X$GCC" = "Xyes"; then
3306 test -n "$SO_LD" || SO_LD="${CC} -shared"
3309 # If we still don't know how to make shared objects, don't make any.
3310 if test -n "$SO_LD"; then
3311 SO_TARGETS="\${SO_TARGETS}"
3312 AC_DEFINE(ISC_DLZ_DLOPEN, 1,
3313 [Define to allow building of objects for dlopen().])
3320 AC_SUBST(SO_TARGETS)
3322 sinclude(contrib/dlz/config.dlz.in)
3323 AC_MSG_CHECKING(contributed DLZ drivers)
3325 if test -n "$CONTRIB_DLZ"
3328 DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
3329 AC_CONFIG_FILES([$DLZ_DRIVER_RULES])
3332 DLZ_DRIVER_RULES=/dev/null
3335 AC_SUBST(CONTRIB_DLZ)
3336 AC_SUBST(DLZ_DRIVER_INCLUDES)
3337 AC_SUBST(DLZ_DRIVER_LIBS)
3338 AC_SUBST(DLZ_DRIVER_SRCS)
3339 AC_SUBST(DLZ_DRIVER_OBJS)
3340 AC_SUBST(DLZ_SYSTEM_TEST)
3341 AC_SUBST_FILE(DLZ_DRIVER_RULES)
3343 if test "$cross_compiling" = "yes"; then
3344 if test -z "$BUILD_CC"; then
3345 AC_ERROR([BUILD_CC not set])
3347 BUILD_CFLAGS="$BUILD_CFLAGS"
3348 BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
3349 BUILD_LDFLAGS="$BUILD_LDFLAGS"
3350 BUILD_LIBS="$BUILD_LIBS"
3353 BUILD_CFLAGS="$CFLAGS"
3354 BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
3355 BUILD_LDFLAGS="$LDFLAGS"
3360 for e in $BUILD_LDFLAGS ; do
3365 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3366 NEWFLAGS="$NEWFLAGS $e $ee"
3369 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3370 NEWFLAGS="$NEWFLAGS $e $ee"
3373 ee=`echo $e | sed -e 's%^-L%-R%'`
3374 NEWFLAGS="$NEWFLAGS $e $ee"
3377 NEWFLAGS="$NEWFLAGS $e"
3382 NEWFLAGS="$NEWFLAGS $e"
3386 BUILD_LDFLAGS="$NEWFLAGS"
3389 for e in $DNS_GSSAPI_LIBS ; do
3394 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3395 NEWFLAGS="$NEWFLAGS $e $ee"
3398 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3399 NEWFLAGS="$NEWFLAGS $e $ee"
3402 ee=`echo $e | sed -e 's%^-L%-R%'`
3403 NEWFLAGS="$NEWFLAGS $e $ee"
3406 NEWFLAGS="$NEWFLAGS $e"
3411 NEWFLAGS="$NEWFLAGS $e"
3415 DNS_GSSAPI_LIBS="$NEWFLAGS"
3418 for e in $DNS_CRYPTO_LIBS ; do
3423 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3424 NEWFLAGS="$NEWFLAGS $e $ee"
3427 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
3428 NEWFLAGS="$NEWFLAGS $e $ee"
3431 ee=`echo $e | sed -e 's%^-L%-R%'`
3432 NEWFLAGS="$NEWFLAGS $e $ee"
3435 NEWFLAGS="$NEWFLAGS $e"
3440 NEWFLAGS="$NEWFLAGS $e"
3444 DNS_CRYPTO_LIBS="$NEWFLAGS"
3447 AC_SUBST(BUILD_CFLAGS)
3448 AC_SUBST(BUILD_CPPFLAGS)
3449 AC_SUBST(BUILD_LDFLAGS)
3450 AC_SUBST(BUILD_LIBS)
3453 # Commands to run at the end of config.status.
3454 # Don't just put these into configure, it won't work right if somebody
3455 # runs config.status directly (which autoconf allows).
3460 [chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter])
3463 # Files to configure. These are listed here because we used to
3464 # specify them as arguments to AC_OUTPUT. It's (now) ok to move these
3465 # elsewhere if there's a good reason for doing so.
3474 bin/confgen/Makefile
3475 bin/confgen/unix/Makefile
3479 bin/named/unix/Makefile
3480 bin/nsupdate/Makefile
3484 bin/tests/atomic/Makefile
3485 bin/tests/db/Makefile
3486 bin/tests/dst/Makefile
3487 bin/tests/hashes/Makefile
3488 bin/tests/headerdep_test.sh
3489 bin/tests/master/Makefile
3490 bin/tests/mem/Makefile
3491 bin/tests/names/Makefile
3492 bin/tests/net/Makefile
3493 bin/tests/rbt/Makefile
3494 bin/tests/resolver/Makefile
3495 bin/tests/sockaddr/Makefile
3496 bin/tests/system/Makefile
3497 bin/tests/system/conf.sh
3498 bin/tests/system/dlz/prereq.sh
3499 bin/tests/system/dlzexternal/Makefile
3500 bin/tests/system/dlzexternal/ns1/named.conf
3501 bin/tests/system/ecdsa/prereq.sh
3502 bin/tests/system/filter-aaaa/Makefile
3503 bin/tests/system/gost/prereq.sh
3504 bin/tests/system/lwresd/Makefile
3505 bin/tests/system/rpz/Makefile
3506 bin/tests/system/tkey/Makefile
3507 bin/tests/system/tsiggss/Makefile
3508 bin/tests/tasks/Makefile
3509 bin/tests/timers/Makefile
3510 bin/tests/virtual-time/Makefile
3511 bin/tests/virtual-time/conf.sh
3513 contrib/check-secure-delegation.pl
3514 contrib/zone-edit.sh
3517 doc/doxygen/Doxyfile
3518 doc/doxygen/Makefile
3519 doc/doxygen/doxygen-input-filter
3522 doc/xsl/isc-docbook-chunk.xsl
3523 doc/xsl/isc-docbook-html.xsl
3524 doc/xsl/isc-docbook-latex.xsl
3525 doc/xsl/isc-manpage.xsl
3529 lib/bind9/include/Makefile
3530 lib/bind9/include/bind9/Makefile
3532 lib/dns/include/Makefile
3533 lib/dns/include/dns/Makefile
3534 lib/dns/include/dst/Makefile
3535 lib/dns/tests/Makefile
3537 lib/export/dns/Makefile
3538 lib/export/dns/include/Makefile
3539 lib/export/dns/include/dns/Makefile
3540 lib/export/dns/include/dst/Makefile
3541 lib/export/irs/Makefile
3542 lib/export/irs/include/Makefile
3543 lib/export/irs/include/irs/Makefile
3544 lib/export/isc/$thread_dir/Makefile
3545 lib/export/isc/$thread_dir/include/Makefile
3546 lib/export/isc/$thread_dir/include/isc/Makefile
3547 lib/export/isc/Makefile
3548 lib/export/isc/include/Makefile
3549 lib/export/isc/include/isc/Makefile
3550 lib/export/isc/nls/Makefile
3551 lib/export/isc/unix/Makefile
3552 lib/export/isc/unix/include/Makefile
3553 lib/export/isc/unix/include/isc/Makefile
3554 lib/export/isccfg/Makefile
3555 lib/export/isccfg/include/Makefile
3556 lib/export/isccfg/include/isccfg/Makefile
3557 lib/export/samples/Makefile
3558 lib/export/samples/Makefile-postinstall
3560 lib/irs/include/Makefile
3561 lib/irs/include/irs/Makefile
3562 lib/irs/include/irs/netdb.h
3563 lib/irs/include/irs/platform.h
3564 lib/isc/$arch/Makefile
3565 lib/isc/$arch/include/Makefile
3566 lib/isc/$arch/include/isc/Makefile
3567 lib/isc/$thread_dir/Makefile
3568 lib/isc/$thread_dir/include/Makefile
3569 lib/isc/$thread_dir/include/isc/Makefile
3571 lib/isc/include/Makefile
3572 lib/isc/include/isc/Makefile
3573 lib/isc/include/isc/platform.h
3574 lib/isc/tests/Makefile
3575 lib/isc/nls/Makefile
3576 lib/isc/unix/Makefile
3577 lib/isc/unix/include/Makefile
3578 lib/isc/unix/include/isc/Makefile
3580 lib/isccc/include/Makefile
3581 lib/isccc/include/isccc/Makefile
3583 lib/isccfg/include/Makefile
3584 lib/isccfg/include/isccfg/Makefile
3586 lib/lwres/include/Makefile
3587 lib/lwres/include/lwres/Makefile
3588 lib/lwres/include/lwres/netdb.h
3589 lib/lwres/include/lwres/platform.h
3590 lib/lwres/man/Makefile
3591 lib/lwres/unix/Makefile
3592 lib/lwres/unix/include/Makefile
3593 lib/lwres/unix/include/lwres/Makefile
3595 lib/tests/include/Makefile
3596 lib/tests/include/tests/Makefile
3608 # Now that the Makefiles exist we can ensure that everything is rebuilt.
3610 AC_ARG_WITH(make-clean,
3611 [ --with-make-clean Run "make clean" at end of configure [[yes|no]].],
3612 make_clean="$withval", make_clean="yes")
3613 case "$make_clean" in
3619 if test "X$USE_OPENSSL" = "X"; then
3621 BIND is being built without OpenSSL. This means it will not have DNSSEC support.
3625 if test "X$OPENSSL_WARNING" != "X"; then
3627 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
3628 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
3630 WARNING Your OpenSSL crypto library may be vulnerable to WARNING
3631 WARNING one or more of the the following known security WARNING
3632 WARNING flaws: WARNING
3634 WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING
3635 WARNING CVE-2006-2940. WARNING
3637 WARNING It is recommended that you upgrade to OpenSSL WARNING
3638 WARNING version 0.9.8d/0.9.7l (or greater). WARNING
3640 WARNING You can disable this warning by specifying: WARNING
3642 WARNING --disable-openssl-version-check WARNING
3644 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
3645 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
3649 # Tell Emacs to edit this file in shell mode.