1 # Copyright (C) 2004-2008 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.355.18.71.8.2 $)
23 AC_INIT(lib/dns/name.c)
26 AC_CONFIG_HEADER(config.h)
27 AC_CONFIG_SUBDIRS(lib/bind)
36 AC_SUBST(STD_CINCLUDES)
37 AC_SUBST(STD_CDEFINES)
38 AC_SUBST(STD_CWARNINGS)
42 # Make very sure that these are the first files processed by
43 # config.status, since we use the processed output as the input for
44 # AC_SUBST_FILE() subsitutions in other files.
46 AC_CONFIG_FILES([make/rules make/includes])
53 # The POSIX ln(1) program. Non-POSIX systems may substitute
54 # "copy" or something.
61 ar program not found. Please fix your PATH to include the directory in
62 which ar resides, or set AR in the environment with the full path to ar.
71 AC_PATH_PROGS(ETAGS, etags emacs-etags)
74 # Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
75 # GNU emacs etags, and it requires the -L flag.
77 if test "X$ETAGS" != "X"; then
78 AC_MSG_CHECKING(for Exuberant Ctags etags)
79 if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
89 # Perl is optional; it is used only by some of the system test scripts.
91 AC_PATH_PROGS(PERL, perl5 perl)
95 # Special processing of paths depending on whether --prefix,
96 # --sysconfdir or --localstatedir arguments were given. What's
97 # desired is some compatibility with the way previous versions
98 # of BIND built; they defaulted to /usr/local for most parts of
99 # the installation, but named.boot/named.conf was in /etc
100 # and named.pid was in /var/run.
102 # So ... if none of --prefix, --sysconfdir or --localstatedir are
103 # specified, set things up that way. If --prefix is given, use
104 # it for sysconfdir and localstatedir the way configure normally
105 # would. To change the prefix for everything but leave named.conf
106 # in /etc or named.pid in /var/run, then do this the usual configure way:
107 # ./configure --prefix=/somewhere --sysconfdir=/etc
108 # ./configure --prefix=/somewhere --localstatedir=/var
110 # To put named.conf and named.pid in /usr/local with everything else,
111 # set the prefix explicitly to /usr/local even though that's the default:
112 # ./configure --prefix=/usr/local
116 case "$sysconfdir" in
121 case "$localstatedir" in
130 # Make sure INSTALL uses an absolute path, else it will be wrong in all
131 # Makefiles, since they use make/rules.in and INSTALL will be adjusted by
132 # configure based on the location of the file where it is substituted.
133 # Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
134 # subdirectory of install-sh, This relative path will be wrong for all
135 # directories more than one level down from install-sh.
142 # Not all systems have dirname.
145 ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
148 ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
149 test "$ac_dir" = "$ac_prog" && ac_dir=.
150 test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
151 INSTALL="$ac_dir/$ac_prog"
156 # On these hosts, we really want to use cc, not gcc, even if it is
157 # found. The gcc that these systems have will not correctly handle
160 # However, if the user sets $CC to be something, let that override
163 if test "X$CC" = "X" ; then
169 # Use Sun's cc if it is available, but watch
170 # out for /usr/ucb/cc; it will never be the right
173 # If setting CC here fails, the AC_PROG_CC done
174 # below might still find gcc.
175 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
176 for ac_dir in $PATH; do
177 test -z "$ac_dir" && ac_dir=.
183 if test -f "$ac_dir/cc"; then
204 # gcc's optimiser is broken at -02 for ultrasparc
206 if test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then
215 # OS dependent CC flags
218 # OSF 5.0: recv/send are only avaliable with -D_POSIX_PII_SOCKET or
219 # -D_XOPEN_SOURCE_EXTENDED.
221 STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET"
222 CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET"
224 #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros
226 STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED"
227 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
230 # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros
232 STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__"
233 CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
239 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,,,
240 [$ac_includes_default
241 #ifdef HAVE_SYS_PARAM_H
242 # include <sys/param.h>
248 AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
251 # UnixWare 7.1.1 with the feature supplement to the UDK compiler
252 # is reported to not support "static inline" (RT #1212).
254 AC_MSG_CHECKING(for static inline breakage)
259 static inline int foo1() {
263 static inline int foo2() {
268 AC_DEFINE(inline, )])
271 AC_CHECK_TYPE(ssize_t, int)
272 AC_CHECK_TYPE(uintptr_t,unsigned long)
273 AC_CHECK_TYPE(socklen_t,
274 [AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)],
278 #include <sys/types.h>
279 #include <sys/socket.h>
280 int getsockname(int, struct sockaddr *, size_t *);
282 [AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)],
283 [AC_DEFINE(ISC_SOCKADDR_LEN_T, int)])
286 #include <sys/types.h>
287 #include <sys/socket.h>
289 AC_SUBST(ISC_SOCKADDR_LEN_T)
291 AC_MSG_CHECKING(for long long)
292 AC_TRY_COMPILE([],[long long i = 0; return (0);],
294 ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
296 ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
297 AC_SUBST(ISC_PLATFORM_HAVELONGLONG)
300 # check if we have lifconf
302 AC_MSG_CHECKING(for struct lifconf)
304 #include <sys/types.h>
305 #include <sys/socket.h>
309 struct lifconf lifconf;
310 lifconf.lifc_len = 0;
314 ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"],
316 ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"])
317 AC_SUBST(ISC_PLATFORM_HAVELIFCONF)
321 # check if we need to #include sys/select.h explicitly
323 case $ac_cv_header_unistd_h in
325 AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set)
327 #include <sys/types.h> /* Ultrix */
328 #include <unistd.h>],
329 [fd_set read_set; return (0);],
331 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
332 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
334 case $ac_cv_header_sys_select_h in
336 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
337 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
340 AC_MSG_ERROR([need either working unistd.h or sys/select.h])
346 case $ac_cv_header_sys_select_h in
348 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
349 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
352 AC_MSG_ERROR([need either unistd.h or sys/select.h])
357 AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
358 AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)
361 # Find the machine's endian flavor.
367 # was --with-openssl specified?
370 AC_MSG_CHECKING(for OpenSSL library)
372 [ --with-openssl[=PATH] Build with OpenSSL [yes|no|path].
373 (Required for DNSSEC)],
374 use_openssl="$withval", use_openssl="auto")
376 openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw"
377 if test "$use_openssl" = "auto"
379 for d in $openssldirs
381 if test -f $d/include/openssl/opensslv.h
388 case "$use_openssl" in
397 AC_MSG_RESULT(not found)
400 if test "$use_openssl" = "yes"
402 # User did not specify a path - guess it
403 for d in $openssldirs
405 if test -f $d/include/openssl/opensslv.h
411 if test "$use_openssl" = "yes"
413 AC_MSG_RESULT(not found)
415 [OpenSSL was not found in any of $openssldirs; use --with-openssl=/path])
418 USE_OPENSSL='-DOPENSSL'
419 if test "$use_openssl" = "/usr"
422 DNS_OPENSSL_LIBS="-lcrypto"
424 DST_OPENSSL_INC="-I$use_openssl/include"
427 DNS_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto"
430 DNS_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto"
434 # Apple's ld seaches for serially for dynamic
435 # then static libraries. This means you can't
436 # use -L to override dynamic system libraries
437 # with static ones when linking. Instead
438 # we specify a absolute path.
440 if test -f "$use_openssl/lib/libcrypto.dylib"
442 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
444 DNS_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a"
448 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
452 AC_MSG_RESULT(using openssl from $use_openssl/lib and $use_openssl/include)
454 saved_cflags="$CFLAGS"
456 CFLAGS="$CFLAGS $DST_OPENSSL_INC"
457 LIBS="$LIBS $DNS_OPENSSL_LIBS"
458 AC_MSG_CHECKING(whether linking with OpenSSL works)
460 #include <openssl/err.h>
466 [AC_MSG_RESULT(yes)],
468 AC_MSG_ERROR(Could not run test program using OpenSSL from
469 $use_openssl/lib and $use_openssl/include.
470 Please check the argument to --with-openssl and your
471 shared library configuration (e.g., LD_LIBRARY_PATH).)],
472 [AC_MSG_RESULT(assuming it does work on target platform)])
474 AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
476 #include <openssl/err.h>],
477 [ DSO_METHOD_dlfcn(); ],
481 #include <openssl/err.h>
482 ],[ DSO_METHOD_dlfcn(); ],
484 DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl"
486 [AC_MSG_RESULT(unknown)
487 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)],
488 [AC_MSG_RESULT(assuming it does work on target platform)])
490 [AC_MSG_RESULT(assuming it does work on target platform)]
493 AC_ARG_ENABLE(openssl-version-check,
494 [AC_HELP_STRING([--enable-openssl-version-check],
495 [Check OpenSSL Version @<:@default=yes@:>@])])
496 case "$enable_openssl_version_check" in
498 AC_MSG_CHECKING(OpenSSL library version)
501 #include <openssl/opensslv.h>
503 if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
504 OPENSSL_VERSION_NUMBER < 0x00908000L) ||
505 OPENSSL_VERSION_NUMBER >= 0x0090804fL)
507 printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
508 OPENSSL_VERSION_NUMBER);
509 printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
510 "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n");
515 [AC_MSG_RESULT(not compatible)
518 [AC_MSG_RESULT(assuming target platform has compatible version)])
521 AC_MSG_RESULT(Skipped OpenSSL version check)
525 AC_MSG_CHECKING(for OpenSSL DSA support)
526 if test -f $use_openssl/include/openssl/dsa.h
528 AC_DEFINE(HAVE_OPENSSL_DSA)
533 CFLAGS="$saved_cflags"
539 # This would include the system openssl path (and linker options to use
540 # it as needed) if it is found.
543 AC_SUBST(USE_OPENSSL)
544 AC_SUBST(DST_OPENSSL_INC)
545 DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS"
548 # was --with-gssapi specified?
550 #AC_MSG_CHECKING(for GSSAPI library)
552 #[ --with-gssapi=PATH Specify path for system-supplied GSSAPI],
553 # use_gssapi="$withval", use_gssapi="no")
555 #case "$use_gssapi" in
560 # AC_MSG_RESULT(not specified)
563 # AC_MSG_ERROR([--with-gssapi must specify a path])
566 # USE_GSSAPI='-DGSSAPI'
567 # DST_GSSAPI_INC="-I$use_gssapi/include"
568 # DNS_GSSAPI_LIBS="-L$use_gssapi/lib -lgssapi_krb5"
569 # AC_MSG_RESULT(using gssapi from $use_gssapi/lib and $use_gssapi/include)
578 AC_SUBST(DST_GSSAPI_INC)
579 DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_GSSAPI_LIBS"
582 # Applications linking with libdns also need to link with these libraries.
585 AC_SUBST(DNS_CRYPTO_LIBS)
588 # was --with-randomdev specified?
590 AC_MSG_CHECKING(for random device)
591 AC_ARG_WITH(randomdev,
592 [ --with-randomdev=PATH Specify path for random device],
593 use_randomdev="$withval", use_randomdev="unspec")
595 case "$use_randomdev" in
599 devrandom=/dev/arandom
602 devrandom=/dev/random
605 AC_MSG_RESULT($devrandom)
606 AC_CHECK_FILE($devrandom,
607 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
611 AC_MSG_ERROR([--with-randomdev must specify a path])
614 AC_MSG_RESULT(disabled)
617 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
618 AC_MSG_RESULT(using "$use_randomdev")
623 # Do we have arc4random() ?
625 AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM))
627 sinclude(config.threads.in)dnl
631 if test "X$GCC" = "Xyes"; then
635 CCOPT="$CCOPT -pthread"
636 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
640 CCOPT="$CCOPT -pthread"
643 LIBS="$LIBS -lthread"
646 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
653 CCOPT="$CCOPT -pthread"
660 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
662 *-sco-sysv*uw*|*-*-sysv*UnixWare*)
664 CCOPT="$CCOPT -Kthread"
668 CCOPT="$CCOPT -Kpthread"
672 ALWAYS_DEFINES="-D_REENTRANT"
673 ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
676 # We'd like to use sigwait() too
678 AC_CHECK_FUNC(sigwait,
679 AC_DEFINE(HAVE_SIGWAIT),
680 AC_CHECK_LIB(c, sigwait,
681 AC_DEFINE(HAVE_SIGWAIT),
682 AC_CHECK_LIB(pthread, sigwait,
683 AC_DEFINE(HAVE_SIGWAIT),
684 AC_CHECK_LIB(pthread, _Psigwait,
685 AC_DEFINE(HAVE_SIGWAIT),))))
687 AC_CHECK_FUNC(pthread_attr_getstacksize,
688 AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
690 AC_CHECK_FUNC(pthread_attr_setstacksize,
691 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
694 # Additional OS-specific issues related to pthreads and sigwait.
698 # One more place to look for sigwait.
701 AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
703 *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
704 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
705 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
708 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
713 # BSDI 3.0 through 4.0.1 needs pthread_init() to be
714 # called before certain pthreads calls. This is deprecated
717 *-bsdi3.*|*-bsdi4.0*)
718 AC_DEFINE(NEED_PTHREAD_INIT)
721 # LinuxThreads requires some changes to the way we
725 AC_DEFINE(HAVE_LINUXTHREADS)
728 # Ensure the right sigwait() semantics on Solaris and make
729 # sure we call pthread_setconcurrency.
732 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
733 AC_CHECK_FUNC(pthread_setconcurrency,
734 AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
737 # UnixWare does things its own way.
739 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
740 AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
745 # Look for sysconf to allow detection of the number of processors.
747 AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
750 ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
755 AC_SUBST(ALWAYS_DEFINES)
756 AC_SUBST(ISC_PLATFORM_USETHREADS)
757 ISC_THREAD_DIR=$thread_dir
758 AC_SUBST(ISC_THREAD_DIR)
761 # In solaris 10, SMF can manage named service
763 AC_CHECK_LIB(scf, smf_enable_instance)
766 # flockfile is usually provided by pthreads, but we may want to use it
767 # even if compiled with --disable-threads. getc_unlocked might also not
770 AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
771 AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
774 # Indicate what the final decision was regarding threads.
776 AC_MSG_CHECKING(whether to build with threads)
777 if $use_threads; then
784 # End of pthreads stuff.
790 AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support],
791 want_largefile="yes", want_largefile="no")
792 case $want_largefile in
794 ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
801 # Additional compiler settings.
805 IRIX_DNSSEC_WARNINGS_HACK=""
807 if test "X$GCC" = "Xyes"; then
808 AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing)
810 CFLAGS=-fno-strict-aliasing
811 AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no])
813 if test "$FNOSTRICTALIASING" = "yes"; then
815 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing"
818 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith"
822 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
834 # The version of the C compiler that constantly warns about
835 # 'const' as well as alignment issues is unfortunately not
836 # able to be discerned via the version of the operating
837 # system, nor does cc have a version flag.
838 case "`$CC +W 123 2>&1`" in
843 # Turn off the pointlessly noisy warnings.
844 STD_CWARNINGS="+w1 +W 474,530,2193,2236"
847 CCOPT="$CCOPT -Ae -z"
848 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
849 MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
852 STD_CWARNINGS="-fullwarn -woff 1209"
854 # Silence more than 250 instances of
855 # "prototyped function redeclared without prototype"
856 # and 11 instances of
857 # "variable ... was set but never used"
858 # from lib/dns/sec/openssl.
860 IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
865 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
873 AC_SUBST(MKDEPCFLAGS)
875 AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
880 AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
883 # -lxnet buys us one big porting headache... standards, gotta love 'em.
885 # AC_CHECK_LIB(xnet, socket, ,
886 # AC_CHECK_LIB(socket, socket)
887 # AC_CHECK_LIB(nsl, inet_ntoa)
890 # Use this for now, instead:
896 AC_CHECK_LIB(socket, socket)
897 AC_CHECK_LIB(nsl, inet_ntoa)
904 AC_MSG_CHECKING(whether to use purify)
906 [ --with-purify[=PATH] use Rational purify],
907 use_purify="$withval", use_purify="no")
909 case "$use_purify" in
913 AC_PATH_PROG(purify_path, purify, purify)
916 purify_path="$use_purify"
920 case "$use_purify" in
926 if test -f $purify_path || test $purify_path = purify; then
927 AC_MSG_RESULT($purify_path)
928 PURIFYFLAGS="`echo $PURIFYOPTIONS`"
929 PURIFY="$purify_path $PURIFYFLAGS"
931 AC_MSG_ERROR([$purify_path not found.
933 Please choose the proper path with the following command:
935 configure --with-purify=PATH
944 # GNU libtool support
947 [ --with-libtool use GNU libtool (following indented options supported)],
948 use_libtool="$withval", use_libtool="no")
955 LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
956 LIBTOOL_MODE_COMPILE='--mode=compile'
957 LIBTOOL_MODE_INSTALL='--mode=install'
958 LIBTOOL_MODE_LINK='--mode=link'
960 *) LIBTOOL_ALLOW_UNDEFINED= ;;
963 *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;;
964 *) LIBTOOL_IN_MAIN= ;;
973 LIBTOOL_MODE_COMPILE=
974 LIBTOOL_MODE_INSTALL=
976 LIBTOOL_ALLOW_UNDEFINED=
982 # File name extension for static archive files, for those few places
983 # where they are treated differently from dynamic ones.
990 AC_SUBST(LIBTOOL_MKDEP_SED)
991 AC_SUBST(LIBTOOL_MODE_COMPILE)
992 AC_SUBST(LIBTOOL_MODE_INSTALL)
993 AC_SUBST(LIBTOOL_MODE_LINK)
994 AC_SUBST(LIBTOOL_ALLOW_UNDEFINED)
995 AC_SUBST(LIBTOOL_IN_MAIN)
1000 AC_ARG_ENABLE(libbind,
1001 [ --enable-libbind build libbind [default=no]])
1003 case "$enable_libbind" in
1014 # Here begins a very long section to determine the system's networking
1015 # capabilities. The order of the tests is signficant.
1022 [ --enable-ipv6 use IPv6 [default=autodetect]])
1024 case "$enable_ipv6" in
1026 AC_DEFINE(WANT_IPV6)
1033 # We do the IPv6 compilation checking after libtool so that we can put
1034 # the right suffix on the files.
1036 AC_MSG_CHECKING(for IPv6 structures)
1038 #include <sys/types.h>
1039 #include <sys/socket.h>
1040 #include <netinet/in.h>],
1041 [struct sockaddr_in6 sin6; return (0);],
1048 # See whether IPv6 support is provided via a Kame add-on.
1049 # This is done before other IPv6 linking tests to LIBS is properly set.
1051 AC_MSG_CHECKING(for Kame IPv6 support)
1053 [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]],
1054 use_kame="$withval", use_kame="no")
1060 kame_path=/usr/local/v6
1063 kame_path="$use_kame"
1072 if test -f $kame_path/lib/libinet6.a; then
1073 AC_MSG_RESULT($kame_path/lib/libinet6.a)
1074 LIBS="-L$kame_path/lib -linet6 $LIBS"
1076 AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
1078 Please choose the proper path with the following command:
1080 configure --with-kame=PATH
1087 # Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
1088 # Including it on Kame-using platforms is very bad, though, because
1089 # Kame uses #error against direct inclusion. So include it on only
1090 # the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
1091 # This is done before the in6_pktinfo check because that's what
1092 # netinet6/in6.h is needed for.
1097 ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
1098 LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
1099 isc_netinet6in6_hack="#include <netinet6/in6.h>"
1102 ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
1103 LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
1104 isc_netinet6in6_hack=""
1110 # This is similar to the netinet6/in6.h issue.
1113 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1115 ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
1116 LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
1117 ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
1118 isc_netinetin6_hack="#include <netinet/in6.h>"
1121 ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
1122 LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
1123 ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
1124 isc_netinetin6_hack=""
1129 # Now delve deeper into the suitability of the IPv6 support.
1131 case "$found_ipv6" in
1133 ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
1134 LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
1136 AC_MSG_CHECKING(for in6_addr)
1138 #include <sys/types.h>
1139 #include <sys/socket.h>
1140 #include <netinet/in.h>
1141 $isc_netinetin6_hack
1142 $isc_netinet6in6_hack
1144 [struct in6_addr in6; return (0);],
1146 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
1147 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
1148 isc_in_addr6_hack=""],
1150 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
1151 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
1152 isc_in_addr6_hack="#define in6_addr in_addr6"])
1154 AC_MSG_CHECKING(for in6addr_any)
1156 #include <sys/types.h>
1157 #include <sys/socket.h>
1158 #include <netinet/in.h>
1159 $isc_netinetin6_hack
1160 $isc_netinet6in6_hack
1163 [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
1165 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
1166 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
1168 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
1169 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
1171 AC_MSG_CHECKING(for in6addr_loopback)
1173 #include <sys/types.h>
1174 #include <sys/socket.h>
1175 #include <netinet/in.h>
1176 $isc_netinetin6_hack
1177 $isc_netinet6in6_hack
1180 [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);],
1182 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
1183 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"],
1185 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1"
1186 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"])
1188 AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
1190 #include <sys/types.h>
1191 #include <sys/socket.h>
1192 #include <netinet/in.h>
1193 $isc_netinetin6_hack
1194 $isc_netinet6in6_hack
1196 [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
1198 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
1199 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
1201 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
1202 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
1203 LWRES_HAVE_SIN6_SCOPE_ID="$result"
1205 AC_MSG_CHECKING(for in6_pktinfo)
1207 #include <sys/types.h>
1208 #include <sys/socket.h>
1209 #include <netinet/in.h>
1210 $isc_netinetin6_hack
1211 $isc_netinet6in6_hack
1213 [struct in6_pktinfo xyzzy; return (0);],
1215 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
1216 [AC_MSG_RESULT(no -- disabling runtime ipv6 support)
1217 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
1220 ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
1221 LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
1222 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
1223 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
1224 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
1225 LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
1226 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
1228 ISC_IPV6_O="ipv6.$O"
1229 ISC_ISCIPV6_O="unix/ipv6.$O"
1234 AC_SUBST(ISC_PLATFORM_HAVEIPV6)
1235 AC_SUBST(LWRES_PLATFORM_HAVEIPV6)
1236 AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
1237 AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
1238 AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
1239 AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
1240 AC_SUBST(ISC_PLATFORM_HAVEINADDR6)
1241 AC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
1242 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
1243 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
1244 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
1245 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK)
1246 AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
1247 AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
1248 AC_SUBST(ISC_IPV6_H)
1249 AC_SUBST(ISC_IPV6_O)
1250 AC_SUBST(ISC_ISCIPV6_O)
1251 AC_SUBST(ISC_IPV6_C)
1252 AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
1253 AC_SUBST(ISC_PLATFORM_HAVESCOPEID)
1255 AC_MSG_CHECKING([for struct if_laddrreq])
1257 #include <sys/types.h>
1258 #include <net/if6.h>
1259 ],[ struct if_laddrreq a; ],
1261 ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"],
1263 ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"])
1264 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ)
1266 AC_MSG_CHECKING([for struct if_laddrconf])
1268 #include <sys/types.h>
1269 #include <net/if6.h>
1270 ],[ struct if_laddrconf a; ],
1272 ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"],
1274 ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"])
1275 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF)
1278 # Check for network functions that are often missing. We do this
1279 # after the libtool checking, so we can put the right suffix on
1280 # the files. It also needs to come after checking for a Kame add-on,
1281 # which provides some (all?) of the desired functions.
1284 AC_MSG_CHECKING([for inet_ntop with IPv6 support])
1286 #include <sys/types.h>
1287 #include <sys/socket.h>
1288 #include <netinet/in.h>
1289 #include <arpa/inet.h>
1291 char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}],
1293 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
1296 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
1297 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
1298 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
1299 [AC_MSG_RESULT(assuming inet_ntop needed)
1300 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
1301 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
1302 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"])
1305 # On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
1306 # addresses with less than four octets, like "1.2.3". Also leading
1307 # zeros should also be rejected.
1309 AC_MSG_CHECKING([for working inet_pton with IPv6 support])
1311 #include <sys/types.h>
1312 #include <sys/socket.h>
1313 #include <netinet/in.h>
1314 #include <arpa/inet.h>
1315 main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
1316 inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
1317 (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
1319 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
1321 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
1322 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
1323 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
1324 [AC_MSG_RESULT(assuming target platform has working inet_pton)
1325 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
1326 [AC_MSG_RESULT(assuming inet_pton needed)
1327 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
1328 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
1329 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
1330 [AC_MSG_RESULT(assuming target platform has working inet_pton)
1331 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"])
1333 AC_MSG_CHECKING([for inet_aton])
1335 #include <sys/types.h>
1336 #include <netinet/in.h>
1337 #include <arpa/inet.h>],
1338 [struct in_addr in; inet_aton(0, &in); return (0);],
1340 ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"],
1343 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_aton.$O"
1344 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_aton.c"
1345 ISC_PLATFORM_NEEDATON="#define ISC_PLATFORM_NEEDATON 1"])
1347 AC_SUBST(ISC_PLATFORM_NEEDNTOP)
1348 AC_SUBST(ISC_PLATFORM_NEEDPTON)
1349 AC_SUBST(ISC_PLATFORM_NEEDATON)
1352 # Look for a 4.4BSD-style sa_len member in struct sockaddr.
1356 # Turn on 4.4BSD style sa_len support.
1357 AC_DEFINE(_SOCKADDR_LEN)
1361 AC_MSG_CHECKING(for sa_len in struct sockaddr)
1363 #include <sys/types.h>
1364 #include <sys/socket.h>],
1365 [struct sockaddr sa; sa.sa_len = 0; return (0);],
1367 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
1368 LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
1370 ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
1371 LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
1372 AC_SUBST(ISC_PLATFORM_HAVESALEN)
1373 AC_SUBST(LWRES_PLATFORM_HAVESALEN)
1376 # Look for a 4.4BSD or 4.3BSD struct msghdr
1378 AC_MSG_CHECKING(for struct msghdr flavor)
1380 #include <sys/types.h>
1381 #include <sys/socket.h>],
1382 [struct msghdr msg; msg.msg_flags = 0; return (0);],
1383 [AC_MSG_RESULT(4.4BSD)
1384 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
1385 [AC_MSG_RESULT(4.3BSD)
1386 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
1387 AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)
1390 # Look for in_port_t.
1392 AC_MSG_CHECKING(for type in_port_t)
1394 #include <sys/types.h>
1395 #include <netinet/in.h>],
1396 [in_port_t port = 25; return (0);],
1398 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
1400 ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
1401 AC_SUBST(ISC_PLATFORM_NEEDPORTT)
1404 # Check for addrinfo
1406 AC_MSG_CHECKING(for struct addrinfo)
1408 #include <netdb.h>],
1409 [struct addrinfo a; return (0);],
1411 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
1412 AC_DEFINE(HAVE_ADDRINFO)],
1414 ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"])
1415 AC_SUBST(ISC_LWRES_NEEDADDRINFO)
1418 # Check for rrsetinfo
1420 AC_MSG_CHECKING(for struct rrsetinfo)
1422 #include <netdb.h>],
1423 [struct rrsetinfo r; return (0);],
1425 ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"],
1427 ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"])
1428 AC_SUBST(ISC_LWRES_NEEDRRSETINFO)
1430 AC_MSG_CHECKING(for int sethostent)
1432 #include <netdb.h>],
1433 [int i = sethostent(0); return(0);],
1435 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
1437 ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
1438 AC_SUBST(ISC_LWRES_SETHOSTENTINT)
1440 AC_MSG_CHECKING(for int endhostent)
1442 #include <netdb.h>],
1443 [int i = endhostent(); return(0);],
1445 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
1447 ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
1448 AC_SUBST(ISC_LWRES_ENDHOSTENTINT)
1450 AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
1453 struct netent *getnetbyaddr(in_addr_t, int);],
1456 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
1458 ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
1459 AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)
1461 AC_MSG_CHECKING(for int setnetent)
1463 #include <netdb.h>],
1464 [int i = setnetent(0); return(0);],
1466 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
1468 ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
1469 AC_SUBST(ISC_LWRES_SETNETENTINT)
1471 AC_MSG_CHECKING(for int endnetent)
1473 #include <netdb.h>],
1474 [int i = endnetent(); return(0);],
1476 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
1478 ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
1479 AC_SUBST(ISC_LWRES_ENDNETENTINT)
1481 AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
1484 struct hostent *gethostbyaddr(const void *, size_t, int);],
1487 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
1489 ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
1490 AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)
1492 AC_MSG_CHECKING(for h_errno in netdb.h)
1494 #include <netdb.h>],
1495 [h_errno = 1; return(0);],
1497 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
1499 ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
1500 AC_SUBST(ISC_LWRES_NEEDHERRNO)
1502 AC_CHECK_FUNC(getipnodebyname,
1503 [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
1504 [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
1505 AC_CHECK_FUNC(getnameinfo,
1506 [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
1507 [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
1508 AC_CHECK_FUNC(getaddrinfo,
1509 [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
1510 AC_DEFINE(HAVE_GETADDRINFO)],
1511 [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
1512 AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
1513 AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
1514 AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
1515 AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
1517 AC_ARG_ENABLE(getifaddrs,
1518 [ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no|glibc]].
1519 glibc: Use getifaddrs() in glibc if you know it supports IPv6.],
1520 want_getifaddrs="$enableval", want_getifaddrs="yes")
1522 case $want_getifaddrs in
1525 # Do we have getifaddrs() ?
1529 # Some recent versions of glibc support getifaddrs() which does not
1530 # provide AF_INET6 addresses while the function provided by the USAGI
1531 # project handles the AF_INET6 case correctly. We need to avoid
1532 # using the former but prefer the latter unless overridden by
1533 # --enable-getifaddrs=glibc.
1534 if test $want_getifaddrs = glibc
1536 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
1539 LIBS="-L/usr/local/v6/lib $LIBS"
1540 AC_CHECK_LIB(inet6, getifaddrs,
1541 LIBS="$LIBS -linet6"
1542 AC_DEFINE(HAVE_GETIFADDRS),
1547 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
1556 # Look for a sysctl call to get the list of network interfaces.
1558 case $ac_cv_header_sys_sysctl_h in
1560 AC_MSG_CHECKING(for interface list sysctl)
1561 AC_EGREP_CPP(found_rt_iflist, [
1562 #include <sys/param.h>
1563 #include <sys/sysctl.h>
1564 #include <sys/socket.h>
1565 #ifdef NET_RT_IFLIST
1570 AC_DEFINE(HAVE_IFLIST_SYSCTL)],
1571 [AC_MSG_RESULT(no)])
1576 # Check for some other useful functions that are not ever-present.
1579 # We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC
1580 # because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77
1581 # reportedly defines strsep() without declaring it in <string.h> when
1582 # -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and
1583 # AC_CHECK_FUNC() incorrectly succeeds because it declares
1584 # the function itself.
1585 AC_MSG_CHECKING(for correctly declared strsep())
1586 AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");],
1587 [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
1588 [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
1589 AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
1591 AC_CHECK_FUNC(memmove,
1592 [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"],
1593 [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"])
1594 AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE)
1596 AC_CHECK_FUNC(strtoul,
1597 [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL"
1598 LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL"
1600 [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1"
1601 LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1"
1602 GENRANDOMLIB='${ISCLIBS}'])
1603 AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL)
1604 AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL)
1605 AC_SUBST(GENRANDOMLIB)
1607 AC_CHECK_FUNC(strlcpy,
1608 [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"],
1609 [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"])
1610 AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY)
1612 AC_CHECK_FUNC(strlcat,
1613 [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"],
1614 [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"])
1615 AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT)
1619 AC_MSG_CHECKING(sprintf)
1623 [ char buf[2]; return(*sprintf(buf,"x"));],
1625 ISC_PRINT_OBJS="print.$O"
1626 ISC_PRINT_SRCS="print.c"
1627 ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
1628 LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
1630 [ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF"
1631 LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"]
1633 AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
1634 AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
1636 AC_CHECK_FUNC(vsnprintf,
1637 [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"
1638 LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"],
1639 [ISC_PRINT_OBJS="print.$O"
1640 ISC_PRINT_SRCS="print.c"
1641 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
1642 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
1643 AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
1644 AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
1645 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
1646 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
1648 AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
1650 AC_SUBST(ISC_EXTRA_OBJS)
1651 AC_SUBST(ISC_EXTRA_SRCS)
1653 # Determine the printf format characters to use when printing
1654 # values of type isc_int64_t. This will normally be "ll", but where
1655 # the compiler treats "long long" as a alias for "long" and printf
1656 # doesn't know about "long long" use "l". Hopefully the sprintf
1657 # will produce a inconsistant result in the later case. If the compiler
1658 # fails due to seeing "%lld" we fall back to "l".
1660 # Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses
1661 # %ld even for (long long)/
1663 # Win32 uses "%I64d", but that's defined elsewhere since we don't use
1664 # configure on Win32.
1666 AC_MSG_CHECKING(printf format modifier for 64-bit integers)
1670 long long int j = 0;
1673 sprintf(buf, "%lld", j);
1674 exit((sizeof(long long int) != sizeof(long int))? 0 :
1675 (strcmp(buf, "0") != 0));
1679 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
1680 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'],
1682 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
1683 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'],
1684 [AC_MSG_RESULT(assuming target platform uses ll)
1685 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
1686 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'])
1687 AC_SUBST(ISC_PLATFORM_QUADFORMAT)
1688 AC_SUBST(LWRES_PLATFORM_QUADFORMAT)
1693 AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT))
1694 AC_ARG_ENABLE(linux-caps,
1695 [ --disable-linux-caps disable linux capabilities])
1696 case "$enable_linux_caps" in
1698 AC_CHECK_HEADERS(linux/capability.h)
1703 AC_CHECK_HEADERS(sys/prctl.h)
1705 AC_CHECK_HEADERS(sys/un.h,
1706 ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
1708 ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
1710 AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
1714 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
1715 [Define if connect does not honour the permission on the UNIX domain socket.])
1718 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
1719 [Define if connect does not honour the permission on the UNIX domain socket.])
1726 AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET))
1728 AC_MSG_CHECKING(for optarg decarartion)
1733 [AC_MSG_RESULT(yes)],
1735 GEN_NEED_OPTARG="-DNEED_OPTARG=1"
1736 AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])])
1739 # BSD/OS, and perhaps some others, don't define rlim_t.
1741 AC_MSG_CHECKING(for type rlim_t)
1743 #include <sys/types.h>
1744 #include <sys/time.h>
1745 #include <sys/resource.h>],
1746 [rlim_t rl = 19671212; return (0);],
1748 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"],
1751 AC_MSG_CHECKING(type of rlim_cur)
1753 #include <sys/types.h>
1754 #include <sys/time.h>
1755 #include <sys/resource.h>
1756 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
1758 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
1761 #include <sys/types.h>
1762 #include <sys/time.h>
1763 #include <sys/resource.h>
1764 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
1765 [AC_MSG_RESULT(long int)
1766 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
1769 #include <sys/types.h>
1770 #include <sys/time.h>
1771 #include <sys/resource.h>
1772 main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
1773 [AC_MSG_RESULT(long long int)
1774 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
1775 [AC_MSG_ERROR([unable to determine sizeof rlim_cur])
1776 ],[AC_MSG_ERROR(this cannot happen)])
1777 ],[AC_MSG_ERROR(this cannot happen)])
1779 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
1780 AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming long long int)])
1782 AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
1785 # Compaq TruCluster requires more code for handling cluster IP aliases
1789 AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS")
1790 AC_CHECK_FUNC(clua_getaliasaddress,
1791 AC_DEFINE(HAVE_TRUCLUSTER, 1,
1792 [Define if running under Compaq TruCluster]))
1799 # Some hosts need msg_namelen to match the size of the socket structure.
1800 # Some hosts don't set msg_namelen appropriately on return from recvmsg().
1804 AC_DEFINE(BROKEN_RECVMSG, 1,
1805 [Define if recvmsg() does not meet all of the BSD socket API specifications.])
1810 # Microsoft has their own way of handling shared libraries that requires
1811 # additional qualifiers on extern variables. Unix systems don't need it.
1813 AC_SUBST(ISC_PLATFORM_USEDECLSPEC)
1814 ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC"
1815 AC_SUBST(LWRES_PLATFORM_USEDECLSPEC)
1816 LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC"
1819 # Random remaining OS-specific issues involving compiler warnings.
1820 # XXXDCL print messages to indicate some compensation is being done?
1822 AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
1823 ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"
1827 hack_shutup_pthreadonceinit=yes
1830 hack_shutup_sputaux=yes
1833 hack_shutup_sigwait=yes
1834 hack_shutup_sputaux=yes
1837 hack_shutup_stdargcast=yes
1840 hack_shutup_pthreadonceinit=yes
1843 hack_shutup_pthreadonceinit=yes
1847 case "$hack_shutup_pthreadonceinit" in
1850 # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
1852 ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
1856 case "$hack_shutup_sigwait" in
1859 # Shut up a -Wmissing-prototypes warning for sigwait().
1861 AC_DEFINE(SHUTUP_SIGWAIT)
1865 case "$hack_shutup_sputaux" in
1868 # Shut up a -Wmissing-prototypes warning from <stdio.h>.
1870 AC_DEFINE(SHUTUP_SPUTAUX)
1874 case "$hack_shutup_stdargcast" in
1877 # Shut up a -Wcast-qual warning from va_start().
1879 AC_DEFINE(SHUTUP_STDARG_CAST)
1883 AC_CHECK_HEADERS(strings.h,
1884 ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1"
1886 ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH"
1888 AC_SUBST(ISC_PLATFORM_HAVESTRINGSH)
1891 # Check for if_nametoindex() for IPv6 scoped addresses support
1893 AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
1894 ac_cv_have_if_nametoindex=no)
1895 case $ac_cv_have_if_nametoindex in
1899 AC_CHECK_LIB(ipv6, if_nametoindex,
1900 ac_cv_have_if_nametoindex=yes
1901 LIBS="-lipv6 $LIBS",)
1905 case $ac_cv_have_if_nametoindex in
1907 ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1"
1910 ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX"
1913 AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX)
1916 # Machine architecture dependent features
1918 AC_ARG_ENABLE(atomic,
1919 [ --enable-atomic enable machine specific atomic operations
1920 [[default=autodetect]]],
1921 enable_atomic="$enableval",
1922 enable_atomic="autodetect")
1923 case "$enable_atomic" in
1933 ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM"
1934 if test "$use_atomic" = "yes"; then
1935 AC_MSG_CHECKING([architecture type for atomic operations])
1936 have_atomic=yes # set default
1939 # XXX: some old x86 architectures actually do not support
1940 # (some of) these operations. Do we need stricter checks?
1943 exit((sizeof(void *) == 8) ? 0 : 1);
1959 mips-*|mipsel-*|mips64-*|mips64el-*)
1970 AC_MSG_RESULT($arch)
1973 if test "$have_atomic" = "yes"; then
1974 AC_MSG_CHECKING([compiler support for inline assembly code])
1977 # Check whether the compiler supports the assembly syntax we provide.
1978 if test "X$GCC" = "Xyes"; then
1979 # GCC's ASM extension always works
1981 if test $arch = "x86_64"; then
1982 # We can share the same code for gcc with x86_32
1985 if test $arch = "powerpc"; then
1987 # The MacOS (and maybe others) uses "r0" for register
1988 # zero. Under linux/ibm it is "0" for register 0.
1989 # Probe to see if we have a MacOS style assembler.
1991 AC_MSG_CHECKING([Checking for MacOS style assembler syntax])
1993 __asm__ volatile ("li r0, 0x0\n"::);
1997 ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1"
1998 ], [AC_MSG_RESULT(no)])
2003 # Tru64 compiler has its own syntax for inline
2007 #error "unexpected compiler"
2019 ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1"
2022 ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1"
2029 # See if the generic __asm function works. If not,
2030 # we need to disable the atomic operations.
2034 [compiler="standard"
2035 ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"],
2036 [compiler="not supported (atomic operations disabled)"
2042 AC_MSG_RESULT($compiler)
2045 if test "$have_atomic" = "yes"; then
2046 ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1"
2047 ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1"
2048 ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1"
2050 ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD"
2051 ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG"
2052 ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE"
2055 AC_SUBST(ISC_PLATFORM_HAVEXADD)
2056 AC_SUBST(ISC_PLATFORM_HAVECMPXCHG)
2057 AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE)
2059 AC_SUBST(ISC_PLATFORM_USEGCCASM)
2060 AC_SUBST(ISC_PLATFORM_USEOSFASM)
2061 AC_SUBST(ISC_PLATFORM_USESTDASM)
2062 AC_SUBST(ISC_PLATFORM_USEMACASM)
2065 AC_SUBST(ISC_ARCH_DIR)
2068 # The following sets up how non-blocking i/o is established.
2069 # Sunos, cygwin and solaris 2.x (x<5) require special handling.
2072 *-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
2073 *-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
2074 *-solaris2.[[01234]])
2075 AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
2076 AC_DEFINE(USE_FIONBIO_IOCTL, 1,
2077 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
2079 *) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
2080 [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
2084 # Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
2085 # This prevents the source address being set.
2088 *-solaris2.[[012345]]|*-solaris2.5.1)
2089 AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
2090 [Define if you cannot bind() before connect() for TCP sockets.])
2094 # The following sections deal with tools used for formatting
2095 # the documentation. They are all optional, unless you are
2096 # a developer editing the documentation source.
2103 AC_PATH_PROGS(LATEX, latex, latex)
2106 AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
2113 AC_PATH_PROGS(W3M, w3m, w3m)
2117 # Look for xsltproc (libxslt)
2120 AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
2124 # Look for xmllint (libxml2)
2127 AC_PATH_PROG(XMLLINT, xmllint, xmllint)
2131 # Subroutine for searching for an ordinary file (e.g., a stylesheet)
2132 # in a number of directories:
2134 # NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
2136 # If the file FILENAME is found in one of the DIRECTORIES, the shell
2137 # variable VARIABLE is defined to its absolute pathname. Otherwise,
2138 # it is set to FILENAME, with no directory prefix (that's not terribly
2139 # useful, but looks less confusing in substitutions than leaving it
2140 # empty). The variable VARIABLE will be substituted into output files.
2143 AC_DEFUN(NOM_PATH_FILE, [
2145 AC_MSG_CHECKING(for $2)
2156 if test "X[$]$1" = "X"
2158 AC_MSG_RESULT("not found");
2165 # Look for Docbook-XSL stylesheets. Location probably varies by
2166 # system. Guessing where it might be found, based on where SGML stuff
2167 # lives on some systems. FreeBSD is the only one I'm sure of at the
2171 docbook_xsl_trees="/usr/pkg/share/xsl /usr/local/share/xsl /usr/share/xsl"
2174 # Look for stylesheets we need.
2177 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, docbook/html/docbook.xsl, $docbook_xsl_trees)
2178 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, docbook/xhtml/docbook.xsl, $docbook_xsl_trees)
2179 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, docbook/manpages/docbook.xsl, $docbook_xsl_trees)
2180 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, docbook/html/chunk.xsl, $docbook_xsl_trees)
2181 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, docbook/xhtml/chunk.xsl, $docbook_xsl_trees)
2182 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, docbook/html/chunktoc.xsl, $docbook_xsl_trees)
2183 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, docbook/xhtml/chunktoc.xsl, $docbook_xsl_trees)
2184 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, docbook/html/maketoc.xsl, $docbook_xsl_trees)
2185 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, docbook/xhtml/maketoc.xsl, $docbook_xsl_trees)
2188 # Same dance for db2latex
2190 # No idea where this lives except on FreeBSD.
2193 db2latex_xsl_trees="/usr/local/share"
2196 # Look for stylesheets we need.
2199 NOM_PATH_FILE(XSLT_DB2LATEX_STYLE, db2latex/xsl/docbook.xsl, $db2latex_xsl_trees)
2202 # Look for "admonition" image directory. Can't use NOM_PATH_FILE()
2203 # because it's a directory, so just do the same things, inline.
2206 AC_MSG_CHECKING(for db2latex/xsl/figures)
2207 for d in $db2latex_xsl_trees
2209 dd=$d/db2latex/xsl/figures
2212 XSLT_DB2LATEX_ADMONITIONS=$dd
2217 if test "X$XSLT_DB2LATEX_ADMONITIONS" = "X"
2219 AC_MSG_RESULT(not found)
2220 XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures
2222 AC_SUBST(XSLT_DB2LATEX_ADMONITIONS)
2228 [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
2229 use_idn="$withval", use_idn="no")
2232 if test X$prefix = XNONE ; then
2247 AC_ARG_WITH(libiconv,
2248 [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]],
2249 use_libiconv="$withval", use_libiconv="no")
2250 case "$use_libiconv" in
2252 if test X$prefix = XNONE ; then
2253 iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
2255 iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
2262 iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
2267 [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]],
2268 iconvlib="$withval")
2279 [ --with-idnlib=ARG specify libidnkit],
2280 idnlib="$withval", idnlib="no")
2281 if test "$idnlib" = yes; then
2282 AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
2286 if test "$use_idn" != no; then
2287 AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
2288 STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
2289 if test "$idnlib" != no; then
2290 IDNLIBS="$idnlib $iconvlib"
2292 IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
2297 AC_CHECK_HEADERS(locale.h)
2298 AC_CHECK_FUNCS(setlocale)
2303 AC_SUBST(BIND9_TOP_BUILDDIR)
2304 BIND9_TOP_BUILDDIR=`pwd`
2306 AC_SUBST(BIND9_ISC_BUILDINCLUDE)
2307 AC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
2308 AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
2309 AC_SUBST(BIND9_DNS_BUILDINCLUDE)
2310 AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
2311 AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
2312 if test "X$srcdir" != "X"; then
2313 BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
2314 BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
2315 BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
2316 BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
2317 BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
2318 BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
2320 BIND9_ISC_BUILDINCLUDE=""
2321 BIND9_ISCCC_BUILDINCLUDE=""
2322 BIND9_ISCCFG_BUILDINCLUDE=""
2323 BIND9_DNS_BUILDINCLUDE=""
2324 BIND9_LWRES_BUILDINCLUDE=""
2325 BIND9_BIND9_BUILDINCLUDE=""
2328 AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
2329 BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
2331 AC_SUBST_FILE(BIND9_MAKE_RULES)
2332 BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
2335 BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}"
2336 AC_SUBST(BIND9_VERSION)
2338 AC_SUBST_FILE(LIBISC_API)
2339 LIBISC_API=$srcdir/lib/isc/api
2341 AC_SUBST_FILE(LIBISCCC_API)
2342 LIBISCCC_API=$srcdir/lib/isccc/api
2344 AC_SUBST_FILE(LIBISCCFG_API)
2345 LIBISCCFG_API=$srcdir/lib/isccfg/api
2347 AC_SUBST_FILE(LIBDNS_API)
2348 LIBDNS_API=$srcdir/lib/dns/api
2350 AC_SUBST_FILE(LIBBIND9_API)
2351 LIBBIND9_API=$srcdir/lib/bind9/api
2353 AC_SUBST_FILE(LIBLWRES_API)
2354 LIBLWRES_API=$srcdir/lib/lwres/api
2357 # Configure any DLZ drivers.
2359 # If config.dlz.in selects one or more DLZ drivers, it will set
2360 # USE_DLZ to a non-empty value, which will be our clue to
2361 # enable the DLZ core functions.
2363 # This section has to come after the libtool stuff because it needs to
2364 # know how to name the driver object files.
2368 DLZ_DRIVER_INCLUDES=""
2373 sinclude(contrib/dlz/config.dlz.in)
2375 AC_MSG_CHECKING(for DLZ)
2377 if test -n "$USE_DLZ"
2380 USE_DLZ="-DDLZ $USE_DLZ"
2381 DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
2382 AC_CONFIG_FILES([$DLZ_DRIVER_RULES])
2385 DLZ_DRIVER_RULES=/dev/null
2389 AC_SUBST(DLZ_DRIVER_INCLUDES)
2390 AC_SUBST(DLZ_DRIVER_LIBS)
2391 AC_SUBST(DLZ_DRIVER_SRCS)
2392 AC_SUBST(DLZ_DRIVER_OBJS)
2393 AC_SUBST_FILE(DLZ_DRIVER_RULES)
2395 if test "$cross_compiling" = "yes"; then
2396 if test -z "$BUILD_CC"; then
2397 AC_ERROR([BUILD_CC not set])
2399 BUILD_CFLAGS="$BUILD_CFLAGS"
2400 BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
2401 BUILD_LDFLAGS="$BUILD_LDFLAGS"
2402 BUILD_LIBS="$BUILD_LIBS"
2405 BUILD_CFLAGS="$CFLAGS"
2406 BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
2407 BUILD_LDFLAGS="$LDFLAGS"
2412 AC_SUBST(BUILD_CFLAGS)
2413 AC_SUBST(BUILD_CPPFLAGS)
2414 AC_SUBST(BUILD_LDFLAGS)
2415 AC_SUBST(BUILD_LIBS)
2418 # Commands to run at the end of config.status.
2419 # Don't just put these into configure, it won't work right if somebody
2420 # runs config.status directly (which autoconf allows).
2425 [chmod a+x isc-config.sh])
2428 # Files to configure. These are listed here because we used to
2429 # specify them as arguments to AC_OUTPUT. It's (now) ok to move these
2430 # elsewhere if there's a good reason for doing so.
2439 lib/isc/include/Makefile
2440 lib/isc/include/isc/Makefile
2441 lib/isc/include/isc/platform.h
2442 lib/isc/unix/Makefile
2443 lib/isc/unix/include/Makefile
2444 lib/isc/unix/include/isc/Makefile
2445 lib/isc/nls/Makefile
2446 lib/isc/$thread_dir/Makefile
2447 lib/isc/$thread_dir/include/Makefile
2448 lib/isc/$thread_dir/include/isc/Makefile
2449 lib/isc/$arch/Makefile
2450 lib/isc/$arch/include/Makefile
2451 lib/isc/$arch/include/isc/Makefile
2453 lib/isccc/include/Makefile
2454 lib/isccc/include/isccc/Makefile
2456 lib/isccfg/include/Makefile
2457 lib/isccfg/include/isccfg/Makefile
2459 lib/dns/include/Makefile
2460 lib/dns/include/dns/Makefile
2461 lib/dns/include/dst/Makefile
2463 lib/bind9/include/Makefile
2464 lib/bind9/include/bind9/Makefile
2466 lib/lwres/include/Makefile
2467 lib/lwres/include/lwres/Makefile
2468 lib/lwres/include/lwres/netdb.h
2469 lib/lwres/include/lwres/platform.h
2470 lib/lwres/man/Makefile
2471 lib/lwres/unix/Makefile
2472 lib/lwres/unix/include/Makefile
2473 lib/lwres/unix/include/lwres/Makefile
2475 lib/tests/include/Makefile
2476 lib/tests/include/tests/Makefile
2480 bin/named/unix/Makefile
2482 bin/rndc/unix/Makefile
2484 bin/nsupdate/Makefile
2486 bin/tests/names/Makefile
2487 bin/tests/master/Makefile
2488 bin/tests/rbt/Makefile
2489 bin/tests/db/Makefile
2490 bin/tests/tasks/Makefile
2491 bin/tests/timers/Makefile
2492 bin/tests/dst/Makefile
2493 bin/tests/mem/Makefile
2494 bin/tests/net/Makefile
2495 bin/tests/sockaddr/Makefile
2496 bin/tests/system/Makefile
2497 bin/tests/system/conf.sh
2498 bin/tests/system/lwresd/Makefile
2499 bin/tests/system/tkey/Makefile
2500 bin/tests/headerdep_test.sh
2507 doc/xsl/isc-docbook-chunk.xsl
2508 doc/xsl/isc-docbook-html.xsl
2509 doc/xsl/isc-docbook-latex.xsl
2510 doc/xsl/isc-manpage.xsl
2519 if test "X$OPENSSL_WARNING" != "X"; then
2521 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2522 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2524 WARNING Your OpenSSL crypto library may be vulnerable to WARNING
2525 WARNING one or more of the the following known security WARNING
2526 WARNING flaws: WARNING
2528 WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING
2529 WARNING CVE-2006-2940. WARNING
2531 WARNING It is recommended that you upgrade to OpenSSL WARNING
2532 WARNING version 0.9.8d/0.9.7l (or greater). WARNING
2534 WARNING You can disable this warning by specifying: WARNING
2536 WARNING --disable-openssl-version-check WARNING
2538 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2539 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2543 # Tell Emacs to edit this file in shell mode.