1# Copyright (C) 2004-2015 Internet Systems Consortium, Inc. ("ISC") 2# Copyright (C) 1998-2003 Internet Software Consortium. 3# 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. 7# 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. 15 16# Copyright (C) 1998-2003 Internet Software Consortium. 17# 18# Permission to use, copy, modify, and/or distribute this software for any 19# purpose with or without fee is hereby granted, provided that the above 20# copyright notice and this permission notice appear in all copies. 21# 22# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 23# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 24# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 25# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 26# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 27# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 28# PERFORMANCE OF THIS SOFTWARE. 29 30dnl 31AC_DIVERT_PUSH(1)dnl 32esyscmd([sed -e 's/^/# /' -e '/Portions of this code/,$d' COPYRIGHT])dnl 33AC_DIVERT_POP()dnl 34 35AC_INIT(BIND, [9.10], [bind9-bugs@isc.org], [], [https://www.isc.org/downloads/BIND/]) 36AC_PREREQ(2.59) 37 38AC_CONFIG_HEADER(config.h) 39AC_CONFIG_MACRO_DIR([m4]) 40 41AC_CANONICAL_HOST 42 43AC_PROG_MAKE_SET 44 45# 46# GNU libtool support 47# 48case $build_os in 49sunos*) 50 # Just set the maximum command line length for sunos as it otherwise 51 # takes a exceptionally long time to work it out. Required for libtool. 52 53 lt_cv_sys_max_cmd_len=4096; 54 ;; 55esac 56 57AC_PROG_LIBTOOL 58AC_PROG_INSTALL 59AC_PROG_LN_S 60 61AC_SUBST(STD_CINCLUDES) 62AC_SUBST(STD_CDEFINES) 63AC_SUBST(STD_CWARNINGS) 64AC_SUBST(CCOPT) 65AC_SUBST(CCNOOPT) 66AC_SUBST(BACKTRACECFLAGS) 67 68# Warn if the user specified libbind, which is now deprecated 69AC_ARG_ENABLE(libbind, [ --enable-libbind deprecated]) 70 71case "$enable_libbind" in 72 yes) 73 AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution. 74It is available from http://www.isc.org as a separate download.]) 75 ;; 76 no|'') 77 ;; 78esac 79 80AC_ARG_ENABLE(warn_shadow, [ --enable-warn-shadow turn on -Wshadow when compiling]) 81 82AC_ARG_ENABLE(warn_error, [ --enable-warn-error turn on -Werror when compiling]) 83 84AC_ARG_ENABLE(developer, [ --enable-developer enable developer build settings]) 85case "$enable_developer" in 86yes) 87 STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1" 88 test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes 89 test "${with_atf+set}" = set || with_atf=yes 90 test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes 91 test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes 92 test "${enable_symtable+set}" = set || enable_symtable=all 93 test "${enable_sit+set}" = set || enable_sit=yes 94 test "${enable_warn_error+set}" = set || enable_warn_error=yes 95 test "${enable_warn_shadow+set}" = set || enable_warn_shadow=yes 96 ;; 97esac 98 99#libseccomp sandboxing 100AC_ARG_ENABLE(seccomp, 101 AS_HELP_STRING([--enable-seccomp],[enable support for libseccomp system call filtering [default=no]])) 102case "$enable_seccomp" in 103 yes) 104 case $host_os in 105 linux*) 106 ;; 107 *) 108 AC_MSG_WARN([seccomp is not supported on non-linux platforms; disabling it]) 109 enable_seccomp=no 110 ;; 111 esac 112 AC_SEARCH_LIBS(seccomp_init, [seccomp]) 113 if test "$ac_cv_search_seccomp_init" = "-lseccomp" ; then 114 AC_TRY_RUN([ 115 #include <stdio.h> 116 #include <stdlib.h> 117 #include <errno.h> 118 #include <sys/prctl.h> 119 #include <linux/seccomp.h> 120 121 int main(void) 122 { 123 int ret; 124 125 ret = prctl(PR_GET_SECCOMP, 0, 0, 0, 0); 126 if (ret < 0) { 127 switch (errno) { 128 case ENOSYS: 129 return 1; 130 case EINVAL: 131 return 1; 132 default: 133 return 1; 134 } 135 } 136 ret = 137 prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0); 138 if (ret < 0) { 139 switch (errno) { 140 case EINVAL: 141 return 1; 142 case EFAULT: 143 return 0; 144 default: 145 return 1; 146 } 147 } 148 return 1; 149 } 150 ] 151 , AC_DEFINE([HAVE_LIBSECCOMP], 1, 152 [Define to use libseccomp system call filtering.]) 153 , [] 154 ) 155 fi 156 ;; 157 *) 158 ;; 159esac 160 161# 162# Make very sure that these are the first files processed by 163# config.status, since we use the processed output as the input for 164# AC_SUBST_FILE() substitutions in other files. 165# 166AC_CONFIG_FILES([make/rules make/includes]) 167 168AC_PATH_PROG(AR, ar) 169ARFLAGS="cruv" 170AC_SUBST(AR) 171AC_SUBST(ARFLAGS) 172 173# The POSIX ln(1) program. Non-POSIX systems may substitute 174# "copy" or something. 175LN=ln 176AC_SUBST(LN) 177 178case "$AR" in 179 "") 180 AC_MSG_ERROR([ 181ar program not found. Please fix your PATH to include the directory in 182which ar resides, or set AR in the environment with the full path to ar. 183]) 184 185 ;; 186esac 187 188# 189# Etags. 190# 191AC_PATH_PROGS(ETAGS, etags emacs-etags) 192 193# 194# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of 195# GNU emacs etags, and it requires the -L flag. 196# 197if test "X$ETAGS" != "X"; then 198 AC_MSG_CHECKING(for Exuberant Ctags etags) 199 if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then 200 AC_MSG_RESULT(yes) 201 ETAGS="$ETAGS -L" 202 else 203 AC_MSG_RESULT(no) 204 fi 205fi 206AC_SUBST(ETAGS) 207 208# 209# Perl is optional; it is used only by some of the system test scripts. 210# Note: the backtrace feature (see below) uses perl to build the symbol table, 211# but it still compiles without perl, in which case an empty table will be used. 212# 213AC_PATH_PROGS(PERL, perl5 perl) 214AC_SUBST(PERL) 215 216# 217# Python is also optional; it is used by the tools in bin/python. 218# If python is unavailable, we simply don't build those. 219# 220AC_ARG_WITH(python, 221[ --with-python=PATH specify path to python interpreter], 222 use_python="$withval", use_python="unspec") 223 224python="python python3 python3.4 python3.3 python3.2 python3.1 python3.0 python2 python2.7 python2.6 python2.5 python2.4" 225testscript='try: import argparse 226except: exit(1)' 227case "$use_python" in 228 no) 229 AC_MSG_CHECKING([for python support]) 230 AC_MSG_RESULT(disabled) 231 ;; 232 unspec|yes|*) 233 case "$use_python" in 234 unspec|yes|'') 235 for p in $python 236 do 237 AC_PATH_PROGS(PYTHON, $p) 238 if test "X$PYTHON" == "X"; then 239 continue; 240 fi 241 AC_MSG_CHECKING([python module 'argparse']) 242 if ${PYTHON:-false} -c "$testscript"; then 243 AC_MSG_RESULT([found, using $PYTHON]) 244 break 245 fi 246 AC_MSG_RESULT([not found]) 247 unset ac_cv_path_PYTHON 248 unset PYTHON 249 done 250 if test "X$PYTHON" == "X" 251 then 252 AC_MSG_CHECKING([for python support]) 253 case "$use_python" in 254 unspec) 255 AC_MSG_RESULT(disabled) 256 ;; 257 yes) 258 AC_MSG_ERROR([missing python]) 259 ;; 260 esac 261 fi 262 ;; 263 *) 264 case "$use_python" in 265 /*) 266 PYTHON="$use_python" 267 ;; 268 *) 269 AC_PATH_PROGS(PYTHON, $use_python) 270 ;; 271 esac 272 AC_MSG_CHECKING([python module 'argparse']) 273 if ${PYTHON:-false} -c "$testscript"; then 274 AC_MSG_RESULT([found, using $PYTHON]) 275 break 276 else 277 AC_MSG_ERROR([not found]) 278 fi 279 ;; 280 esac 281 ;; 282esac 283 284PYTHON_TOOLS='' 285CHECKDS='' 286COVERAGE='' 287if test "X$PYTHON" != "X"; then 288 PYTHON_TOOLS=python 289 CHECKDS=checkds 290 COVERAGE=coverage 291fi 292AC_SUBST(CHECKDS) 293AC_SUBST(COVERAGE) 294AC_SUBST(PYTHON_TOOLS) 295 296# 297# Special processing of paths depending on whether --prefix, 298# --sysconfdir or --localstatedir arguments were given. What's 299# desired is some compatibility with the way previous versions 300# of BIND built; they defaulted to /usr/local for most parts of 301# the installation, but named.boot/named.conf was in /etc 302# and named.pid was in /var/run. 303# 304# So ... if none of --prefix, --sysconfdir or --localstatedir are 305# specified, set things up that way. If --prefix is given, use 306# it for sysconfdir and localstatedir the way configure normally 307# would. To change the prefix for everything but leave named.conf 308# in /etc or named.pid in /var/run, then do this the usual configure way: 309# ./configure --prefix=/somewhere --sysconfdir=/etc 310# ./configure --prefix=/somewhere --localstatedir=/var 311# 312# To put named.conf and named.pid in /usr/local with everything else, 313# set the prefix explicitly to /usr/local even though that's the default: 314# ./configure --prefix=/usr/local 315# 316case "$prefix" in 317 NONE) 318 case "$sysconfdir" in 319 '${prefix}/etc') 320 sysconfdir=/etc 321 ;; 322 esac 323 case "$localstatedir" in 324 '${prefix}/var') 325 localstatedir=/var 326 ;; 327 esac 328 ;; 329esac 330 331# 332# Make sure INSTALL uses an absolute path, else it will be wrong in all 333# Makefiles, since they use make/rules.in and INSTALL will be adjusted by 334# configure based on the location of the file where it is substituted. 335# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate 336# subdirectory of install-sh, This relative path will be wrong for all 337# directories more than one level down from install-sh. 338# 339case "$INSTALL" in 340 /*) 341 ;; 342 *) 343 # 344 # Not all systems have dirname. 345 # 346 changequote({, }) 347 ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`" 348 changequote([, ]) 349 350 ac_prog="`echo $INSTALL | sed 's%.*/%%'`" 351 test "$ac_dir" = "$ac_prog" && ac_dir=. 352 test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`" 353 INSTALL="$ac_dir/$ac_prog" 354 ;; 355esac 356 357# 358# On these hosts, we really want to use cc, not gcc, even if it is 359# found. The gcc that these systems have will not correctly handle 360# pthreads. 361# 362# However, if the user sets $CC to be something, let that override 363# our change. 364# 365if test "X$CC" = "X" ; then 366 case "$host" in 367 *-dec-osf*) 368 CC="cc" 369 ;; 370 *-solaris*) 371 # Use Sun's cc if it is available, but watch 372 # out for /usr/ucb/cc; it will never be the right 373 # compiler to use. 374 # 375 # If setting CC here fails, the AC_PROG_CC done 376 # below might still find gcc. 377 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" 378 for ac_dir in $PATH; do 379 test -z "$ac_dir" && ac_dir=. 380 case "$ac_dir" in 381 /usr/ucb) 382 # exclude 383 ;; 384 *) 385 if test -f "$ac_dir/cc"; then 386 CC="$ac_dir/cc" 387 break 388 fi 389 ;; 390 esac 391 done 392 IFS="$ac_save_ifs" 393 ;; 394 *-hp-hpux*) 395 CC="cc" 396 ;; 397 mips-sgi-irix*) 398 CC="cc" 399 ;; 400 esac 401fi 402 403AC_PROG_CC 404 405# 406# gcc's optimiser is broken at -02 for ultrasparc 407# 408if test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then 409 case "$host" in 410 sparc-*) 411 CCFLAGS="-g -O1" 412 ;; 413 esac 414fi 415 416# 417# OS dependent CC flags 418# 419case "$host" in 420 # OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or 421 # -D_XOPEN_SOURCE_EXTENDED. 422 *-dec-osf*) 423 STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET" 424 CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET" 425 ;; 426 #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros 427 *-hp-hpux*) 428 STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED" 429 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" 430 LIBS="-lxnet $LIBS" 431 ;; 432 # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros 433 *-solaris*) 434 STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__" 435 CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__" 436 ;; 437 # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides 438 # parts of the IPv6 Advanced Socket API as a result. This is stupid 439 # as it breaks how the two halves (Basic and Advanced) of the IPv6 440 # Socket API were designed to be used but we have to live with it. 441 # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API. 442 *-linux* | *-kfreebsd*-gnu*) 443 STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE" 444 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" 445 ;; 446 # 447 # Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use. 448 # Setting this is sufficient to select the correct behavior for BIND 9. 449 # 450 *-darwin*) 451 STD_CDEFINES="$STD_CDEFINES -D__APPLE_USE_RFC_3542" 452 CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542" 453 ;; 454esac 455 456# 457# CCNOOPT defaults to -O0 on gcc and disables optimization when is last 458# 459if test "X$CCNOOPT" = "X" -a "X$GCC" = "Xyes"; then 460 CCNOOPT="-O0" 461fi 462 463AC_HEADER_STDC 464 465AC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/mman.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h sys/socket.h net/route.h linux/netlink.h linux/rtnetlink.h,,, 466[$ac_includes_default 467#ifdef HAVE_SYS_PARAM_H 468# include <sys/param.h> 469#endif 470#ifdef HAVE_SYS_SOCKET_H 471# include <sys/socket.h> 472#endif 473]) 474 475AC_C_CONST 476AC_C_INLINE 477AC_C_VOLATILE 478AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME)) 479AC_C_FLEXIBLE_ARRAY_MEMBER 480 481# 482# Check for the existence of mmap to enable the fast format zones 483# 484AC_CHECK_FUNCS(mmap) 485 486# 487# Older versions of HP/UX don't define seteuid() and setegid() 488# 489AC_CHECK_FUNCS(seteuid setresuid) 490AC_CHECK_FUNCS(setegid setresgid) 491 492# BSDI doesn't have ftello fseeko 493AC_CHECK_FUNCS(ftello fseeko) 494 495# 496# UnixWare 7.1.1 with the feature supplement to the UDK compiler 497# is reported to not support "static inline" (RT #1212). 498# 499AC_MSG_CHECKING(for static inline breakage) 500AC_TRY_COMPILE([ 501 static inline int foo1() { 502 return 0; 503 } 504 505 static inline int foo2() { 506 return foo1(); 507 } 508 ], [foo1();], 509 [AC_MSG_RESULT(no)], 510 [AC_MSG_RESULT(yes) 511 AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])]) 512 513AC_TYPE_SIZE_T 514AC_CHECK_TYPE(ssize_t, int) 515AC_CHECK_TYPE(uintptr_t,unsigned long) 516AC_CHECK_TYPE(socklen_t, 517[AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)], 518[ 519AC_TRY_COMPILE( 520[ 521#include <sys/types.h> 522#include <sys/socket.h> 523int getsockname(int, struct sockaddr *, size_t *); 524],[], 525[AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)], 526[AC_DEFINE(ISC_SOCKADDR_LEN_T, int)]) 527], 528[ 529#include <sys/types.h> 530#include <sys/socket.h> 531]) 532AC_SUBST(ISC_SOCKADDR_LEN_T) 533AC_HEADER_TIME 534AC_MSG_CHECKING(for long long) 535AC_TRY_COMPILE([],[long long i = 0; return (0);], 536 [AC_MSG_RESULT(yes) 537 ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"], 538 [AC_MSG_RESULT(no) 539 ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"]) 540AC_SUBST(ISC_PLATFORM_HAVELONGLONG) 541 542# 543# check for GCC noreturn attribute 544# 545AC_MSG_CHECKING(for GCC noreturn attribute) 546AC_TRY_COMPILE([],[void foo() __attribute__((noreturn));], 547 [AC_MSG_RESULT(yes) 548 ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE" 549 ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"], 550 [AC_MSG_RESULT(no) 551 ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE" 552 ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"]) 553AC_SUBST(ISC_PLATFORM_NORETURN_PRE) 554AC_SUBST(ISC_PLATFORM_NORETURN_POST) 555 556# 557# check if we have lifconf 558# 559AC_MSG_CHECKING(for struct lifconf) 560AC_TRY_COMPILE([ 561#include <sys/types.h> 562#include <sys/socket.h> 563#include <net/if.h> 564], 565[ 566struct lifconf lifconf; 567lifconf.lifc_len = 0; 568] 569, 570 [AC_MSG_RESULT(yes) 571 ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"], 572 [AC_MSG_RESULT(no) 573 ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"]) 574AC_SUBST(ISC_PLATFORM_HAVELIFCONF) 575 576# 577# check if we have kqueue 578# 579AC_ARG_ENABLE(kqueue, 580 [ --enable-kqueue use BSD kqueue when available [[default=yes]]], 581 want_kqueue="$enableval", want_kqueue="yes") 582case $want_kqueue in 583yes) 584 AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no) 585 case $ac_cv_have_kqueue in 586 yes) 587 ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1" 588 ;; 589 *) 590 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE" 591 ;; 592 esac 593 ;; 594*) 595 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE" 596 ;; 597esac 598AC_SUBST(ISC_PLATFORM_HAVEKQUEUE) 599 600# 601# check if we have epoll. Linux kernel 2.4 has epoll_create() which fails, 602# so we need to try running the code, not just test its existence. 603# 604AC_ARG_ENABLE(epoll, 605[ --enable-epoll use Linux epoll when available [[default=auto]]], 606 want_epoll="$enableval", want_epoll="auto") 607case $want_epoll in 608auto) 609 AC_MSG_CHECKING(epoll support) 610 AC_TRY_RUN([ 611#include <sys/epoll.h> 612int main() { 613 if (epoll_create(1) < 0) 614 return (1); 615 return (0); 616} 617], 618 [AC_MSG_RESULT(yes) 619 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"], 620 [AC_MSG_RESULT(no) 621 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"], 622 [AC_MSG_RESULT(no) 623 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"]) 624 ;; 625yes) 626 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1" 627 ;; 628*) 629 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL" 630 ;; 631esac 632AC_SUBST(ISC_PLATFORM_HAVEEPOLL) 633 634# 635# check if we support /dev/poll 636# 637AC_ARG_ENABLE(devpoll, 638 [ --enable-devpoll use /dev/poll when available [[default=yes]]], 639 want_devpoll="$enableval", want_devpoll="yes") 640case $want_devpoll in 641yes) 642 AC_CHECK_HEADERS(sys/devpoll.h devpoll.h, 643 ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1" 644 , 645 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL" 646 ) 647 ;; 648*) 649 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL" 650 ;; 651esac 652AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL) 653 654# 655# check if we need to #include sys/select.h explicitly 656# 657case $ac_cv_header_unistd_h in 658yes) 659AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set) 660AC_TRY_COMPILE([ 661#include <sys/types.h> /* Ultrix */ 662#include <unistd.h>], 663[fd_set read_set; return (0);], 664 [AC_MSG_RESULT(yes) 665 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" 666 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"], 667 [AC_MSG_RESULT(no) 668 case $ac_cv_header_sys_select_h in 669 yes) 670 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 671 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 672 ;; 673 no) 674 AC_MSG_ERROR([need either working unistd.h or sys/select.h]) 675 ;; 676 esac 677 ]) 678 ;; 679no) 680 case $ac_cv_header_sys_select_h in 681 yes) 682 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 683 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 684 ;; 685 no) 686 AC_MSG_ERROR([need either unistd.h or sys/select.h]) 687 ;; 688 esac 689 ;; 690esac 691AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH) 692AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH) 693 694# 695# Find the machine's endian flavor. 696# 697AC_C_BIGENDIAN 698 699# 700# GeoIP support? 701# 702GEOIPLINKSRCS= 703GEOIPLINKOBJS= 704AC_ARG_WITH(geoip, 705[ --with-geoip=PATH Build with GeoIP support (yes|no|path)], 706 use_geoip="$withval", use_geoip="no") 707 708if test "$use_geoip" = "yes" 709then 710 for d in /usr /usr/local /opt/local 711 do 712 if test -f $d/include/GeoIP.h 713 then 714 use_geoip=$d 715 break 716 fi 717 done 718fi 719 720case "$use_geoip" in 721 no|'') 722 AC_MSG_CHECKING([for GeoIP support]) 723 AC_MSG_RESULT([disabled]) 724 ;; 725 *) 726 if test -d "$use_geoip" -o -L "$use_geoip" 727 then 728 CFLAGS="$CFLAGS -I$use_geoip/include" 729 CPPFLAGS="$CPPFLAGS -I$use_geoip/include" 730 LIBS="$LIBS -L$use_geoip/lib" 731 case "$host_os" in 732 netbsd*|openbsd*|solaris*) 733 LIBS="$LIBS -Wl,-rpath=$use_geoip/lib" 734 ;; 735 esac 736 elif test "$use_geoip" = "yes" 737 then 738 AC_MSG_ERROR([GeoIP path not found]) 739 else 740 AC_MSG_ERROR([GeoIP path $use_geoip does not exist]) 741 fi 742 AC_CHECK_HEADER(GeoIP.h, [], 743 [AC_MSG_ERROR([GeoIP header file not found])] 744 ) 745 AC_SEARCH_LIBS(GeoIP_open, GeoIP, [], 746 [AC_MSG_ERROR([GeoIP library not found])] 747 ) 748 AC_SEARCH_LIBS(fabsf, m, [], 749 [AC_MSG_ERROR([Math library not found])] 750 ) 751 AC_DEFINE(HAVE_GEOIP, 1, Build with GeoIP support) 752 GEOIPLINKSRCS='${GEOIPLINKSRCS}' 753 GEOIPLINKOBJS='${GEOIPLINKOBJS}' 754 AC_MSG_CHECKING([for GeoIP support]) 755 AC_MSG_RESULT([yes]) 756 757 AC_MSG_CHECKING([for GeoIP Country IPv6 support]) 758 AC_COMPILE_IFELSE( 759 [AC_LANG_PROGRAM([ 760 #include <GeoIP.h> 761 #include <netinet/in.h> 762 ], [ 763 struct in6_addr in6; 764 GeoIP_country_name_by_ipnum_v6(NULL, in6); 765 ])], 766 [ 767 AC_MSG_RESULT([yes]) 768 AC_DEFINE(HAVE_GEOIP_V6, 1, Build with GeoIP Country IPv6 support) 769 ], 770 [AC_MSG_RESULT([no])] 771 ) 772 773 AC_MSG_CHECKING([for GeoIP City IPv6 support]) 774 AC_COMPILE_IFELSE( 775 [AC_LANG_PROGRAM([ 776 #include <GeoIP.h> 777 #include <GeoIPCity.h> 778 #include <netinet/in.h> 779 ], [ 780 struct in6_addr in6; 781 int i = GEOIP_CITY_EDITION_REV0_V6; 782 GeoIP_record_by_ipnum_v6(NULL, in6); 783 ])], 784 [ 785 AC_MSG_RESULT([yes]) 786 AC_DEFINE(HAVE_GEOIP_CITY_V6, 1, Build with GeoIP City IPv6 support) 787 ], 788 [AC_MSG_RESULT([no])] 789 ) 790 ;; 791esac 792AC_SUBST(GEOIPLINKSRCS) 793AC_SUBST(GEOIPLINKOBJS) 794 795AC_MSG_CHECKING(for GSSAPI library) 796AC_ARG_WITH(gssapi, 797[ --with-gssapi=PATH Specify path for system-supplied GSSAPI [[default=yes]]], 798 use_gssapi="$withval", use_gssapi="yes") 799 800# gssapi is just the framework, we really require kerberos v5, so 801# look for those headers (the gssapi headers must be there, too) 802# The problem with this implementation is that it doesn't allow 803# for the specification of gssapi and krb5 headers in different locations, 804# which probably ought to be fixed although fixing might raise the issue of 805# trying to build with incompatible versions of gssapi and krb5. 806if test "$use_gssapi" = "yes" 807then 808 # first, deal with the obvious 809 if test \( -f /usr/include/kerberosv5/krb5.h -o \ 810 -f /usr/include/krb5/krb5.h -o \ 811 -f /usr/include/krb5.h \) -a \ 812 \( -f /usr/include/gssapi.h -o \ 813 -f /usr/include/gssapi/gssapi.h \) 814 then 815 use_gssapi=/usr 816 else 817 krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr" 818 for d in $krb5dirs 819 do 820 if test -f $d/include/gssapi/gssapi_krb5.h -o \ 821 -f $d/include/krb5.h 822 then 823 if test -f $d/include/gssapi/gssapi.h -o \ 824 -f $d/include/gssapi.h 825 then 826 use_gssapi=$d 827 break 828 fi 829 fi 830 use_gssapi="no" 831 done 832 fi 833fi 834 835case "$use_gssapi" in 836 no) 837 AC_MSG_RESULT(disabled) 838 USE_GSSAPI='' 839 ;; 840 yes) 841 AC_MSG_ERROR([--with-gssapi must specify a path]) 842 ;; 843 *) 844 AC_MSG_RESULT(looking in $use_gssapi/lib) 845 USE_GSSAPI='-DGSSAPI' 846 saved_cppflags="$CPPFLAGS" 847 CPPFLAGS="-I$use_gssapi/include $CPPFLAGS" 848 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h, 849 [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>" 850 gssapi_hack="#include <$ac_header>"]) 851 852 if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then 853 AC_MSG_ERROR([gssapi.h not found]) 854 fi 855 856 AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h, 857 [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>" 858 gssapi_krb5_hack="#include <$ac_header>"]) 859 860 AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h, 861 [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>" 862 krb5_hack="#include <$ac_header>"]) 863 864 if test "$ISC_PLATFORM_KRB5HEADER" = ""; then 865 AC_MSG_ERROR([krb5.h not found]) 866 fi 867 868 # 869 # XXXDCL This probably doesn't work right on all systems. 870 # It will need to be worked on as problems become evident. 871 # 872 # Essentially the problems here relate to two different 873 # areas. The first area is building with either KTH 874 # or MIT Kerberos, particularly when both are present on 875 # the machine. The other is static versus dynamic linking. 876 # 877 # On the KTH vs MIT issue, Both have libkrb5 that can mess 878 # up the works if one implementation ends up trying to 879 # use the other's krb. This is unfortunately a situation 880 # that very easily arises. 881 # 882 # Dynamic linking when the dependency information is built 883 # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes 884 # all such problems go away, but when that setup is not 885 # present, because either the dynamic libraries lack 886 # dependencies or static linking is being done, then the 887 # problems start to show up. 888 saved_libs="$LIBS" 889 for TRY_LIBS in \ 890 "-lgssapi_krb5" \ 891 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \ 892 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \ 893 "-lgssapi" \ 894 "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \ 895 "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \ 896 "-lgssapi -lkrb5 -lgssapi_krb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \ 897 "-lgssapi -lkrb5 -lhx509 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \ 898 "-lgss -lkrb5" 899 do 900 # Note that this does not include $saved_libs, because 901 # on FreeBSD machines this configure script has added 902 # -L/usr/local/lib to LIBS, which can make the 903 # -lgssapi_krb5 test succeed with shared libraries even 904 # when you are trying to build with KTH in /usr/lib. 905 if test "$use_gssapi" = "/usr" 906 then 907 LIBS="$TRY_LIBS" 908 else 909 LIBS="-L$use_gssapi/lib $TRY_LIBS" 910 fi 911 AC_MSG_CHECKING(linking as $TRY_LIBS) 912 AC_TRY_LINK([ 913#include <sys/types.h> 914$gssapi_hack 915$gssapi_krb5_hack 916$krb5_hack 917 ] , [gss_acquire_cred(NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);krb5_init_context(NULL); 918#if defined(HAVE_GSSAPI_KRB5_H) || defined(HAVE_GSSAPI_GSSAPI_KRB5_H) 919gsskrb5_register_acceptor_identity(NULL); 920#endif], 921 gssapi_linked=yes, gssapi_linked=no) 922 case $gssapi_linked in 923 yes) AC_MSG_RESULT(yes); break ;; 924 no) AC_MSG_RESULT(no) ;; 925 esac 926 done 927 928 CPPFLAGS="$saved_cppflags" 929 930 case $gssapi_linked in 931 no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;; 932 esac 933 934 # 935 # XXXDCL Major kludge. Tries to cope with KTH in /usr/lib 936 # but MIT in /usr/local/lib and trying to build with KTH. 937 # /usr/local/lib can end up earlier on the link lines. 938 # Like most kludges, this one is not only inelegant it 939 # is also likely to be the wrong thing to do at least as 940 # many times as it is the right thing. Something better 941 # needs to be done. 942 # 943 if test "$use_gssapi" = "/usr" -a \ 944 -f /usr/local/lib/libkrb5.a; then 945 FIX_KTH_VS_MIT=yes 946 fi 947 948 case "$FIX_KTH_VS_MIT" in 949 yes) 950 case "$enable_static_linking" in 951 yes) gssapi_lib_suffix=".a" ;; 952 *) gssapi_lib_suffix=".so" ;; 953 esac 954 955 for lib in $LIBS; do 956 case $lib in 957 -L*) 958 ;; 959 -l*) 960 new_lib=`echo $lib | 961 sed -e s%^-l%$use_gssapi/lib/lib% \ 962 -e s%$%$gssapi_lib_suffix%` 963 NEW_LIBS="$NEW_LIBS $new_lib" 964 ;; 965 *) 966 AC_MSG_ERROR([KTH vs MIT Kerberos confusion!]) 967 ;; 968 esac 969 done 970 LIBS="$NEW_LIBS" 971 ;; 972 esac 973 974 DST_GSSAPI_INC="-I$use_gssapi/include" 975 DNS_GSSAPI_LIBS="$LIBS" 976 977 AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include) 978 LIBS="$saved_libs" 979 ;; 980esac 981 982AC_SUBST(ISC_PLATFORM_HAVEGSSAPI) 983AC_SUBST(ISC_PLATFORM_GSSAPIHEADER) 984AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER) 985AC_SUBST(ISC_PLATFORM_KRB5HEADER) 986 987AC_SUBST(USE_GSSAPI) 988AC_SUBST(DST_GSSAPI_INC) 989AC_SUBST(DNS_GSSAPI_LIBS) 990DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS" 991 992# 993# Applications linking with libdns also need to link with these libraries. 994# 995 996AC_SUBST(DNS_CRYPTO_LIBS) 997 998# 999# was --with-randomdev specified? 1000# 1001AC_MSG_CHECKING(for random device) 1002AC_ARG_WITH(randomdev, 1003[ --with-randomdev=PATH Specify path for random device], 1004 use_randomdev="$withval", use_randomdev="unspec") 1005 1006case "$use_randomdev" in 1007 unspec) 1008 case "$cross_compiling" in 1009 yes) 1010 AC_MSG_RESULT(unspecified) 1011 AC_MSG_ERROR([ need --with-randomdev=PATH or --with-randomdev=no]) 1012 esac 1013 case "$host" in 1014 *-openbsd*) 1015 devrandom=/dev/arandom 1016 ;; 1017 *) 1018 devrandom=/dev/urandom 1019 ;; 1020 esac 1021 AC_MSG_RESULT($devrandom) 1022 AC_CHECK_FILE($devrandom, 1023 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, 1024 "$devrandom"),) 1025 1026 ;; 1027 yes) 1028 AC_MSG_ERROR([--with-randomdev must specify a path]) 1029 ;; 1030 no) 1031 AC_MSG_RESULT(disabled) 1032 ;; 1033 *) 1034 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev") 1035 AC_MSG_RESULT(using "$use_randomdev") 1036 ;; 1037esac 1038 1039# 1040# Only check dsa signature generation on these platforms when performing 1041# system tests. 1042# 1043CHECK_DSA=0 1044if grep "#define PATH_RANDOMDEV " confdefs.h > /dev/null 1045then 1046 case "$host" in 1047 *darwin*|*freebsd*) 1048 CHECK_DSA=1 1049 ;; 1050 esac 1051fi 1052AC_SUBST(CHECK_DSA) 1053 1054# 1055# Do we have arc4random(), etc ? arc4random_addrandom() has been removed 1056# from OpenBSD 5.5 onwards. 1057# 1058AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM)) 1059AC_CHECK_FUNC(arc4random_addrandom, AC_DEFINE(HAVE_ARC4RANDOM_ADDRANDOM)) 1060 1061sinclude(config.threads.in)dnl 1062 1063if $use_threads 1064then 1065 if test "X$GCC" = "Xyes"; then 1066 case "$host" in 1067 *-freebsd*) 1068 CC="$CC -pthread" 1069 CCOPT="$CCOPT -pthread" 1070 CCNOOPT="$CCNOOPT -pthread" 1071 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 1072 ;; 1073 *-openbsd*) 1074 CC="$CC -pthread" 1075 CCOPT="$CCOPT -pthread" 1076 CCNOOPT="$CCNOOPT -pthread" 1077 ;; 1078 *-solaris*) 1079 LIBS="$LIBS -lthread" 1080 ;; 1081 *-ibm-aix*) 1082 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 1083 ;; 1084 esac 1085 else 1086 case $host in 1087 *-dec-osf*) 1088 CC="$CC -pthread" 1089 CCOPT="$CCOPT -pthread" 1090 CCNOOPT="$CCNOOPT -pthread" 1091 ;; 1092 *-solaris*) 1093 CC="$CC -mt" 1094 CCOPT="$CCOPT -mt" 1095 CCNOOPT="$CCNOOPT -mt" 1096 ;; 1097 *-ibm-aix*) 1098 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 1099 ;; 1100 *-sco-sysv*uw*|*-*-sysv*UnixWare*) 1101 CC="$CC -Kthread" 1102 CCOPT="$CCOPT -Kthread" 1103 CCNOOPT="$CCNOOPT -Kthread" 1104 ;; 1105 *-*-sysv*OpenUNIX*) 1106 CC="$CC -Kpthread" 1107 CCOPT="$CCOPT -Kpthread" 1108 CCNOOPT="$CCNOOPT -Kpthread" 1109 ;; 1110 esac 1111 fi 1112 ALWAYS_DEFINES="-D_REENTRANT" 1113 ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1" 1114 THREADOPTOBJS='${THREADOPTOBJS}' 1115 THREADOPTSRCS='${THREADOPTSRCS}' 1116 thread_dir=pthreads 1117 # 1118 # We'd like to use sigwait() too 1119 # 1120 AC_CHECK_FUNC(sigwait, 1121 AC_DEFINE(HAVE_SIGWAIT), 1122 AC_CHECK_LIB(c, sigwait, 1123 AC_DEFINE(HAVE_SIGWAIT), 1124 AC_CHECK_LIB(pthread, sigwait, 1125 AC_DEFINE(HAVE_SIGWAIT), 1126 AC_CHECK_LIB(pthread, _Psigwait, 1127 AC_DEFINE(HAVE_SIGWAIT),)))) 1128 1129 AC_CHECK_FUNC(pthread_attr_getstacksize, 1130 AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),) 1131 1132 AC_CHECK_FUNC(pthread_attr_setstacksize, 1133 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),) 1134 1135 AC_ARG_WITH(locktype, 1136 [ --with-locktype=ARG Specify mutex lock type (adaptive or standard)], 1137 locktype="$withval", locktype="adaptive") 1138 1139 case "$locktype" in 1140 adaptive) 1141 AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP]) 1142 1143 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 1144 #define _GNU_SOURCE 1145 #include <pthread.h> 1146 ]], [[ 1147 return (PTHREAD_MUTEX_ADAPTIVE_NP); 1148 ]])], 1149 [ AC_MSG_RESULT(using adaptive lock type) 1150 AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1, 1151 [Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ], 1152 [ AC_MSG_RESULT(using standard lock type) ]) 1153 ;; 1154 standard) 1155 AC_MSG_RESULT(using standard lock type) 1156 ;; 1157 *) 1158 AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.]) 1159 ;; 1160 esac 1161 1162 AC_CHECK_HEADERS(sched.h) 1163 1164 case "$host" in 1165 *solaris-*) 1166 AC_CHECK_LIB(rt, sched_yield) 1167 ;; 1168 esac 1169 1170 AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np) 1171 1172 # 1173 # Additional OS-specific issues related to pthreads and sigwait. 1174 # 1175 case "$host" in 1176 # 1177 # One more place to look for sigwait. 1178 # 1179 *-freebsd*) 1180 AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),) 1181 case $host in 1182 *-freebsd5.[[012]]|*-freebsd5.[[012]].*);; 1183 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*) 1184 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 1185 ;; 1186 *-freebsd6.*) 1187 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 1188 ;; 1189 esac 1190 ;; 1191 # 1192 # BSDI 3.0 through 4.0.1 needs pthread_init() to be 1193 # called before certain pthreads calls. This is deprecated 1194 # in BSD/OS 4.1. 1195 # 1196 *-bsdi3.*|*-bsdi4.0*) 1197 AC_DEFINE(NEED_PTHREAD_INIT) 1198 ;; 1199 # 1200 # LinuxThreads requires some changes to the way we 1201 # deal with signals. 1202 # 1203 *-linux*) 1204 AC_DEFINE(HAVE_LINUXTHREADS) 1205 ;; 1206 # 1207 # Ensure the right sigwait() semantics on Solaris and make 1208 # sure we call pthread_setconcurrency. 1209 # 1210 *-solaris*) 1211 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) 1212 AC_CHECK_FUNC(pthread_setconcurrency, 1213 AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY)) 1214 ;; 1215 # 1216 # UnixWare does things its own way. 1217 # 1218 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 1219 AC_DEFINE(HAVE_UNIXWARE_SIGWAIT) 1220 ;; 1221 esac 1222 1223 # 1224 # Look for sysconf to allow detection of the number of processors. 1225 # 1226 AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),) 1227 1228else 1229 ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS" 1230 thread_dir=nothreads 1231 THREADOPTOBJS="" 1232 THREADOPTSRCS="" 1233 ALWAYS_DEFINES="" 1234fi 1235 1236AC_SUBST(ALWAYS_DEFINES) 1237AC_SUBST(ISC_PLATFORM_USETHREADS) 1238AC_SUBST(THREADOPTOBJS) 1239AC_SUBST(THREADOPTSRCS) 1240ISC_THREAD_DIR=$thread_dir 1241AC_SUBST(ISC_THREAD_DIR) 1242 1243AC_MSG_CHECKING(for libtool) 1244AC_ARG_WITH(libtool, 1245 [ --with-libtool use GNU libtool], 1246 use_libtool="$withval", use_libtool="no") 1247 1248case $use_libtool in 1249 yes) 1250 AC_MSG_RESULT(yes) 1251 AM_PROG_LIBTOOL 1252 O=lo 1253 A=la 1254 LIBTOOL_MKDEP_SED='s;\.o;\.lo;' 1255 LIBTOOL_MODE_COMPILE='--mode=compile --tag=CC' 1256 LIBTOOL_MODE_INSTALL='--mode=install --tag=CC' 1257 LIBTOOL_MODE_LINK='--mode=link --tag=CC' 1258 INSTALL_LIBRARY='${INSTALL_PROGRAM}' 1259 case "$host" in 1260 *) LIBTOOL_ALLOW_UNDEFINED= ;; 1261 esac 1262 case "$host" in 1263 *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;; 1264 *) LIBTOOL_IN_MAIN= ;; 1265 esac; 1266 ;; 1267 *) 1268 AC_MSG_RESULT(no) 1269 O=o 1270 A=a 1271 LIBTOOL= 1272 AC_SUBST(LIBTOOL) 1273 LIBTOOL_MKDEP_SED= 1274 LIBTOOL_MODE_COMPILE= 1275 LIBTOOL_MODE_INSTALL= 1276 LIBTOOL_MODE_LINK= 1277 LIBTOOL_ALLOW_UNDEFINED= 1278 LIBTOOL_IN_MAIN= 1279 INSTALL_LIBRARY='${INSTALL_DATA}' 1280 ;; 1281esac 1282AC_SUBST(INSTALL_LIBRARY) 1283 1284# 1285# was --enable-native-pkcs11 specified? 1286# (note it implies both --without-openssl and --with-pkcs11) 1287# 1288AC_ARG_ENABLE(native-pkcs11, 1289 [ --enable-native-pkcs11 use native PKCS11 for all crypto [[default=no]]], 1290 want_native_pkcs11="$enableval", want_native_pkcs11="no") 1291 1292# 1293# was --with-openssl specified? 1294# 1295AC_ARG_WITH(openssl, 1296[ --with-openssl[=PATH] Build with OpenSSL [yes|no|path]. 1297 (Crypto is required for DNSSEC)], 1298 use_openssl="$withval", use_openssl="auto") 1299 1300# 1301# was --with-pkcs11 specified? 1302# 1303AC_ARG_WITH(pkcs11, 1304[ --with-pkcs11[=PATH] Build with PKCS11 support [yes|no|path] 1305 (PATH is for the PKCS11 provider)], 1306 use_pkcs11="$withval", use_pkcs11="auto") 1307 1308# 1309# were --with-ecdsa, --with-gost, --with-aes specified 1310# 1311AC_ARG_WITH(ecdsa, [ --with-ecdsa Crypto ECDSA], 1312 with_ecdsa="$withval", with_ecdsa="auto") 1313AC_ARG_WITH(gost, [ --with-gost Crypto GOST [yes|no|raw|asn1].], 1314 with_gost="$withval", with_gost="auto") 1315AC_ARG_WITH(aes, [ --with-aes Crypto AES], 1316 with_aes="$withval", with_aes="checksit") 1317 1318# 1319# was --enable-openssl-hash specified? 1320# 1321AC_ARG_ENABLE(openssl-hash, 1322 [ --enable-openssl-hash use OpenSSL for hash functions [[default=no]]], 1323 want_openssl_hash="$enableval", want_openssl_hash="checksit") 1324 1325# 1326# Enable Source Identity Token support 1327# 1328AC_MSG_CHECKING(for Source Identity Token support) 1329AC_ARG_ENABLE(sit, 1330 [ --enable-sit enable source identity token [[default=no]]], 1331 enable_sit="$enableval", enable_sit="no") 1332HAVE_SIT= 1333ISC_PLATFORM_USESIT="#undef ISC_PLATFORM_USESIT" 1334 1335case "$enable_sit" in 1336yes) 1337 AC_MSG_RESULT(yes) 1338 ISC_PLATFORM_USESIT="#define ISC_PLATFORM_USESIT 1" 1339 HAVE_SIT=1 1340 ;; 1341no) 1342 AC_MSG_RESULT(no) 1343 ;; 1344*) 1345 AC_MSG_ERROR("enable-sit requires yes or no") 1346 ;; 1347esac 1348AC_SUBST(ISC_PLATFORM_USESIT) 1349AC_SUBST(HAVE_SIT) 1350 1351# 1352# Source Identity Token algorithm choice 1353# 1354AC_ARG_WITH(sit-alg, 1355 [ --with-sit-alg=ALG choose the algorithm for SIT [[aes|sha1|sha256]]], 1356 with_sit_alg="$withval", with_sit_alg="auto") 1357 1358if test "$enable_sit" = "yes" 1359then 1360 case $with_sit_alg in 1361 *1) 1362 with_sit_alg="sha1" 1363 ;; 1364 *2*) 1365 with_sit_alg="sha256" 1366 ;; 1367 auto) 1368 if test "$with_aes" != "no" 1369 then 1370 with_aes="yes" 1371 fi 1372 ;; 1373 *) 1374 with_sit_alg="aes" 1375 if test "$with_aes" != "no" 1376 then 1377 with_aes="yes" 1378 fi 1379 ;; 1380 esac 1381fi 1382if test "with_aes" = "checksit" 1383then 1384 with_aes="no" 1385fi 1386 1387AC_MSG_CHECKING(for OpenSSL library) 1388OPENSSL_WARNING= 1389openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw" 1390if test "$use_openssl" = "auto" 1391then 1392 if test "$want_native_pkcs11" = "yes" 1393 then 1394 use_openssl="native_pkcs11" 1395 else 1396 for d in $openssldirs 1397 do 1398 if test -f $d/include/openssl/opensslv.h 1399 then 1400 use_openssl=$d 1401 break 1402 fi 1403 done 1404 fi 1405fi 1406OPENSSL_ECDSA="" 1407OPENSSL_GOST="" 1408gosttype="raw" 1409case "$with_gost" in 1410 raw) 1411 with_gost="yes" 1412 ;; 1413 asn1) 1414 AC_DEFINE(PREFER_GOSTASN1, 1, 1415 [Define if GOST private keys are encoded in ASN.1.]) 1416 gosttype="asn1" 1417 with_gost="yes" 1418 ;; 1419 auto|yes|no) 1420 ;; 1421 *) 1422 AC_MSG_ERROR(unknown GOST private key encoding) 1423 ;; 1424esac 1425 1426case "$use_openssl" in 1427 native_pkcs11) 1428 AC_MSG_RESULT(disabled because of native PKCS11) 1429 DST_OPENSSL_INC="" 1430 CRYPTO="-DPKCS11CRYPTO" 1431 OPENSSLGOSTLINKOBJS="" 1432 OPENSSLGOSTLINKSRS="" 1433 OPENSSLLINKOBJS="" 1434 OPENSSLLINKSRCS="" 1435 ;; 1436 no) 1437 AC_MSG_RESULT(no) 1438 DST_OPENSSL_INC="" 1439 CRYPTO="" 1440 OPENSSLGOSTLINKOBJS="" 1441 OPENSSLGOSTLINKSRS="" 1442 OPENSSLLINKOBJS="" 1443 OPENSSLLINKSRCS="" 1444 ;; 1445 auto) 1446 DST_OPENSSL_INC="" 1447 CRYPTO="" 1448 OPENSSLGOSTLINKOBJS="" 1449 OPENSSLGOSTLINKSRS="" 1450 OPENSSLLINKOBJS="" 1451 OPENSSLLINKSRCS="" 1452 AC_MSG_ERROR( 1453[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path 1454If you don't want OpenSSL, use --without-openssl]) 1455 ;; 1456 *) 1457 if test "$want_native_pkcs11" = "yes" 1458 then 1459 AC_MSG_RESULT() 1460 AC_MSG_ERROR([OpenSSL and native PKCS11 cannot be used together.]) 1461 fi 1462 if test "$use_openssl" = "yes" 1463 then 1464 # User did not specify a path - guess it 1465 for d in $openssldirs 1466 do 1467 if test -f $d/include/openssl/opensslv.h 1468 then 1469 use_openssl=$d 1470 break 1471 fi 1472 done 1473 if test "$use_openssl" = "yes" 1474 then 1475 AC_MSG_RESULT(not found) 1476 AC_MSG_ERROR( 1477[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path]) 1478 fi 1479 elif ! test -f "$use_openssl"/include/openssl/opensslv.h 1480 then 1481 AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found]) 1482 fi 1483 CRYPTO='-DOPENSSL' 1484 if test "$use_openssl" = "/usr" 1485 then 1486 DST_OPENSSL_INC="" 1487 DST_OPENSSL_LIBS="-lcrypto" 1488 else 1489 DST_OPENSSL_INC="-I$use_openssl/include" 1490 case $host in 1491 *-solaris*) 1492 DST_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto" 1493 ;; 1494 *-hp-hpux*) 1495 DST_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto" 1496 ;; 1497 *-apple-darwin*) 1498 # 1499 # Apple's ld seaches for serially for dynamic 1500 # then static libraries. This means you can't 1501 # use -L to override dynamic system libraries 1502 # with static ones when linking. Instead 1503 # we specify a absolute path. 1504 # 1505 if test -f "$use_openssl/lib/libcrypto.dylib" 1506 then 1507 DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto" 1508 else 1509 DST_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a" 1510 fi 1511 ;; 1512 *) 1513 DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto" 1514 ;; 1515 esac 1516 fi 1517 AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include) 1518 1519 saved_cc="$CC" 1520 saved_cflags="$CFLAGS" 1521 saved_libs="$LIBS" 1522 CFLAGS="$CFLAGS $DST_OPENSSL_INC" 1523 LIBS="$LIBS $DST_OPENSSL_LIBS" 1524 AC_MSG_CHECKING(whether linking with OpenSSL works) 1525 AC_TRY_RUN([ 1526#include <openssl/err.h> 1527int main() { 1528 ERR_clear_error(); 1529 return (0); 1530} 1531], 1532 [AC_MSG_RESULT(yes)], 1533 [AC_MSG_RESULT(no) 1534 AC_MSG_ERROR(Could not run test program using OpenSSL from 1535$use_openssl/lib and $use_openssl/include. 1536Please check the argument to --with-openssl and your 1537shared library configuration (e.g., LD_LIBRARY_PATH).)], 1538 [AC_MSG_RESULT(assuming it does work on target platform)]) 1539 1540 AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl) 1541 AC_TRY_LINK([ 1542#include <openssl/err.h>], 1543[ DSO_METHOD_dlfcn(); ], 1544 [AC_MSG_RESULT(no)], 1545 [LIBS="$LIBS -ldl" 1546 AC_TRY_LINK([ 1547#include <openssl/err.h> 1548],[ DSO_METHOD_dlfcn(); ], 1549 [AC_MSG_RESULT(yes) 1550 DST_OPENSSL_LIBS="$DST_OPENSSL_LIBS -ldl" 1551 ], 1552 [AC_MSG_RESULT(unknown) 1553 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)], 1554 [AC_MSG_RESULT(assuming it does work on target platform)]) 1555 ], 1556 [AC_MSG_RESULT(assuming it does work on target platform)] 1557 ) 1558 1559AC_ARG_ENABLE(openssl-version-check, 1560[AC_HELP_STRING([--enable-openssl-version-check], 1561 [check OpenSSL version @<:@default=yes@:>@])]) 1562case "$enable_openssl_version_check" in 1563yes|'') 1564 AC_MSG_CHECKING(OpenSSL library version) 1565 AC_TRY_RUN([ 1566#include <stdio.h> 1567#include <openssl/opensslv.h> 1568int main() { 1569 if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL && 1570 OPENSSL_VERSION_NUMBER < 0x00908000L) || 1571 OPENSSL_VERSION_NUMBER >= 0x0090804fL) 1572 return (0); 1573 printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n", 1574 OPENSSL_VERSION_NUMBER); 1575 printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n" 1576 "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n"); 1577 return (1); 1578} 1579 ], 1580 [AC_MSG_RESULT(ok)], 1581 [AC_MSG_RESULT(not compatible) 1582 OPENSSL_WARNING=yes 1583 ], 1584 [AC_MSG_RESULT(assuming target platform has compatible version)]) 1585;; 1586no) 1587 AC_MSG_RESULT(Skipped OpenSSL version check) 1588;; 1589esac 1590 1591 AC_MSG_CHECKING(for OpenSSL DSA support) 1592 if test -f $use_openssl/include/openssl/dsa.h 1593 then 1594 AC_DEFINE(HAVE_OPENSSL_DSA) 1595 AC_MSG_RESULT(yes) 1596 else 1597 AC_MSG_RESULT(no) 1598 fi 1599 1600 AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512) 1601 1602 AC_MSG_CHECKING(for OpenSSL ECDSA support) 1603 have_ecdsa="" 1604 AC_TRY_RUN([ 1605#include <openssl/ecdsa.h> 1606#include <openssl/objects.h> 1607int main() { 1608 EC_KEY *ec256, *ec384; 1609 1610#if !defined(HAVE_EVP_SHA256) || !defined(HAVE_EVP_SHA384) 1611 return (1); 1612#endif 1613 ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); 1614 ec384 = EC_KEY_new_by_curve_name(NID_secp384r1); 1615 if (ec256 == NULL || ec384 == NULL) 1616 return (2); 1617 return (0); 1618} 1619], 1620 [AC_MSG_RESULT(yes) 1621 have_ecdsa="yes"], 1622 [AC_MSG_RESULT(no) 1623 have_ecdsa="no"], 1624 [AC_MSG_RESULT(using --with-ecdsa)]) 1625 case "$with_ecdsa" in 1626 yes) 1627 case "$have_ecdsa" in 1628 no) AC_MSG_ERROR([ecdsa not supported]) ;; 1629 *) have_ecdsa=yes ;; 1630 esac 1631 ;; 1632 no) 1633 have_ecdsa=no ;; 1634 *) 1635 case "$have_ecdsa" in 1636 yes|no) ;; 1637 *) AC_MSG_ERROR([need --with-ecdsa=[[yes or no]]]) ;; 1638 esac 1639 ;; 1640 esac 1641 case $have_ecdsa in 1642 yes) 1643 OPENSSL_ECDSA="yes" 1644 AC_DEFINE(HAVE_OPENSSL_ECDSA, 1, 1645 [Define if your OpenSSL version supports ECDSA.]) 1646 ;; 1647 *) 1648 ;; 1649 esac 1650 1651 AC_MSG_CHECKING(for OpenSSL GOST support) 1652 have_gost="" 1653 case "$use_pkcs11" in 1654 auto|no) 1655 ;; 1656 *) 1657 if $use_threads; then 1658 CC="$CC -pthread" 1659 fi 1660 ;; 1661 esac 1662 AC_TRY_RUN([ 1663#include <openssl/conf.h> 1664#include <openssl/engine.h> 1665int main() { 1666#if (OPENSSL_VERSION_NUMBER >= 0x10000000L) 1667 ENGINE *e; 1668 EC_KEY *ek; 1669 1670 ek = NULL; 1671 OPENSSL_config(NULL); 1672 1673 e = ENGINE_by_id("gost"); 1674 if (e == NULL) 1675 return (1); 1676 if (ENGINE_init(e) <= 0) 1677 return (1); 1678 return (0); 1679#else 1680 return (1); 1681#endif 1682} 1683], 1684 [AC_MSG_RESULT(yes) 1685 have_gost="yes"], 1686 [AC_MSG_RESULT(no) 1687 have_gost="no"], 1688 [AC_MSG_RESULT(using --with-gost)]) 1689 case "$with_gost" in 1690 yes) 1691 case "$have_gost" in 1692 no) AC_MSG_ERROR([gost not supported]) ;; 1693 *) have_gost=yes ;; 1694 esac 1695 ;; 1696 no) 1697 have_gost=no ;; 1698 *) 1699 case "$have_gost" in 1700 yes|no) ;; 1701 *) AC_MSG_ERROR([need --with-gost=[[yes, no, raw or asn1]]]) ;; 1702 esac 1703 ;; 1704 esac 1705 case $have_gost in 1706 yes) 1707 OPENSSL_GOST="yes" 1708 OPENSSLGOSTLINKOBJS='${OPENSSLGOSTLINKOBJS}' 1709 OPENSSLGOSTLINKSRCS='${OPENSSLGOSTLINKSRCS}' 1710 AC_DEFINE(HAVE_OPENSSL_GOST, 1, 1711 [Define if your OpenSSL version supports GOST.]) 1712 ;; 1713 *) 1714 ;; 1715 esac 1716 1717 have_aes="no" 1718 AC_MSG_CHECKING(for OpenSSL AES support) 1719 AC_TRY_RUN([ 1720#include <openssl/evp.h> 1721int main() { 1722 EVP_CIPHER *aes128, *aes192, *aes256; 1723 1724 aes128 = EVP_aes_128_ecb(); 1725 aes192 = EVP_aes_192_ecb(); 1726 aes256 = EVP_aes_256_ecb(); 1727 if (aes128 == NULL || aes192 == NULL || aes256 == NULL) 1728 return (1); 1729 return (0); 1730} 1731], 1732 [AC_MSG_RESULT(yes) 1733 have_aes="evp"], 1734 [AC_CHECK_FUNC(AES_encrypt, 1735 [AC_MSG_RESULT(yes) 1736 have_aes="yes"], 1737 [AC_MSG_RESULT(no)])], 1738 [AC_MSG_RESULT(using --with-aes)]) 1739 1740 ISC_OPENSSL_INC="" 1741 ISC_OPENSSL_LIBS="" 1742 if test "$with_aes" = "yes" 1743 then 1744 case "$have_aes" in 1745 evp) 1746 AC_DEFINE(HAVE_OPENSSL_EVP_AES, 1, 1747 [Define if your OpenSSL version supports EVP AES]) 1748 ISC_OPENSSL_INC="$DST_OPENSSL_INC" 1749 ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS" 1750 ;; 1751 yes) 1752 AC_DEFINE(HAVE_OPENSSL_AES, 1, 1753 [Define if your OpenSSL version supports AES]) 1754 ISC_OPENSSL_INC="$DST_OPENSSL_INC" 1755 ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS" 1756 ;; 1757 *) 1758 ;; 1759 esac 1760 fi 1761 1762 CC="$saved_cc" 1763 CFLAGS="$saved_cflags" 1764 LIBS="$saved_libs" 1765 OPENSSLLINKOBJS='${OPENSSLLINKOBJS}' 1766 OPENSSLLINKSRCS='${OPENSSLLINKSRCS}' 1767 1768 ;; 1769esac 1770 1771# 1772# This would include the system openssl path (and linker options to use 1773# it as needed) if it is found. 1774# 1775 1776AC_SUBST(DST_OPENSSL_INC) 1777AC_SUBST(OPENSSLGOSTLINKOBJS) 1778AC_SUBST(OPENSSLGOSTLINKSRCS) 1779AC_SUBST(OPENSSLLINKOBJS) 1780AC_SUBST(OPENSSLLINKSRCS) 1781AC_SUBST(OPENSSL_ECDSA) 1782AC_SUBST(OPENSSL_GOST) 1783 1784DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DST_OPENSSL_LIBS" 1785 1786ISC_PLATFORM_WANTAES="#undef ISC_PLATFORM_WANTAES" 1787if test "$with_aes" = "yes" 1788then 1789 if test "X$CRYPTO" = "X" 1790 then 1791 with_aes="no" 1792 fi 1793fi 1794if test "$with_aes" = "yes" 1795then 1796 ISC_PLATFORM_WANTAES="#define ISC_PLATFORM_WANTAES 1" 1797fi 1798AC_SUBST(ISC_PLATFORM_WANTAES) 1799 1800# 1801# Choose SIT algorithm 1802# 1803 1804if test "$enable_sit" = "yes" 1805then 1806 AC_MSG_CHECKING(for the Algorithm for SIT) 1807 if test "$with_sit_alg" = "auto" 1808 then 1809 if test "$with_aes" = "yes" 1810 then 1811 with_sit_alg="aes" 1812 else 1813 with_sit_alg="sha256" 1814 fi 1815 fi 1816fi 1817case $with_sit_alg in 1818 sha1) 1819 if test "$enable_sit" != "yes" 1820 then 1821 AC_MSG_ERROR("with-sit-alg requires enable-sit"); 1822 fi 1823 AC_MSG_RESULT(sha1) 1824 if test "$CRYPTO" = "-DOPENSSL" 1825 then 1826 if test "$want_openssl_hash" = "checksit" 1827 then 1828 want_openssl_hash="yes" 1829 fi 1830 fi 1831 AC_DEFINE(HMAC_SHA1_SIT, 1, 1832 [Use HMAC-SHA1 for Source Identity Token generation]) 1833 ;; 1834 sha256) 1835 if test "$enable_sit" != "yes" 1836 then 1837 AC_MSG_ERROR("with-sit-alg requires enable-sit"); 1838 fi 1839 AC_MSG_RESULT(sha256) 1840 if test "$CRYPTO" = "-DOPENSSL" 1841 then 1842 if test "$want_openssl_hash" = "checksit" 1843 then 1844 want_openssl_hash="yes" 1845 fi 1846 fi 1847 AC_DEFINE(HMAC_SHA256_SIT, 1, 1848 [Use HMAC-SHA256 for Source Identity Token generation]) 1849 ;; 1850 aes) 1851 if test "$enable_sit" != "yes" 1852 then 1853 AC_MSG_ERROR("with-sit-alg requires enable-sit"); 1854 fi 1855 AC_MSG_RESULT(aes) 1856 if test "$with_aes" != "yes" 1857 then 1858 AC_MSG_ERROR("SIT wants to use unavailable AES"); 1859 fi 1860 AC_DEFINE(AES_SIT, 1, 1861 [Use AES for Source Identity Token generation]) 1862 ;; 1863esac 1864if test "$want_openssl_hash" = "checksit" 1865then 1866 want_openssl_hash="no" 1867fi 1868 1869# 1870# Use OpenSSL for hash functions 1871# 1872 1873AC_MSG_CHECKING(for using OpenSSL for hash functions) 1874ISC_PLATFORM_OPENSSLHASH="#undef ISC_PLATFORM_OPENSSLHASH" 1875case $want_openssl_hash in 1876 yes) 1877 if test "$CRYPTO" != "-DOPENSSL" 1878 then 1879 AC_MSG_ERROR([No OpenSSL for hash functions]) 1880 fi 1881 AC_MSG_RESULT(yes) 1882 ISC_PLATFORM_OPENSSLHASH="#define ISC_PLATFORM_OPENSSLHASH 1" 1883 ISC_OPENSSL_INC="$DST_OPENSSL_INC" 1884 ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS" 1885 saved_cflags="$CFLAGS" 1886 save_libs="$LIBS" 1887 CFLAGS="$CFLAGS $ISC_OPENSSL_INC" 1888 LIBS="$LIBS $ISC_OPENSSL_LIBS" 1889 AC_MSG_CHECKING([HMAC_Init() return type]) 1890 AC_TRY_COMPILE([ 1891 #include <openssl/hmac.h>],[ 1892 HMAC_CTX ctx; 1893 int n = HMAC_Init(&ctx, NULL, 0, NULL); 1894 n += HMAC_Update(&ctx, NULL, 0); 1895 n += HMAC_Final(&ctx, NULL, NULL);],[ 1896 AC_MSG_RESULT(int) 1897 AC_DEFINE(HMAC_RETURN_INT, 1, [HMAC_*() return ints])],[ 1898 AC_MSG_RESULT(void)]) 1899 CFLAGS="$saved_cflags" 1900 LIBS="$save_libs" 1901 ;; 1902 no) 1903 AC_MSG_RESULT(no) 1904 ;; 1905esac 1906AC_SUBST(ISC_PLATFORM_OPENSSLHASH) 1907AC_SUBST(ISC_OPENSSL_INC) 1908AC_SUBST(ISC_OPENSSL_LIBS) 1909 1910# 1911# PKCS11 (aka crypto hardware) support (--with moved just after openssl) 1912# 1913AC_MSG_CHECKING(for PKCS11 support) 1914 1915if test "$use_pkcs11" = "auto" 1916then 1917 if test "$want_native_pkcs11" = "yes" 1918 then 1919 use_pkcs11="yes" 1920 else 1921 use_pkcs11="no" 1922 fi 1923fi 1924 1925case "$use_pkcs11" in 1926 no) 1927 AC_MSG_RESULT(no) 1928 USE_PKCS11="" 1929 PKCS11_TEST="" 1930 PKCS11_TOOLS="" 1931 ISC_PK11_C="" 1932 ISC_PK11_O="" 1933 ISC_PK11_API_C="" 1934 ISC_PK11_API_O="" 1935 ISC_PK11_RESULT_C="" 1936 ISC_PK11_RESULT_O="" 1937 ISC_ISCPK11_API_C="" 1938 ISC_ISCPK11_API_O="" 1939 ;; 1940 yes|*) 1941 AC_MSG_RESULT(yes) 1942 if ! $use_threads; then 1943 AC_MSG_ERROR([PKCS11 requires thread support]) 1944 fi 1945 if test "$CRYPTO" = "-DOPENSSL" 1946 then 1947 AC_MSG_CHECKING(for OpenSSL with PKCS11 support) 1948 saved_cc="$CC" 1949 saved_cflags="$CFLAGS" 1950 saved_libs="$LIBS" 1951 CC="$CC -pthread" 1952 CFLAGS="$CFLAGS $DST_OPENSSL_INC" 1953 LIBS="$LIBS $DST_OPENSSL_LIBS" 1954 AC_TRY_RUN([ 1955#include <openssl/conf.h> 1956#include <openssl/engine.h> 1957int main() { 1958 ENGINE *e; 1959 1960 OPENSSL_config(NULL); 1961 e = ENGINE_by_id("pkcs11"); 1962 if (e == NULL) 1963 return (1); 1964 if (ENGINE_init(e) <= 0) 1965 return (1); 1966 return (0); 1967} 1968], 1969 [AC_MSG_RESULT(yes) 1970 PKCS11_TEST=pkcs11ssl 1971 PKCS11_ENGINE='-DPKCS11_ENGINE="\"pkcs11\""'], 1972 [AC_MSG_RESULT(no) 1973 PKCS11_TEST='' 1974 PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'], 1975 [AC_MSG_RESULT(cross compile, defaulting to no) 1976 PKCS11_TEST='' 1977 PKCS11_ENGINE='-DPKCS11_ENGINE=NULL']) 1978 CC="$saved_cc" 1979 CFLAGS="$saved_cflags" 1980 LIBS="$saved_libs" 1981 else 1982 PKCS11_TEST='' 1983 PKCS11_ENGINE='-DPKCS11_ENGINE=NULL' 1984 1985 fi 1986 USE_PKCS11='-DUSE_PKCS11' 1987 PKCS11_TOOLS=pkcs11 1988 AC_CHECK_FUNC(getpassphrase, AC_DEFINE(HAVE_GETPASSPHRASE),) 1989 ISC_PK11_C="pk11.c" 1990 ISC_PK11_O="pk11.$O" 1991 ISC_PK11_API_C="pk11_api.c" 1992 ISC_PK11_API_O="pk11_api.$O" 1993 ISC_PK11_RESULT_C="pk11_result.c" 1994 ISC_PK11_RESULT_O="pk11_result.$O" 1995 ISC_ISCPK11_API_C="unix/pk11_api.c" 1996 ISC_ISCPK11_API_O="unix/pk11_api.$O" 1997 ;; 1998esac 1999AC_SUBST(USE_PKCS11) 2000AC_SUBST(PKCS11_TOOLS) 2001AC_SUBST(PKCS11_ENGINE) 2002AC_SUBST(ISC_PK11_C) 2003AC_SUBST(ISC_PK11_O) 2004AC_SUBST(ISC_PK11_API_C) 2005AC_SUBST(ISC_PK11_API_O) 2006AC_SUBST(ISC_PK11_RESULT_C) 2007AC_SUBST(ISC_PK11_RESULT_O) 2008AC_SUBST(ISC_ISCPK11_API_C) 2009AC_SUBST(ISC_ISCPK11_API_O) 2010 2011AC_MSG_CHECKING(for PKCS11 tools) 2012case "$use_pkcs11" in 2013 no) 2014 PKCS11_PROVIDER="undefined" 2015 AC_MSG_RESULT(disabled) 2016 ;; 2017 yes|'') 2018 PKCS11_PROVIDER="undefined" 2019 AC_MSG_RESULT(enabled) 2020 ;; 2021 *) 2022 PKCS11_PROVIDER="$use_pkcs11" 2023 AC_MSG_RESULT([enabled, PKCS11 provider is $PKCS11_PROVIDER]) 2024 ;; 2025esac 2026 2027AC_SUBST(PKCS11_PROVIDER) 2028 2029PKCS11_ECDSA="" 2030PKCS11_GOST="" 2031AC_MSG_CHECKING(for native PKCS11) 2032 2033case "$want_native_pkcs11" in 2034 yes) 2035 AC_MSG_RESULT(using native PKCS11 crypto) 2036 PKCS11LINKOBJS='${PKCS11LINKOBJS}' 2037 PKCS11LINKSRCS='${PKCS11LINKSRCS}' 2038 PKCS11_TEST=pkcs11 2039 AC_MSG_CHECKING(for PKCS11 ECDSA) 2040 case "$with_ecdsa" in 2041 no) 2042 AC_MSG_RESULT(disabled) 2043 ;; 2044 *) 2045 AC_MSG_RESULT(enabled) 2046 PKCS11_ECDSA="yes" 2047 AC_DEFINE(HAVE_PKCS11_ECDSA, 1, 2048 [Define if your PKCS11 provider supports ECDSA.]) 2049 ;; 2050 esac 2051 AC_MSG_CHECKING(for PKCS11 GOST) 2052 case "$with_gost" in 2053 yes) 2054 AC_MSG_RESULT(enabled) 2055 PKCS11_GOST="yes" 2056 AC_DEFINE(HAVE_PKCS11_GOST, 1, 2057 [Define if your PKCS11 provider supports GOST.]) 2058 ;; 2059 *) 2060 AC_MSG_RESULT(disabled) 2061 ;; 2062 esac 2063 ;; 2064 no|'') 2065 AC_MSG_RESULT(disabled) 2066 ;; 2067esac 2068 2069AC_SUBST(PKCS11LINKOBJS) 2070AC_SUBST(PKCS11LINKSRCS) 2071AC_SUBST(CRYPTO) 2072AC_SUBST(PKCS11_ECDSA) 2073AC_SUBST(PKCS11_GOST) 2074AC_SUBST(PKCS11_TEST) 2075 2076# for PKCS11 benchmarks 2077 2078have_clock_gt=no 2079AC_CHECK_FUNC(clock_gettime,have_clock_gt=yes,) 2080if test "$have_clock_gt" = "no"; then 2081 AC_CHECK_LIB(rt,clock_gettime,have_clock_gt=rt,) 2082fi 2083 2084if test "$have_clock_gt" != "no"; then 2085 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if clock_gettime is available.]) 2086fi 2087 2088if test "$have_clock_gt" = "rt"; then 2089 LIBS="-lrt $LIBS" 2090fi 2091 2092# 2093# was --with-libxml2 specified? 2094# 2095AC_MSG_CHECKING(for libxml2 library) 2096AC_ARG_WITH(libxml2, 2097[ --with-libxml2[=PATH] build with libxml2 library [yes|no|path]], 2098 use_libxml2="$withval", use_libxml2="auto") 2099 2100case "$use_libxml2" in 2101 no) 2102 DST_LIBXML2_INC="" 2103 ;; 2104 auto|yes) 2105 case X`(xml2-config --version) 2>/dev/null` in 2106 X2.[[6789]].*) 2107 libxml2_libs=`xml2-config --libs` 2108 libxml2_cflags=`xml2-config --cflags` 2109 ;; 2110 *) 2111 libxml2_libs= 2112 libxml2_cflags= 2113 ;; 2114 esac 2115 ;; 2116 *) 2117 if test -f "$use_libxml2/bin/xml2-config" ; then 2118 libxml2_libs=`$use_libxml2/bin/xml2-config --libs` 2119 libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags` 2120 fi 2121 ;; 2122esac 2123 2124if test "X$libxml2_libs" != "X" 2125then 2126 CFLAGS="$CFLAGS $libxml2_cflags" 2127 LIBS="$LIBS $libxml2_libs" 2128 # 2129 # Sanity check xml2-config output. 2130 # 2131 AC_TRY_LINK([#include <libxml/xmlwriter.h>], 2132 [return(xmlTextWriterStartElement(NULL, NULL));], 2133 AC_MSG_RESULT(yes), 2134 AC_MSG_ERROR(xml2-config returns badness)) 2135 AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found]) 2136else 2137 AC_MSG_RESULT(no) 2138fi 2139 2140# 2141# was --with-libjson specified? 2142# 2143AC_MSG_CHECKING(for json library) 2144AC_ARG_WITH(libjson, 2145[ --with-libjson[=PATH] build with libjson0 library [yes|no|path]], 2146 use_libjson="$withval", use_libjson="auto") 2147 2148have_libjson="" 2149case "$use_libjson" in 2150 no) 2151 libjson_libs="" 2152 ;; 2153 auto|yes) 2154 for d in /usr /usr/local /opt/local 2155 do 2156 if test -f "${d}/include/json/json.h" 2157 then 2158 libjson_cflags="-I ${d}/include/json" 2159 if test ${d} != /usr 2160 then 2161 LIBS="$LIBS -L${d}/lib" 2162 fi 2163 have_libjson="yes" 2164 elif test -f "${d}/include/json-c/json.h" 2165 then 2166 libjson_cflags="-I ${d}/include/json-c" 2167 if test ${d} != /usr 2168 then 2169 LIBS="$LIBS -L${d}/lib" 2170 fi 2171 have_libjson="yes" 2172 fi 2173 done 2174 ;; 2175 *) 2176 if test -f "${use_libjson}/include/json/json.h" 2177 then 2178 libjson_cflags="-I${use_libjson}/include/json" 2179 LIBS="$LIBS -L${use_libjson}/lib" 2180 have_libjson="yes" 2181 elif test -f "${use_libjson}/include/json-c/json.h" 2182 then 2183 libjson_cflags="-I${use_libjson}/include/json-c" 2184 LIBS="$LIBS -L${use_libjson}/lib" 2185 have_libjson="yes" 2186 else 2187 AC_MSG_ERROR([$use_libjson/include/json{,-c}/json.h not found.]) 2188 fi 2189 ;; 2190esac 2191 2192if test "X${have_libjson}" != "X" 2193then 2194 AC_MSG_RESULT(yes) 2195 AC_SEARCH_LIBS([json_object_new_int64], [json json-c], [], 2196 [AC_MSG_ERROR([found libjson include but not library.]) 2197 have_libjson=""]) 2198elif test "X$use_libjson" = Xyes 2199then 2200 AC_MSG_ERROR([include/json{,-c}/json.h not found.]) 2201else 2202 AC_MSG_RESULT(no) 2203fi 2204 2205if test "X${have_libjson}" != "X" 2206then 2207 CFLAGS="$CFLAGS $libjson_cflags" 2208 AC_DEFINE(HAVE_JSON, 1, [Define if libjson was found]) 2209fi 2210 2211# 2212# In solaris 10, SMF can manage named service 2213# 2214AC_CHECK_LIB(scf, smf_enable_instance) 2215 2216# 2217# flockfile is usually provided by pthreads, but we may want to use it 2218# even if compiled with --disable-threads. getc_unlocked might also not 2219# be defined. 2220# 2221AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),) 2222AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),) 2223 2224# 2225# Indicate what the final decision was regarding threads. 2226# 2227AC_MSG_CHECKING(whether to build with threads) 2228if $use_threads; then 2229 AC_MSG_RESULT(yes) 2230else 2231 AC_MSG_RESULT(no) 2232fi 2233 2234# 2235# End of pthreads stuff. 2236# 2237 2238# 2239# Large File 2240# 2241AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support], 2242 want_largefile="yes", want_largefile="no") 2243case $want_largefile in 2244 yes) 2245 ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" 2246 ;; 2247 *) 2248 ;; 2249esac 2250 2251# 2252# Additional compiler settings. 2253# 2254MKDEPCC="$CC" 2255MKDEPCFLAGS="-M" 2256IRIX_DNSSEC_WARNINGS_HACK="" 2257 2258if test "X$GCC" = "Xyes"; then 2259 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith" 2260 AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing) 2261 SAVE_CFLAGS="$CFLAGS" 2262 CFLAGS="$CFLAGS -fno-strict-aliasing" 2263 AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no]) 2264 CFLAGS="$SAVE_CFLAGS" 2265 if test "$FNOSTRICTALIASING" = "yes"; then 2266 AC_MSG_RESULT(yes) 2267 STD_CWARNINGS="$STD_CWARNINGS -fno-strict-aliasing" 2268 else 2269 AC_MSG_RESULT(no) 2270 fi 2271 # 2272 # turn off delete null pointer checks 2273 # 2274 AC_MSG_CHECKING(if "$CC" supports -fno-delete-null-pointer-checks) 2275 SAVE_CFLAGS="$CFLAGS" 2276 CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" 2277 AC_TRY_COMPILE(,, [FNODELETENULLPOINTERCHECKS=yes], 2278 [FNODELETENULLPOINTERCHECKS=no]) 2279 CFLAGS="$SAVE_CFLAGS" 2280 if test "$FNODELETENULLPOINTERCHECKS" = "yes"; then 2281 AC_MSG_RESULT(yes) 2282 STD_CWARNINGS="$STD_CWARNINGS -fno-delete-null-pointer-checks" 2283 else 2284 AC_MSG_RESULT(no) 2285 fi 2286 case "$host" in 2287 *-hp-hpux*) 2288 CFLAGS="$CFLAGS -Wl,+vnocompatwarnings" 2289 BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings" 2290 ;; 2291 esac 2292 if test "X$enable_warn_shadow" = Xyes; then 2293 STD_CWARNINGS="$STD_CWARNINGS -Wshadow" 2294 fi 2295 if test "X$enable_warn_error" = Xyes; then 2296 STD_CWARNINGS="$STD_CWARNINGS -Werror" 2297 fi 2298else 2299 case $host in 2300 *-dec-osf*) 2301 CC="$CC -std" 2302 CCOPT="$CCOPT -std" 2303 CCNOOPT="$CCNOOPT -std" 2304 MKDEPCC="$CC" 2305 ;; 2306 *-hp-hpux*) 2307 CC="$CC -Ae -z" 2308 # The version of the C compiler that constantly warns about 2309 # 'const' as well as alignment issues is unfortunately not 2310 # able to be discerned via the version of the operating 2311 # system, nor does cc have a version flag. 2312 case "`$CC +W 123 2>&1`" in 2313 *Unknown?option*) 2314 STD_CWARNINGS="+w1" 2315 ;; 2316 *) 2317 # Turn off the pointlessly noisy warnings. 2318 STD_CWARNINGS="+w1 +W 474,530,2193,2236" 2319 ;; 2320 esac 2321 CCOPT="$CCOPT -Ae -z" 2322 CCNOOPT="$CCNOOPT -Ae -z" 2323 CFLAGS="$CFLAGS -Wl,+vnocompatwarnings" 2324 BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings" 2325 MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP' 2326 ;; 2327 *-sgi-irix*) 2328 STD_CWARNINGS="-fullwarn -woff 1209" 2329 # 2330 # Silence more than 250 instances of 2331 # "prototyped function redeclared without prototype" 2332 # and 11 instances of 2333 # "variable ... was set but never used" 2334 # from lib/dns/sec/openssl. 2335 # 2336 IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552" 2337 ;; 2338 *-solaris*) 2339 MKDEPCFLAGS="-xM" 2340 ;; 2341 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 2342 # UnixWare 2343 CC="$CC -w" 2344 ;; 2345 esac 2346fi 2347 2348AC_SUBST(MKDEPCC) 2349AC_SUBST(MKDEPCFLAGS) 2350AC_SUBST(MKDEPPROG) 2351AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK) 2352 2353# 2354# NLS 2355# 2356AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),) 2357 2358# 2359# -lxnet buys us one big porting headache... standards, gotta love 'em. 2360# 2361# AC_CHECK_LIB(xnet, socket, , 2362# AC_CHECK_LIB(socket, socket) 2363# ) 2364# 2365# Use this for now, instead: 2366# 2367case "$host" in 2368 mips-sgi-irix*) 2369 ;; 2370 *-linux*) 2371 ;; 2372 *) 2373 AC_CHECK_LIB(socket, socket) 2374 AC_CHECK_LIB(nsl, inet_addr) 2375 ;; 2376esac 2377 2378# 2379# Work around Solaris's select() limitations. 2380# 2381case "$host" in 2382 *-solaris2.[[89]]|*-solaris2.1?) 2383 AC_DEFINE(FD_SETSIZE, 65536, 2384 [Solaris hack to get select_large_fdset.]) 2385 ;; 2386esac 2387 2388# 2389# Purify support 2390# 2391AC_MSG_CHECKING(whether to use purify) 2392AC_ARG_WITH(purify, 2393 [ --with-purify[=PATH] use Rational purify], 2394 use_purify="$withval", use_purify="no") 2395 2396case "$use_purify" in 2397 no) 2398 ;; 2399 yes) 2400 AC_PATH_PROG(purify_path, purify, purify) 2401 ;; 2402 *) 2403 purify_path="$use_purify" 2404 ;; 2405esac 2406 2407case "$use_purify" in 2408 no) 2409 AC_MSG_RESULT(no) 2410 PURIFY="" 2411 ;; 2412 *) 2413 if test -f $purify_path || test $purify_path = purify; then 2414 AC_MSG_RESULT($purify_path) 2415 PURIFYFLAGS="`echo $PURIFYOPTIONS`" 2416 PURIFY="$purify_path $PURIFYFLAGS" 2417 else 2418 AC_MSG_ERROR([$purify_path not found. 2419 2420Please choose the proper path with the following command: 2421 2422 configure --with-purify=PATH 2423]) 2424 fi 2425 ;; 2426esac 2427 2428AC_SUBST(PURIFY) 2429 2430# 2431# Google/Great Performance Tools CPU Profiler 2432# 2433AC_MSG_CHECKING(whether to use gperftools profiler) 2434AC_ARG_WITH(gperftools-profiler, 2435 [ --with-gperftools-profiler use gperftools CPU profiler], 2436 use_profiler="$withval", use_profiler="no") 2437 2438case $use_profiler in 2439 yes) 2440 AC_MSG_RESULT(yes) 2441 AC_DEFINE([HAVE_GPERFTOOLS_PROFILER], 1, 2442 [Define to use gperftools CPU profiler.]) 2443 LIBS="$LIBS -lprofiler" 2444 ;; 2445 *) 2446 AC_MSG_RESULT(no) 2447 ;; 2448esac 2449 2450# 2451# enable/disable dumping stack backtrace. Also check if the system supports 2452# glibc-compatible backtrace() function. 2453# 2454AC_ARG_ENABLE(backtrace, 2455[ --enable-backtrace log stack backtrace on abort [[default=yes]]], 2456 want_backtrace="$enableval", want_backtrace="yes") 2457case $want_backtrace in 2458yes) 2459 ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1" 2460 AC_TRY_LINK([#include <execinfo.h>], 2461 [return (backtrace((void **)0, 0));], 2462 [AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],) 2463 ;; 2464*) 2465 ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE" 2466 ;; 2467esac 2468AC_SUBST(ISC_PLATFORM_USEBACKTRACE) 2469 2470AC_ARG_ENABLE(symtable, 2471[ --enable-symtable use internal symbol table for backtrace 2472 [[all|minimal(default)|none]]], 2473 want_symtable="$enableval", want_symtable="minimal") 2474case $want_symtable in 2475yes|all|minimal) # "yes" is a hidden value equivalent to "minimal" 2476 if test "$PERL" = "" 2477 then 2478 AC_MSG_ERROR([Internal symbol table requires perl but no perl is found. 2479Install perl or explicitly disable the feature by --disable-symtable.]) 2480 fi 2481 if test "$use_libtool" = "yes"; then 2482 AC_MSG_WARN([Internal symbol table does not work with libtool. Disabling symbol table.]) 2483 else 2484 # we generate the internal symbol table only for those systems 2485 # known to work to avoid unexpected build failure. Also, warn 2486 # about unsupported systems when the feature is enabled 2487 # manually. 2488 case $host_os in 2489 freebsd*|netbsd*|openbsd*|linux*|solaris*|darwin*) 2490 MKSYMTBL_PROGRAM="$PERL" 2491 if test $want_symtable = all; then 2492 ALWAYS_MAKE_SYMTABLE="yes" 2493 fi 2494 ;; 2495 *) 2496 if test $want_symtable = yes -o $want_symtable = all 2497 then 2498 AC_MSG_WARN([this system is not known to generate internal symbol table safely; disabling it]) 2499 fi 2500 esac 2501 fi 2502 ;; 2503*) 2504 ;; 2505esac 2506AC_SUBST(MKSYMTBL_PROGRAM) 2507AC_SUBST(ALWAYS_MAKE_SYMTABLE) 2508 2509# 2510# File name extension for static archive files, for those few places 2511# where they are treated differently from dynamic ones. 2512# 2513SA=a 2514 2515AC_SUBST(O) 2516AC_SUBST(A) 2517AC_SUBST(SA) 2518AC_SUBST(LIBTOOL_MKDEP_SED) 2519AC_SUBST(LIBTOOL_MODE_COMPILE) 2520AC_SUBST(LIBTOOL_MODE_INSTALL) 2521AC_SUBST(LIBTOOL_MODE_LINK) 2522AC_SUBST(LIBTOOL_ALLOW_UNDEFINED) 2523AC_SUBST(LIBTOOL_IN_MAIN) 2524 2525BIND9_CO_RULE=".c.$O:" 2526AC_SUBST(BIND9_CO_RULE) 2527 2528# 2529# Here begins a very long section to determine the system's networking 2530# capabilities. The order of the tests is significant. 2531# 2532 2533# 2534# IPv6 2535# 2536AC_ARG_ENABLE(ipv6, 2537 [ --enable-ipv6 use IPv6 [default=autodetect]]) 2538 2539case "$enable_ipv6" in 2540 yes|''|autodetect) 2541 AC_DEFINE(WANT_IPV6) 2542 ;; 2543 no) 2544 ;; 2545esac 2546 2547# 2548# We do the IPv6 compilation checking after libtool so that we can put 2549# the right suffix on the files. 2550# 2551AC_MSG_CHECKING(for IPv6 structures) 2552AC_TRY_COMPILE([ 2553#include <sys/types.h> 2554#include <sys/socket.h> 2555#include <netinet/in.h>], 2556[struct sockaddr_in6 sin6; return (0);], 2557 [AC_MSG_RESULT(yes) 2558 found_ipv6=yes], 2559 [AC_MSG_RESULT(no) 2560 found_ipv6=no]) 2561 2562# 2563# See whether IPv6 support is provided via a Kame add-on. 2564# This is done before other IPv6 linking tests to LIBS is properly set. 2565# 2566AC_MSG_CHECKING(for Kame IPv6 support) 2567AC_ARG_WITH(kame, 2568 [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]], 2569 use_kame="$withval", use_kame="no") 2570 2571case "$use_kame" in 2572 no) 2573 ;; 2574 yes) 2575 kame_path=/usr/local/v6 2576 ;; 2577 *) 2578 kame_path="$use_kame" 2579 ;; 2580esac 2581 2582case "$use_kame" in 2583 no) 2584 AC_MSG_RESULT(no) 2585 ;; 2586 *) 2587 if test -f $kame_path/lib/libinet6.a; then 2588 AC_MSG_RESULT($kame_path/lib/libinet6.a) 2589 LIBS="-L$kame_path/lib -linet6 $LIBS" 2590 else 2591 AC_MSG_ERROR([$kame_path/lib/libinet6.a not found. 2592 2593Please choose the proper path with the following command: 2594 2595 configure --with-kame=PATH 2596]) 2597 fi 2598 ;; 2599esac 2600 2601# 2602# Whether netinet6/in6.h is needed has to be defined in isc/platform.h. 2603# Including it on Kame-using platforms is very bad, though, because 2604# Kame uses #error against direct inclusion. So include it on only 2605# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1. 2606# This is done before the in6_pktinfo check because that's what 2607# netinet6/in6.h is needed for. 2608# 2609changequote({, }) 2610case "$host" in 2611*-bsdi4.[01]*) 2612 ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1" 2613 LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1" 2614 isc_netinet6in6_hack="#include <netinet6/in6.h>" 2615 ;; 2616*) 2617 ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H" 2618 LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H" 2619 isc_netinet6in6_hack="" 2620 ;; 2621esac 2622changequote([, ]) 2623 2624# 2625# This is similar to the netinet6/in6.h issue. 2626# 2627case "$host" in 2628*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 2629 # UnixWare 2630 ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1" 2631 LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1" 2632 ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1" 2633 isc_netinetin6_hack="#include <netinet/in6.h>" 2634 ;; 2635*) 2636 ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H" 2637 LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H" 2638 ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR" 2639 isc_netinetin6_hack="" 2640 ;; 2641esac 2642 2643# 2644# Now delve deeper into the suitability of the IPv6 support. 2645# 2646case "$found_ipv6" in 2647 yes) 2648 ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1" 2649 LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" 2650 2651 AC_MSG_CHECKING(for in6_addr) 2652 AC_TRY_COMPILE([ 2653#include <sys/types.h> 2654#include <sys/socket.h> 2655#include <netinet/in.h> 2656$isc_netinetin6_hack 2657$isc_netinet6in6_hack 2658], 2659[struct in6_addr in6; return (0);], 2660 [AC_MSG_RESULT(yes) 2661 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" 2662 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6" 2663 isc_in_addr6_hack=""], 2664 [AC_MSG_RESULT(no) 2665 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1" 2666 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1" 2667 isc_in_addr6_hack="#define in6_addr in_addr6"]) 2668 2669 AC_MSG_CHECKING(for in6addr_any) 2670 AC_TRY_LINK([ 2671#include <sys/types.h> 2672#include <sys/socket.h> 2673#include <netinet/in.h> 2674$isc_netinetin6_hack 2675$isc_netinet6in6_hack 2676$isc_in_addr6_hack 2677], 2678 [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);], 2679 [AC_MSG_RESULT(yes) 2680 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 2681 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"], 2682 [AC_MSG_RESULT(no) 2683 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1" 2684 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"]) 2685 2686 AC_MSG_CHECKING(for in6addr_loopback) 2687 AC_TRY_LINK([ 2688#include <sys/types.h> 2689#include <sys/socket.h> 2690#include <netinet/in.h> 2691$isc_netinetin6_hack 2692$isc_netinet6in6_hack 2693$isc_in_addr6_hack 2694], 2695 [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);], 2696 [AC_MSG_RESULT(yes) 2697 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK" 2698 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"], 2699 [AC_MSG_RESULT(no) 2700 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1" 2701 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"]) 2702 2703 AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6) 2704 AC_TRY_COMPILE([ 2705#include <sys/types.h> 2706#include <sys/socket.h> 2707#include <netinet/in.h> 2708$isc_netinetin6_hack 2709$isc_netinet6in6_hack 2710], 2711 [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);], 2712 [AC_MSG_RESULT(yes) 2713 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 2714 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"], 2715 [AC_MSG_RESULT(no) 2716 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID" 2717 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"]) 2718 LWRES_HAVE_SIN6_SCOPE_ID="$result" 2719 2720 AC_MSG_CHECKING(for in6_pktinfo) 2721 AC_TRY_COMPILE([ 2722#include <sys/types.h> 2723#include <sys/socket.h> 2724#include <netinet/in.h> 2725$isc_netinetin6_hack 2726$isc_netinet6in6_hack 2727], 2728 [struct in6_pktinfo xyzzy; return (0);], 2729 [AC_MSG_RESULT(yes) 2730 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"], 2731 [AC_MSG_RESULT(no -- disabling runtime ipv6 support) 2732 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"]) 2733 ;; 2734 no) 2735 ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6" 2736 LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6" 2737 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 2738 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY" 2739 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO" 2740 LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1" 2741 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 2742 ISC_IPV6_H="ipv6.h" 2743 ISC_IPV6_O="ipv6.$O" 2744 ISC_ISCIPV6_O="unix/ipv6.$O" 2745 ISC_IPV6_C="ipv6.c" 2746 ;; 2747esac 2748 2749AC_MSG_CHECKING(for struct sockaddr_storage) 2750AC_TRY_COMPILE([ 2751#include <sys/types.h> 2752#include <sys/socket.h> 2753$isc_netinetin6_hack 2754$isc_netinet6in6_hack 2755], 2756[struct sockaddr_storage storage; return (0);], 2757[AC_MSG_RESULT(yes) 2758ISC_PLATFORM_HAVESOCKADDRSTORAGE="#define ISC_PLATFORM_HAVESOCKADDRSTORAGE 1"], 2759[AC_MSG_RESULT(no) 2760ISC_PLATFORM_HAVESOCKADDRSTORAGE="#undef ISC_PLATFORM_HAVESOCKADDRSTORAGE"]) 2761 2762AC_SUBST(ISC_PLATFORM_HAVEIPV6) 2763AC_SUBST(LWRES_PLATFORM_HAVEIPV6) 2764AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H) 2765AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H) 2766AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H) 2767AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H) 2768AC_SUBST(ISC_PLATFORM_HAVEINADDR6) 2769AC_SUBST(LWRES_PLATFORM_HAVEINADDR6) 2770AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY) 2771AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY) 2772AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK) 2773AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK) 2774AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO) 2775AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR) 2776AC_SUBST(ISC_PLATFORM_HAVESOCKADDRSTORAGE) 2777AC_SUBST(ISC_IPV6_H) 2778AC_SUBST(ISC_IPV6_O) 2779AC_SUBST(ISC_ISCIPV6_O) 2780AC_SUBST(ISC_IPV6_C) 2781AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID) 2782AC_SUBST(ISC_PLATFORM_HAVESCOPEID) 2783 2784AC_MSG_CHECKING([for struct if_laddrreq]) 2785AC_TRY_LINK([ 2786#include <sys/types.h> 2787#include <net/if6.h> 2788],[ struct if_laddrreq a; ], 2789 [AC_MSG_RESULT(yes) 2790 ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"], 2791 [AC_MSG_RESULT(no) 2792 ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"]) 2793AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ) 2794 2795AC_MSG_CHECKING([for struct if_laddrconf]) 2796AC_TRY_LINK([ 2797#include <sys/types.h> 2798#include <net/if6.h> 2799],[ struct if_laddrconf a; ], 2800 [AC_MSG_RESULT(yes) 2801 ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"], 2802 [AC_MSG_RESULT(no) 2803 ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"]) 2804AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF) 2805 2806# 2807# Check for network functions that are often missing. We do this 2808# after the libtool checking, so we can put the right suffix on 2809# the files. It also needs to come after checking for a Kame add-on, 2810# which provides some (all?) of the desired functions. 2811# 2812 2813AC_MSG_CHECKING([for inet_ntop with IPv6 support]) 2814AC_TRY_RUN([ 2815#include <sys/types.h> 2816#include <sys/socket.h> 2817#include <netinet/in.h> 2818#include <arpa/inet.h> 2819main() { 2820char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}], 2821 [AC_MSG_RESULT(yes) 2822 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"], 2823 2824 [AC_MSG_RESULT(no) 2825 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O" 2826 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c" 2827 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"], 2828 [AC_MSG_RESULT(assuming inet_ntop not needed) 2829 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"]) 2830 2831 2832# On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts 2833# addresses with less than four octets, like "1.2.3". Also leading 2834# zeros should also be rejected. 2835 2836AC_MSG_CHECKING([for working inet_pton with IPv6 support]) 2837AC_TRY_RUN([ 2838#include <sys/types.h> 2839#include <sys/socket.h> 2840#include <netinet/in.h> 2841#include <arpa/inet.h> 2842main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 : 2843 inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 2844 (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }], 2845 [AC_MSG_RESULT(yes) 2846 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"], 2847 [AC_MSG_RESULT(no) 2848 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 2849 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 2850 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"], 2851 [AC_MSG_RESULT(assuming inet_pton needed) 2852 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 2853 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 2854 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"]) 2855 2856AC_SUBST(ISC_PLATFORM_NEEDNTOP) 2857AC_SUBST(ISC_PLATFORM_NEEDPTON) 2858 2859# 2860# Look for a 4.4BSD-style sa_len member in struct sockaddr. 2861# 2862case "$host" in 2863 *-dec-osf*) 2864 # Turn on 4.4BSD style sa_len support. 2865 AC_DEFINE(_SOCKADDR_LEN) 2866 ;; 2867esac 2868 2869AC_MSG_CHECKING(for sa_len in struct sockaddr) 2870AC_TRY_COMPILE([ 2871#include <sys/types.h> 2872#include <sys/socket.h>], 2873[struct sockaddr sa; sa.sa_len = 0; return (0);], 2874 [AC_MSG_RESULT(yes) 2875 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" 2876 LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"], 2877 [AC_MSG_RESULT(no) 2878 ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN" 2879 LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"]) 2880AC_SUBST(ISC_PLATFORM_HAVESALEN) 2881AC_SUBST(LWRES_PLATFORM_HAVESALEN) 2882 2883# 2884# Look for a 4.4BSD or 4.3BSD struct msghdr 2885# 2886AC_MSG_CHECKING(for struct msghdr flavor) 2887AC_TRY_COMPILE([ 2888#include <sys/types.h> 2889#include <sys/socket.h>], 2890[struct msghdr msg; msg.msg_flags = 0; return (0);], 2891 [AC_MSG_RESULT(4.4BSD) 2892 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"], 2893 [AC_MSG_RESULT(4.3BSD) 2894 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"]) 2895AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR) 2896 2897# 2898# Look for in_port_t. 2899# 2900AC_MSG_CHECKING(for type in_port_t) 2901AC_TRY_COMPILE([ 2902#include <sys/types.h> 2903#include <netinet/in.h>], 2904[in_port_t port = 25; return (0);], 2905 [AC_MSG_RESULT(yes) 2906 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"], 2907 [AC_MSG_RESULT(no) 2908 ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"]) 2909AC_SUBST(ISC_PLATFORM_NEEDPORTT) 2910 2911# 2912# Check for addrinfo 2913# 2914AC_MSG_CHECKING(for struct addrinfo) 2915AC_TRY_COMPILE([ 2916#include <netdb.h>], 2917[struct addrinfo a; return (0);], 2918 [AC_MSG_RESULT(yes) 2919 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" 2920 ISC_IRS_NEEDADDRINFO="#undef ISC_IRS_NEEDADDRINFO" 2921 AC_DEFINE(HAVE_ADDRINFO)], 2922 [AC_MSG_RESULT(no) 2923 ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1" 2924 ISC_IRS_NEEDADDRINFO="#define ISC_IRS_NEEDADDRINFO 1"]) 2925AC_SUBST(ISC_LWRES_NEEDADDRINFO) 2926AC_SUBST(ISC_IRS_NEEDADDRINFO) 2927 2928# 2929# Check for rrsetinfo 2930# 2931AC_MSG_CHECKING(for struct rrsetinfo) 2932AC_TRY_COMPILE([ 2933#include <netdb.h>], 2934[struct rrsetinfo r; return (0);], 2935 [AC_MSG_RESULT(yes) 2936 ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"], 2937 [AC_MSG_RESULT(no) 2938 ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"]) 2939AC_SUBST(ISC_LWRES_NEEDRRSETINFO) 2940 2941AC_MSG_CHECKING(for int sethostent) 2942AC_TRY_COMPILE([ 2943#include <netdb.h>], 2944[int i = sethostent(0); return(0);], 2945 [AC_MSG_RESULT(yes) 2946 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"], 2947 [AC_MSG_RESULT(no) 2948 ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"]) 2949AC_SUBST(ISC_LWRES_SETHOSTENTINT) 2950 2951AC_MSG_CHECKING(for int endhostent) 2952AC_TRY_COMPILE([ 2953#include <netdb.h>], 2954[int i = endhostent(); return(0);], 2955 [AC_MSG_RESULT(yes) 2956 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"], 2957 [AC_MSG_RESULT(no) 2958 ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"]) 2959AC_SUBST(ISC_LWRES_ENDHOSTENTINT) 2960 2961AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...)) 2962AC_TRY_COMPILE([ 2963#include <netdb.h> 2964struct netent *getnetbyaddr(in_addr_t, int);], 2965[], 2966 [AC_MSG_RESULT(yes) 2967 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"], 2968 [AC_MSG_RESULT(no) 2969 ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"]) 2970AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR) 2971 2972AC_MSG_CHECKING(for int setnetent) 2973AC_TRY_COMPILE([ 2974#include <netdb.h>], 2975[int i = setnetent(0); return(0);], 2976 [AC_MSG_RESULT(yes) 2977 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"], 2978 [AC_MSG_RESULT(no) 2979 ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"]) 2980AC_SUBST(ISC_LWRES_SETNETENTINT) 2981 2982AC_MSG_CHECKING(for int endnetent) 2983AC_TRY_COMPILE([ 2984#include <netdb.h>], 2985[int i = endnetent(); return(0);], 2986 [AC_MSG_RESULT(yes) 2987 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"], 2988 [AC_MSG_RESULT(no) 2989 ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"]) 2990AC_SUBST(ISC_LWRES_ENDNETENTINT) 2991 2992AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...)) 2993AC_TRY_COMPILE([ 2994#include <netdb.h> 2995struct hostent *gethostbyaddr(const void *, size_t, int);], 2996[return(0);], 2997 [AC_MSG_RESULT(yes) 2998 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"], 2999 [AC_MSG_RESULT(no) 3000 ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"]) 3001AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID) 3002 3003AC_MSG_CHECKING(for h_errno in netdb.h) 3004AC_TRY_COMPILE([ 3005#include <netdb.h>], 3006[h_errno = 1; return(0);], 3007 [AC_MSG_RESULT(yes) 3008 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"], 3009 [AC_MSG_RESULT(no) 3010 ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"]) 3011AC_SUBST(ISC_LWRES_NEEDHERRNO) 3012 3013# 3014# Sadly, the definitions of system-supplied getnameinfo(3) vary. Try to catch 3015# known variations here: 3016# 3017AC_MSG_CHECKING(for getnameinfo prototype definitions) 3018AC_TRY_COMPILE([ 3019#include <sys/types.h> 3020#include <sys/socket.h> 3021#include <netdb.h> 3022int getnameinfo(const struct sockaddr *, socklen_t, char *, 3023 socklen_t, char *, socklen_t, unsigned int);], 3024[ return (0);], 3025 [AC_MSG_RESULT(socklen_t for buflen; u_int for flags) 3026 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t, 3027 [Define to the sockaddr length type used by getnameinfo(3).]) 3028 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t, 3029 [Define to the buffer length type used by getnameinfo(3).]) 3030 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int, 3031 [Define to the flags type used by getnameinfo(3).])], 3032[AC_TRY_COMPILE([ 3033#include <sys/types.h> 3034#include <sys/socket.h> 3035#include <netdb.h> 3036int getnameinfo(const struct sockaddr *, socklen_t, char *, 3037 size_t, char *, size_t, int);], 3038[ return (0);], 3039 [AC_MSG_RESULT(size_t for buflen; int for flags) 3040 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t) 3041 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t) 3042 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)], 3043[AC_TRY_COMPILE([ 3044#include <sys/types.h> 3045#include <sys/socket.h> 3046#include <netdb.h> 3047int getnameinfo(const struct sockaddr *, size_t, char *, 3048 size_t, char *, size_t, int);], 3049[ return (0);], 3050 [AC_MSG_RESULT(size_t for buflen; int for flags) 3051 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, size_t) 3052 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t) 3053 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)], 3054[AC_MSG_RESULT(not match any subspecies; assume standard definition) 3055AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t) 3056AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t) 3057AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])]) 3058 3059# 3060# ...and same for gai_strerror(). 3061# 3062AC_MSG_CHECKING(for gai_strerror prototype definitions) 3063AC_TRY_COMPILE([ 3064#include <sys/types.h> 3065#include <sys/socket.h> 3066#include <netdb.h> 3067char *gai_strerror(int ecode);], 3068[ return (0); ], 3069 [AC_MSG_RESULT(returning char *) 3070 AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [char *], 3071 [return type of gai_strerror])], 3072[AC_MSG_RESULT(not match any subspecies; assume standard definition) 3073AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [const char *])]) 3074 3075AC_CHECK_FUNC(getipnodebyname, 3076 [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"], 3077 [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"]) 3078AC_CHECK_FUNC(getnameinfo, 3079 [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"], 3080 [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"]) 3081AC_CHECK_FUNC(getaddrinfo, 3082 [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO" 3083 AC_DEFINE(HAVE_GETADDRINFO)], 3084 [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"]) 3085AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR)) 3086AC_SUBST(ISC_LWRES_GETIPNODEPROTO) 3087AC_SUBST(ISC_LWRES_GETADDRINFOPROTO) 3088AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO) 3089AC_SUBST(ISC_IRS_GETNAMEINFOSOCKLEN) 3090 3091AC_ARG_ENABLE(getifaddrs, 3092[ --enable-getifaddrs enable the use of getifaddrs() [[yes|no]].], 3093 want_getifaddrs="$enableval", want_getifaddrs="yes") 3094 3095# 3096# This interface iteration code for getifaddrs() will fall back to using 3097# /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6 3098# addresses. 3099# 3100case $want_getifaddrs in 3101glibc) 3102AC_MSG_WARN("--enable-getifaddrs=glibc is no longer required") 3103AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 3104;; 3105yes) 3106AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 3107;; 3108no) 3109;; 3110esac 3111 3112# 3113# Look for a sysctl call to get the list of network interfaces. 3114# 3115case $ac_cv_header_sys_sysctl_h in 3116yes) 3117AC_MSG_CHECKING(for interface list sysctl) 3118AC_EGREP_CPP(found_rt_iflist, [ 3119#include <sys/param.h> 3120#include <sys/sysctl.h> 3121#include <sys/socket.h> 3122#ifdef NET_RT_IFLIST 3123found_rt_iflist 3124#endif 3125], 3126 [AC_MSG_RESULT(yes) 3127 AC_DEFINE(HAVE_IFLIST_SYSCTL)], 3128 [AC_MSG_RESULT(no)]) 3129;; 3130esac 3131 3132# 3133# Check for some other useful functions that are not ever-present. 3134# 3135 3136# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC 3137# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77 3138# reportedly defines strsep() without declaring it in <string.h> when 3139# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and 3140# AC_CHECK_FUNC() incorrectly succeeds because it declares 3141# the function itself. 3142AC_MSG_CHECKING(for correctly declared strsep()) 3143AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");], 3144 [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"], 3145 [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"]) 3146AC_SUBST(ISC_PLATFORM_NEEDSTRSEP) 3147 3148AC_CHECK_FUNC(memmove, 3149 [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"], 3150 [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"]) 3151AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE) 3152 3153AC_CHECK_FUNC(strtoul, 3154 [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL" 3155 LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL" 3156 GENRANDOMLIB=""], 3157 [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1" 3158 LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1" 3159 GENRANDOMLIB='${ISCLIBS}']) 3160AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL) 3161AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL) 3162AC_SUBST(GENRANDOMLIB) 3163 3164AC_CHECK_FUNC(strlcpy, 3165 [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY" 3166 LWRES_PLATFORM_NEEDSTRLCPY="#undef LWRES_PLATFORM_NEEDSTRLCPY"], 3167 [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1" 3168 LWRES_PLATFORM_NEEDSTRLCPY="#define LWRES_PLATFORM_NEEDSTRLCPY 1"]) 3169AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY) 3170AC_SUBST(LWRES_PLATFORM_NEEDSTRLCPY) 3171 3172AC_CHECK_FUNC(strlcat, 3173 [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"], 3174 [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"]) 3175AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT) 3176 3177AC_CHECK_FUNC(strcasestr, 3178 [ISC_PLATFORM_NEEDSTRCASESTR="#undef ISC_PLATFORM_NEEDSTRCASESTR"], 3179 [ISC_PLATFORM_NEEDSTRCASESTR="#define ISC_PLATFORM_NEEDSTRCASESTR 1"]) 3180AC_SUBST(ISC_PLATFORM_NEEDSTRCASESTR) 3181 3182AC_SUBST(READLINE_LIB) 3183AC_ARG_WITH(readline, 3184 [ --with-readline[=LIBSPEC] specify readline library [default -lreadline]], 3185 readline="$withval", readline="-lreadline") 3186case "$readline" in 3187no) ;; 3188*) 3189 if test "x$readline" = "xyes" 3190 then 3191 readline=-lreadline 3192 fi 3193 saved_LIBS="$LIBS" 3194 LIBS="$readline" 3195 AC_CHECK_FUNCS(readline) 3196 if test "$ac_cv_func_readline" = "yes" 3197 then 3198 READLINE_LIB="$readline" 3199 fi 3200 LIBS="$saved_LIBS" 3201 ;; 3202esac 3203 3204 3205ISC_PRINT_OBJS= 3206ISC_PRINT_SRCS= 3207AC_MSG_CHECKING(sprintf) 3208AC_TRY_COMPILE([ 3209#include <stdio.h> 3210], 3211[ char buf[2]; return(*sprintf(buf,"x"));], 3212[ 3213ISC_PRINT_OBJS="print.$O" 3214ISC_PRINT_SRCS="print.c" 3215ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF" 3216LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF" 3217], 3218[ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF" 3219 LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"] 3220) 3221AC_SUBST(ISC_PLATFORM_NEEDSPRINTF) 3222AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF) 3223 3224AC_CHECK_FUNC(vsnprintf, 3225 [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF" 3226 LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"], 3227 [ISC_PRINT_OBJS="print.$O" 3228 ISC_PRINT_SRCS="print.c" 3229 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1" 3230 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"]) 3231AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF) 3232AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF) 3233ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS" 3234ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS" 3235 3236AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR)) 3237 3238AC_SUBST(ISC_EXTRA_OBJS) 3239AC_SUBST(ISC_EXTRA_SRCS) 3240 3241# 3242# Use our own SPNEGO implementation? 3243# 3244AC_ARG_ENABLE(isc-spnego, 3245 [ --disable-isc-spnego use SPNEGO from GSSAPI library]) 3246 3247if test -n "$USE_GSSAPI" 3248then 3249 case "$enable_isc_spnego" in 3250 yes|'') 3251 USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO' 3252 DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O" 3253 DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c" 3254 AC_MSG_RESULT(using SPNEGO from lib/dns) 3255 ;; 3256 no) 3257 AC_MSG_RESULT(using SPNEGO from GSSAPI library) 3258 ;; 3259 esac 3260fi 3261 3262AC_SUBST(USE_ISC_SPNEGO) 3263 3264AC_SUBST(DST_EXTRA_OBJS) 3265AC_SUBST(DST_EXTRA_SRCS) 3266 3267# Determine the printf format characters to use when printing 3268# values of type isc_int64_t. This will normally be "ll", but where 3269# the compiler treats "long long" as a alias for "long" and printf 3270# doesn't know about "long long" use "l". Hopefully the sprintf 3271# will produce a inconsistent result in the later case. If the compiler 3272# fails due to seeing "%lld" we fall back to "l". 3273# 3274# Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses 3275# %ld even for (long long)/ 3276# 3277# Win32 uses "%I64d", but that's defined elsewhere since we don't use 3278# configure on Win32. 3279# 3280AC_MSG_CHECKING(printf format modifier for 64-bit integers) 3281AC_TRY_RUN([ 3282#include <stdio.h> 3283main() { 3284 long long int j = 0; 3285 char buf[100]; 3286 buf[0] = 0; 3287 sprintf(buf, "%lld", j); 3288 exit((sizeof(long long int) != sizeof(long int))? 0 : 3289 (strcmp(buf, "0") != 0)); 3290} 3291], 3292 [AC_MSG_RESULT(ll) 3293 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 3294 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'], 3295 [AC_MSG_RESULT(l) 3296 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"' 3297 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'], 3298 [AC_MSG_RESULT(assuming target platform uses ll) 3299 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 3300 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"']) 3301AC_SUBST(ISC_PLATFORM_QUADFORMAT) 3302AC_SUBST(LWRES_PLATFORM_QUADFORMAT) 3303 3304# 3305# Security Stuff 3306# 3307# Note it is very recommended to *not* disable chroot(), 3308# this is only because chroot() was made obsolete by Posix. 3309AC_ARG_ENABLE(chroot, 3310 [ --disable-chroot disable chroot]) 3311case "$enable_chroot" in 3312 yes|'') 3313 AC_CHECK_FUNCS(chroot) 3314 ;; 3315 no) 3316 ;; 3317esac 3318AC_ARG_ENABLE(linux-caps, 3319 [ --disable-linux-caps disable linux capabilities]) 3320case "$enable_linux_caps" in 3321 yes|'') 3322 AC_CHECK_HEADERS(linux/types.h) 3323 AC_CHECK_HEADERS([sys/capability.h]) 3324 AC_CHECK_HEADERS([linux/capability.h], [], [], 3325 [#ifdef HAVE_LINUX_TYPES_H 3326 #include <linux/types.h> 3327 #endif 3328 ]) 3329 AC_CHECK_LIB(cap, cap_set_proc) 3330 ;; 3331 no) 3332 ;; 3333esac 3334AC_CHECK_HEADERS(sys/prctl.h) 3335 3336AC_CHECK_HEADERS(sys/un.h, 3337ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1" 3338, 3339ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH" 3340) 3341AC_SUBST(ISC_PLATFORM_HAVESYSUNH) 3342 3343case "$host" in 3344*-solaris*) 3345 AC_DEFINE(NEED_SECURE_DIRECTORY, 1, 3346 [Define if connect does not honour the permission on the UNIX domain socket.]) 3347 ;; 3348*-sunos*) 3349 AC_DEFINE(NEED_SECURE_DIRECTORY, 1, 3350 [Define if connect does not honour the permission on the UNIX domain socket.]) 3351 ;; 3352esac 3353 3354# 3355# Time Zone Stuff 3356# 3357AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET)) 3358 3359AC_MSG_CHECKING(for optarg declaration) 3360AC_TRY_COMPILE([ 3361#include <unistd.h> 3362], 3363[optarg = 0;], 3364[AC_MSG_RESULT(yes)], 3365[AC_MSG_RESULT(no) 3366GEN_NEED_OPTARG="-DNEED_OPTARG=1" 3367AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])]) 3368 3369# 3370# BSD/OS, and perhaps some others, don't define rlim_t. 3371# 3372AC_MSG_CHECKING(for type rlim_t) 3373AC_TRY_COMPILE([ 3374#include <sys/types.h> 3375#include <sys/time.h> 3376#include <sys/resource.h>], 3377[rlim_t rl = 19671212; return (0);], 3378[AC_MSG_RESULT(yes) 3379 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"], 3380[AC_MSG_RESULT(no) 3381 3382AC_MSG_CHECKING(type of rlim_cur) 3383AC_TRY_RUN([ 3384#include <sys/types.h> 3385#include <sys/time.h> 3386#include <sys/resource.h> 3387main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}], 3388[AC_MSG_RESULT(int) 3389ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"], 3390[ 3391AC_TRY_RUN([ 3392#include <sys/types.h> 3393#include <sys/time.h> 3394#include <sys/resource.h> 3395main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}], 3396[AC_MSG_RESULT(long int) 3397ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"], 3398[ 3399AC_TRY_RUN([ 3400#include <sys/types.h> 3401#include <sys/time.h> 3402#include <sys/resource.h> 3403main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}], 3404[AC_MSG_RESULT(long long int) 3405ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"], 3406[AC_MSG_ERROR([unable to determine sizeof rlim_cur]) 3407],[AC_MSG_ERROR(this cannot happen)]) 3408],[AC_MSG_ERROR(this cannot happen)]) 3409],[ 3410AC_ARG_WITH(rlimtype, , rlimtype="$withval", rlimtype="long long int") 3411ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE $rlimtype" 3412AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming $rlimtype)]) 3413]) 3414AC_SUBST(ISC_PLATFORM_RLIMITTYPE) 3415 3416# 3417# Older HP-UX doesn't have gettune 3418# 3419case "$host" in 3420 *-hp-hpux*) 3421 AC_CHECK_HEADERS(sys/dyntune.h) 3422 ;; 3423 *) 3424 ;; 3425esac 3426 3427 3428# 3429# Compaq TruCluster requires more code for handling cluster IP aliases 3430# 3431case "$host" in 3432 *-dec-osf*) 3433 AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS") 3434 AC_CHECK_FUNC(clua_getaliasaddress, 3435 AC_DEFINE(HAVE_TRUCLUSTER, 1, 3436 [Define if running under Compaq TruCluster])) 3437 ;; 3438 *) 3439 ;; 3440esac 3441 3442# 3443# Some hosts need msg_namelen to match the size of the socket structure. 3444# Some hosts don't set msg_namelen appropriately on return from recvmsg(). 3445# 3446case $host in 3447*os2*|*hp-mpeix*) 3448 AC_DEFINE(BROKEN_RECVMSG, 1, 3449 [Define if recvmsg() does not meet all of the BSD socket API specifications.]) 3450 ;; 3451esac 3452 3453# 3454# Microsoft has their own way of handling shared libraries that requires 3455# additional qualifiers on extern variables. Unix systems don't need it. 3456# 3457AC_SUBST(ISC_PLATFORM_USEDECLSPEC) 3458ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC" 3459AC_SUBST(LWRES_PLATFORM_USEDECLSPEC) 3460LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC" 3461AC_SUBST(IRS_PLATFORM_USEDECLSPEC) 3462IRS_PLATFORM_USEDECLSPEC="#undef IRS_PLATFORM_USEDECLSPEC" 3463 3464# 3465# Random remaining OS-specific issues involving compiler warnings. 3466# XXXDCL print messages to indicate some compensation is being done? 3467# 3468AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT) 3469ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT" 3470 3471case "$host" in 3472 *-aix5.[[123]].*) 3473 hack_shutup_pthreadonceinit=yes 3474 ;; 3475 *-bsdi3.1*) 3476 hack_shutup_sputaux=yes 3477 ;; 3478 *-bsdi4.0*) 3479 hack_shutup_sigwait=yes 3480 hack_shutup_sputaux=yes 3481 ;; 3482 [*-bsdi4.[12]*]) 3483 hack_shutup_stdargcast=yes 3484 ;; 3485 [*-solaris2.[89]]) 3486 hack_shutup_pthreadonceinit=yes 3487 ;; 3488 *-solaris2.1[[0-9]]) 3489 AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [hack_shutup_pthreadonceinit=yes], ) 3490 ;; 3491esac 3492 3493case "$hack_shutup_pthreadonceinit" in 3494 yes) 3495 # 3496 # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings. 3497 # 3498 ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1" 3499 ;; 3500esac 3501 3502case "$hack_shutup_sigwait" in 3503 yes) 3504 # 3505 # Shut up a -Wmissing-prototypes warning for sigwait(). 3506 # 3507 AC_DEFINE(SHUTUP_SIGWAIT) 3508 ;; 3509esac 3510 3511case "$hack_shutup_sputaux" in 3512 yes) 3513 # 3514 # Shut up a -Wmissing-prototypes warning from <stdio.h>. 3515 # 3516 AC_DEFINE(SHUTUP_SPUTAUX) 3517 ;; 3518esac 3519 3520case "$hack_shutup_stdargcast" in 3521 yes) 3522 # 3523 # Shut up a -Wcast-qual warning from va_start(). 3524 # 3525 AC_DEFINE(SHUTUP_STDARG_CAST) 3526 ;; 3527esac 3528 3529AC_CHECK_HEADERS(strings.h, 3530 ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1" 3531, 3532 ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH" 3533) 3534AC_SUBST(ISC_PLATFORM_HAVESTRINGSH) 3535 3536# 3537# Check for if_nametoindex() for IPv6 scoped addresses support 3538# 3539AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes, 3540 ac_cv_have_if_nametoindex=no) 3541case $ac_cv_have_if_nametoindex in 3542no) 3543 case "$host" in 3544 *-hp-hpux*) 3545 AC_CHECK_LIB(ipv6, if_nametoindex, 3546 ac_cv_have_if_nametoindex=yes 3547 LIBS="-lipv6 $LIBS",) 3548 ;; 3549 esac 3550esac 3551case $ac_cv_have_if_nametoindex in 3552yes) 3553 ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1" 3554 AC_DEFINE(HAVE_IF_NAMETOINDEX, 1, 3555 [Define to 1 if you have the if_nametoindex function.]) 3556 3557 ;; 3558*) 3559 ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX" 3560 ;; 3561esac 3562AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX) 3563 3564AC_CHECK_FUNCS(nanosleep usleep) 3565 3566# 3567# Machine architecture dependent features 3568# 3569AC_ARG_ENABLE(atomic, 3570 [ --enable-atomic enable machine specific atomic operations 3571 [[default=autodetect]]], 3572 enable_atomic="$enableval", 3573 enable_atomic="autodetect") 3574case "$enable_atomic" in 3575 yes|''|autodetect) 3576 case "$host" in 3577 powerpc-ibm-aix*) 3578 if test "X$GCC" = "Xyes"; then 3579 AC_MSG_CHECKING([if asm("isc"); works]) 3580 AC_TRY_COMPILE(,[ 3581 main() { asm("ics"); exit(0); } 3582 ], 3583 [AC_MSG_RESULT(yes) 3584 use_atomic=yes], 3585 [ 3586 saved_cflags="$CFLAGS" 3587 CFLAGS="$CFLAGS -Wa,-many" 3588 AC_TRY_RUN([ 3589 main() { asm("ics"); exit(0); } 3590 ], 3591 [AC_MSG_RESULT([yes, required -Wa,-many]) 3592 use_atomic=yes], 3593 [AC_MSG_RESULT([no, use_atomic disabled]) 3594 CFLAGS="$saved_cflags" 3595 use_atomic=no], 3596 [AC_MSG_RESULT([cross compile, assume yes]) 3597 CFLAGS="$saved_cflags" 3598 use_atomic=yes]) 3599 ] 3600 ) 3601 else 3602 use_atomic=yes 3603 fi 3604 ;; 3605 *) 3606 use_atomic=yes 3607 ;; 3608 esac 3609 ;; 3610 no) 3611 use_atomic=no 3612 arch=noatomic 3613 ;; 3614esac 3615 3616ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM" 3617if test "$use_atomic" = "yes"; then 3618 AC_MSG_CHECKING([architecture type for atomic operations]) 3619 have_atomic=yes # set default 3620 case "$host" in 3621 [i[3456]86-*]) 3622 # XXX: some old x86 architectures actually do not support 3623 # (some of) these operations. Do we need stricter checks? 3624 AC_CHECK_SIZEOF([void *]) 3625 if test $ac_cv_sizeof_void_p = 8; then 3626 arch=x86_64 3627 have_xaddq=yes 3628 else 3629 arch=x86_32 3630 fi 3631 ;; 3632 x86_64-*|amd64-*) 3633 AC_CHECK_SIZEOF([void *]) 3634 if test $ac_cv_sizeof_void_p = 8; then 3635 arch=x86_64 3636 have_xaddq=yes 3637 else 3638 arch=x86_32 3639 fi 3640 ;; 3641 alpha*-*) 3642 arch=alpha 3643 ;; 3644 powerpc-*|powerpc64-*) 3645 arch=powerpc 3646 ;; 3647 mips-*|mipsel-*|mips64-*|mips64el-*) 3648 arch=mips 3649 ;; 3650 ia64-*) 3651 arch=ia64 3652 ;; 3653 *) 3654 have_atomic=no 3655 arch=noatomic 3656 ;; 3657 esac 3658 AC_MSG_RESULT($arch) 3659fi 3660 3661if test "$have_atomic" = "yes"; then 3662 AC_MSG_CHECKING([compiler support for inline assembly code]) 3663 3664 compiler=generic 3665 # Check whether the compiler supports the assembly syntax we provide. 3666 if test "X$GCC" = "Xyes"; then 3667 # GCC's ASM extension always works 3668 compiler=gcc 3669 if test $arch = "x86_64"; then 3670 # We can share the same code for gcc with x86_32 3671 arch=x86_32 3672 fi 3673 if test $arch = "powerpc"; then 3674 # 3675 # The MacOS (and maybe others) uses "r0" for register 3676 # zero. Under linux/ibm it is "0" for register 0. 3677 # Probe to see if we have a MacOS style assembler. 3678 # 3679 AC_MSG_CHECKING([Checking for MacOS style assembler syntax]) 3680 AC_TRY_COMPILE(, [ 3681 __asm__ volatile ("li r0, 0x0\n"::); 3682 ], [ 3683 AC_MSG_RESULT(yes) 3684 compiler="mac" 3685 ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1" 3686 ], [AC_MSG_RESULT(no)]) 3687 fi 3688 else 3689 case "$host" in 3690 alpha*-dec-osf*) 3691 # Tru64 compiler has its own syntax for inline 3692 # assembly. 3693 AC_TRY_COMPILE(, [ 3694#ifndef __DECC 3695#error "unexpected compiler" 3696#endif 3697 return (0);], 3698 [compiler=osf],) 3699 ;; 3700 powerpc-ibm-aix*) 3701 compiler=aix 3702 ;; 3703 esac 3704 fi 3705 case "$compiler" in 3706 gcc) 3707 ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1" 3708 ;; 3709 osf) 3710 ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1" 3711 ;; 3712 aix) 3713 ;; 3714 mac) 3715 ;; 3716 *) 3717 # See if the generic __asm function works. If not, 3718 # we need to disable the atomic operations. 3719 AC_TRY_LINK(, [ 3720 __asm("nop") 3721 ], 3722 [compiler="standard" 3723 ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"], 3724 [compiler="not supported (atomic operations disabled)" 3725 have_atomic=no 3726 arch=noatomic ]); 3727 ;; 3728 esac 3729 3730 AC_MSG_RESULT($compiler) 3731fi 3732 3733if test "$have_atomic" = "yes"; then 3734 ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1" 3735 ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1" 3736 ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1" 3737else 3738 ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD" 3739 ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG" 3740 ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE" 3741fi 3742 3743if test "$have_xaddq" = "yes"; then 3744 ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1" 3745else 3746 ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ" 3747fi 3748 3749AC_SUBST(ISC_PLATFORM_HAVEXADD) 3750AC_SUBST(ISC_PLATFORM_HAVEXADDQ) 3751AC_SUBST(ISC_PLATFORM_HAVECMPXCHG) 3752AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE) 3753 3754AC_SUBST(ISC_PLATFORM_USEGCCASM) 3755AC_SUBST(ISC_PLATFORM_USEOSFASM) 3756AC_SUBST(ISC_PLATFORM_USESTDASM) 3757AC_SUBST(ISC_PLATFORM_USEMACASM) 3758 3759ISC_ARCH_DIR=$arch 3760AC_SUBST(ISC_ARCH_DIR) 3761 3762# 3763# Activate "rrset-order fixed" or not? 3764# 3765AC_ARG_ENABLE(fixed-rrset, 3766 [ --enable-fixed-rrset enable fixed rrset ordering [[default=no]]], 3767 enable_fixed="$enableval", 3768 enable_fixed="no") 3769case "$enable_fixed" in 3770 yes) 3771 AC_DEFINE(DNS_RDATASET_FIXED, 1, 3772 [Define to enable "rrset-order fixed" syntax.]) 3773 ;; 3774 no) 3775 ;; 3776 *) 3777 ;; 3778esac 3779 3780# 3781# Enable response policy rewriting using NS IP addresses 3782# 3783AC_ARG_ENABLE(rpz-nsip, 3784 [ --disable-rpz-nsip disable rpz-nsip rules [[default=enabled]]], 3785 enable_nsip="$enableval", 3786 enable_nsip="yes") 3787case "$enable_nsip" in 3788 yes) 3789 AC_DEFINE(ENABLE_RPZ_NSIP, 1, 3790 [Define to enable rpz-nsip rules.]) 3791 ;; 3792 no) 3793 ;; 3794 *) 3795 ;; 3796esac 3797 3798# 3799# Enable response policy rewriting using NS name 3800# 3801AC_ARG_ENABLE(rpz-nsdname, 3802 [ --disable-rpz-nsdname disable rpz-nsdname rules [[default=enabled]]], 3803 enable_nsdname="$enableval", 3804 enable_nsdname="yes") 3805case "$enable_nsdname" in 3806 yes) 3807 AC_DEFINE(ENABLE_RPZ_NSDNAME, 1, 3808 [Define to enable rpz-nsdname rules.]) 3809 ;; 3810 no) 3811 ;; 3812 *) 3813 ;; 3814esac 3815 3816# 3817# Activate "filter-aaaa-on-v4/v6" or not? 3818# 3819AC_ARG_ENABLE(filter-aaaa, 3820 [ --enable-filter-aaaa enable filtering of AAAA records [[default=no]]], 3821 enable_filter="$enableval", 3822 enable_filter="no") 3823case "$enable_filter" in 3824 yes) 3825 AC_DEFINE(ALLOW_FILTER_AAAA, 1, 3826 [Define to enable the "filter-aaaa-on-v4" and "filter-aaaa-on-v6" options.]) 3827 ;; 3828 no) 3829 ;; 3830 *) 3831 ;; 3832esac 3833 3834# 3835# The following sets up how non-blocking i/o is established. 3836# Sunos, cygwin and solaris 2.x (x<5) require special handling. 3837# 3838case "$host" in 3839*-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 3840*-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 3841*-solaris2.[[01234]]) 3842 AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK) 3843 AC_DEFINE(USE_FIONBIO_IOCTL, 1, 3844 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.]) 3845 ;; 3846*) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK, 3847 [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).]) 3848 ;; 3849esac 3850# 3851# Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket. 3852# This prevents the source address being set. 3853# 3854case "$host" in 3855*-solaris2.[[012345]]|*-solaris2.5.1) 3856 AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1, 3857 [Define if you cannot bind() before connect() for TCP sockets.]) 3858 ;; 3859esac 3860# 3861# The following sections deal with tools used for formatting 3862# the documentation. They are all optional, unless you are 3863# a developer editing the documentation source. 3864# 3865 3866# 3867# Look for TeX. 3868# 3869 3870AC_PATH_PROGS(LATEX, latex, latex) 3871AC_SUBST(LATEX) 3872 3873AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex) 3874AC_SUBST(PDFLATEX) 3875 3876# 3877# Look for w3m 3878# 3879 3880AC_PATH_PROGS(W3M, w3m, w3m) 3881AC_SUBST(W3M) 3882 3883# 3884# Look for xsltproc (libxslt) 3885# 3886 3887AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc) 3888AC_SUBST(XSLTPROC) 3889 3890# 3891# Look for xmllint (libxml2) 3892# 3893 3894AC_PATH_PROG(XMLLINT, xmllint, xmllint) 3895AC_SUBST(XMLLINT) 3896 3897# 3898# Look for Doxygen 3899# 3900 3901AC_PATH_PROG(DOXYGEN, doxygen, doxygen) 3902AC_SUBST(DOXYGEN) 3903 3904# 3905# Subroutine for searching for an ordinary file (e.g., a stylesheet) 3906# in a number of directories: 3907# 3908# NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES) 3909# 3910# If the file FILENAME is found in one of the DIRECTORIES, the shell 3911# variable VARIABLE is defined to its absolute pathname. Otherwise, 3912# it is set to FILENAME, with no directory prefix (that's not terribly 3913# useful, but looks less confusing in substitutions than leaving it 3914# empty). The variable VARIABLE will be substituted into output files. 3915# 3916 3917AC_DEFUN(NOM_PATH_FILE, [ 3918$1="" 3919AC_MSG_CHECKING(for $2) 3920for d in $3 3921do 3922 f=$d/$2 3923 if test -f $f 3924 then 3925 $1=$f 3926 AC_MSG_RESULT($f) 3927 break 3928 fi 3929done 3930if test "X[$]$1" = "X" 3931then 3932 AC_MSG_RESULT("not found"); 3933 $1=$2 3934fi 3935AC_SUBST($1) 3936]) 3937 3938# 3939# Look for Docbook-XSL stylesheets. Location probably varies by system. 3940# If it's not explicitly specified, guess where it might be found, based on 3941# where SGML stuff lives on some systems (FreeBSD is the only one we're sure 3942# of at the moment). 3943# 3944AC_MSG_CHECKING(for Docbook-XSL path) 3945AC_ARG_WITH(docbook-xsl, 3946[ --with-docbook-xsl=PATH specify path for Docbook-XSL stylesheets], 3947 docbook_path="$withval", docbook_path="auto") 3948case "$docbook_path" in 3949auto) 3950 AC_MSG_RESULT(auto) 3951 docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook /opt/local/share/xsl/docbook-xsl" 3952 ;; 3953*) 3954 docbook_xsl_trees="$withval" 3955 AC_MSG_RESULT($docbook_xsl_trees) 3956 ;; 3957esac 3958 3959# 3960# Look for stylesheets we need. 3961# 3962 3963NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees) 3964NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees) 3965NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees) 3966NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees) 3967NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees) 3968NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees) 3969NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees) 3970NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees) 3971NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees) 3972 3973# 3974# Same dance for db2latex 3975# 3976 3977db2latex_xsl_trees="/usr/local/share/db2latex/xsl /usr/pkg/share/xsl/db2latex" 3978 3979# 3980# Look for stylesheets we need. 3981# 3982 3983NOM_PATH_FILE(XSLT_DB2LATEX_STYLE, docbook.xsl, $db2latex_xsl_trees) 3984 3985# 3986# Look for "admonition" image directory. Can't use NOM_PATH_FILE() 3987# because it's a directory, so just do the same things, inline. 3988# 3989 3990AC_MSG_CHECKING(for db2latex xsl figures) 3991for d in $db2latex_xsl_trees 3992do 3993 if test -d $d/figures 3994 then 3995 XSLT_DB2LATEX_ADMONITIONS=$d/figures 3996 AC_MSG_RESULT($d/figures) 3997 break 3998 fi 3999done 4000if test "X$XSLT_DB2LATEX_ADMONITIONS" = "X" 4001then 4002 AC_MSG_RESULT(not found) 4003 XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures 4004fi 4005AC_SUBST(XSLT_DB2LATEX_ADMONITIONS) 4006 4007# 4008# IDN support 4009# 4010AC_ARG_WITH(idn, 4011 [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]], 4012 use_idn="$withval", use_idn="no") 4013case "$use_idn" in 4014yes) 4015 if test X$prefix = XNONE ; then 4016 idn_path=/usr/local 4017 else 4018 idn_path=$prefix 4019 fi 4020 ;; 4021no) 4022 ;; 4023*) 4024 idn_path="$use_idn" 4025 ;; 4026esac 4027 4028iconvinc= 4029iconvlib= 4030AC_ARG_WITH(libiconv, 4031 [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]], 4032 use_libiconv="$withval", use_libiconv="no") 4033case "$use_libiconv" in 4034yes) 4035 if test X$prefix = XNONE ; then 4036 iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" 4037 else 4038 iconvlib="-L$prefix/lib -R$prefix/lib -liconv" 4039 fi 4040 ;; 4041no) 4042 iconvlib= 4043 ;; 4044*) 4045 iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" 4046 ;; 4047esac 4048 4049AC_ARG_WITH(iconv, 4050 [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], 4051 iconvlib="$withval") 4052case "$iconvlib" in 4053no) 4054 iconvlib= 4055 ;; 4056yes) 4057 iconvlib=-liconv 4058 ;; 4059esac 4060 4061AC_ARG_WITH(idnlib, 4062 [ --with-idnlib=ARG specify libidnkit], 4063 idnlib="$withval", idnlib="no") 4064if test "$idnlib" = yes; then 4065 AC_MSG_ERROR([You must specify ARG for --with-idnlib.]) 4066fi 4067 4068IDNLIBS= 4069if test "$use_idn" != no; then 4070 AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.]) 4071 STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include" 4072 if test "$idnlib" != no; then 4073 IDNLIBS="$idnlib $iconvlib" 4074 else 4075 IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib" 4076 fi 4077fi 4078AC_SUBST(IDNLIBS) 4079 4080# 4081# Check whether to build Automated Test Framework unit tests 4082# 4083AC_ARG_WITH(atf, 4084 [ --with-atf=ARG support Automated Test Framework], 4085 atf="$withval", atf="no") 4086if test "$atf" = yes; then 4087 atf=`pwd`/unit/atf 4088 ATFBUILD=atf-src 4089 AC_SUBST(ATFBUILD) 4090 AC_CONFIG_COMMANDS([atf-config], 4091 [( 4092 mkdir -p unit/atf-src; 4093 cd unit/atf-src; 4094 case "$srcdir" in 4095 /*) ;; 4096 *) srcdir="../../$srcdir";; 4097 esac 4098 ${SHELL} "${srcdir}${srcdir:+/unit/atf-src/}./configure" --enable-tools --disable-shared MISSING=: --prefix $atfdir; 4099 ) ], 4100 [atfdir=`pwd`/unit/atf]) 4101 AC_MSG_RESULT(building ATF from bind9/unit/atf-src) 4102fi 4103 4104ATFLIBS= 4105if test "$atf" != no; then 4106 AC_DEFINE(ATF_TEST, 1, [define if ATF unit tests are to be built.]) 4107 STD_CINCLUDES="$STD_CINCLUDES -I$atf/include" 4108 ATFBIN="$atf/bin" 4109 ATFLIBS="-L$atf/lib -latf-c" 4110 UNITTESTS=tests 4111fi 4112AC_SUBST(ATFBIN) 4113AC_SUBST(ATFLIBS) 4114AC_SUBST(UNITTESTS) 4115 4116AC_CHECK_HEADERS(locale.h) 4117AC_CHECK_FUNCS(setlocale) 4118 4119# 4120# was --with-tuning specified? 4121# 4122AC_ARG_WITH(tuning, 4123 [ --with-tuning=ARG Specify server tuning (large or default)], 4124 use_tuning="$withval", use_tuning="no") 4125 4126case "$use_tuning" in 4127 large) 4128 if ! $use_threads; then 4129 AC_MSG_ERROR([Large-system tuning requires threads.]) 4130 fi 4131 AC_DEFINE(TUNE_LARGE, 1, [Define to use large-system tuning.]) 4132 AC_MSG_RESULT(using large-system tuning) 4133 ;; 4134 no|default) 4135 AC_MSG_RESULT(using default tuning) 4136 ;; 4137 yes|*) 4138 AC_MSG_ERROR([You must specify "large" or "default" for --with-tuning.]) 4139 ;; 4140esac 4141 4142# 4143# Substitutions 4144# 4145AC_SUBST(BIND9_TOP_BUILDDIR) 4146BIND9_TOP_BUILDDIR=`pwd` 4147 4148AC_SUBST(BIND9_ISC_BUILDINCLUDE) 4149AC_SUBST(BIND9_ISCCC_BUILDINCLUDE) 4150AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE) 4151AC_SUBST(BIND9_DNS_BUILDINCLUDE) 4152AC_SUBST(BIND9_LWRES_BUILDINCLUDE) 4153AC_SUBST(BIND9_BIND9_BUILDINCLUDE) 4154AC_SUBST(BIND9_IRS_BUILDINCLUDE) 4155if test "X$srcdir" != "X"; then 4156 BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include" 4157 BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include" 4158 BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include" 4159 BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include" 4160 BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include" 4161 BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include" 4162 BIND9_IRS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/irs/include" 4163else 4164 BIND9_ISC_BUILDINCLUDE="" 4165 BIND9_ISCCC_BUILDINCLUDE="" 4166 BIND9_ISCCFG_BUILDINCLUDE="" 4167 BIND9_DNS_BUILDINCLUDE="" 4168 BIND9_LWRES_BUILDINCLUDE="" 4169 BIND9_BIND9_BUILDINCLUDE="" 4170 BIND9_IRS_BUILDINCLUDE="" 4171fi 4172 4173AC_SUBST_FILE(BIND9_MAKE_INCLUDES) 4174BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes 4175 4176AC_SUBST_FILE(BIND9_MAKE_RULES) 4177BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules 4178 4179. "$srcdir/version" 4180BIND9_PRODUCT="PRODUCT=\"${PRODUCT}\"" 4181AC_SUBST(BIND9_PRODUCT) 4182BIND9_DESCRIPTION="DESCRIPTION=\"${DESCRIPTION}\"" 4183AC_SUBST(BIND9_DESCRIPTION) 4184BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}" 4185AC_SUBST(BIND9_VERSION) 4186BIND9_MAJOR="MAJOR=${MAJORVER}.${MINORVER}" 4187AC_SUBST(BIND9_MAJOR) 4188BIND9_VERSIONSTRING="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}${DESCRIPTION:+ }${DESCRIPTION}" 4189AC_SUBST(BIND9_VERSIONSTRING) 4190 4191BIND9_SRCID="SRCID=unset" 4192if test -f "${srcdir}/srcid"; then 4193 . "${srcdir}/srcid" 4194 BIND9_SRCID="SRCID=$SRCID" 4195elif test -d "${srcdir}/.git"; then 4196 BIND9_SRCID="SRCID="`(cd "${srcdir}";git rev-parse --short HEAD)` 4197fi 4198 4199AC_SUBST(BIND9_SRCID) 4200 4201if test -z "$ac_configure_args"; then 4202 BIND9_CONFIGARGS="defaults" 4203else 4204 for a in $ac_configure_args 4205 do 4206 BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a" 4207 done 4208fi 4209BIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`" 4210BIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}" 4211AC_SUBST(BIND9_CONFIGARGS) 4212 4213AC_SUBST_FILE(LIBISC_API) 4214LIBISC_API="$srcdir/lib/isc/api" 4215 4216AC_SUBST_FILE(LIBISCCC_API) 4217LIBISCCC_API="$srcdir/lib/isccc/api" 4218 4219AC_SUBST_FILE(LIBISCCFG_API) 4220LIBISCCFG_API="$srcdir/lib/isccfg/api" 4221 4222AC_SUBST_FILE(LIBDNS_API) 4223LIBDNS_API="$srcdir/lib/dns/api" 4224 4225AC_SUBST_FILE(LIBDNS_MAPAPI) 4226LIBDNS_MAPAPI="$srcdir/lib/dns/mapapi" 4227 4228AC_SUBST_FILE(LIBBIND9_API) 4229LIBBIND9_API="$srcdir/lib/bind9/api" 4230 4231AC_SUBST_FILE(LIBLWRES_API) 4232LIBLWRES_API="$srcdir/lib/lwres/api" 4233 4234AC_SUBST_FILE(LIBIRS_API) 4235LIBIRS_API="$srcdir/lib/irs/api" 4236 4237# 4238# Configure any DLZ drivers. 4239# 4240# If config.dlz.in selects one or more DLZ drivers, it will set 4241# CONTRIB_DLZ to a non-empty value, which will be our clue to 4242# build DLZ drivers in contrib. 4243# 4244# This section has to come after the libtool stuff because it needs to 4245# know how to name the driver object files. 4246# 4247 4248CONTRIB_DLZ="" 4249DLZ_DRIVER_INCLUDES="" 4250DLZ_DRIVER_LIBS="" 4251DLZ_DRIVER_SRCS="" 4252DLZ_DRIVER_OBJS="" 4253DLZ_SYSTEM_TEST="" 4254 4255# 4256# Configure support for building a shared library object 4257# 4258# Even when libtool is available it can't always be relied upon 4259# to build an object that can be dlopen()'ed, but this is necessary 4260# for building the dlzexternal system test, so we'll try it the 4261# old-fashioned way. 4262# 4263SO="so" 4264SO_CFLAGS="" 4265SO_LDFLAGS="" 4266SO_LD="" 4267SO_TARGETS="" 4268 4269AC_ARG_WITH(dlopen, 4270 [ --with-dlopen=ARG support dynamically loadable DLZ drivers], 4271 dlopen="$withval", dlopen="yes") 4272 4273case $host in 4274 *-sunos*) dlopen="no" 4275 ;; 4276esac 4277 4278if test "$dlopen" = "yes"; then 4279 AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no) 4280 if test "$have_dl" = "yes"; then 4281 LIBS="-ldl $LIBS" 4282 fi 4283 AC_CHECK_FUNCS(dlopen dlclose dlsym,,dlopen=no) 4284fi 4285 4286if test "$dlopen" = "yes"; then 4287 case $host in 4288 *-linux*|*-gnu*) 4289 SO_CFLAGS="-fPIC" 4290 SO_LDFLAGS="" 4291 if test "$have_dl" = "yes" 4292 then 4293 if test "$use_libtool" = "yes"; then 4294 SO_LDFLAGS="-Xcompiler -shared" 4295 SO_LD="${CC}" 4296 else 4297 SO_LDFLAGS="-shared" 4298 SO_LD="${CC}" 4299 fi 4300 else 4301 SO_LDFLAGS="-shared" 4302 SO_LD="ld" 4303 fi 4304 ;; 4305 *-freebsd*|*-openbsd*|*-netbsd*) 4306 SO_CFLAGS="-fpic" 4307 SO_LDFLAGS="-Bshareable -x" 4308 SO_LD="ld" 4309 ;; 4310 *-solaris*) 4311 SO_CFLAGS="-KPIC" 4312 SO_LDFLAGS="-G -z text" 4313 SO_LD="ld" 4314 ;; 4315 *-hp-hpux*) 4316 SO=sl 4317 SO_CFLAGS="+z" 4318 SO_LDFLAGS="-b +vnocompatwarnings" 4319 SO_LD="ld" 4320 ;; 4321 *) 4322 SO_CFLAGS="-fPIC" 4323 ;; 4324 esac 4325 4326 if test "X$GCC" = "Xyes"; then 4327 SO_CFLAGS="-fPIC" 4328 if test -z "$SO_LD" 4329 then 4330 if test "$use_libtool" = "yes"; then 4331 SO_LDFLAGS="-Xcompiler -shared" 4332 SO_LD="${CC}" 4333 else 4334 SO_LDFLAGS="-shared" 4335 SO_LD="${CC}" 4336 fi 4337 fi 4338 fi 4339 4340 # If we still don't know how to make shared objects, don't make any. 4341 if test -n "$SO_LD"; then 4342 SO_TARGETS="\${SO_TARGETS}" 4343 AC_DEFINE(ISC_DLZ_DLOPEN, 1, 4344 [Define to allow building of objects for dlopen().]) 4345 fi 4346fi 4347 4348AC_SUBST(SO) 4349AC_SUBST(SO_CFLAGS) 4350AC_SUBST(SO_LDFLAGS) 4351AC_SUBST(SO_LD) 4352AC_SUBST(SO_TARGETS) 4353 4354sinclude(contrib/dlz/config.dlz.in) 4355AC_MSG_CHECKING(contributed DLZ drivers) 4356 4357if test -n "$CONTRIB_DLZ" 4358then 4359 AC_MSG_RESULT(yes) 4360 DLZ_DRIVER_RULES=contrib/dlz/drivers/rules 4361 AC_CONFIG_FILES([$DLZ_DRIVER_RULES]) 4362else 4363 AC_MSG_RESULT(no) 4364 DLZ_DRIVER_RULES=/dev/null 4365fi 4366 4367AC_SUBST(CONTRIB_DLZ) 4368AC_SUBST(DLZ_DRIVER_INCLUDES) 4369AC_SUBST(DLZ_DRIVER_LIBS) 4370AC_SUBST(DLZ_DRIVER_SRCS) 4371AC_SUBST(DLZ_DRIVER_OBJS) 4372AC_SUBST(DLZ_SYSTEM_TEST) 4373AC_SUBST_FILE(DLZ_DRIVER_RULES) 4374 4375if test "$cross_compiling" = "yes"; then 4376 if test -z "$BUILD_CC"; then 4377 AC_MSG_ERROR([BUILD_CC not set]) 4378 fi 4379 BUILD_CFLAGS="$BUILD_CFLAGS" 4380 BUILD_CPPFLAGS="$BUILD_CPPFLAGS" 4381 BUILD_LDFLAGS="$BUILD_LDFLAGS" 4382 BUILD_LIBS="$BUILD_LIBS" 4383else 4384 BUILD_CC="$CC" 4385 BUILD_CFLAGS="$CFLAGS" 4386 BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG" 4387 BUILD_LDFLAGS="$LDFLAGS" 4388 BUILD_LIBS="$LIBS" 4389fi 4390 4391NEWFLAGS="" 4392for e in $BUILD_LDFLAGS ; do 4393 case $e in 4394 -L*) 4395 case $host_os in 4396 netbsd*) 4397 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4398 NEWFLAGS="$NEWFLAGS $e $ee" 4399 ;; 4400 freebsd*) 4401 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4402 NEWFLAGS="$NEWFLAGS $e $ee" 4403 ;; 4404 solaris*) 4405 ee=`echo $e | sed -e 's%^-L%-R%'` 4406 NEWFLAGS="$NEWFLAGS $e $ee" 4407 ;; 4408 *) 4409 NEWFLAGS="$NEWFLAGS $e" 4410 ;; 4411 esac 4412 ;; 4413 *) 4414 NEWFLAGS="$NEWFLAGS $e" 4415 ;; 4416 esac 4417done 4418BUILD_LDFLAGS="$NEWFLAGS" 4419 4420NEWFLAGS="" 4421for e in $DNS_GSSAPI_LIBS ; do 4422 case $e in 4423 -L*) 4424 case $host_os in 4425 netbsd*) 4426 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4427 NEWFLAGS="$NEWFLAGS $e $ee" 4428 ;; 4429 freebsd*) 4430 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4431 NEWFLAGS="$NEWFLAGS $e $ee" 4432 ;; 4433 solaris*) 4434 ee=`echo $e | sed -e 's%^-L%-R%'` 4435 NEWFLAGS="$NEWFLAGS $e $ee" 4436 ;; 4437 *) 4438 NEWFLAGS="$NEWFLAGS $e" 4439 ;; 4440 esac 4441 ;; 4442 *) 4443 NEWFLAGS="$NEWFLAGS $e" 4444 ;; 4445 esac 4446done 4447DNS_GSSAPI_LIBS="$NEWFLAGS" 4448 4449NEWFLAGS="" 4450for e in $ISC_OPENSSL_LIBS ; do 4451 case $e in 4452 -L*) 4453 case $host_os in 4454 netbsd*) 4455 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4456 NEWFLAGS="$NEWFLAGS $e $ee" 4457 ;; 4458 freebsd*) 4459 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4460 NEWFLAGS="$NEWFLAGS $e $ee" 4461 ;; 4462 solaris*) 4463 ee=`echo $e | sed -e 's%^-L%-R%'` 4464 NEWFLAGS="$NEWFLAGS $e $ee" 4465 ;; 4466 *) 4467 NEWFLAGS="$NEWFLAGS $e" 4468 ;; 4469 esac 4470 ;; 4471 *) 4472 NEWFLAGS="$NEWFLAGS $e" 4473 ;; 4474 esac 4475done 4476ISC_OPENSSL_LIBS="$NEWFLAGS" 4477 4478NEWFLAGS="" 4479for e in $DNS_CRYPTO_LIBS ; do 4480 case $e in 4481 -L*) 4482 case $host_os in 4483 netbsd*) 4484 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4485 NEWFLAGS="$NEWFLAGS $e $ee" 4486 ;; 4487 freebsd*) 4488 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 4489 NEWFLAGS="$NEWFLAGS $e $ee" 4490 ;; 4491 solaris*) 4492 ee=`echo $e | sed -e 's%^-L%-R%'` 4493 NEWFLAGS="$NEWFLAGS $e $ee" 4494 ;; 4495 *) 4496 NEWFLAGS="$NEWFLAGS $e" 4497 ;; 4498 esac 4499 ;; 4500 *) 4501 NEWFLAGS="$NEWFLAGS $e" 4502 ;; 4503 esac 4504done 4505DNS_CRYPTO_LIBS="$NEWFLAGS" 4506 4507AC_SUBST(BUILD_CC) 4508AC_SUBST(BUILD_CFLAGS) 4509AC_SUBST(BUILD_CPPFLAGS) 4510AC_SUBST(BUILD_LDFLAGS) 4511AC_SUBST(BUILD_LIBS) 4512 4513# 4514# Commands to run at the end of config.status. 4515# Don't just put these into configure, it won't work right if somebody 4516# runs config.status directly (which autoconf allows). 4517# 4518 4519AC_CONFIG_COMMANDS( 4520 [chmod], 4521 [chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter]) 4522 4523# 4524# Files to configure. These are listed here because we used to 4525# specify them as arguments to AC_OUTPUT. It's (now) ok to move these 4526# elsewhere if there's a good reason for doing so. 4527# 4528 4529AC_CONFIG_FILES([ 4530 make/Makefile 4531 make/mkdep 4532 Makefile 4533 bin/Makefile 4534 bin/check/Makefile 4535 bin/confgen/Makefile 4536 bin/confgen/unix/Makefile 4537 bin/delv/Makefile 4538 bin/dig/Makefile 4539 bin/dnssec/Makefile 4540 bin/named/Makefile 4541 bin/named/unix/Makefile 4542 bin/nsupdate/Makefile 4543 bin/pkcs11/Makefile 4544 bin/python/Makefile 4545 bin/python/dnssec-checkds.py 4546 bin/python/dnssec-coverage.py 4547 bin/rndc/Makefile 4548 bin/tests/Makefile 4549 bin/tests/atomic/Makefile 4550 bin/tests/db/Makefile 4551 bin/tests/dst/Makefile 4552 bin/tests/dst/Kdh.+002+18602.key 4553 bin/tests/dst/Kdh.+002+18602.private 4554 bin/tests/dst/Kdh.+002+48957.key 4555 bin/tests/dst/Kdh.+002+48957.private 4556 bin/tests/dst/Ktest.+001+00002.key 4557 bin/tests/dst/Ktest.+001+54622.key 4558 bin/tests/dst/Ktest.+001+54622.private 4559 bin/tests/dst/Ktest.+003+23616.key 4560 bin/tests/dst/Ktest.+003+23616.private 4561 bin/tests/dst/Ktest.+003+49667.key 4562 bin/tests/dst/dst_2_data 4563 bin/tests/dst/t2_data_1 4564 bin/tests/dst/t2_data_2 4565 bin/tests/dst/t2_dsasig 4566 bin/tests/dst/t2_rsasig 4567 bin/tests/hashes/Makefile 4568 bin/tests/headerdep_test.sh 4569 bin/tests/master/Makefile 4570 bin/tests/mem/Makefile 4571 bin/tests/names/Makefile 4572 bin/tests/net/Makefile 4573 bin/tests/pkcs11/Makefile 4574 bin/tests/pkcs11/benchmarks/Makefile 4575 bin/tests/rbt/Makefile 4576 bin/tests/resolver/Makefile 4577 bin/tests/sockaddr/Makefile 4578 bin/tests/system/Makefile 4579 bin/tests/system/conf.sh 4580 bin/tests/system/builtin/Makefile 4581 bin/tests/system/dlz/prereq.sh 4582 bin/tests/system/dlzexternal/Makefile 4583 bin/tests/system/dlzexternal/ns1/named.conf 4584 bin/tests/system/dlzredir/prereq.sh 4585 bin/tests/system/filter-aaaa/Makefile 4586 bin/tests/system/geoip/Makefile 4587 bin/tests/system/inline/checkdsa.sh 4588 bin/tests/system/lwresd/Makefile 4589 bin/tests/system/sit/prereq.sh 4590 bin/tests/system/rpz/Makefile 4591 bin/tests/system/rsabigexponent/Makefile 4592 bin/tests/system/tkey/Makefile 4593 bin/tests/system/tsiggss/Makefile 4594 bin/tests/tasks/Makefile 4595 bin/tests/timers/Makefile 4596 bin/tests/virtual-time/Makefile 4597 bin/tests/virtual-time/conf.sh 4598 bin/tools/Makefile 4599 contrib/scripts/check-secure-delegation.pl 4600 contrib/scripts/zone-edit.sh 4601 doc/Makefile 4602 doc/arm/Makefile 4603 doc/doxygen/Doxyfile 4604 doc/doxygen/Makefile 4605 doc/doxygen/doxygen-input-filter 4606 doc/misc/Makefile 4607 doc/xsl/Makefile 4608 doc/xsl/isc-docbook-chunk.xsl 4609 doc/xsl/isc-docbook-html.xsl 4610 doc/xsl/isc-docbook-latex.xsl 4611 doc/xsl/isc-manpage.xsl 4612 doc/xsl/isc-notes-html.xsl 4613 doc/xsl/isc-notes-latex.xsl 4614 isc-config.sh 4615 lib/Makefile 4616 lib/bind9/Makefile 4617 lib/bind9/include/Makefile 4618 lib/bind9/include/bind9/Makefile 4619 lib/dns/Makefile 4620 lib/dns/include/Makefile 4621 lib/dns/include/dns/Makefile 4622 lib/dns/include/dst/Makefile 4623 lib/dns/tests/Makefile 4624 lib/irs/Makefile 4625 lib/irs/include/Makefile 4626 lib/irs/include/irs/Makefile 4627 lib/irs/include/irs/netdb.h 4628 lib/irs/include/irs/platform.h 4629 lib/isc/$arch/Makefile 4630 lib/isc/$arch/include/Makefile 4631 lib/isc/$arch/include/isc/Makefile 4632 lib/isc/$thread_dir/Makefile 4633 lib/isc/$thread_dir/include/Makefile 4634 lib/isc/$thread_dir/include/isc/Makefile 4635 lib/isc/Makefile 4636 lib/isc/include/Makefile 4637 lib/isc/include/isc/Makefile 4638 lib/isc/include/isc/platform.h 4639 lib/isc/include/pk11/Makefile 4640 lib/isc/include/pkcs11/Makefile 4641 lib/isc/tests/Makefile 4642 lib/isc/nls/Makefile 4643 lib/isc/unix/Makefile 4644 lib/isc/unix/include/Makefile 4645 lib/isc/unix/include/isc/Makefile 4646 lib/isc/unix/include/pkcs11/Makefile 4647 lib/isccc/Makefile 4648 lib/isccc/include/Makefile 4649 lib/isccc/include/isccc/Makefile 4650 lib/isccfg/Makefile 4651 lib/isccfg/include/Makefile 4652 lib/isccfg/include/isccfg/Makefile 4653 lib/lwres/Makefile 4654 lib/lwres/include/Makefile 4655 lib/lwres/include/lwres/Makefile 4656 lib/lwres/include/lwres/netdb.h 4657 lib/lwres/include/lwres/platform.h 4658 lib/lwres/man/Makefile 4659 lib/lwres/tests/Makefile 4660 lib/lwres/unix/Makefile 4661 lib/lwres/unix/include/Makefile 4662 lib/lwres/unix/include/lwres/Makefile 4663 lib/tests/Makefile 4664 lib/tests/include/Makefile 4665 lib/tests/include/tests/Makefile 4666 lib/samples/Makefile 4667 lib/samples/Makefile-postinstall 4668 unit/Makefile 4669 unit/unittest.sh 4670]) 4671 4672# 4673# Do it 4674# 4675 4676AC_OUTPUT 4677 4678# 4679# Now that the Makefiles exist we can ensure that everything is rebuilt. 4680# 4681AC_ARG_WITH(make-clean, 4682[ --with-make-clean run "make clean" at end of configure [[yes|no]]], 4683 make_clean="$withval", make_clean="yes") 4684case "$make_clean" in 4685yes) 4686 make clean 4687 ;; 4688esac 4689 4690AC_ARG_ENABLE(full-report, 4691 [ --enable-full-report report values of all configure options]) 4692 4693echo "========================================================================" 4694echo "Configuration summary:" 4695echo "------------------------------------------------------------------------" 4696echo "Optional features enabled:" 4697if $use_threads; then 4698 echo " Multiprocessing support (--enable-threads)" 4699 if test "$enable_full_report" = "yes" -o "$locktype" = "standard"; then 4700 echo " Mutex lock type: $locktype" 4701 fi 4702fi 4703test "$use_tuning" = "large" && echo " Large-system tuning (--with-tuning)" 4704test "$use_geoip" = "no" || echo " GeoIP access control (--with-geoip)" 4705test "$use_gssapi" = "no" || echo " GSS-API (--with-gssapi)" 4706if test "$enable_sit" != "no"; then 4707 echo " Source Identity Token support (--enable-sit)" 4708 if test "$enable_full_report" = "yes" -o "$with_sit_alg" != "aes"; then 4709 echo " Algorithm: $with_sit_alg" 4710 fi 4711fi 4712 4713# these lines are only printed if run with --enable-full-report 4714if test "$enable_full_report" = "yes"; then 4715 test "$enable_ipv6" = "no" -o "$found_ipv6" = "no" || \ 4716 echo " IPv6 support (--enable-ipv6)" 4717 test "X$CRYPTO" = "X" -o "$want_native_pkcs11" = "yes" || \ 4718 echo " OpenSSL cryptography/DNSSEC (--with-openssl)" 4719 test "X$PYTHON" = "X" || echo " Python tools (--with-python)" 4720 test "X$libxml2_libs" = "X" || echo " XML statistics (--with-libxml2)" 4721 test "X$have_libjson" = "X" || echo " JSON statistics (--with-libjson)" 4722fi 4723 4724if test "$use_pkcs11" != "no"; then 4725 if test "$want_native_pkcs11" = "yes"; then 4726 echo " Native PKCS#11/Cryptoki support (--enable-native-pkcs11)" 4727 else 4728 echo " PKCS#11/Cryptoki support using OpenSSL (--with-pkcs11)" 4729 fi 4730 echo " Provider library: $PKCS11_PROVIDER" 4731fi 4732if test "$OPENSSL_GOST" = "yes" -o "$PKCS11_GOST" = "yes"; then 4733 echo " GOST algorithm support (encoding: $gosttype) (--with-gost)" 4734fi 4735test "$OPENSSL_ECDSA" = "yes" -o "$PKCS11_ECDSA" = "yes" && \ 4736 echo " ECDSA algorithm support (--with-ecdsa)" 4737test "$enable_fixed" = "yes" && \ 4738 echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)" 4739test "$enable_filter" = "yes" && \ 4740 echo " AAAA filtering (--enable-filter-aaaa)" 4741test "$enable_seccomp" = yes && \ 4742 echo " Use libseccomp system call filtering (--enable-seccomp)" 4743test "$want_backtrace" = "yes" && \ 4744 echo " Print backtrace on crash (--enable-backtrace)" 4745test "$want_symtable" = "minimal" && \ 4746 echo " Use symbol table for backtrace, named only (--enable-symtable)" 4747test "$want_symtable" = "yes" -o "$want_symtable" = "all" && \ 4748 echo " Use symbol table for backtrace, all binaries (--enable-symtable=all)" 4749test "$use_libtool" = "no" || echo " Use GNU libtool (--with-libtool)" 4750test "$atf" = "no" || echo " Automated Testing Framework (--with-atf)" 4751 4752echo " Dynamically loadable zone (DLZ) drivers:" 4753test "$use_dlz_bdb" = "no" || \ 4754 echo " Berkeley DB (--with-dlz-bdb)" 4755test "$use_dlz_ldap" = "no" || \ 4756 echo " LDAP (--with-dlz-ldap)" 4757test "$use_dlz_mysql" = "no" || \ 4758 echo " MySQL (--with-dlz-mysql)" 4759test "$use_dlz_odbc" = "no" || \ 4760 echo " ODBC (--with-dlz-odbc)" 4761test "$use_dlz_postgres" = "no" || \ 4762 echo " Postgres (--with-dlz-postgres)" 4763test "$use_dlz_filesystem" = "no" || \ 4764 echo " Filesystem (--with-dlz-filesystem)" 4765test "$use_dlz_stub" = "no" || \ 4766 echo " Stub (--with-dlz-stub)" 4767test "$use_dlz_bdb $use_dlz_ldap $use_dlz_mysql $use_dlz_odbc $use_dlz_postgres $use_dlz_filesystem $use_dlz_stub" = "no no no no no no no" && echo " None" 4768echo 4769 4770echo "Features disabled or unavailable on this platform:" 4771$use_threads || echo " Multiprocessing support (--enable-threads)" 4772test "$enable_ipv6" = "no" -o "$found_ipv6" = "no" && \ 4773 echo " IPv6 support (--enable-ipv6)" 4774test "$use_tuning" = "large" || echo " Large-system tuning (--with-tuning)" 4775 4776test "$use_geoip" = "no" && echo " GeoIP access control (--with-geoip)" 4777test "$use_gssapi" = "no" && echo " GSS-API (--with-gssapi)" 4778test "$enable_sit" = "no" && echo " Source Identity Token support (--enable-sit)" 4779 4780test "$enable_fixed" = "yes" || \ 4781 echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)" 4782 4783if test "X$CRYPTO" = "X" -o "$want_native_pkcs11" = "yes" 4784then 4785 echo " OpenSSL cryptography/DNSSEC (--with-openssl)" 4786elif test "$use_pkcs11" = "no"; then 4787 echo " PKCS#11/Cryptoki support (--with-pkcs11)" 4788fi 4789test "$want_native_pkcs11" = "yes" || 4790 echo " Native PKCS#11/Cryptoki support (--enable-native-pkcs11)" 4791test "X$CRYPTO" = "X" -o "$OPENSSL_GOST" = "yes" -o "$PKCS11_GOST" = "yes" || \ 4792 echo " GOST algorithm support (--with-gost)" 4793test "X$CRYPTO" = "X" -o "$OPENSSL_ECDSA" = "yes" -o "$PKCS11_ECDSA" = "yes" || \ 4794 echo " ECDSA algorithm support (--with-ecdsa)" 4795 4796test "$enable_seccomp" = yes || \ 4797 echo " Use libseccomp system call filtering (--enable-seccomp)" 4798test "$want_backtrace" = "yes" || \ 4799 echo " Print backtrace on crash (--enable-backtrace)" 4800test "$use_libtool" = "yes" || echo " Use GNU libtool (--with-libtool)" 4801test "$atf" = "no" && echo " Automated Testing Framework (--with-atf)" 4802 4803test "X$PYTHON" = "X" && echo " Python tools (--with-python)" 4804test "X$libxml2_libs" = "X" && echo " XML statistics (--with-libxml2)" 4805test "X$have_libjson" = "X" && echo " JSON statistics (--with-libjson)" 4806 4807if test "X$ac_unrecognized_opts" != "X"; then 4808 echo 4809 echo "Unrecognized options:" 4810 echo " $ac_unrecognized_opts" 4811fi 4812echo "========================================================================" 4813 4814if test "X$CRYPTO" = "X"; then 4815cat << \EOF 4816BIND 9 is being built without cryptography support. This means it will 4817not have DNSSEC support. Use --with-openssl, or --with-pkcs11 and 4818--enable-native-pkcs11 to enable cryptography. 4819EOF 4820fi 4821 4822if test "X$OPENSSL_WARNING" != "X"; then 4823cat << \EOF 4824WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4825WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4826WARNING WARNING 4827WARNING Your OpenSSL crypto library may be vulnerable to WARNING 4828WARNING one or more of the the following known security WARNING 4829WARNING flaws: WARNING 4830WARNING WARNING 4831WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING 4832WARNING CVE-2006-2940. WARNING 4833WARNING WARNING 4834WARNING It is recommended that you upgrade to OpenSSL WARNING 4835WARNING version 0.9.8d/0.9.7l (or greater). WARNING 4836WARNING WARNING 4837WARNING You can disable this warning by specifying: WARNING 4838WARNING WARNING 4839WARNING --disable-openssl-version-check WARNING 4840WARNING WARNING 4841WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4842WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 4843EOF 4844fi 4845 4846# Tell Emacs to edit this file in shell mode. 4847# Local Variables: 4848# mode: sh 4849# End: 4850