1 # Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
2 # Copyright (C) 1998-2003 Internet Software Consortium.
4 # Permission to use, copy, modify, and 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.67 $)
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"
433 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
437 AC_MSG_RESULT(using openssl from $use_openssl/lib and $use_openssl/include)
439 saved_cflags="$CFLAGS"
441 CFLAGS="$CFLAGS $DST_OPENSSL_INC"
442 LIBS="$LIBS $DNS_OPENSSL_LIBS"
443 AC_MSG_CHECKING(whether linking with OpenSSL works)
445 #include <openssl/err.h>
451 [AC_MSG_RESULT(yes)],
453 AC_MSG_ERROR(Could not run test program using OpenSSL from
454 $use_openssl/lib and $use_openssl/include.
455 Please check the argument to --with-openssl and your
456 shared library configuration (e.g., LD_LIBRARY_PATH).)],
457 [AC_MSG_RESULT(assuming it does work on target platform)])
459 AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
461 #include <openssl/err.h>],
462 [ DSO_METHOD_dlfcn(); ],
466 #include <openssl/err.h>
467 ],[ DSO_METHOD_dlfcn(); ],
469 DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl"
471 [AC_MSG_RESULT(unknown)
472 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)],
473 [AC_MSG_RESULT(assuming it does work on target platform)])
475 [AC_MSG_RESULT(assuming it does work on target platform)]
478 AC_ARG_ENABLE(openssl-version-check,
479 [AC_HELP_STRING([--enable-openssl-version-check],
480 [Check OpenSSL Version @<:@default=yes@:>@])])
481 case "$enable_openssl_version_check" in
483 AC_MSG_CHECKING(OpenSSL library version)
486 #include <openssl/opensslv.h>
488 if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
489 OPENSSL_VERSION_NUMBER < 0x00908000L) ||
490 OPENSSL_VERSION_NUMBER >= 0x0090804fL)
492 printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
493 OPENSSL_VERSION_NUMBER);
494 printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
495 "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n");
500 [AC_MSG_RESULT(not compatible)
503 [AC_MSG_RESULT(assuming target platform has compatible version)])
506 AC_MSG_RESULT(Skipped OpenSSL version check)
510 AC_MSG_CHECKING(for OpenSSL DSA support)
511 if test -f $use_openssl/include/openssl/dsa.h
513 AC_DEFINE(HAVE_OPENSSL_DSA)
518 CFLAGS="$saved_cflags"
524 # This would include the system openssl path (and linker options to use
525 # it as needed) if it is found.
528 AC_SUBST(USE_OPENSSL)
529 AC_SUBST(DST_OPENSSL_INC)
530 DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS"
533 # was --with-gssapi specified?
535 #AC_MSG_CHECKING(for GSSAPI library)
537 #[ --with-gssapi=PATH Specify path for system-supplied GSSAPI],
538 # use_gssapi="$withval", use_gssapi="no")
540 #case "$use_gssapi" in
545 # AC_MSG_RESULT(not specified)
548 # AC_MSG_ERROR([--with-gssapi must specify a path])
551 # USE_GSSAPI='-DGSSAPI'
552 # DST_GSSAPI_INC="-I$use_gssapi/include"
553 # DNS_GSSAPI_LIBS="-L$use_gssapi/lib -lgssapi_krb5"
554 # AC_MSG_RESULT(using gssapi from $use_gssapi/lib and $use_gssapi/include)
563 AC_SUBST(DST_GSSAPI_INC)
564 DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_GSSAPI_LIBS"
567 # Applications linking with libdns also need to link with these libraries.
570 AC_SUBST(DNS_CRYPTO_LIBS)
573 # was --with-randomdev specified?
575 AC_MSG_CHECKING(for random device)
576 AC_ARG_WITH(randomdev,
577 [ --with-randomdev=PATH Specify path for random device],
578 use_randomdev="$withval", use_randomdev="unspec")
580 case "$use_randomdev" in
584 devrandom=/dev/arandom
587 devrandom=/dev/random
590 AC_MSG_RESULT($devrandom)
591 AC_CHECK_FILE($devrandom,
592 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
596 AC_MSG_ERROR([--with-randomdev must specify a path])
599 AC_MSG_RESULT(disabled)
602 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
603 AC_MSG_RESULT(using "$use_randomdev")
608 # Do we have arc4random() ?
610 AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM))
612 sinclude(config.threads.in)dnl
616 if test "X$GCC" = "Xyes"; then
620 CCOPT="$CCOPT -pthread"
621 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
625 CCOPT="$CCOPT -pthread"
628 LIBS="$LIBS -lthread"
631 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
638 CCOPT="$CCOPT -pthread"
645 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
647 *-sco-sysv*uw*|*-*-sysv*UnixWare*)
649 CCOPT="$CCOPT -Kthread"
653 CCOPT="$CCOPT -Kpthread"
657 ALWAYS_DEFINES="-D_REENTRANT"
658 ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
661 # We'd like to use sigwait() too
663 AC_CHECK_FUNC(sigwait,
664 AC_DEFINE(HAVE_SIGWAIT),
665 AC_CHECK_LIB(c, sigwait,
666 AC_DEFINE(HAVE_SIGWAIT),
667 AC_CHECK_LIB(pthread, sigwait,
668 AC_DEFINE(HAVE_SIGWAIT),
669 AC_CHECK_LIB(pthread, _Psigwait,
670 AC_DEFINE(HAVE_SIGWAIT),))))
672 AC_CHECK_FUNC(pthread_attr_getstacksize,
673 AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
675 AC_CHECK_FUNC(pthread_attr_setstacksize,
676 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
679 # Additional OS-specific issues related to pthreads and sigwait.
683 # One more place to look for sigwait.
686 AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
688 *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
689 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
690 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
693 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
698 # BSDI 3.0 through 4.0.1 needs pthread_init() to be
699 # called before certain pthreads calls. This is deprecated
702 *-bsdi3.*|*-bsdi4.0*)
703 AC_DEFINE(NEED_PTHREAD_INIT)
706 # LinuxThreads requires some changes to the way we
710 AC_DEFINE(HAVE_LINUXTHREADS)
713 # Ensure the right sigwait() semantics on Solaris and make
714 # sure we call pthread_setconcurrency.
717 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
718 AC_CHECK_FUNC(pthread_setconcurrency,
719 AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
722 # UnixWare does things its own way.
724 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
725 AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
730 # Look for sysconf to allow detection of the number of processors.
732 AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
735 ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
740 AC_SUBST(ALWAYS_DEFINES)
741 AC_SUBST(ISC_PLATFORM_USETHREADS)
742 ISC_THREAD_DIR=$thread_dir
743 AC_SUBST(ISC_THREAD_DIR)
746 # In solaris 10, SMF can manage named service
748 AC_CHECK_LIB(scf, smf_enable_instance)
751 # flockfile is usually provided by pthreads, but we may want to use it
752 # even if compiled with --disable-threads. getc_unlocked might also not
755 AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
756 AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
759 # Indicate what the final decision was regarding threads.
761 AC_MSG_CHECKING(whether to build with threads)
762 if $use_threads; then
769 # End of pthreads stuff.
775 AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support],
776 want_largefile="yes", want_largefile="no")
777 case $want_largefile in
779 ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
786 # Additional compiler settings.
790 IRIX_DNSSEC_WARNINGS_HACK=""
792 if test "X$GCC" = "Xyes"; then
793 AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing)
795 CFLAGS=-fno-strict-aliasing
796 AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no])
798 if test "$FNOSTRICTALIASING" = "yes"; then
800 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing"
803 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith"
807 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
819 # The version of the C compiler that constantly warns about
820 # 'const' as well as alignment issues is unfortunately not
821 # able to be discerned via the version of the operating
822 # system, nor does cc have a version flag.
823 case "`$CC +W 123 2>&1`" in
828 # Turn off the pointlessly noisy warnings.
829 STD_CWARNINGS="+w1 +W 474,530,2193,2236"
832 CCOPT="$CCOPT -Ae -z"
833 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
834 MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
837 STD_CWARNINGS="-fullwarn -woff 1209"
839 # Silence more than 250 instances of
840 # "prototyped function redeclared without prototype"
841 # and 11 instances of
842 # "variable ... was set but never used"
843 # from lib/dns/sec/openssl.
845 IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
850 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
858 AC_SUBST(MKDEPCFLAGS)
860 AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
865 AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
868 # -lxnet buys us one big porting headache... standards, gotta love 'em.
870 # AC_CHECK_LIB(xnet, socket, ,
871 # AC_CHECK_LIB(socket, socket)
872 # AC_CHECK_LIB(nsl, inet_ntoa)
875 # Use this for now, instead:
881 AC_CHECK_LIB(socket, socket)
882 AC_CHECK_LIB(nsl, inet_ntoa)
889 AC_MSG_CHECKING(whether to use purify)
891 [ --with-purify[=PATH] use Rational purify],
892 use_purify="$withval", use_purify="no")
894 case "$use_purify" in
898 AC_PATH_PROG(purify_path, purify, purify)
901 purify_path="$use_purify"
905 case "$use_purify" in
911 if test -f $purify_path || test $purify_path = purify; then
912 AC_MSG_RESULT($purify_path)
913 PURIFYFLAGS="`echo $PURIFYOPTIONS`"
914 PURIFY="$purify_path $PURIFYFLAGS"
916 AC_MSG_ERROR([$purify_path not found.
918 Please choose the proper path with the following command:
920 configure --with-purify=PATH
929 # GNU libtool support
932 [ --with-libtool use GNU libtool (following indented options supported)],
933 use_libtool="$withval", use_libtool="no")
940 LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
941 LIBTOOL_MODE_COMPILE='--mode=compile'
942 LIBTOOL_MODE_INSTALL='--mode=install'
943 LIBTOOL_MODE_LINK='--mode=link'
945 *) LIBTOOL_ALLOW_UNDEFINED= ;;
948 *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;;
949 *) LIBTOOL_IN_MAIN= ;;
958 LIBTOOL_MODE_COMPILE=
959 LIBTOOL_MODE_INSTALL=
961 LIBTOOL_ALLOW_UNDEFINED=
967 # File name extension for static archive files, for those few places
968 # where they are treated differently from dynamic ones.
975 AC_SUBST(LIBTOOL_MKDEP_SED)
976 AC_SUBST(LIBTOOL_MODE_COMPILE)
977 AC_SUBST(LIBTOOL_MODE_INSTALL)
978 AC_SUBST(LIBTOOL_MODE_LINK)
979 AC_SUBST(LIBTOOL_ALLOW_UNDEFINED)
980 AC_SUBST(LIBTOOL_IN_MAIN)
985 AC_ARG_ENABLE(libbind,
986 [ --enable-libbind build libbind [default=no]])
988 case "$enable_libbind" in
999 # Here begins a very long section to determine the system's networking
1000 # capabilities. The order of the tests is signficant.
1007 [ --enable-ipv6 use IPv6 [default=autodetect]])
1009 case "$enable_ipv6" in
1011 AC_DEFINE(WANT_IPV6)
1018 # We do the IPv6 compilation checking after libtool so that we can put
1019 # the right suffix on the files.
1021 AC_MSG_CHECKING(for IPv6 structures)
1023 #include <sys/types.h>
1024 #include <sys/socket.h>
1025 #include <netinet/in.h>],
1026 [struct sockaddr_in6 sin6; return (0);],
1033 # See whether IPv6 support is provided via a Kame add-on.
1034 # This is done before other IPv6 linking tests to LIBS is properly set.
1036 AC_MSG_CHECKING(for Kame IPv6 support)
1038 [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]],
1039 use_kame="$withval", use_kame="no")
1045 kame_path=/usr/local/v6
1048 kame_path="$use_kame"
1057 if test -f $kame_path/lib/libinet6.a; then
1058 AC_MSG_RESULT($kame_path/lib/libinet6.a)
1059 LIBS="-L$kame_path/lib -linet6 $LIBS"
1061 AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
1063 Please choose the proper path with the following command:
1065 configure --with-kame=PATH
1072 # Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
1073 # Including it on Kame-using platforms is very bad, though, because
1074 # Kame uses #error against direct inclusion. So include it on only
1075 # the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
1076 # This is done before the in6_pktinfo check because that's what
1077 # netinet6/in6.h is needed for.
1082 ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
1083 LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
1084 isc_netinet6in6_hack="#include <netinet6/in6.h>"
1087 ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
1088 LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
1089 isc_netinet6in6_hack=""
1095 # This is similar to the netinet6/in6.h issue.
1098 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1100 ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
1101 LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
1102 ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
1103 isc_netinetin6_hack="#include <netinet/in6.h>"
1106 ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
1107 LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
1108 ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
1109 isc_netinetin6_hack=""
1114 # Now delve deeper into the suitability of the IPv6 support.
1116 case "$found_ipv6" in
1118 ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
1119 LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
1121 AC_MSG_CHECKING(for in6_addr)
1123 #include <sys/types.h>
1124 #include <sys/socket.h>
1125 #include <netinet/in.h>
1126 $isc_netinetin6_hack
1127 $isc_netinet6in6_hack
1129 [struct in6_addr in6; return (0);],
1131 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
1132 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
1133 isc_in_addr6_hack=""],
1135 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
1136 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
1137 isc_in_addr6_hack="#define in6_addr in_addr6"])
1139 AC_MSG_CHECKING(for in6addr_any)
1141 #include <sys/types.h>
1142 #include <sys/socket.h>
1143 #include <netinet/in.h>
1144 $isc_netinetin6_hack
1145 $isc_netinet6in6_hack
1148 [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
1150 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
1151 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
1153 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
1154 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
1156 AC_MSG_CHECKING(for in6addr_loopback)
1158 #include <sys/types.h>
1159 #include <sys/socket.h>
1160 #include <netinet/in.h>
1161 $isc_netinetin6_hack
1162 $isc_netinet6in6_hack
1165 [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);],
1167 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
1168 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"],
1170 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1"
1171 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"])
1173 AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
1175 #include <sys/types.h>
1176 #include <sys/socket.h>
1177 #include <netinet/in.h>
1178 $isc_netinetin6_hack
1179 $isc_netinet6in6_hack
1181 [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
1183 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
1184 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
1186 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
1187 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
1188 LWRES_HAVE_SIN6_SCOPE_ID="$result"
1190 AC_MSG_CHECKING(for in6_pktinfo)
1192 #include <sys/types.h>
1193 #include <sys/socket.h>
1194 #include <netinet/in.h>
1195 $isc_netinetin6_hack
1196 $isc_netinet6in6_hack
1198 [struct in6_pktinfo xyzzy; return (0);],
1200 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
1201 [AC_MSG_RESULT(no -- disabling runtime ipv6 support)
1202 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
1205 ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
1206 LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
1207 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
1208 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
1209 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
1210 LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
1211 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
1213 ISC_IPV6_O="ipv6.$O"
1214 ISC_ISCIPV6_O="unix/ipv6.$O"
1219 AC_SUBST(ISC_PLATFORM_HAVEIPV6)
1220 AC_SUBST(LWRES_PLATFORM_HAVEIPV6)
1221 AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
1222 AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
1223 AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
1224 AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
1225 AC_SUBST(ISC_PLATFORM_HAVEINADDR6)
1226 AC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
1227 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
1228 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
1229 AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
1230 AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK)
1231 AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
1232 AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
1233 AC_SUBST(ISC_IPV6_H)
1234 AC_SUBST(ISC_IPV6_O)
1235 AC_SUBST(ISC_ISCIPV6_O)
1236 AC_SUBST(ISC_IPV6_C)
1237 AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
1238 AC_SUBST(ISC_PLATFORM_HAVESCOPEID)
1240 AC_MSG_CHECKING([for struct if_laddrreq])
1242 #include <sys/types.h>
1243 #include <net/if6.h>
1244 ],[ struct if_laddrreq a; ],
1246 ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"],
1248 ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"])
1249 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ)
1251 AC_MSG_CHECKING([for struct if_laddrconf])
1253 #include <sys/types.h>
1254 #include <net/if6.h>
1255 ],[ struct if_laddrconf a; ],
1257 ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"],
1259 ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"])
1260 AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF)
1263 # Check for network functions that are often missing. We do this
1264 # after the libtool checking, so we can put the right suffix on
1265 # the files. It also needs to come after checking for a Kame add-on,
1266 # which provides some (all?) of the desired functions.
1269 AC_MSG_CHECKING([for inet_ntop with IPv6 support])
1271 #include <sys/types.h>
1272 #include <sys/socket.h>
1273 #include <netinet/in.h>
1274 #include <arpa/inet.h>
1276 char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}],
1278 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
1281 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
1282 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
1283 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
1284 [AC_MSG_RESULT(assuming inet_ntop needed)
1285 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
1286 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
1287 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"])
1290 # On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
1291 # addresses with less than four octets, like "1.2.3". Also leading
1292 # zeros should also be rejected.
1294 AC_MSG_CHECKING([for working inet_pton with IPv6 support])
1296 #include <sys/types.h>
1297 #include <sys/socket.h>
1298 #include <netinet/in.h>
1299 #include <arpa/inet.h>
1300 main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
1301 inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
1302 (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
1304 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
1306 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
1307 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
1308 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
1309 [AC_MSG_RESULT(assuming target platform has working inet_pton)
1310 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
1311 [AC_MSG_RESULT(assuming inet_pton needed)
1312 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
1313 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
1314 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
1315 [AC_MSG_RESULT(assuming target platform has working inet_pton)
1316 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"])
1318 AC_MSG_CHECKING([for inet_aton])
1320 #include <sys/types.h>
1321 #include <netinet/in.h>
1322 #include <arpa/inet.h>],
1323 [struct in_addr in; inet_aton(0, &in); return (0);],
1325 ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"],
1328 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_aton.$O"
1329 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_aton.c"
1330 ISC_PLATFORM_NEEDATON="#define ISC_PLATFORM_NEEDATON 1"])
1332 AC_SUBST(ISC_PLATFORM_NEEDNTOP)
1333 AC_SUBST(ISC_PLATFORM_NEEDPTON)
1334 AC_SUBST(ISC_PLATFORM_NEEDATON)
1337 # Look for a 4.4BSD-style sa_len member in struct sockaddr.
1341 # Turn on 4.4BSD style sa_len support.
1342 AC_DEFINE(_SOCKADDR_LEN)
1346 AC_MSG_CHECKING(for sa_len in struct sockaddr)
1348 #include <sys/types.h>
1349 #include <sys/socket.h>],
1350 [struct sockaddr sa; sa.sa_len = 0; return (0);],
1352 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
1353 LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
1355 ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
1356 LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
1357 AC_SUBST(ISC_PLATFORM_HAVESALEN)
1358 AC_SUBST(LWRES_PLATFORM_HAVESALEN)
1361 # Look for a 4.4BSD or 4.3BSD struct msghdr
1363 AC_MSG_CHECKING(for struct msghdr flavor)
1365 #include <sys/types.h>
1366 #include <sys/socket.h>],
1367 [struct msghdr msg; msg.msg_flags = 0; return (0);],
1368 [AC_MSG_RESULT(4.4BSD)
1369 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
1370 [AC_MSG_RESULT(4.3BSD)
1371 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
1372 AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)
1375 # Look for in_port_t.
1377 AC_MSG_CHECKING(for type in_port_t)
1379 #include <sys/types.h>
1380 #include <netinet/in.h>],
1381 [in_port_t port = 25; return (0);],
1383 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
1385 ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
1386 AC_SUBST(ISC_PLATFORM_NEEDPORTT)
1389 # Check for addrinfo
1391 AC_MSG_CHECKING(for struct addrinfo)
1393 #include <netdb.h>],
1394 [struct addrinfo a; return (0);],
1396 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
1397 AC_DEFINE(HAVE_ADDRINFO)],
1399 ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"])
1400 AC_SUBST(ISC_LWRES_NEEDADDRINFO)
1403 # Check for rrsetinfo
1405 AC_MSG_CHECKING(for struct rrsetinfo)
1407 #include <netdb.h>],
1408 [struct rrsetinfo r; return (0);],
1410 ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"],
1412 ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"])
1413 AC_SUBST(ISC_LWRES_NEEDRRSETINFO)
1415 AC_MSG_CHECKING(for int sethostent)
1417 #include <netdb.h>],
1418 [int i = sethostent(0); return(0);],
1420 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
1422 ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
1423 AC_SUBST(ISC_LWRES_SETHOSTENTINT)
1425 AC_MSG_CHECKING(for int endhostent)
1427 #include <netdb.h>],
1428 [int i = endhostent(); return(0);],
1430 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
1432 ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
1433 AC_SUBST(ISC_LWRES_ENDHOSTENTINT)
1435 AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
1438 struct netent *getnetbyaddr(in_addr_t, int);],
1441 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
1443 ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
1444 AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)
1446 AC_MSG_CHECKING(for int setnetent)
1448 #include <netdb.h>],
1449 [int i = setnetent(0); return(0);],
1451 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
1453 ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
1454 AC_SUBST(ISC_LWRES_SETNETENTINT)
1456 AC_MSG_CHECKING(for int endnetent)
1458 #include <netdb.h>],
1459 [int i = endnetent(); return(0);],
1461 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
1463 ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
1464 AC_SUBST(ISC_LWRES_ENDNETENTINT)
1466 AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
1469 struct hostent *gethostbyaddr(const void *, size_t, int);],
1472 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
1474 ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
1475 AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)
1477 AC_MSG_CHECKING(for h_errno in netdb.h)
1479 #include <netdb.h>],
1480 [h_errno = 1; return(0);],
1482 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
1484 ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
1485 AC_SUBST(ISC_LWRES_NEEDHERRNO)
1487 AC_CHECK_FUNC(getipnodebyname,
1488 [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
1489 [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
1490 AC_CHECK_FUNC(getnameinfo,
1491 [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
1492 [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
1493 AC_CHECK_FUNC(getaddrinfo,
1494 [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
1495 AC_DEFINE(HAVE_GETADDRINFO)],
1496 [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
1497 AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
1498 AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
1499 AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
1500 AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
1502 AC_ARG_ENABLE(getifaddrs,
1503 [ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no|glibc]].
1504 glibc: Use getifaddrs() in glibc if you know it supports IPv6.],
1505 want_getifaddrs="$enableval", want_getifaddrs="yes")
1507 case $want_getifaddrs in
1510 # Do we have getifaddrs() ?
1514 # Some recent versions of glibc support getifaddrs() which does not
1515 # provide AF_INET6 addresses while the function provided by the USAGI
1516 # project handles the AF_INET6 case correctly. We need to avoid
1517 # using the former but prefer the latter unless overridden by
1518 # --enable-getifaddrs=glibc.
1519 if test $want_getifaddrs = glibc
1521 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
1524 LIBS="-L/usr/local/v6/lib $LIBS"
1525 AC_CHECK_LIB(inet6, getifaddrs,
1526 LIBS="$LIBS -linet6"
1527 AC_DEFINE(HAVE_GETIFADDRS),
1532 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
1541 # Look for a sysctl call to get the list of network interfaces.
1543 case $ac_cv_header_sys_sysctl_h in
1545 AC_MSG_CHECKING(for interface list sysctl)
1546 AC_EGREP_CPP(found_rt_iflist, [
1547 #include <sys/param.h>
1548 #include <sys/sysctl.h>
1549 #include <sys/socket.h>
1550 #ifdef NET_RT_IFLIST
1555 AC_DEFINE(HAVE_IFLIST_SYSCTL)],
1556 [AC_MSG_RESULT(no)])
1561 # Check for some other useful functions that are not ever-present.
1564 # We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC
1565 # because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77
1566 # reportedly defines strsep() without declaring it in <string.h> when
1567 # -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and
1568 # AC_CHECK_FUNC() incorrectly succeeds because it declares
1569 # the function itself.
1570 AC_MSG_CHECKING(for correctly declared strsep())
1571 AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");],
1572 [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
1573 [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
1574 AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
1576 AC_CHECK_FUNC(memmove,
1577 [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"],
1578 [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"])
1579 AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE)
1581 AC_CHECK_FUNC(strtoul,
1582 [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL"
1583 LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL"
1585 [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1"
1586 LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1"
1587 GENRANDOMLIB='${ISCLIBS}'])
1588 AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL)
1589 AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL)
1590 AC_SUBST(GENRANDOMLIB)
1592 AC_CHECK_FUNC(strlcpy,
1593 [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"],
1594 [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"])
1595 AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY)
1597 AC_CHECK_FUNC(strlcat,
1598 [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"],
1599 [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"])
1600 AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT)
1604 AC_MSG_CHECKING(sprintf)
1608 [ char buf[2]; return(*sprintf(buf,"x"));],
1610 ISC_PRINT_OBJS="print.$O"
1611 ISC_PRINT_SRCS="print.c"
1612 ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
1613 LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
1615 [ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF"
1616 LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"]
1618 AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
1619 AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
1621 AC_CHECK_FUNC(vsnprintf,
1622 [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"
1623 LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"],
1624 [ISC_PRINT_OBJS="print.$O"
1625 ISC_PRINT_SRCS="print.c"
1626 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
1627 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
1628 AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
1629 AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
1630 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
1631 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
1633 AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
1635 AC_SUBST(ISC_EXTRA_OBJS)
1636 AC_SUBST(ISC_EXTRA_SRCS)
1638 # Determine the printf format characters to use when printing
1639 # values of type isc_int64_t. This will normally be "ll", but where
1640 # the compiler treats "long long" as a alias for "long" and printf
1641 # doesn't know about "long long" use "l". Hopefully the sprintf
1642 # will produce a inconsistant result in the later case. If the compiler
1643 # fails due to seeing "%lld" we fall back to "l".
1645 # Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses
1646 # %ld even for (long long)/
1648 # Win32 uses "%I64d", but that's defined elsewhere since we don't use
1649 # configure on Win32.
1651 AC_MSG_CHECKING(printf format modifier for 64-bit integers)
1655 long long int j = 0;
1658 sprintf(buf, "%lld", j);
1659 exit((sizeof(long long int) != sizeof(long int))? 0 :
1660 (strcmp(buf, "0") != 0));
1664 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
1665 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'],
1667 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
1668 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'],
1669 [AC_MSG_RESULT(assuming target platform uses ll)
1670 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
1671 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'])
1672 AC_SUBST(ISC_PLATFORM_QUADFORMAT)
1673 AC_SUBST(LWRES_PLATFORM_QUADFORMAT)
1678 AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT))
1679 AC_ARG_ENABLE(linux-caps,
1680 [ --disable-linux-caps disable linux capabilities])
1681 case "$enable_linux_caps" in
1683 AC_CHECK_HEADERS(linux/capability.h)
1688 AC_CHECK_HEADERS(sys/prctl.h)
1690 AC_CHECK_HEADERS(sys/un.h,
1691 ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
1693 ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
1695 AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
1699 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
1700 [Define if connect does not honour the permission on the UNIX domain socket.])
1703 AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
1704 [Define if connect does not honour the permission on the UNIX domain socket.])
1711 AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET))
1713 AC_MSG_CHECKING(for optarg decarartion)
1718 [AC_MSG_RESULT(yes)],
1720 GEN_NEED_OPTARG="-DNEED_OPTARG=1"
1721 AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])])
1724 # BSD/OS, and perhaps some others, don't define rlim_t.
1726 AC_MSG_CHECKING(for type rlim_t)
1728 #include <sys/types.h>
1729 #include <sys/time.h>
1730 #include <sys/resource.h>],
1731 [rlim_t rl = 19671212; return (0);],
1733 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"],
1736 AC_MSG_CHECKING(type of rlim_cur)
1738 #include <sys/types.h>
1739 #include <sys/time.h>
1740 #include <sys/resource.h>
1741 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
1743 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
1746 #include <sys/types.h>
1747 #include <sys/time.h>
1748 #include <sys/resource.h>
1749 main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
1750 [AC_MSG_RESULT(long int)
1751 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
1754 #include <sys/types.h>
1755 #include <sys/time.h>
1756 #include <sys/resource.h>
1757 main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
1758 [AC_MSG_RESULT(long long int)
1759 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
1760 [AC_MSG_ERROR([unable to determine sizeof rlim_cur])
1761 ],[AC_MSG_ERROR(this cannot happen)])
1762 ],[AC_MSG_ERROR(this cannot happen)])
1764 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
1765 AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming long long int)])
1767 AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
1770 # Compaq TruCluster requires more code for handling cluster IP aliases
1774 AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS")
1775 AC_CHECK_FUNC(clua_getaliasaddress,
1776 AC_DEFINE(HAVE_TRUCLUSTER, 1,
1777 [Define if running under Compaq TruCluster]))
1784 # Some hosts need msg_namelen to match the size of the socket structure.
1785 # Some hosts don't set msg_namelen appropriately on return from recvmsg().
1789 AC_DEFINE(BROKEN_RECVMSG, 1,
1790 [Define if recvmsg() does not meet all of the BSD socket API specifications.])
1795 # Microsoft has their own way of handling shared libraries that requires
1796 # additional qualifiers on extern variables. Unix systems don't need it.
1798 AC_SUBST(ISC_PLATFORM_USEDECLSPEC)
1799 ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC"
1800 AC_SUBST(LWRES_PLATFORM_USEDECLSPEC)
1801 LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC"
1804 # Random remaining OS-specific issues involving compiler warnings.
1805 # XXXDCL print messages to indicate some compensation is being done?
1807 AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
1808 ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"
1812 hack_shutup_pthreadonceinit=yes
1815 hack_shutup_sputaux=yes
1818 hack_shutup_sigwait=yes
1819 hack_shutup_sputaux=yes
1822 hack_shutup_stdargcast=yes
1825 hack_shutup_pthreadonceinit=yes
1828 hack_shutup_pthreadonceinit=yes
1832 case "$hack_shutup_pthreadonceinit" in
1835 # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
1837 ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
1841 case "$hack_shutup_sigwait" in
1844 # Shut up a -Wmissing-prototypes warning for sigwait().
1846 AC_DEFINE(SHUTUP_SIGWAIT)
1850 case "$hack_shutup_sputaux" in
1853 # Shut up a -Wmissing-prototypes warning from <stdio.h>.
1855 AC_DEFINE(SHUTUP_SPUTAUX)
1859 case "$hack_shutup_stdargcast" in
1862 # Shut up a -Wcast-qual warning from va_start().
1864 AC_DEFINE(SHUTUP_STDARG_CAST)
1869 # Check for if_nametoindex() for IPv6 scoped addresses support
1871 AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
1872 ac_cv_have_if_nametoindex=no)
1873 case $ac_cv_have_if_nametoindex in
1877 AC_CHECK_LIB(ipv6, if_nametoindex,
1878 ac_cv_have_if_nametoindex=yes
1879 LIBS="-lipv6 $LIBS",)
1883 case $ac_cv_have_if_nametoindex in
1885 ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1"
1888 ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX"
1891 AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX)
1894 # Machine architecture dependent features
1896 AC_ARG_ENABLE(atomic,
1897 [ --enable-atomic enable machine specific atomic operations
1898 [[default=autodetect]]],
1899 enable_atomic="$enableval",
1900 enable_atomic="autodetect")
1901 case "$enable_atomic" in
1911 ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM"
1912 if test "$use_atomic" = "yes"; then
1913 AC_MSG_CHECKING([architecture type for atomic operations])
1914 have_atomic=yes # set default
1917 # XXX: some old x86 architectures actually do not support
1918 # (some of) these operations. Do we need stricter checks?
1921 exit((sizeof(void *) == 8) ? 0 : 1);
1937 mips-*|mipsel-*|mips64-*|mips64el-*)
1948 AC_MSG_RESULT($arch)
1951 if test "$have_atomic" = "yes"; then
1952 AC_MSG_CHECKING([compiler support for inline assembly code])
1955 # Check whether the compiler supports the assembly syntax we provide.
1956 if test "X$GCC" = "Xyes"; then
1957 # GCC's ASM extension always works
1959 if test $arch = "x86_64"; then
1960 # We can share the same code for gcc with x86_32
1963 if test $arch = "powerpc"; then
1965 # The MacOS (and maybe others) uses "r0" for register
1966 # zero. Under linux/ibm it is "0" for register 0.
1967 # Probe to see if we have a MacOS style assembler.
1969 AC_MSG_CHECKING([Checking for MacOS style assembler syntax])
1971 __asm__ volatile ("li r0, 0x0\n"::);
1975 ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1"
1976 ], [AC_MSG_RESULT(no)])
1981 # Tru64 compiler has its own syntax for inline
1985 #error "unexpected compiler"
1997 ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1"
2000 ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1"
2007 # See if the generic __asm function works. If not,
2008 # we need to disable the atomic operations.
2012 [compiler="standard"
2013 ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"],
2014 [compiler="not supported (atomic operations disabled)"
2020 AC_MSG_RESULT($compiler)
2023 if test "$have_atomic" = "yes"; then
2024 ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1"
2025 ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1"
2026 ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1"
2028 ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD"
2029 ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG"
2030 ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE"
2033 AC_SUBST(ISC_PLATFORM_HAVEXADD)
2034 AC_SUBST(ISC_PLATFORM_HAVECMPXCHG)
2035 AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE)
2037 AC_SUBST(ISC_PLATFORM_USEGCCASM)
2038 AC_SUBST(ISC_PLATFORM_USEOSFASM)
2039 AC_SUBST(ISC_PLATFORM_USESTDASM)
2040 AC_SUBST(ISC_PLATFORM_USEMACASM)
2043 AC_SUBST(ISC_ARCH_DIR)
2046 # The following sets up how non-blocking i/o is established.
2047 # Sunos, cygwin and solaris 2.x (x<5) require special handling.
2050 *-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
2051 *-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
2052 *-solaris2.[[01234]])
2053 AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
2054 AC_DEFINE(USE_FIONBIO_IOCTL, 1,
2055 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
2057 *) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
2058 [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
2062 # Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
2063 # This prevents the source address being set.
2066 *-solaris2.[[012345]]|*-solaris2.5.1)
2067 AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
2068 [Define if you cannot bind() before connect() for TCP sockets.])
2072 # The following sections deal with tools used for formatting
2073 # the documentation. They are all optional, unless you are
2074 # a developer editing the documentation source.
2081 AC_PATH_PROGS(LATEX, latex, latex)
2084 AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
2091 AC_PATH_PROGS(W3M, w3m, w3m)
2095 # Look for xsltproc (libxslt)
2098 AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
2102 # Look for xmllint (libxml2)
2105 AC_PATH_PROG(XMLLINT, xmllint, xmllint)
2109 # Subroutine for searching for an ordinary file (e.g., a stylesheet)
2110 # in a number of directories:
2112 # NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
2114 # If the file FILENAME is found in one of the DIRECTORIES, the shell
2115 # variable VARIABLE is defined to its absolute pathname. Otherwise,
2116 # it is set to FILENAME, with no directory prefix (that's not terribly
2117 # useful, but looks less confusing in substitutions than leaving it
2118 # empty). The variable VARIABLE will be substituted into output files.
2121 AC_DEFUN(NOM_PATH_FILE, [
2123 AC_MSG_CHECKING(for $2)
2134 if test "X[$]$1" = "X"
2136 AC_MSG_RESULT("not found");
2143 # Look for Docbook-XSL stylesheets. Location probably varies by
2144 # system. Guessing where it might be found, based on where SGML stuff
2145 # lives on some systems. FreeBSD is the only one I'm sure of at the
2149 docbook_xsl_trees="/usr/pkg/share/xsl /usr/local/share/xsl /usr/share/xsl"
2152 # Look for stylesheets we need.
2155 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, docbook/html/docbook.xsl, $docbook_xsl_trees)
2156 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, docbook/xhtml/docbook.xsl, $docbook_xsl_trees)
2157 NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, docbook/manpages/docbook.xsl, $docbook_xsl_trees)
2158 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, docbook/html/chunk.xsl, $docbook_xsl_trees)
2159 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, docbook/xhtml/chunk.xsl, $docbook_xsl_trees)
2160 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, docbook/html/chunktoc.xsl, $docbook_xsl_trees)
2161 NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, docbook/xhtml/chunktoc.xsl, $docbook_xsl_trees)
2162 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, docbook/html/maketoc.xsl, $docbook_xsl_trees)
2163 NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, docbook/xhtml/maketoc.xsl, $docbook_xsl_trees)
2166 # Same dance for db2latex
2168 # No idea where this lives except on FreeBSD.
2171 db2latex_xsl_trees="/usr/local/share"
2174 # Look for stylesheets we need.
2177 NOM_PATH_FILE(XSLT_DB2LATEX_STYLE, db2latex/xsl/docbook.xsl, $db2latex_xsl_trees)
2180 # Look for "admonition" image directory. Can't use NOM_PATH_FILE()
2181 # because it's a directory, so just do the same things, inline.
2184 AC_MSG_CHECKING(for db2latex/xsl/figures)
2185 for d in $db2latex_xsl_trees
2187 dd=$d/db2latex/xsl/figures
2190 XSLT_DB2LATEX_ADMONITIONS=$dd
2195 if test "X$XSLT_DB2LATEX_ADMONITIONS" = "X"
2197 AC_MSG_RESULT(not found)
2198 XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures
2200 AC_SUBST(XSLT_DB2LATEX_ADMONITIONS)
2206 [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
2207 use_idn="$withval", use_idn="no")
2210 if test X$prefix = XNONE ; then
2225 AC_ARG_WITH(libiconv,
2226 [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]],
2227 use_libiconv="$withval", use_libiconv="no")
2228 case "$use_libiconv" in
2230 if test X$prefix = XNONE ; then
2231 iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
2233 iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
2240 iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
2245 [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]],
2246 iconvlib="$withval")
2257 [ --with-idnlib=ARG specify libidnkit],
2258 idnlib="$withval", idnlib="no")
2259 if test "$idnlib" = yes; then
2260 AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
2264 if test "$use_idn" != no; then
2265 AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
2266 STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
2267 if test "$idnlib" != no; then
2268 IDNLIBS="$idnlib $iconvlib"
2270 IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
2275 AC_CHECK_HEADERS(locale.h)
2276 AC_CHECK_FUNCS(setlocale)
2281 AC_SUBST(BIND9_TOP_BUILDDIR)
2282 BIND9_TOP_BUILDDIR=`pwd`
2284 AC_SUBST(BIND9_ISC_BUILDINCLUDE)
2285 AC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
2286 AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
2287 AC_SUBST(BIND9_DNS_BUILDINCLUDE)
2288 AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
2289 AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
2290 if test "X$srcdir" != "X"; then
2291 BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
2292 BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
2293 BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
2294 BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
2295 BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
2296 BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
2298 BIND9_ISC_BUILDINCLUDE=""
2299 BIND9_ISCCC_BUILDINCLUDE=""
2300 BIND9_ISCCFG_BUILDINCLUDE=""
2301 BIND9_DNS_BUILDINCLUDE=""
2302 BIND9_LWRES_BUILDINCLUDE=""
2303 BIND9_BIND9_BUILDINCLUDE=""
2306 AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
2307 BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
2309 AC_SUBST_FILE(BIND9_MAKE_RULES)
2310 BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
2313 BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}"
2314 AC_SUBST(BIND9_VERSION)
2316 AC_SUBST_FILE(LIBISC_API)
2317 LIBISC_API=$srcdir/lib/isc/api
2319 AC_SUBST_FILE(LIBISCCC_API)
2320 LIBISCCC_API=$srcdir/lib/isccc/api
2322 AC_SUBST_FILE(LIBISCCFG_API)
2323 LIBISCCFG_API=$srcdir/lib/isccfg/api
2325 AC_SUBST_FILE(LIBDNS_API)
2326 LIBDNS_API=$srcdir/lib/dns/api
2328 AC_SUBST_FILE(LIBBIND9_API)
2329 LIBBIND9_API=$srcdir/lib/bind9/api
2331 AC_SUBST_FILE(LIBLWRES_API)
2332 LIBLWRES_API=$srcdir/lib/lwres/api
2335 # Configure any DLZ drivers.
2337 # If config.dlz.in selects one or more DLZ drivers, it will set
2338 # USE_DLZ to a non-empty value, which will be our clue to
2339 # enable the DLZ core functions.
2341 # This section has to come after the libtool stuff because it needs to
2342 # know how to name the driver object files.
2346 DLZ_DRIVER_INCLUDES=""
2351 sinclude(contrib/dlz/config.dlz.in)
2353 AC_MSG_CHECKING(for DLZ)
2355 if test -n "$USE_DLZ"
2358 USE_DLZ="-DDLZ $USE_DLZ"
2359 DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
2360 AC_CONFIG_FILES([$DLZ_DRIVER_RULES])
2363 DLZ_DRIVER_RULES=/dev/null
2367 AC_SUBST(DLZ_DRIVER_INCLUDES)
2368 AC_SUBST(DLZ_DRIVER_LIBS)
2369 AC_SUBST(DLZ_DRIVER_SRCS)
2370 AC_SUBST(DLZ_DRIVER_OBJS)
2371 AC_SUBST_FILE(DLZ_DRIVER_RULES)
2373 if test "$cross_compiling" = "yes"; then
2374 if test -z "$BUILD_CC"; then
2375 AC_ERROR([BUILD_CC not set])
2377 BUILD_CFLAGS="$BUILD_CFLAGS"
2378 BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
2379 BUILD_LDFLAGS="$BUILD_LDFLAGS"
2380 BUILD_LIBS="$BUILD_LIBS"
2383 BUILD_CFLAGS="$CFLAGS"
2384 BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
2385 BUILD_LDFLAGS="$LDFLAGS"
2390 AC_SUBST(BUILD_CFLAGS)
2391 AC_SUBST(BUILD_CPPFLAGS)
2392 AC_SUBST(BUILD_LDFLAGS)
2393 AC_SUBST(BUILD_LIBS)
2396 # Commands to run at the end of config.status.
2397 # Don't just put these into configure, it won't work right if somebody
2398 # runs config.status directly (which autoconf allows).
2403 [chmod a+x isc-config.sh])
2406 # Files to configure. These are listed here because we used to
2407 # specify them as arguments to AC_OUTPUT. It's (now) ok to move these
2408 # elsewhere if there's a good reason for doing so.
2417 lib/isc/include/Makefile
2418 lib/isc/include/isc/Makefile
2419 lib/isc/include/isc/platform.h
2420 lib/isc/unix/Makefile
2421 lib/isc/unix/include/Makefile
2422 lib/isc/unix/include/isc/Makefile
2423 lib/isc/nls/Makefile
2424 lib/isc/$thread_dir/Makefile
2425 lib/isc/$thread_dir/include/Makefile
2426 lib/isc/$thread_dir/include/isc/Makefile
2428 lib/isccc/include/Makefile
2429 lib/isccc/include/isccc/Makefile
2431 lib/isccfg/include/Makefile
2432 lib/isccfg/include/isccfg/Makefile
2434 lib/dns/include/Makefile
2435 lib/dns/include/dns/Makefile
2436 lib/dns/include/dst/Makefile
2438 lib/bind9/include/Makefile
2439 lib/bind9/include/bind9/Makefile
2441 lib/lwres/include/Makefile
2442 lib/lwres/include/lwres/Makefile
2443 lib/lwres/include/lwres/netdb.h
2444 lib/lwres/include/lwres/platform.h
2445 lib/lwres/man/Makefile
2446 lib/lwres/unix/Makefile
2447 lib/lwres/unix/include/Makefile
2448 lib/lwres/unix/include/lwres/Makefile
2450 lib/tests/include/Makefile
2451 lib/tests/include/tests/Makefile
2455 bin/named/unix/Makefile
2457 bin/rndc/unix/Makefile
2459 bin/nsupdate/Makefile
2461 bin/tests/names/Makefile
2462 bin/tests/master/Makefile
2463 bin/tests/rbt/Makefile
2464 bin/tests/db/Makefile
2465 bin/tests/tasks/Makefile
2466 bin/tests/timers/Makefile
2467 bin/tests/dst/Makefile
2468 bin/tests/mem/Makefile
2469 bin/tests/net/Makefile
2470 bin/tests/sockaddr/Makefile
2471 bin/tests/system/Makefile
2472 bin/tests/system/conf.sh
2473 bin/tests/system/lwresd/Makefile
2474 bin/tests/system/tkey/Makefile
2475 bin/tests/headerdep_test.sh
2482 doc/xsl/isc-docbook-chunk.xsl
2483 doc/xsl/isc-docbook-html.xsl
2484 doc/xsl/isc-docbook-latex.xsl
2485 doc/xsl/isc-manpage.xsl
2494 if test "X$OPENSSL_WARNING" != "X"; then
2496 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2497 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2499 WARNING Your OpenSSL crypto library may be vulnerable to WARNING
2500 WARNING one or more of the the following known security WARNING
2501 WARNING flaws: WARNING
2503 WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING
2504 WARNING CVE-2006-2940. WARNING
2506 WARNING It is recommended that you upgrade to OpenSSL WARNING
2507 WARNING version 0.9.8d/0.9.7l (or greater). WARNING
2509 WARNING You can disable this warning by specifying: WARNING
2511 WARNING --disable-openssl-version-check WARNING
2513 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2514 WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
2518 # Tell Emacs to edit this file in shell mode.