configure.in revision 218384
1# Copyright (C) 2004-2010 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 16dnl 17AC_DIVERT_PUSH(1)dnl 18esyscmd([sed "s/^/# /" COPYRIGHT])dnl 19AC_DIVERT_POP()dnl 20 21AC_REVISION($Revision: 1.457.26.28 $) 22 23AC_INIT(lib/dns/name.c) 24AC_PREREQ(2.59) 25 26AC_CONFIG_HEADER(config.h) 27 28AC_CANONICAL_HOST 29 30AC_PROG_MAKE_SET 31 32# 33# GNU libtool support 34# 35case $build_os in 36sunos*) 37 # Just set the maximum command line length for sunos as it otherwise 38 # takes a exceptionally long time to work it out. Required for libtool. 39 lt_cv_sys_max_cmd_len=4096; 40 ;; 41esac 42 43AC_PROG_LIBTOOL 44AC_PROG_INSTALL 45AC_PROG_LN_S 46 47AC_SUBST(STD_CINCLUDES) 48AC_SUBST(STD_CDEFINES) 49AC_SUBST(STD_CWARNINGS) 50AC_SUBST(CCOPT) 51 52# Warn if the user specified libbind, which is now deprecated 53AC_ARG_ENABLE(libbind, [ --enable-libbind deprecated]) 54 55case "$enable_libbind" in 56 yes) 57 AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution. 58It is available from http://www.isc.org as a separate download.]) 59 ;; 60 no|'') 61 ;; 62esac 63 64 65# 66# Make very sure that these are the first files processed by 67# config.status, since we use the processed output as the input for 68# AC_SUBST_FILE() substitutions in other files. 69# 70AC_CONFIG_FILES([make/rules make/includes]) 71 72AC_PATH_PROG(AR, ar) 73ARFLAGS="cruv" 74AC_SUBST(AR) 75AC_SUBST(ARFLAGS) 76 77# The POSIX ln(1) program. Non-POSIX systems may substitute 78# "copy" or something. 79LN=ln 80AC_SUBST(LN) 81 82case "$AR" in 83 "") 84 AC_MSG_ERROR([ 85ar program not found. Please fix your PATH to include the directory in 86which ar resides, or set AR in the environment with the full path to ar. 87]) 88 89 ;; 90esac 91 92# 93# Etags. 94# 95AC_PATH_PROGS(ETAGS, etags emacs-etags) 96 97# 98# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of 99# GNU emacs etags, and it requires the -L flag. 100# 101if test "X$ETAGS" != "X"; then 102 AC_MSG_CHECKING(for Exuberant Ctags etags) 103 if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then 104 AC_MSG_RESULT(yes) 105 ETAGS="$ETAGS -L" 106 else 107 AC_MSG_RESULT(no) 108 fi 109fi 110AC_SUBST(ETAGS) 111 112# 113# Perl is optional; it is used only by some of the system test scripts. 114# 115AC_PATH_PROGS(PERL, perl5 perl) 116AC_SUBST(PERL) 117 118# 119# Special processing of paths depending on whether --prefix, 120# --sysconfdir or --localstatedir arguments were given. What's 121# desired is some compatibility with the way previous versions 122# of BIND built; they defaulted to /usr/local for most parts of 123# the installation, but named.boot/named.conf was in /etc 124# and named.pid was in /var/run. 125# 126# So ... if none of --prefix, --sysconfdir or --localstatedir are 127# specified, set things up that way. If --prefix is given, use 128# it for sysconfdir and localstatedir the way configure normally 129# would. To change the prefix for everything but leave named.conf 130# in /etc or named.pid in /var/run, then do this the usual configure way: 131# ./configure --prefix=/somewhere --sysconfdir=/etc 132# ./configure --prefix=/somewhere --localstatedir=/var 133# 134# To put named.conf and named.pid in /usr/local with everything else, 135# set the prefix explicitly to /usr/local even though that's the default: 136# ./configure --prefix=/usr/local 137# 138case "$prefix" in 139 NONE) 140 case "$sysconfdir" in 141 '${prefix}/etc') 142 sysconfdir=/etc 143 ;; 144 esac 145 case "$localstatedir" in 146 '${prefix}/var') 147 localstatedir=/var 148 ;; 149 esac 150 ;; 151esac 152 153# 154# Make sure INSTALL uses an absolute path, else it will be wrong in all 155# Makefiles, since they use make/rules.in and INSTALL will be adjusted by 156# configure based on the location of the file where it is substituted. 157# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate 158# subdirectory of install-sh, This relative path will be wrong for all 159# directories more than one level down from install-sh. 160# 161case "$INSTALL" in 162 /*) 163 ;; 164 *) 165 # 166 # Not all systems have dirname. 167 # 168 changequote({, }) 169 ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`" 170 changequote([, ]) 171 172 ac_prog="`echo $INSTALL | sed 's%.*/%%'`" 173 test "$ac_dir" = "$ac_prog" && ac_dir=. 174 test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`" 175 INSTALL="$ac_dir/$ac_prog" 176 ;; 177esac 178 179# 180# On these hosts, we really want to use cc, not gcc, even if it is 181# found. The gcc that these systems have will not correctly handle 182# pthreads. 183# 184# However, if the user sets $CC to be something, let that override 185# our change. 186# 187if test "X$CC" = "X" ; then 188 case "$host" in 189 *-dec-osf*) 190 CC="cc" 191 ;; 192 *-solaris*) 193 # Use Sun's cc if it is available, but watch 194 # out for /usr/ucb/cc; it will never be the right 195 # compiler to use. 196 # 197 # If setting CC here fails, the AC_PROG_CC done 198 # below might still find gcc. 199 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" 200 for ac_dir in $PATH; do 201 test -z "$ac_dir" && ac_dir=. 202 case "$ac_dir" in 203 /usr/ucb) 204 # exclude 205 ;; 206 *) 207 if test -f "$ac_dir/cc"; then 208 CC="$ac_dir/cc" 209 break 210 fi 211 ;; 212 esac 213 done 214 IFS="$ac_save_ifs" 215 ;; 216 *-hp-hpux*) 217 CC="cc" 218 ;; 219 mips-sgi-irix*) 220 CC="cc" 221 ;; 222 esac 223fi 224 225AC_PROG_CC 226 227# 228# gcc's optimiser is broken at -02 for ultrasparc 229# 230if test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then 231 case "$host" in 232 sparc-*) 233 CCFLAGS="-g -O1" 234 ;; 235 esac 236fi 237 238# 239# OS dependent CC flags 240# 241case "$host" in 242 # OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or 243 # -D_XOPEN_SOURCE_EXTENDED. 244 *-dec-osf*) 245 STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET" 246 CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET" 247 ;; 248 #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros 249 *-hp-hpux*) 250 STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED" 251 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" 252 LIBS="-lxnet $LIBS" 253 ;; 254 # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros 255 *-solaris*) 256 STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__" 257 CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__" 258 ;; 259 # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides 260 # parts of the IPv6 Advanced Socket API as a result. This is stupid 261 # as it breaks how the two halves (Basic and Advanced) of the IPv6 262 # Socket API were designed to be used but we have to live with it. 263 # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API. 264 *-linux*) 265 STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE" 266 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" 267 ;; 268esac 269 270AC_HEADER_STDC 271 272AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h,,, 273[$ac_includes_default 274#ifdef HAVE_SYS_PARAM_H 275# include <sys/param.h> 276#endif 277]) 278 279AC_C_CONST 280AC_C_INLINE 281AC_C_VOLATILE 282AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME)) 283AC_C_FLEXIBLE_ARRAY_MEMBER 284 285# 286# UnixWare 7.1.1 with the feature supplement to the UDK compiler 287# is reported to not support "static inline" (RT #1212). 288# 289AC_MSG_CHECKING(for static inline breakage) 290AC_TRY_COMPILE(, [ 291 foo1(); 292 } 293 294 static inline int foo1() { 295 return 0; 296 } 297 298 static inline int foo2() { 299 return foo1(); 300 ], 301 [AC_MSG_RESULT(no)], 302 [AC_MSG_RESULT(yes) 303 AC_DEFINE(inline, )]) 304 305AC_TYPE_SIZE_T 306AC_CHECK_TYPE(ssize_t, int) 307AC_CHECK_TYPE(uintptr_t,unsigned long) 308AC_CHECK_TYPE(socklen_t, 309[AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)], 310[ 311AC_TRY_COMPILE( 312[ 313#include <sys/types.h> 314#include <sys/socket.h> 315int getsockname(int, struct sockaddr *, size_t *); 316],[], 317[AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)], 318[AC_DEFINE(ISC_SOCKADDR_LEN_T, int)]) 319], 320[ 321#include <sys/types.h> 322#include <sys/socket.h> 323]) 324AC_SUBST(ISC_SOCKADDR_LEN_T) 325AC_HEADER_TIME 326AC_MSG_CHECKING(for long long) 327AC_TRY_COMPILE([],[long long i = 0; return (0);], 328 [AC_MSG_RESULT(yes) 329 ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"], 330 [AC_MSG_RESULT(no) 331 ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"]) 332AC_SUBST(ISC_PLATFORM_HAVELONGLONG) 333 334# 335# check if we have lifconf 336# 337AC_MSG_CHECKING(for struct lifconf) 338AC_TRY_COMPILE([ 339#include <sys/types.h> 340#include <sys/socket.h> 341#include <net/if.h> 342], 343[ 344struct lifconf lifconf; 345lifconf.lifc_len = 0; 346] 347, 348 [AC_MSG_RESULT(yes) 349 ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"], 350 [AC_MSG_RESULT(no) 351 ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"]) 352AC_SUBST(ISC_PLATFORM_HAVELIFCONF) 353 354# 355# check if we have kqueue 356# 357AC_ARG_ENABLE(kqueue, 358 [ --enable-kqueue use BSD kqueue when available [[default=yes]]], 359 want_kqueue="$enableval", want_kqueue="yes") 360case $want_kqueue in 361yes) 362 AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no) 363 case $ac_cv_have_kqueue in 364 yes) 365 ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1" 366 ;; 367 *) 368 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE" 369 ;; 370 esac 371 ;; 372*) 373 ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE" 374 ;; 375esac 376AC_SUBST(ISC_PLATFORM_HAVEKQUEUE) 377 378# 379# check if we have epoll. Linux kernel 2.4 has epoll_create() which fails, 380# so we need to try running the code, not just test its existence. 381# 382AC_ARG_ENABLE(epoll, 383[ --enable-epoll use Linux epoll when available [[default=auto]]], 384 want_epoll="$enableval", want_epoll="auto") 385case $want_epoll in 386auto) 387 AC_MSG_CHECKING(epoll support) 388 AC_TRY_RUN([ 389#include <sys/epoll.h> 390int main() { 391 if (epoll_create(1) < 0) 392 return (1); 393 return (0); 394} 395], 396 [AC_MSG_RESULT(yes) 397 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"], 398 [AC_MSG_RESULT(no) 399 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"]) 400 ;; 401yes) 402 ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1" 403 ;; 404*) 405 ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL" 406 ;; 407esac 408AC_SUBST(ISC_PLATFORM_HAVEEPOLL) 409 410# 411# check if we support /dev/poll 412# 413AC_ARG_ENABLE(devpoll, 414 [ --enable-devpoll use /dev/poll when available [[default=yes]]], 415 want_devpoll="$enableval", want_devpoll="yes") 416case $want_devpoll in 417yes) 418 AC_CHECK_HEADERS(sys/devpoll.h devpoll.h, 419 ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1" 420 , 421 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL" 422 ) 423 ;; 424*) 425 ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL" 426 ;; 427esac 428AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL) 429 430# 431# check if we need to #include sys/select.h explicitly 432# 433case $ac_cv_header_unistd_h in 434yes) 435AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set) 436AC_TRY_COMPILE([ 437#include <sys/types.h> /* Ultrix */ 438#include <unistd.h>], 439[fd_set read_set; return (0);], 440 [AC_MSG_RESULT(yes) 441 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" 442 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"], 443 [AC_MSG_RESULT(no) 444 case $ac_cv_header_sys_select_h in 445 yes) 446 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 447 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 448 ;; 449 no) 450 AC_MSG_ERROR([need either working unistd.h or sys/select.h]) 451 ;; 452 esac 453 ]) 454 ;; 455no) 456 case $ac_cv_header_sys_select_h in 457 yes) 458 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 459 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 460 ;; 461 no) 462 AC_MSG_ERROR([need either unistd.h or sys/select.h]) 463 ;; 464 esac 465 ;; 466esac 467AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH) 468AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH) 469 470# 471# Find the machine's endian flavor. 472# 473AC_C_BIGENDIAN 474 475 476# 477# was --with-openssl specified? 478# 479OPENSSL_WARNING= 480AC_MSG_CHECKING(for OpenSSL library) 481AC_ARG_WITH(openssl, 482[ --with-openssl[=PATH] Build with OpenSSL [yes|no|path]. 483 (Required for DNSSEC)], 484 use_openssl="$withval", use_openssl="auto") 485 486openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw" 487if test "$use_openssl" = "auto" 488then 489 for d in $openssldirs 490 do 491 if test -f $d/include/openssl/opensslv.h 492 then 493 use_openssl=$d 494 break 495 fi 496 done 497fi 498case "$use_openssl" in 499 no) 500 AC_MSG_RESULT(no) 501 DST_OPENSSL_INC="" 502 USE_OPENSSL="" 503 OPENSSLLINKOBJS="" 504 OPENSSLLINKSRCS="" 505 ;; 506 auto) 507 DST_OPENSSL_INC="" 508 USE_OPENSSL="" 509 OPENSSLLINKOBJS="" 510 OPENSSLLINKSRCS="" 511 AC_MSG_ERROR( 512[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path 513If you don't want OpenSSL, use --without-openssl]) 514 ;; 515 *) 516 if test "$use_openssl" = "yes" 517 then 518 # User did not specify a path - guess it 519 for d in $openssldirs 520 do 521 if test -f $d/include/openssl/opensslv.h 522 then 523 use_openssl=$d 524 break 525 fi 526 done 527 if test "$use_openssl" = "yes" 528 then 529 AC_MSG_RESULT(not found) 530 AC_MSG_ERROR( 531[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path]) 532 fi 533 elif ! test -f "$use_openssl"/include/openssl/opensslv.h 534 then 535 AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found]) 536 fi 537 USE_OPENSSL='-DOPENSSL' 538 if test "$use_openssl" = "/usr" 539 then 540 DST_OPENSSL_INC="" 541 DNS_OPENSSL_LIBS="-lcrypto" 542 else 543 DST_OPENSSL_INC="-I$use_openssl/include" 544 case $host in 545 *-solaris*) 546 DNS_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto" 547 ;; 548 *-hp-hpux*) 549 DNS_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto" 550 ;; 551 *-apple-darwin*) 552 # 553 # Apple's ld seaches for serially for dynamic 554 # then static libraries. This means you can't 555 # use -L to override dynamic system libraries 556 # with static ones when linking. Instead 557 # we specify a absolute path. 558 # 559 if test -f "$use_openssl/lib/libcrypto.dylib" 560 then 561 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto" 562 else 563 DNS_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a" 564 fi 565 ;; 566 *) 567 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto" 568 ;; 569 esac 570 fi 571 AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include) 572 573 saved_cflags="$CFLAGS" 574 saved_libs="$LIBS" 575 CFLAGS="$CFLAGS $DST_OPENSSL_INC" 576 LIBS="$LIBS $DNS_OPENSSL_LIBS" 577 AC_MSG_CHECKING(whether linking with OpenSSL works) 578 AC_TRY_RUN([ 579#include <openssl/err.h> 580int main() { 581 ERR_clear_error(); 582 return (0); 583} 584], 585 [AC_MSG_RESULT(yes)], 586 [AC_MSG_RESULT(no) 587 AC_MSG_ERROR(Could not run test program using OpenSSL from 588$use_openssl/lib and $use_openssl/include. 589Please check the argument to --with-openssl and your 590shared library configuration (e.g., LD_LIBRARY_PATH).)], 591 [AC_MSG_RESULT(assuming it does work on target platform)]) 592 593 AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl) 594 AC_TRY_LINK([ 595#include <openssl/err.h>], 596[ DSO_METHOD_dlfcn(); ], 597 [AC_MSG_RESULT(no)], 598 [LIBS="$LIBS -ldl" 599 AC_TRY_LINK([ 600#include <openssl/err.h> 601],[ DSO_METHOD_dlfcn(); ], 602 [AC_MSG_RESULT(yes) 603 DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl" 604 ], 605 [AC_MSG_RESULT(unknown) 606 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)], 607 [AC_MSG_RESULT(assuming it does work on target platform)]) 608 ], 609 [AC_MSG_RESULT(assuming it does work on target platform)] 610 ) 611 612AC_ARG_ENABLE(openssl-version-check, 613[AC_HELP_STRING([--enable-openssl-version-check], 614 [Check OpenSSL Version @<:@default=yes@:>@])]) 615case "$enable_openssl_version_check" in 616yes|'') 617 AC_MSG_CHECKING(OpenSSL library version) 618 AC_TRY_RUN([ 619#include <stdio.h> 620#include <openssl/opensslv.h> 621int main() { 622 if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL && 623 OPENSSL_VERSION_NUMBER < 0x00908000L) || 624 OPENSSL_VERSION_NUMBER >= 0x0090804fL) 625 return (0); 626 printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n", 627 OPENSSL_VERSION_NUMBER); 628 printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n" 629 "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n"); 630 return (1); 631} 632 ], 633 [AC_MSG_RESULT(ok)], 634 [AC_MSG_RESULT(not compatible) 635 OPENSSL_WARNING=yes 636 ], 637 [AC_MSG_RESULT(assuming target platform has compatible version)]) 638;; 639no) 640 AC_MSG_RESULT(Skipped OpenSSL version check) 641;; 642esac 643 644 AC_MSG_CHECKING(for OpenSSL DSA support) 645 if test -f $use_openssl/include/openssl/dsa.h 646 then 647 AC_DEFINE(HAVE_OPENSSL_DSA) 648 AC_MSG_RESULT(yes) 649 else 650 AC_MSG_RESULT(no) 651 fi 652 AC_CHECK_FUNCS(EVP_sha256 EVP_sha512) 653 CFLAGS="$saved_cflags" 654 LIBS="$saved_libs" 655 OPENSSLLINKOBJS='${OPENSSLLINKOBJS}' 656 OPENSSLLINKSRCS='${OPENSSLLINKSRCS}' 657 658 ;; 659esac 660 661# 662# This would include the system openssl path (and linker options to use 663# it as needed) if it is found. 664# 665 666AC_SUBST(USE_OPENSSL) 667AC_SUBST(DST_OPENSSL_INC) 668AC_SUBST(OPENSSLLINKOBJS) 669AC_SUBST(OPENSSLLINKSRCS) 670DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS" 671 672# 673# PKCS11 (aka crypto hardware) support 674# 675# This works only with the right OpenSSL with PKCS11 engine! 676# 677 678AC_MSG_CHECKING(for PKCS11 support) 679AC_ARG_WITH(pkcs11, 680[ --with-pkcs11 Build with PKCS11 support], 681 use_pkcs11="yes", use_pkcs11="no") 682 683case "$use_pkcs11" in 684 no) 685 AC_MSG_RESULT(disabled) 686 USE_PKCS11="" 687 ;; 688 yes) 689 AC_MSG_RESULT(using OpenSSL with PKCS11 support) 690 USE_PKCS11='-DUSE_PKCS11' 691 ;; 692esac 693 694AC_SUBST(USE_PKCS11) 695 696AC_MSG_CHECKING(for GSSAPI library) 697AC_ARG_WITH(gssapi, 698[ --with-gssapi=PATH Specify path for system-supplied GSSAPI], 699 use_gssapi="$withval", use_gssapi="no") 700 701gssapidirs="/usr/local /usr/pkg /usr/kerberos /usr" 702if test "$use_gssapi" = "yes" 703then 704 for d in $gssapidirs 705 do 706 if test -f $d/include/gssapi/gssapi.h -o -f $d/include/gssapi.h 707 then 708 use_gssapi=$d 709 break 710 fi 711 done 712fi 713 714case "$use_gssapi" in 715 no) 716 AC_MSG_RESULT(disabled) 717 USE_GSSAPI='' 718 ;; 719 yes) 720 AC_MSG_ERROR([--with-gssapi must specify a path]) 721 ;; 722 *) 723 AC_MSG_RESULT(looking in $use_gssapi/lib) 724 USE_GSSAPI='-DGSSAPI' 725 saved_cppflags="$CPPFLAGS" 726 CPPFLAGS="-I$use_gssapi/include $CPPFLAGS" 727 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h, 728 [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"]) 729 730 if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then 731 AC_MSG_ERROR([gssapi.h not found]) 732 fi 733 734 AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h, 735 [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"]) 736 737 if test "$ISC_PLATFORM_KRB5HEADER" = ""; then 738 AC_MSG_ERROR([krb5.h not found]) 739 fi 740 741 CPPFLAGS="$saved_cppflags" 742 743 # 744 # XXXDCL This probably doesn't work right on all systems. 745 # It will need to be worked on as problems become evident. 746 # 747 # Essentially the problems here relate to two different 748 # areas. The first area is building with either KTH 749 # or MIT Kerberos, particularly when both are present on 750 # the machine. The other is static versus dynamic linking. 751 # 752 # On the KTH vs MIT issue, Both have libkrb5 that can mess 753 # up the works if one implementation ends up trying to 754 # use the other's krb. This is unfortunately a situation 755 # that very easily arises. 756 # 757 # Dynamic linking when the dependency information is built 758 # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes 759 # all such problems go away, but when that setup is not 760 # present, because either the dynamic libraries lack 761 # dependencies or static linking is being done, then the 762 # problems start to show up. 763 saved_libs="$LIBS" 764 for TRY_LIBS in \ 765 "-lgssapi_krb5" \ 766 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \ 767 "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \ 768 "-lgssapi" \ 769 "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \ 770 "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \ 771 "-lgss -lkrb5" 772 do 773 # Note that this does not include $saved_libs, because 774 # on FreeBSD machines this configure script has added 775 # -L/usr/local/lib to LIBS, which can make the 776 # -lgssapi_krb5 test succeed with shared libraries even 777 # when you are trying to build with KTH in /usr/lib. 778 LIBS="-L$use_gssapi/lib $TRY_LIBS" 779 AC_MSG_CHECKING(linking as $TRY_LIBS) 780 AC_TRY_LINK( , [gss_acquire_cred();krb5_init_context()], 781 gssapi_linked=yes, gssapi_linked=no) 782 case $gssapi_linked in 783 yes) AC_MSG_RESULT(yes); break ;; 784 no) AC_MSG_RESULT(no) ;; 785 esac 786 done 787 788 case $gssapi_linked in 789 no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;; 790 esac 791 792 # 793 # XXXDCL Major kludge. Tries to cope with KTH in /usr/lib 794 # but MIT in /usr/local/lib and trying to build with KTH. 795 # /usr/local/lib can end up earlier on the link lines. 796 # Like most kludges, this one is not only inelegant it 797 # is also likely to be the wrong thing to do at least as 798 # many times as it is the right thing. Something better 799 # needs to be done. 800 # 801 if test "$use_gssapi" = "/usr" -a \ 802 -f /usr/local/lib/libkrb5.a; then 803 FIX_KTH_VS_MIT=yes 804 fi 805 806 case "$FIX_KTH_VS_MIT" in 807 yes) 808 case "$enable_static_linking" in 809 yes) gssapi_lib_suffix=".a" ;; 810 *) gssapi_lib_suffix=".so" ;; 811 esac 812 813 for lib in $LIBS; do 814 case $lib in 815 -L*) 816 ;; 817 -l*) 818 new_lib=`echo $lib | 819 sed -e s%^-l%$use_gssapi/lib/lib% \ 820 -e s%$%$gssapi_lib_suffix%` 821 NEW_LIBS="$NEW_LIBS $new_lib" 822 ;; 823 *) 824 AC_MSG_ERROR([KTH vs MIT Kerberos confusion!]) 825 ;; 826 esac 827 done 828 LIBS="$NEW_LIBS" 829 ;; 830 esac 831 832 DST_GSSAPI_INC="-I$use_gssapi/include" 833 DNS_GSSAPI_LIBS="$LIBS" 834 835 AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include) 836 LIBS="$saved_libs" 837 ;; 838esac 839 840AC_SUBST(ISC_PLATFORM_HAVEGSSAPI) 841AC_SUBST(ISC_PLATFORM_GSSAPIHEADER) 842AC_SUBST(ISC_PLATFORM_KRB5HEADER) 843 844AC_SUBST(USE_GSSAPI) 845AC_SUBST(DST_GSSAPI_INC) 846AC_SUBST(DNS_GSSAPI_LIBS) 847DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS" 848 849# 850# Applications linking with libdns also need to link with these libraries. 851# 852 853AC_SUBST(DNS_CRYPTO_LIBS) 854 855# 856# was --with-randomdev specified? 857# 858AC_MSG_CHECKING(for random device) 859AC_ARG_WITH(randomdev, 860[ --with-randomdev=PATH Specify path for random device], 861 use_randomdev="$withval", use_randomdev="unspec") 862 863case "$use_randomdev" in 864 unspec) 865 case "$host" in 866 *-openbsd*) 867 devrandom=/dev/arandom 868 ;; 869 *) 870 devrandom=/dev/random 871 ;; 872 esac 873 AC_MSG_RESULT($devrandom) 874 AC_CHECK_FILE($devrandom, 875 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, 876 "$devrandom"),) 877 ;; 878 yes) 879 AC_MSG_ERROR([--with-randomdev must specify a path]) 880 ;; 881 no) 882 AC_MSG_RESULT(disabled) 883 ;; 884 *) 885 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev") 886 AC_MSG_RESULT(using "$use_randomdev") 887 ;; 888esac 889 890# 891# Do we have arc4random() ? 892# 893AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM)) 894 895sinclude(config.threads.in)dnl 896 897if $use_threads 898then 899 if test "X$GCC" = "Xyes"; then 900 case "$host" in 901 *-freebsd*) 902 CC="$CC -pthread" 903 CCOPT="$CCOPT -pthread" 904 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 905 ;; 906 *-openbsd*) 907 CC="$CC -pthread" 908 CCOPT="$CCOPT -pthread" 909 ;; 910 *-solaris*) 911 LIBS="$LIBS -lthread" 912 ;; 913 *-ibm-aix*) 914 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 915 ;; 916 esac 917 else 918 case $host in 919 *-dec-osf*) 920 CC="$CC -pthread" 921 CCOPT="$CCOPT -pthread" 922 ;; 923 *-solaris*) 924 CC="$CC -mt" 925 CCOPT="$CCOPT -mt" 926 ;; 927 *-ibm-aix*) 928 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 929 ;; 930 *-sco-sysv*uw*|*-*-sysv*UnixWare*) 931 CC="$CC -Kthread" 932 CCOPT="$CCOPT -Kthread" 933 ;; 934 *-*-sysv*OpenUNIX*) 935 CC="$CC -Kpthread" 936 CCOPT="$CCOPT -Kpthread" 937 ;; 938 esac 939 fi 940 ALWAYS_DEFINES="-D_REENTRANT" 941 ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1" 942 THREADOPTOBJS='${THREADOPTOBJS}' 943 THREADOPTSRCS='${THREADOPTSRCS}' 944 thread_dir=pthreads 945 # 946 # We'd like to use sigwait() too 947 # 948 AC_CHECK_FUNC(sigwait, 949 AC_DEFINE(HAVE_SIGWAIT), 950 AC_CHECK_LIB(c, sigwait, 951 AC_DEFINE(HAVE_SIGWAIT), 952 AC_CHECK_LIB(pthread, sigwait, 953 AC_DEFINE(HAVE_SIGWAIT), 954 AC_CHECK_LIB(pthread, _Psigwait, 955 AC_DEFINE(HAVE_SIGWAIT),)))) 956 957 AC_CHECK_FUNC(pthread_attr_getstacksize, 958 AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),) 959 960 AC_CHECK_FUNC(pthread_attr_setstacksize, 961 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),) 962 963 # 964 # Additional OS-specific issues related to pthreads and sigwait. 965 # 966 case "$host" in 967 # 968 # One more place to look for sigwait. 969 # 970 *-freebsd*) 971 AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),) 972 case $host in 973 *-freebsd5.[[012]]|*-freebsd5.[[012]].*);; 974 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*) 975 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 976 ;; 977 *-freebsd6.*) 978 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 979 ;; 980 esac 981 ;; 982 # 983 # BSDI 3.0 through 4.0.1 needs pthread_init() to be 984 # called before certain pthreads calls. This is deprecated 985 # in BSD/OS 4.1. 986 # 987 *-bsdi3.*|*-bsdi4.0*) 988 AC_DEFINE(NEED_PTHREAD_INIT) 989 ;; 990 # 991 # LinuxThreads requires some changes to the way we 992 # deal with signals. 993 # 994 *-linux*) 995 AC_DEFINE(HAVE_LINUXTHREADS) 996 ;; 997 # 998 # Ensure the right sigwait() semantics on Solaris and make 999 # sure we call pthread_setconcurrency. 1000 # 1001 *-solaris*) 1002 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) 1003 AC_CHECK_FUNC(pthread_setconcurrency, 1004 AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY)) 1005 ;; 1006 # 1007 # UnixWare does things its own way. 1008 # 1009 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 1010 AC_DEFINE(HAVE_UNIXWARE_SIGWAIT) 1011 ;; 1012 esac 1013 1014 # 1015 # Look for sysconf to allow detection of the number of processors. 1016 # 1017 AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),) 1018 1019else 1020 ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS" 1021 thread_dir=nothreads 1022 THREADOPTOBJS="" 1023 THREADOPTSRCS="" 1024 ALWAYS_DEFINES="" 1025fi 1026 1027AC_SUBST(ALWAYS_DEFINES) 1028AC_SUBST(ISC_PLATFORM_USETHREADS) 1029AC_SUBST(THREADOPTOBJS) 1030AC_SUBST(THREADOPTSRCS) 1031ISC_THREAD_DIR=$thread_dir 1032AC_SUBST(ISC_THREAD_DIR) 1033 1034# 1035# was --with-libxml2 specified? 1036# 1037AC_MSG_CHECKING(for libxml2 library) 1038AC_ARG_WITH(libxml2, 1039[ --with-libxml2[=PATH] Build with libxml2 library [yes|no|path]], 1040 use_libxml2="$withval", use_libxml2="auto") 1041 1042case "$use_libxml2" in 1043 no) 1044 DST_LIBXML2_INC="" 1045 ;; 1046 auto|yes) 1047 case X`(xml2-config --version) 2>/dev/null` in 1048 X2.[[67]].*) 1049 libxml2_libs=`xml2-config --libs` 1050 libxml2_cflags=`xml2-config --cflags` 1051 ;; 1052 *) 1053 libxml2_libs= 1054 libxml2_cflags= 1055 ;; 1056 esac 1057 ;; 1058 *) 1059 if test -f "$use_libxml2/bin/xml2-config" ; then 1060 libxml2_libs=`$use_libxml2/bin/xml2-config --libs` 1061 libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags` 1062 fi 1063 ;; 1064esac 1065 1066if test "X$libxml2_libs" != "X" 1067then 1068 AC_MSG_RESULT(yes) 1069 CFLAGS="$CFLAGS $libxml2_cflags" 1070 LIBS="$LIBS $libxml2_libs" 1071 AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found]) 1072else 1073 AC_MSG_RESULT(no) 1074fi 1075 1076# 1077# In solaris 10, SMF can manage named service 1078# 1079AC_CHECK_LIB(scf, smf_enable_instance) 1080 1081# 1082# flockfile is usually provided by pthreads, but we may want to use it 1083# even if compiled with --disable-threads. getc_unlocked might also not 1084# be defined. 1085# 1086AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),) 1087AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),) 1088 1089# 1090# Indicate what the final decision was regarding threads. 1091# 1092AC_MSG_CHECKING(whether to build with threads) 1093if $use_threads; then 1094 AC_MSG_RESULT(yes) 1095else 1096 AC_MSG_RESULT(no) 1097fi 1098 1099# 1100# End of pthreads stuff. 1101# 1102 1103# 1104# Large File 1105# 1106AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support], 1107 want_largefile="yes", want_largefile="no") 1108case $want_largefile in 1109 yes) 1110 ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" 1111 ;; 1112 *) 1113 ;; 1114esac 1115 1116# 1117# Additional compiler settings. 1118# 1119MKDEPCC="$CC" 1120MKDEPCFLAGS="-M" 1121IRIX_DNSSEC_WARNINGS_HACK="" 1122 1123if test "X$GCC" = "Xyes"; then 1124 AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing) 1125 SAVE_CFLAGS=$CFLAGS 1126 CFLAGS="$CFLAGS -fno-strict-aliasing" 1127 AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no]) 1128 CFLAGS=$SAVE_CFLAGS 1129 if test "$FNOSTRICTALIASING" = "yes"; then 1130 AC_MSG_RESULT(yes) 1131 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing" 1132 else 1133 AC_MSG_RESULT(no) 1134 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith" 1135 fi 1136 case "$host" in 1137 *-hp-hpux*) 1138 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS" 1139 ;; 1140 esac 1141else 1142 case $host in 1143 *-dec-osf*) 1144 CC="$CC -std" 1145 CCOPT="$CCOPT -std" 1146 MKDEPCC="$CC" 1147 ;; 1148 *-hp-hpux*) 1149 CC="$CC -Ae -z" 1150 # The version of the C compiler that constantly warns about 1151 # 'const' as well as alignment issues is unfortunately not 1152 # able to be discerned via the version of the operating 1153 # system, nor does cc have a version flag. 1154 case "`$CC +W 123 2>&1`" in 1155 *Unknown?option*) 1156 STD_CWARNINGS="+w1" 1157 ;; 1158 *) 1159 # Turn off the pointlessly noisy warnings. 1160 STD_CWARNINGS="+w1 +W 474,530,2193,2236" 1161 ;; 1162 esac 1163 CCOPT="$CCOPT -Ae -z" 1164 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS" 1165 MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP' 1166 ;; 1167 *-sgi-irix*) 1168 STD_CWARNINGS="-fullwarn -woff 1209" 1169 # 1170 # Silence more than 250 instances of 1171 # "prototyped function redeclared without prototype" 1172 # and 11 instances of 1173 # "variable ... was set but never used" 1174 # from lib/dns/sec/openssl. 1175 # 1176 IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552" 1177 ;; 1178 *-solaris*) 1179 MKDEPCFLAGS="-xM" 1180 ;; 1181 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 1182 # UnixWare 1183 CC="$CC -w" 1184 ;; 1185 esac 1186fi 1187 1188AC_SUBST(MKDEPCC) 1189AC_SUBST(MKDEPCFLAGS) 1190AC_SUBST(MKDEPPROG) 1191AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK) 1192 1193# 1194# NLS 1195# 1196AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),) 1197 1198# 1199# -lxnet buys us one big porting headache... standards, gotta love 'em. 1200# 1201# AC_CHECK_LIB(xnet, socket, , 1202# AC_CHECK_LIB(socket, socket) 1203# ) 1204# 1205# Use this for now, instead: 1206# 1207case "$host" in 1208 mips-sgi-irix*) 1209 ;; 1210 *-linux*) 1211 ;; 1212 *) 1213 AC_CHECK_LIB(socket, socket) 1214 AC_CHECK_LIB(nsl, inet_addr) 1215 ;; 1216esac 1217 1218# 1219# Work around Solaris's select() limitations. 1220# 1221case "$host" in 1222 *-solaris2.[[89]]|*-solaris2.1?) 1223 AC_DEFINE(FD_SETSIZE, 65536, 1224 [Solaris hack to get select_large_fdset.]) 1225 ;; 1226esac 1227 1228# 1229# Purify support 1230# 1231AC_MSG_CHECKING(whether to use purify) 1232AC_ARG_WITH(purify, 1233 [ --with-purify[=PATH] use Rational purify], 1234 use_purify="$withval", use_purify="no") 1235 1236case "$use_purify" in 1237 no) 1238 ;; 1239 yes) 1240 AC_PATH_PROG(purify_path, purify, purify) 1241 ;; 1242 *) 1243 purify_path="$use_purify" 1244 ;; 1245esac 1246 1247case "$use_purify" in 1248 no) 1249 AC_MSG_RESULT(no) 1250 PURIFY="" 1251 ;; 1252 *) 1253 if test -f $purify_path || test $purify_path = purify; then 1254 AC_MSG_RESULT($purify_path) 1255 PURIFYFLAGS="`echo $PURIFYOPTIONS`" 1256 PURIFY="$purify_path $PURIFYFLAGS" 1257 else 1258 AC_MSG_ERROR([$purify_path not found. 1259 1260Please choose the proper path with the following command: 1261 1262 configure --with-purify=PATH 1263]) 1264 fi 1265 ;; 1266esac 1267 1268AC_SUBST(PURIFY) 1269 1270 1271AC_ARG_WITH(libtool, 1272 [ --with-libtool use GNU libtool], 1273 use_libtool="$withval", use_libtool="no") 1274 1275case $use_libtool in 1276 yes) 1277 AM_PROG_LIBTOOL 1278 O=lo 1279 A=la 1280 LIBTOOL_MKDEP_SED='s;\.o;\.lo;' 1281 LIBTOOL_MODE_COMPILE='--mode=compile' 1282 LIBTOOL_MODE_INSTALL='--mode=install' 1283 LIBTOOL_MODE_LINK='--mode=link' 1284 case "$host" in 1285 *) LIBTOOL_ALLOW_UNDEFINED= ;; 1286 esac 1287 case "$host" in 1288 *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;; 1289 *) LIBTOOL_IN_MAIN= ;; 1290 esac; 1291 ;; 1292 *) 1293 O=o 1294 A=a 1295 LIBTOOL= 1296 AC_SUBST(LIBTOOL) 1297 LIBTOOL_MKDEP_SED= 1298 LIBTOOL_MODE_COMPILE= 1299 LIBTOOL_MODE_INSTALL= 1300 LIBTOOL_MODE_LINK= 1301 LIBTOOL_ALLOW_UNDEFINED= 1302 LIBTOOL_IN_MAIN= 1303 ;; 1304esac 1305 1306# 1307# File name extension for static archive files, for those few places 1308# where they are treated differently from dynamic ones. 1309# 1310SA=a 1311 1312AC_SUBST(O) 1313AC_SUBST(A) 1314AC_SUBST(SA) 1315AC_SUBST(LIBTOOL_MKDEP_SED) 1316AC_SUBST(LIBTOOL_MODE_COMPILE) 1317AC_SUBST(LIBTOOL_MODE_INSTALL) 1318AC_SUBST(LIBTOOL_MODE_LINK) 1319AC_SUBST(LIBTOOL_ALLOW_UNDEFINED) 1320AC_SUBST(LIBTOOL_IN_MAIN) 1321 1322# 1323# Here begins a very long section to determine the system's networking 1324# capabilities. The order of the tests is significant. 1325# 1326 1327# 1328# IPv6 1329# 1330AC_ARG_ENABLE(ipv6, 1331 [ --enable-ipv6 use IPv6 [default=autodetect]]) 1332 1333case "$enable_ipv6" in 1334 yes|''|autodetect) 1335 AC_DEFINE(WANT_IPV6) 1336 ;; 1337 no) 1338 ;; 1339esac 1340 1341# 1342# We do the IPv6 compilation checking after libtool so that we can put 1343# the right suffix on the files. 1344# 1345AC_MSG_CHECKING(for IPv6 structures) 1346AC_TRY_COMPILE([ 1347#include <sys/types.h> 1348#include <sys/socket.h> 1349#include <netinet/in.h>], 1350[struct sockaddr_in6 sin6; return (0);], 1351 [AC_MSG_RESULT(yes) 1352 found_ipv6=yes], 1353 [AC_MSG_RESULT(no) 1354 found_ipv6=no]) 1355 1356# 1357# See whether IPv6 support is provided via a Kame add-on. 1358# This is done before other IPv6 linking tests to LIBS is properly set. 1359# 1360AC_MSG_CHECKING(for Kame IPv6 support) 1361AC_ARG_WITH(kame, 1362 [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]], 1363 use_kame="$withval", use_kame="no") 1364 1365case "$use_kame" in 1366 no) 1367 ;; 1368 yes) 1369 kame_path=/usr/local/v6 1370 ;; 1371 *) 1372 kame_path="$use_kame" 1373 ;; 1374esac 1375 1376case "$use_kame" in 1377 no) 1378 AC_MSG_RESULT(no) 1379 ;; 1380 *) 1381 if test -f $kame_path/lib/libinet6.a; then 1382 AC_MSG_RESULT($kame_path/lib/libinet6.a) 1383 LIBS="-L$kame_path/lib -linet6 $LIBS" 1384 else 1385 AC_MSG_ERROR([$kame_path/lib/libinet6.a not found. 1386 1387Please choose the proper path with the following command: 1388 1389 configure --with-kame=PATH 1390]) 1391 fi 1392 ;; 1393esac 1394 1395# 1396# Whether netinet6/in6.h is needed has to be defined in isc/platform.h. 1397# Including it on Kame-using platforms is very bad, though, because 1398# Kame uses #error against direct inclusion. So include it on only 1399# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1. 1400# This is done before the in6_pktinfo check because that's what 1401# netinet6/in6.h is needed for. 1402# 1403changequote({, }) 1404case "$host" in 1405*-bsdi4.[01]*) 1406 ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1" 1407 LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1" 1408 isc_netinet6in6_hack="#include <netinet6/in6.h>" 1409 ;; 1410*) 1411 ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H" 1412 LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H" 1413 isc_netinet6in6_hack="" 1414 ;; 1415esac 1416changequote([, ]) 1417 1418# 1419# This is similar to the netinet6/in6.h issue. 1420# 1421case "$host" in 1422*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 1423 # UnixWare 1424 ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1" 1425 LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1" 1426 ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1" 1427 isc_netinetin6_hack="#include <netinet/in6.h>" 1428 ;; 1429*) 1430 ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H" 1431 LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H" 1432 ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR" 1433 isc_netinetin6_hack="" 1434 ;; 1435esac 1436 1437# 1438# Now delve deeper into the suitability of the IPv6 support. 1439# 1440case "$found_ipv6" in 1441 yes) 1442 ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1" 1443 LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" 1444 1445 AC_MSG_CHECKING(for in6_addr) 1446 AC_TRY_COMPILE([ 1447#include <sys/types.h> 1448#include <sys/socket.h> 1449#include <netinet/in.h> 1450$isc_netinetin6_hack 1451$isc_netinet6in6_hack 1452], 1453[struct in6_addr in6; return (0);], 1454 [AC_MSG_RESULT(yes) 1455 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" 1456 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6" 1457 isc_in_addr6_hack=""], 1458 [AC_MSG_RESULT(no) 1459 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1" 1460 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1" 1461 isc_in_addr6_hack="#define in6_addr in_addr6"]) 1462 1463 AC_MSG_CHECKING(for in6addr_any) 1464 AC_TRY_LINK([ 1465#include <sys/types.h> 1466#include <sys/socket.h> 1467#include <netinet/in.h> 1468$isc_netinetin6_hack 1469$isc_netinet6in6_hack 1470$isc_in_addr6_hack 1471], 1472 [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);], 1473 [AC_MSG_RESULT(yes) 1474 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 1475 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"], 1476 [AC_MSG_RESULT(no) 1477 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1" 1478 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"]) 1479 1480 AC_MSG_CHECKING(for in6addr_loopback) 1481 AC_TRY_LINK([ 1482#include <sys/types.h> 1483#include <sys/socket.h> 1484#include <netinet/in.h> 1485$isc_netinetin6_hack 1486$isc_netinet6in6_hack 1487$isc_in_addr6_hack 1488], 1489 [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);], 1490 [AC_MSG_RESULT(yes) 1491 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK" 1492 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"], 1493 [AC_MSG_RESULT(no) 1494 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1" 1495 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"]) 1496 1497 AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6) 1498 AC_TRY_COMPILE([ 1499#include <sys/types.h> 1500#include <sys/socket.h> 1501#include <netinet/in.h> 1502$isc_netinetin6_hack 1503$isc_netinet6in6_hack 1504], 1505 [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);], 1506 [AC_MSG_RESULT(yes) 1507 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 1508 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"], 1509 [AC_MSG_RESULT(no) 1510 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID" 1511 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"]) 1512 LWRES_HAVE_SIN6_SCOPE_ID="$result" 1513 1514 AC_MSG_CHECKING(for in6_pktinfo) 1515 AC_TRY_COMPILE([ 1516#include <sys/types.h> 1517#include <sys/socket.h> 1518#include <netinet/in.h> 1519$isc_netinetin6_hack 1520$isc_netinet6in6_hack 1521], 1522 [struct in6_pktinfo xyzzy; return (0);], 1523 [AC_MSG_RESULT(yes) 1524 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"], 1525 [AC_MSG_RESULT(no -- disabling runtime ipv6 support) 1526 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"]) 1527 ;; 1528 no) 1529 ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6" 1530 LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6" 1531 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 1532 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY" 1533 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO" 1534 LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1" 1535 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 1536 ISC_IPV6_H="ipv6.h" 1537 ISC_IPV6_O="ipv6.$O" 1538 ISC_ISCIPV6_O="unix/ipv6.$O" 1539 ISC_IPV6_C="ipv6.c" 1540 ;; 1541esac 1542 1543AC_SUBST(ISC_PLATFORM_HAVEIPV6) 1544AC_SUBST(LWRES_PLATFORM_HAVEIPV6) 1545AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H) 1546AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H) 1547AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H) 1548AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H) 1549AC_SUBST(ISC_PLATFORM_HAVEINADDR6) 1550AC_SUBST(LWRES_PLATFORM_HAVEINADDR6) 1551AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY) 1552AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY) 1553AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK) 1554AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK) 1555AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO) 1556AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR) 1557AC_SUBST(ISC_IPV6_H) 1558AC_SUBST(ISC_IPV6_O) 1559AC_SUBST(ISC_ISCIPV6_O) 1560AC_SUBST(ISC_IPV6_C) 1561AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID) 1562AC_SUBST(ISC_PLATFORM_HAVESCOPEID) 1563 1564AC_MSG_CHECKING([for struct if_laddrreq]) 1565AC_TRY_LINK([ 1566#include <sys/types.h> 1567#include <net/if6.h> 1568],[ struct if_laddrreq a; ], 1569 [AC_MSG_RESULT(yes) 1570 ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"], 1571 [AC_MSG_RESULT(no) 1572 ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"]) 1573AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ) 1574 1575AC_MSG_CHECKING([for struct if_laddrconf]) 1576AC_TRY_LINK([ 1577#include <sys/types.h> 1578#include <net/if6.h> 1579],[ struct if_laddrconf a; ], 1580 [AC_MSG_RESULT(yes) 1581 ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"], 1582 [AC_MSG_RESULT(no) 1583 ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"]) 1584AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF) 1585 1586# 1587# Check for network functions that are often missing. We do this 1588# after the libtool checking, so we can put the right suffix on 1589# the files. It also needs to come after checking for a Kame add-on, 1590# which provides some (all?) of the desired functions. 1591# 1592 1593AC_MSG_CHECKING([for inet_ntop with IPv6 support]) 1594AC_TRY_RUN([ 1595#include <sys/types.h> 1596#include <sys/socket.h> 1597#include <netinet/in.h> 1598#include <arpa/inet.h> 1599main() { 1600char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}], 1601 [AC_MSG_RESULT(yes) 1602 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"], 1603 1604 [AC_MSG_RESULT(no) 1605 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O" 1606 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c" 1607 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"], 1608 [AC_MSG_RESULT(assuming inet_ntop needed) 1609 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O" 1610 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c" 1611 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"]) 1612 1613 1614# On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts 1615# addresses with less than four octets, like "1.2.3". Also leading 1616# zeros should also be rejected. 1617 1618AC_MSG_CHECKING([for working inet_pton with IPv6 support]) 1619AC_TRY_RUN([ 1620#include <sys/types.h> 1621#include <sys/socket.h> 1622#include <netinet/in.h> 1623#include <arpa/inet.h> 1624main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 : 1625 inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 1626 (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }], 1627 [AC_MSG_RESULT(yes) 1628 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"], 1629 [AC_MSG_RESULT(no) 1630 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 1631 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 1632 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"], 1633 [AC_MSG_RESULT(assuming target platform has working inet_pton) 1634 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"], 1635 [AC_MSG_RESULT(assuming inet_pton needed) 1636 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 1637 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 1638 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"], 1639 [AC_MSG_RESULT(assuming target platform has working inet_pton) 1640 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"]) 1641 1642AC_SUBST(ISC_PLATFORM_NEEDNTOP) 1643AC_SUBST(ISC_PLATFORM_NEEDPTON) 1644 1645# 1646# Look for a 4.4BSD-style sa_len member in struct sockaddr. 1647# 1648case "$host" in 1649 *-dec-osf*) 1650 # Turn on 4.4BSD style sa_len support. 1651 AC_DEFINE(_SOCKADDR_LEN) 1652 ;; 1653esac 1654 1655AC_MSG_CHECKING(for sa_len in struct sockaddr) 1656AC_TRY_COMPILE([ 1657#include <sys/types.h> 1658#include <sys/socket.h>], 1659[struct sockaddr sa; sa.sa_len = 0; return (0);], 1660 [AC_MSG_RESULT(yes) 1661 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" 1662 LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"], 1663 [AC_MSG_RESULT(no) 1664 ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN" 1665 LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"]) 1666AC_SUBST(ISC_PLATFORM_HAVESALEN) 1667AC_SUBST(LWRES_PLATFORM_HAVESALEN) 1668 1669# 1670# Look for a 4.4BSD or 4.3BSD struct msghdr 1671# 1672AC_MSG_CHECKING(for struct msghdr flavor) 1673AC_TRY_COMPILE([ 1674#include <sys/types.h> 1675#include <sys/socket.h>], 1676[struct msghdr msg; msg.msg_flags = 0; return (0);], 1677 [AC_MSG_RESULT(4.4BSD) 1678 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"], 1679 [AC_MSG_RESULT(4.3BSD) 1680 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"]) 1681AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR) 1682 1683# 1684# Look for in_port_t. 1685# 1686AC_MSG_CHECKING(for type in_port_t) 1687AC_TRY_COMPILE([ 1688#include <sys/types.h> 1689#include <netinet/in.h>], 1690[in_port_t port = 25; return (0);], 1691 [AC_MSG_RESULT(yes) 1692 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"], 1693 [AC_MSG_RESULT(no) 1694 ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"]) 1695AC_SUBST(ISC_PLATFORM_NEEDPORTT) 1696 1697# 1698# Check for addrinfo 1699# 1700AC_MSG_CHECKING(for struct addrinfo) 1701AC_TRY_COMPILE([ 1702#include <netdb.h>], 1703[struct addrinfo a; return (0);], 1704 [AC_MSG_RESULT(yes) 1705 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" 1706 AC_DEFINE(HAVE_ADDRINFO)], 1707 [AC_MSG_RESULT(no) 1708 ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"]) 1709AC_SUBST(ISC_LWRES_NEEDADDRINFO) 1710 1711# 1712# Check for rrsetinfo 1713# 1714AC_MSG_CHECKING(for struct rrsetinfo) 1715AC_TRY_COMPILE([ 1716#include <netdb.h>], 1717[struct rrsetinfo r; return (0);], 1718 [AC_MSG_RESULT(yes) 1719 ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"], 1720 [AC_MSG_RESULT(no) 1721 ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"]) 1722AC_SUBST(ISC_LWRES_NEEDRRSETINFO) 1723 1724AC_MSG_CHECKING(for int sethostent) 1725AC_TRY_COMPILE([ 1726#include <netdb.h>], 1727[int i = sethostent(0); return(0);], 1728 [AC_MSG_RESULT(yes) 1729 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"], 1730 [AC_MSG_RESULT(no) 1731 ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"]) 1732AC_SUBST(ISC_LWRES_SETHOSTENTINT) 1733 1734AC_MSG_CHECKING(for int endhostent) 1735AC_TRY_COMPILE([ 1736#include <netdb.h>], 1737[int i = endhostent(); return(0);], 1738 [AC_MSG_RESULT(yes) 1739 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"], 1740 [AC_MSG_RESULT(no) 1741 ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"]) 1742AC_SUBST(ISC_LWRES_ENDHOSTENTINT) 1743 1744AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...)) 1745AC_TRY_COMPILE([ 1746#include <netdb.h> 1747struct netent *getnetbyaddr(in_addr_t, int);], 1748[], 1749 [AC_MSG_RESULT(yes) 1750 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"], 1751 [AC_MSG_RESULT(no) 1752 ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"]) 1753AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR) 1754 1755AC_MSG_CHECKING(for int setnetent) 1756AC_TRY_COMPILE([ 1757#include <netdb.h>], 1758[int i = setnetent(0); return(0);], 1759 [AC_MSG_RESULT(yes) 1760 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"], 1761 [AC_MSG_RESULT(no) 1762 ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"]) 1763AC_SUBST(ISC_LWRES_SETNETENTINT) 1764 1765AC_MSG_CHECKING(for int endnetent) 1766AC_TRY_COMPILE([ 1767#include <netdb.h>], 1768[int i = endnetent(); return(0);], 1769 [AC_MSG_RESULT(yes) 1770 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"], 1771 [AC_MSG_RESULT(no) 1772 ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"]) 1773AC_SUBST(ISC_LWRES_ENDNETENTINT) 1774 1775AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...)) 1776AC_TRY_COMPILE([ 1777#include <netdb.h> 1778struct hostent *gethostbyaddr(const void *, size_t, int);], 1779[return(0);], 1780 [AC_MSG_RESULT(yes) 1781 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"], 1782 [AC_MSG_RESULT(no) 1783 ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"]) 1784AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID) 1785 1786AC_MSG_CHECKING(for h_errno in netdb.h) 1787AC_TRY_COMPILE([ 1788#include <netdb.h>], 1789[h_errno = 1; return(0);], 1790 [AC_MSG_RESULT(yes) 1791 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"], 1792 [AC_MSG_RESULT(no) 1793 ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"]) 1794AC_SUBST(ISC_LWRES_NEEDHERRNO) 1795 1796AC_CHECK_FUNC(getipnodebyname, 1797 [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"], 1798 [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"]) 1799AC_CHECK_FUNC(getnameinfo, 1800 [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"], 1801 [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"]) 1802AC_CHECK_FUNC(getaddrinfo, 1803 [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO" 1804 AC_DEFINE(HAVE_GETADDRINFO)], 1805 [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"]) 1806AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR)) 1807AC_SUBST(ISC_LWRES_GETIPNODEPROTO) 1808AC_SUBST(ISC_LWRES_GETADDRINFOPROTO) 1809AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO) 1810 1811AC_ARG_ENABLE(getifaddrs, 1812[ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no]].], 1813 want_getifaddrs="$enableval", want_getifaddrs="yes") 1814 1815# 1816# This interface iteration code for getifaddrs() will fall back to using 1817# /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6 1818# addresses. 1819# 1820case $want_getifaddrs in 1821glibc) 1822AC_MSG_WARN("--enable-getifaddrs=glibc is no longer required") 1823AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 1824;; 1825yes) 1826AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 1827;; 1828no) 1829;; 1830esac 1831 1832# 1833# Look for a sysctl call to get the list of network interfaces. 1834# 1835case $ac_cv_header_sys_sysctl_h in 1836yes) 1837AC_MSG_CHECKING(for interface list sysctl) 1838AC_EGREP_CPP(found_rt_iflist, [ 1839#include <sys/param.h> 1840#include <sys/sysctl.h> 1841#include <sys/socket.h> 1842#ifdef NET_RT_IFLIST 1843found_rt_iflist 1844#endif 1845], 1846 [AC_MSG_RESULT(yes) 1847 AC_DEFINE(HAVE_IFLIST_SYSCTL)], 1848 [AC_MSG_RESULT(no)]) 1849;; 1850esac 1851 1852# 1853# Check for some other useful functions that are not ever-present. 1854# 1855 1856# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC 1857# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77 1858# reportedly defines strsep() without declaring it in <string.h> when 1859# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and 1860# AC_CHECK_FUNC() incorrectly succeeds because it declares 1861# the function itself. 1862AC_MSG_CHECKING(for correctly declared strsep()) 1863AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");], 1864 [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"], 1865 [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"]) 1866AC_SUBST(ISC_PLATFORM_NEEDSTRSEP) 1867 1868AC_CHECK_FUNC(memmove, 1869 [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"], 1870 [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"]) 1871AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE) 1872 1873AC_CHECK_FUNC(strtoul, 1874 [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL" 1875 LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL" 1876 GENRANDOMLIB=""], 1877 [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1" 1878 LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1" 1879 GENRANDOMLIB='${ISCLIBS}']) 1880AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL) 1881AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL) 1882AC_SUBST(GENRANDOMLIB) 1883 1884AC_CHECK_FUNC(strlcpy, 1885 [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"], 1886 [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"]) 1887AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY) 1888 1889AC_CHECK_FUNC(strlcat, 1890 [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"], 1891 [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"]) 1892AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT) 1893 1894ISC_PRINT_OBJS= 1895ISC_PRINT_SRCS= 1896AC_MSG_CHECKING(sprintf) 1897AC_TRY_COMPILE([ 1898#include <stdio.h> 1899], 1900[ char buf[2]; return(*sprintf(buf,"x"));], 1901[ 1902ISC_PRINT_OBJS="print.$O" 1903ISC_PRINT_SRCS="print.c" 1904ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF" 1905LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF" 1906], 1907[ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF" 1908 LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"] 1909) 1910AC_SUBST(ISC_PLATFORM_NEEDSPRINTF) 1911AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF) 1912 1913AC_CHECK_FUNC(vsnprintf, 1914 [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF" 1915 LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"], 1916 [ISC_PRINT_OBJS="print.$O" 1917 ISC_PRINT_SRCS="print.c" 1918 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1" 1919 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"]) 1920AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF) 1921AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF) 1922ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS" 1923ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS" 1924 1925AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR)) 1926 1927AC_SUBST(ISC_EXTRA_OBJS) 1928AC_SUBST(ISC_EXTRA_SRCS) 1929 1930# 1931# Use our own SPNEGO implementation? 1932# 1933AC_ARG_ENABLE(isc-spnego, 1934 [ --disable-isc-spnego use SPNEGO from GSSAPI library]) 1935 1936if test -n "$USE_GSSAPI" 1937then 1938 case "$enable_isc_spnego" in 1939 yes|'') 1940 USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO' 1941 DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O" 1942 DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c" 1943 AC_MSG_RESULT(using SPNEGO from lib/dns) 1944 ;; 1945 no) 1946 AC_MSG_RESULT(using SPNEGO from GSSAPI library) 1947 ;; 1948 esac 1949fi 1950 1951AC_SUBST(USE_ISC_SPNEGO) 1952 1953AC_SUBST(DST_EXTRA_OBJS) 1954AC_SUBST(DST_EXTRA_SRCS) 1955 1956# Determine the printf format characters to use when printing 1957# values of type isc_int64_t. This will normally be "ll", but where 1958# the compiler treats "long long" as a alias for "long" and printf 1959# doesn't know about "long long" use "l". Hopefully the sprintf 1960# will produce a inconsistent result in the later case. If the compiler 1961# fails due to seeing "%lld" we fall back to "l". 1962# 1963# Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses 1964# %ld even for (long long)/ 1965# 1966# Win32 uses "%I64d", but that's defined elsewhere since we don't use 1967# configure on Win32. 1968# 1969AC_MSG_CHECKING(printf format modifier for 64-bit integers) 1970AC_TRY_RUN([ 1971#include <stdio.h> 1972main() { 1973 long long int j = 0; 1974 char buf[100]; 1975 buf[0] = 0; 1976 sprintf(buf, "%lld", j); 1977 exit((sizeof(long long int) != sizeof(long int))? 0 : 1978 (strcmp(buf, "0") != 0)); 1979} 1980], 1981 [AC_MSG_RESULT(ll) 1982 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 1983 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'], 1984 [AC_MSG_RESULT(l) 1985 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"' 1986 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'], 1987 [AC_MSG_RESULT(assuming target platform uses ll) 1988 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 1989 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"']) 1990AC_SUBST(ISC_PLATFORM_QUADFORMAT) 1991AC_SUBST(LWRES_PLATFORM_QUADFORMAT) 1992 1993# 1994# Security Stuff 1995# 1996# Note it is very recommended to *not* disable chroot(), 1997# this is only because chroot() was made obsolete by Posix. 1998AC_ARG_ENABLE(chroot, 1999 [ --disable-chroot disable chroot]) 2000case "$enable_chroot" in 2001 yes|'') 2002 AC_CHECK_FUNCS(chroot) 2003 ;; 2004 no) 2005 ;; 2006esac 2007AC_ARG_ENABLE(linux-caps, 2008 [ --disable-linux-caps disable linux capabilities]) 2009case "$enable_linux_caps" in 2010 yes|'') 2011 AC_CHECK_HEADERS(linux/capability.h sys/capability.h) 2012 AC_CHECK_LIB(cap, cap_set_proc) 2013 ;; 2014 no) 2015 ;; 2016esac 2017AC_CHECK_HEADERS(sys/prctl.h) 2018 2019AC_CHECK_HEADERS(sys/un.h, 2020ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1" 2021, 2022ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH" 2023) 2024AC_SUBST(ISC_PLATFORM_HAVESYSUNH) 2025 2026case "$host" in 2027*-solaris*) 2028 AC_DEFINE(NEED_SECURE_DIRECTORY, 1, 2029 [Define if connect does not honour the permission on the UNIX domain socket.]) 2030 ;; 2031*-sunos*) 2032 AC_DEFINE(NEED_SECURE_DIRECTORY, 1, 2033 [Define if connect does not honour the permission on the UNIX domain socket.]) 2034 ;; 2035esac 2036 2037# 2038# Time Zone Stuff 2039# 2040AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET)) 2041 2042AC_MSG_CHECKING(for optarg declaration) 2043AC_TRY_COMPILE([ 2044#include <unistd.h> 2045], 2046[optarg = 0;], 2047[AC_MSG_RESULT(yes)], 2048[AC_MSG_RESULT(no) 2049GEN_NEED_OPTARG="-DNEED_OPTARG=1" 2050AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])]) 2051 2052# 2053# BSD/OS, and perhaps some others, don't define rlim_t. 2054# 2055AC_MSG_CHECKING(for type rlim_t) 2056AC_TRY_COMPILE([ 2057#include <sys/types.h> 2058#include <sys/time.h> 2059#include <sys/resource.h>], 2060[rlim_t rl = 19671212; return (0);], 2061[AC_MSG_RESULT(yes) 2062 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"], 2063[AC_MSG_RESULT(no) 2064 2065AC_MSG_CHECKING(type of rlim_cur) 2066AC_TRY_RUN([ 2067#include <sys/types.h> 2068#include <sys/time.h> 2069#include <sys/resource.h> 2070main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}], 2071[AC_MSG_RESULT(int) 2072ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"], 2073[ 2074AC_TRY_RUN([ 2075#include <sys/types.h> 2076#include <sys/time.h> 2077#include <sys/resource.h> 2078main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}], 2079[AC_MSG_RESULT(long int) 2080ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"], 2081[ 2082AC_TRY_RUN([ 2083#include <sys/types.h> 2084#include <sys/time.h> 2085#include <sys/resource.h> 2086main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}], 2087[AC_MSG_RESULT(long long int) 2088ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"], 2089[AC_MSG_ERROR([unable to determine sizeof rlim_cur]) 2090],[AC_MSG_ERROR(this cannot happen)]) 2091],[AC_MSG_ERROR(this cannot happen)]) 2092],[ 2093ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" 2094AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming long long int)]) 2095]) 2096AC_SUBST(ISC_PLATFORM_RLIMITTYPE) 2097 2098# 2099# Older HP-UX doesn't have gettune 2100# 2101case "$host" in 2102 *-hp-hpux*) 2103 AC_CHECK_HEADERS(sys/dyntune.h) 2104 ;; 2105 *) 2106 ;; 2107esac 2108 2109 2110# 2111# Compaq TruCluster requires more code for handling cluster IP aliases 2112# 2113case "$host" in 2114 *-dec-osf*) 2115 AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS") 2116 AC_CHECK_FUNC(clua_getaliasaddress, 2117 AC_DEFINE(HAVE_TRUCLUSTER, 1, 2118 [Define if running under Compaq TruCluster])) 2119 ;; 2120 *) 2121 ;; 2122esac 2123 2124# 2125# Some hosts need msg_namelen to match the size of the socket structure. 2126# Some hosts don't set msg_namelen appropriately on return from recvmsg(). 2127# 2128case $host in 2129*os2*|*hp-mpeix*) 2130 AC_DEFINE(BROKEN_RECVMSG, 1, 2131 [Define if recvmsg() does not meet all of the BSD socket API specifications.]) 2132 ;; 2133esac 2134 2135# 2136# Microsoft has their own way of handling shared libraries that requires 2137# additional qualifiers on extern variables. Unix systems don't need it. 2138# 2139AC_SUBST(ISC_PLATFORM_USEDECLSPEC) 2140ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC" 2141AC_SUBST(LWRES_PLATFORM_USEDECLSPEC) 2142LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC" 2143 2144# 2145# Random remaining OS-specific issues involving compiler warnings. 2146# XXXDCL print messages to indicate some compensation is being done? 2147# 2148AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT) 2149ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT" 2150 2151case "$host" in 2152 *-aix5.[[123]].*) 2153 hack_shutup_pthreadonceinit=yes 2154 ;; 2155 *-bsdi3.1*) 2156 hack_shutup_sputaux=yes 2157 ;; 2158 *-bsdi4.0*) 2159 hack_shutup_sigwait=yes 2160 hack_shutup_sputaux=yes 2161 ;; 2162 [*-bsdi4.[12]*]) 2163 hack_shutup_stdargcast=yes 2164 ;; 2165 [*-solaris2.[89]]) 2166 hack_shutup_pthreadonceinit=yes 2167 ;; 2168 *-solaris2.1[[0-9]]) 2169 AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [hack_shutup_pthreadonceinit=yes], ) 2170 ;; 2171esac 2172 2173case "$hack_shutup_pthreadonceinit" in 2174 yes) 2175 # 2176 # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings. 2177 # 2178 ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1" 2179 ;; 2180esac 2181 2182case "$hack_shutup_sigwait" in 2183 yes) 2184 # 2185 # Shut up a -Wmissing-prototypes warning for sigwait(). 2186 # 2187 AC_DEFINE(SHUTUP_SIGWAIT) 2188 ;; 2189esac 2190 2191case "$hack_shutup_sputaux" in 2192 yes) 2193 # 2194 # Shut up a -Wmissing-prototypes warning from <stdio.h>. 2195 # 2196 AC_DEFINE(SHUTUP_SPUTAUX) 2197 ;; 2198esac 2199 2200case "$hack_shutup_stdargcast" in 2201 yes) 2202 # 2203 # Shut up a -Wcast-qual warning from va_start(). 2204 # 2205 AC_DEFINE(SHUTUP_STDARG_CAST) 2206 ;; 2207esac 2208 2209AC_CHECK_HEADERS(strings.h, 2210 ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1" 2211, 2212 ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH" 2213) 2214AC_SUBST(ISC_PLATFORM_HAVESTRINGSH) 2215 2216# 2217# Check for if_nametoindex() for IPv6 scoped addresses support 2218# 2219AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes, 2220 ac_cv_have_if_nametoindex=no) 2221case $ac_cv_have_if_nametoindex in 2222no) 2223 case "$host" in 2224 *-hp-hpux*) 2225 AC_CHECK_LIB(ipv6, if_nametoindex, 2226 ac_cv_have_if_nametoindex=yes 2227 LIBS="-lipv6 $LIBS",) 2228 ;; 2229 esac 2230esac 2231case $ac_cv_have_if_nametoindex in 2232yes) 2233 ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1" 2234 ;; 2235*) 2236 ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX" 2237 ;; 2238esac 2239AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX) 2240 2241AC_CHECK_FUNCS(nanosleep) 2242 2243# 2244# Machine architecture dependent features 2245# 2246AC_ARG_ENABLE(atomic, 2247 [ --enable-atomic enable machine specific atomic operations 2248 [[default=autodetect]]], 2249 enable_atomic="$enableval", 2250 enable_atomic="autodetect") 2251case "$enable_atomic" in 2252 yes|''|autodetect) 2253 case "$host" in 2254 powerpc-ibm-aix*) 2255 if test "X$GCC" = "Xyes"; then 2256 AC_MSG_CHECKING([if asm("isc"); works]) 2257 AC_TRY_COMPILE(,[ 2258 main() { asm("ics"); exit(0); } 2259 ], 2260 [AC_MSG_RESULT(yes) 2261 use_atomic=yes], 2262 [ 2263 saved_cflags="$CFLAGS" 2264 CFLAGS="$CFLAGS -Wa,-many" 2265 AC_TRY_RUN([ 2266 main() { asm("ics"); exit(0); } 2267 ], 2268 [AC_MSG_RESULT([yes, required -Wa,-many]) 2269 use_atomic=yes], 2270 [AC_MSG_RESULT([no, use_atomic disabled]) 2271 CFLAGS="$saved_cflags" 2272 use_atomic=no], 2273 [AC_MSG_RESULT([cross compile, assume yes]) 2274 CFLAGS="$saved_cflags" 2275 use_atomic=yes]) 2276 ] 2277 ) 2278 else 2279 use_atomic=yes 2280 fi 2281 ;; 2282 *) 2283 use_atomic=yes 2284 ;; 2285 esac 2286 ;; 2287 no) 2288 use_atomic=no 2289 arch=noatomic 2290 ;; 2291esac 2292 2293ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM" 2294if test "$use_atomic" = "yes"; then 2295 AC_MSG_CHECKING([architecture type for atomic operations]) 2296 have_atomic=yes # set default 2297 case "$host" in 2298 [i[3456]86-*]) 2299 # XXX: some old x86 architectures actually do not support 2300 # (some of) these operations. Do we need stricter checks? 2301AC_TRY_RUN([ 2302main() { 2303 exit((sizeof(void *) == 8) ? 0 : 1); 2304} 2305], 2306 [arch=x86_64 2307 have_xaddq=yes], 2308 [arch=x86_32], 2309 [arch=x86_32]) 2310 ;; 2311 x86_64-*|amd64-*) 2312AC_TRY_RUN([ 2313main() { 2314 exit((sizeof(void *) == 8) ? 0 : 1); 2315} 2316], 2317 [arch=x86_64 2318 have_xaddq=yes], 2319 [arch=x86_32], 2320 [arch=x86_64 2321 have_xaddq=yes]) 2322 ;; 2323 alpha*-*) 2324 arch=alpha 2325 ;; 2326 powerpc-*|powerpc64-*) 2327 arch=powerpc 2328 ;; 2329 mips-*|mipsel-*|mips64-*|mips64el-*) 2330 arch=mips 2331 ;; 2332 ia64-*) 2333 arch=ia64 2334 ;; 2335 *) 2336 have_atomic=no 2337 arch=noatomic 2338 ;; 2339 esac 2340 AC_MSG_RESULT($arch) 2341fi 2342 2343if test "$have_atomic" = "yes"; then 2344 AC_MSG_CHECKING([compiler support for inline assembly code]) 2345 2346 compiler=generic 2347 # Check whether the compiler supports the assembly syntax we provide. 2348 if test "X$GCC" = "Xyes"; then 2349 # GCC's ASM extension always works 2350 compiler=gcc 2351 if test $arch = "x86_64"; then 2352 # We can share the same code for gcc with x86_32 2353 arch=x86_32 2354 fi 2355 if test $arch = "powerpc"; then 2356 # 2357 # The MacOS (and maybe others) uses "r0" for register 2358 # zero. Under linux/ibm it is "0" for register 0. 2359 # Probe to see if we have a MacOS style assembler. 2360 # 2361 AC_MSG_CHECKING([Checking for MacOS style assembler syntax]) 2362 AC_TRY_COMPILE(, [ 2363 __asm__ volatile ("li r0, 0x0\n"::); 2364 ], [ 2365 AC_MSG_RESULT(yes) 2366 compiler="mac" 2367 ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1" 2368 ], [AC_MSG_RESULT(no)]) 2369 fi 2370 else 2371 case "$host" in 2372 alpha*-dec-osf*) 2373 # Tru64 compiler has its own syntax for inline 2374 # assembly. 2375 AC_TRY_COMPILE(, [ 2376#ifndef __DECC 2377#error "unexpected compiler" 2378#endif 2379 return (0);], 2380 [compiler=osf],) 2381 ;; 2382 powerpc-ibm-aix*) 2383 compiler=aix 2384 ;; 2385 esac 2386 fi 2387 case "$compiler" in 2388 gcc) 2389 ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1" 2390 ;; 2391 osf) 2392 ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1" 2393 ;; 2394 aix) 2395 ;; 2396 mac) 2397 ;; 2398 *) 2399 # See if the generic __asm function works. If not, 2400 # we need to disable the atomic operations. 2401 AC_TRY_LINK(, [ 2402 __asm("nop") 2403 ], 2404 [compiler="standard" 2405 ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"], 2406 [compiler="not supported (atomic operations disabled)" 2407 have_atomic=no 2408 arch=noatomic ]); 2409 ;; 2410 esac 2411 2412 AC_MSG_RESULT($compiler) 2413fi 2414 2415if test "$have_atomic" = "yes"; then 2416 ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1" 2417 ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1" 2418 ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1" 2419else 2420 ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD" 2421 ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG" 2422 ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE" 2423fi 2424 2425if test "$have_xaddq" = "yes"; then 2426 ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1" 2427else 2428 ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ" 2429fi 2430 2431AC_SUBST(ISC_PLATFORM_HAVEXADD) 2432AC_SUBST(ISC_PLATFORM_HAVEXADDQ) 2433AC_SUBST(ISC_PLATFORM_HAVECMPXCHG) 2434AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE) 2435 2436AC_SUBST(ISC_PLATFORM_USEGCCASM) 2437AC_SUBST(ISC_PLATFORM_USEOSFASM) 2438AC_SUBST(ISC_PLATFORM_USESTDASM) 2439AC_SUBST(ISC_PLATFORM_USEMACASM) 2440 2441ISC_ARCH_DIR=$arch 2442AC_SUBST(ISC_ARCH_DIR) 2443 2444# 2445# Activate "rrset-order fixed" or not? 2446# 2447AC_ARG_ENABLE(fixed-rrset, 2448 [ --enable-fixed-rrset enable fixed rrset ordering 2449 [[default=no]]], 2450 enable_fixed="$enableval", 2451 enable_fixed="no") 2452case "$enable_fixed" in 2453 yes) 2454 AC_DEFINE(DNS_RDATASET_FIXED, 1, 2455 [Define to enable "rrset-order fixed" syntax.]) 2456 ;; 2457 no) 2458 ;; 2459 *) 2460 ;; 2461esac 2462 2463# 2464# The following sets up how non-blocking i/o is established. 2465# Sunos, cygwin and solaris 2.x (x<5) require special handling. 2466# 2467case "$host" in 2468*-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 2469*-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 2470*-solaris2.[[01234]]) 2471 AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK) 2472 AC_DEFINE(USE_FIONBIO_IOCTL, 1, 2473 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.]) 2474 ;; 2475*) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK, 2476 [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).]) 2477 ;; 2478esac 2479# 2480# Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket. 2481# This prevents the source address being set. 2482# 2483case "$host" in 2484*-solaris2.[[012345]]|*-solaris2.5.1) 2485 AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1, 2486 [Define if you cannot bind() before connect() for TCP sockets.]) 2487 ;; 2488esac 2489# 2490# The following sections deal with tools used for formatting 2491# the documentation. They are all optional, unless you are 2492# a developer editing the documentation source. 2493# 2494 2495# 2496# Look for TeX. 2497# 2498 2499AC_PATH_PROGS(LATEX, latex, latex) 2500AC_SUBST(LATEX) 2501 2502AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex) 2503AC_SUBST(PDFLATEX) 2504 2505# 2506# Look for w3m 2507# 2508 2509AC_PATH_PROGS(W3M, w3m, w3m) 2510AC_SUBST(W3M) 2511 2512# 2513# Look for xsltproc (libxslt) 2514# 2515 2516AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc) 2517AC_SUBST(XSLTPROC) 2518 2519# 2520# Look for xmllint (libxml2) 2521# 2522 2523AC_PATH_PROG(XMLLINT, xmllint, xmllint) 2524AC_SUBST(XMLLINT) 2525 2526# 2527# Look for Doxygen 2528# 2529 2530AC_PATH_PROG(DOXYGEN, doxygen, doxygen) 2531AC_SUBST(DOXYGEN) 2532 2533# 2534# Subroutine for searching for an ordinary file (e.g., a stylesheet) 2535# in a number of directories: 2536# 2537# NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES) 2538# 2539# If the file FILENAME is found in one of the DIRECTORIES, the shell 2540# variable VARIABLE is defined to its absolute pathname. Otherwise, 2541# it is set to FILENAME, with no directory prefix (that's not terribly 2542# useful, but looks less confusing in substitutions than leaving it 2543# empty). The variable VARIABLE will be substituted into output files. 2544# 2545 2546AC_DEFUN(NOM_PATH_FILE, [ 2547$1="" 2548AC_MSG_CHECKING(for $2) 2549for d in $3 2550do 2551 f=$d/$2 2552 if test -f $f 2553 then 2554 $1=$f 2555 AC_MSG_RESULT($f) 2556 break 2557 fi 2558done 2559if test "X[$]$1" = "X" 2560then 2561 AC_MSG_RESULT("not found"); 2562 $1=$2 2563fi 2564AC_SUBST($1) 2565]) 2566 2567# 2568# Look for Docbook-XSL stylesheets. Location probably varies by system. 2569# If it's not explicitly specified, guess where it might be found, based on 2570# where SGML stuff lives on some systems (FreeBSD is the only one we're sure 2571# of at the moment). 2572# 2573AC_MSG_CHECKING(for Docbook-XSL path) 2574AC_ARG_WITH(docbook-xsl, 2575[ --with-docbook-xsl=PATH Specify path for Docbook-XSL stylesheets], 2576 docbook_path="$withval", docbook_path="auto") 2577case "$docbook_path" in 2578auto) 2579 AC_MSG_RESULT(auto) 2580 docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook" 2581 ;; 2582*) 2583 docbook_xsl_trees="$withval" 2584 AC_MSG_RESULT($docbook_xsl_trees) 2585 ;; 2586esac 2587 2588# 2589# Look for stylesheets we need. 2590# 2591 2592NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees) 2593NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees) 2594NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees) 2595NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees) 2596NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees) 2597NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees) 2598NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees) 2599NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees) 2600NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees) 2601 2602# 2603# Same dance for db2latex 2604# 2605# No idea where this lives except on FreeBSD. 2606# 2607 2608db2latex_xsl_trees="/usr/local/share" 2609 2610# 2611# Look for stylesheets we need. 2612# 2613 2614NOM_PATH_FILE(XSLT_DB2LATEX_STYLE, db2latex/xsl/docbook.xsl, $db2latex_xsl_trees) 2615 2616# 2617# Look for "admonition" image directory. Can't use NOM_PATH_FILE() 2618# because it's a directory, so just do the same things, inline. 2619# 2620 2621AC_MSG_CHECKING(for db2latex/xsl/figures) 2622for d in $db2latex_xsl_trees 2623do 2624 dd=$d/db2latex/xsl/figures 2625 if test -d $dd 2626 then 2627 XSLT_DB2LATEX_ADMONITIONS=$dd 2628 AC_MSG_RESULT($dd) 2629 break 2630 fi 2631done 2632if test "X$XSLT_DB2LATEX_ADMONITIONS" = "X" 2633then 2634 AC_MSG_RESULT(not found) 2635 XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures 2636fi 2637AC_SUBST(XSLT_DB2LATEX_ADMONITIONS) 2638 2639# 2640# IDN support 2641# 2642AC_ARG_WITH(idn, 2643 [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]], 2644 use_idn="$withval", use_idn="no") 2645case "$use_idn" in 2646yes) 2647 if test X$prefix = XNONE ; then 2648 idn_path=/usr/local 2649 else 2650 idn_path=$prefix 2651 fi 2652 ;; 2653no) 2654 ;; 2655*) 2656 idn_path="$use_idn" 2657 ;; 2658esac 2659 2660iconvinc= 2661iconvlib= 2662AC_ARG_WITH(libiconv, 2663 [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]], 2664 use_libiconv="$withval", use_libiconv="no") 2665case "$use_libiconv" in 2666yes) 2667 if test X$prefix = XNONE ; then 2668 iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" 2669 else 2670 iconvlib="-L$prefix/lib -R$prefix/lib -liconv" 2671 fi 2672 ;; 2673no) 2674 iconvlib= 2675 ;; 2676*) 2677 iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" 2678 ;; 2679esac 2680 2681AC_ARG_WITH(iconv, 2682 [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], 2683 iconvlib="$withval") 2684case "$iconvlib" in 2685no) 2686 iconvlib= 2687 ;; 2688yes) 2689 iconvlib=-liconv 2690 ;; 2691esac 2692 2693AC_ARG_WITH(idnlib, 2694 [ --with-idnlib=ARG specify libidnkit], 2695 idnlib="$withval", idnlib="no") 2696if test "$idnlib" = yes; then 2697 AC_MSG_ERROR([You must specify ARG for --with-idnlib.]) 2698fi 2699 2700IDNLIBS= 2701if test "$use_idn" != no; then 2702 AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.]) 2703 STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include" 2704 if test "$idnlib" != no; then 2705 IDNLIBS="$idnlib $iconvlib" 2706 else 2707 IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib" 2708 fi 2709fi 2710AC_SUBST(IDNLIBS) 2711 2712AC_CHECK_HEADERS(locale.h) 2713AC_CHECK_FUNCS(setlocale) 2714 2715# 2716# Substitutions 2717# 2718AC_SUBST(BIND9_TOP_BUILDDIR) 2719BIND9_TOP_BUILDDIR=`pwd` 2720 2721AC_SUBST(BIND9_ISC_BUILDINCLUDE) 2722AC_SUBST(BIND9_ISCCC_BUILDINCLUDE) 2723AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE) 2724AC_SUBST(BIND9_DNS_BUILDINCLUDE) 2725AC_SUBST(BIND9_LWRES_BUILDINCLUDE) 2726AC_SUBST(BIND9_BIND9_BUILDINCLUDE) 2727if test "X$srcdir" != "X"; then 2728 BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include" 2729 BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include" 2730 BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include" 2731 BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include" 2732 BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include" 2733 BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include" 2734else 2735 BIND9_ISC_BUILDINCLUDE="" 2736 BIND9_ISCCC_BUILDINCLUDE="" 2737 BIND9_ISCCFG_BUILDINCLUDE="" 2738 BIND9_DNS_BUILDINCLUDE="" 2739 BIND9_LWRES_BUILDINCLUDE="" 2740 BIND9_BIND9_BUILDINCLUDE="" 2741fi 2742 2743AC_SUBST_FILE(BIND9_MAKE_INCLUDES) 2744BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes 2745 2746AC_SUBST_FILE(BIND9_MAKE_RULES) 2747BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules 2748 2749. $srcdir/version 2750BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}" 2751AC_SUBST(BIND9_VERSION) 2752 2753if test -z "$ac_configure_args"; then 2754 BIND9_CONFIGARGS="defaults" 2755else 2756 for a in $ac_configure_args 2757 do 2758 BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a" 2759 done 2760fi 2761BIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`" 2762BIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}" 2763AC_SUBST(BIND9_CONFIGARGS) 2764 2765AC_SUBST_FILE(LIBISC_API) 2766LIBISC_API=$srcdir/lib/isc/api 2767 2768AC_SUBST_FILE(LIBISCCC_API) 2769LIBISCCC_API=$srcdir/lib/isccc/api 2770 2771AC_SUBST_FILE(LIBISCCFG_API) 2772LIBISCCFG_API=$srcdir/lib/isccfg/api 2773 2774AC_SUBST_FILE(LIBDNS_API) 2775LIBDNS_API=$srcdir/lib/dns/api 2776 2777AC_SUBST_FILE(LIBBIND9_API) 2778LIBBIND9_API=$srcdir/lib/bind9/api 2779 2780AC_SUBST_FILE(LIBLWRES_API) 2781LIBLWRES_API=$srcdir/lib/lwres/api 2782 2783# 2784# Configure any DLZ drivers. 2785# 2786# If config.dlz.in selects one or more DLZ drivers, it will set 2787# USE_DLZ to a non-empty value, which will be our clue to 2788# enable the DLZ core functions. 2789# 2790# This section has to come after the libtool stuff because it needs to 2791# know how to name the driver object files. 2792# 2793 2794USE_DLZ="" 2795DLZ_DRIVER_INCLUDES="" 2796DLZ_DRIVER_LIBS="" 2797DLZ_DRIVER_SRCS="" 2798DLZ_DRIVER_OBJS="" 2799DLZ_SYSTEM_TEST="" 2800 2801sinclude(contrib/dlz/config.dlz.in) 2802 2803AC_MSG_CHECKING(for DLZ) 2804 2805if test -n "$USE_DLZ" 2806then 2807 AC_MSG_RESULT(yes) 2808 USE_DLZ="-DDLZ $USE_DLZ" 2809 DLZ_DRIVER_RULES=contrib/dlz/drivers/rules 2810 AC_CONFIG_FILES([$DLZ_DRIVER_RULES]) 2811else 2812 AC_MSG_RESULT(no) 2813 DLZ_DRIVER_RULES=/dev/null 2814fi 2815 2816AC_SUBST(USE_DLZ) 2817AC_SUBST(DLZ_DRIVER_INCLUDES) 2818AC_SUBST(DLZ_DRIVER_LIBS) 2819AC_SUBST(DLZ_DRIVER_SRCS) 2820AC_SUBST(DLZ_DRIVER_OBJS) 2821AC_SUBST(DLZ_SYSTEM_TEST) 2822AC_SUBST_FILE(DLZ_DRIVER_RULES) 2823 2824if test "$cross_compiling" = "yes"; then 2825 if test -z "$BUILD_CC"; then 2826 AC_ERROR([BUILD_CC not set]) 2827 fi 2828 BUILD_CFLAGS="$BUILD_CFLAGS" 2829 BUILD_CPPFLAGS="$BUILD_CPPFLAGS" 2830 BUILD_LDFLAGS="$BUILD_LDFLAGS" 2831 BUILD_LIBS="$BUILD_LIBS" 2832else 2833 BUILD_CC="$CC" 2834 BUILD_CFLAGS="$CFLAGS" 2835 BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG" 2836 BUILD_LDFLAGS="$LDFLAGS" 2837 BUILD_LIBS="$LIBS" 2838fi 2839 2840NEWFLAGS="" 2841for e in $BUILD_LDFLAGS ; do 2842 case $e in 2843 -L*) 2844 case $host_os in 2845 netbsd*) 2846 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 2847 NEWFLAGS="$NEWFLAGS $e $ee" 2848 ;; 2849 freebsd*) 2850 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 2851 NEWFLAGS="$NEWFLAGS $e $ee" 2852 ;; 2853 solaris*) 2854 ee=`echo $e | sed -e 's%^-L%-R%'` 2855 NEWFLAGS="$NEWFLAGS $e $ee" 2856 ;; 2857 *) 2858 NEWFLAGS="$NEWFLAGS $e" 2859 ;; 2860 esac 2861 ;; 2862 *) 2863 NEWFLAGS="$NEWFLAGS $e" 2864 ;; 2865 esac 2866done 2867BUILD_LDFLAGS="$NEWFLAGS" 2868 2869NEWFLAGS="" 2870for e in $DNS_GSSAPI_LIBS ; do 2871 case $e in 2872 -L*) 2873 case $host_os in 2874 netbsd*) 2875 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 2876 NEWFLAGS="$NEWFLAGS $e $ee" 2877 ;; 2878 freebsd*) 2879 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 2880 NEWFLAGS="$NEWFLAGS $e $ee" 2881 ;; 2882 solaris*) 2883 ee=`echo $e | sed -e 's%^-L%-R%'` 2884 NEWFLAGS="$NEWFLAGS $e $ee" 2885 ;; 2886 *) 2887 NEWFLAGS="$NEWFLAGS $e" 2888 ;; 2889 esac 2890 ;; 2891 *) 2892 NEWFLAGS="$NEWFLAGS $e" 2893 ;; 2894 esac 2895done 2896DNS_GSSAPI_LIBS="$NEWFLAGS" 2897 2898NEWFLAGS="" 2899for e in $DNS_CRYPTO_LIBS ; do 2900 case $e in 2901 -L*) 2902 case $host_os in 2903 netbsd*) 2904 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 2905 NEWFLAGS="$NEWFLAGS $e $ee" 2906 ;; 2907 freebsd*) 2908 ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'` 2909 NEWFLAGS="$NEWFLAGS $e $ee" 2910 ;; 2911 solaris*) 2912 ee=`echo $e | sed -e 's%^-L%-R%'` 2913 NEWFLAGS="$NEWFLAGS $e $ee" 2914 ;; 2915 *) 2916 NEWFLAGS="$NEWFLAGS $e" 2917 ;; 2918 esac 2919 ;; 2920 *) 2921 NEWFLAGS="$NEWFLAGS $e" 2922 ;; 2923 esac 2924done 2925DNS_CRYPTO_LIBS="$NEWFLAGS" 2926 2927AC_SUBST(BUILD_CC) 2928AC_SUBST(BUILD_CFLAGS) 2929AC_SUBST(BUILD_CPPFLAGS) 2930AC_SUBST(BUILD_LDFLAGS) 2931AC_SUBST(BUILD_LIBS) 2932 2933# 2934# Commands to run at the end of config.status. 2935# Don't just put these into configure, it won't work right if somebody 2936# runs config.status directly (which autoconf allows). 2937# 2938 2939AC_CONFIG_COMMANDS( 2940 [chmod], 2941 [chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter]) 2942 2943# 2944# Files to configure. These are listed here because we used to 2945# specify them as arguments to AC_OUTPUT. It's (now) ok to move these 2946# elsewhere if there's a good reason for doing so. 2947# 2948 2949AC_CONFIG_FILES([ 2950 Makefile 2951 make/Makefile 2952 make/mkdep 2953 lib/Makefile 2954 lib/isc/Makefile 2955 lib/isc/include/Makefile 2956 lib/isc/include/isc/Makefile 2957 lib/isc/include/isc/platform.h 2958 lib/isc/unix/Makefile 2959 lib/isc/unix/include/Makefile 2960 lib/isc/unix/include/isc/Makefile 2961 lib/isc/nls/Makefile 2962 lib/isc/$thread_dir/Makefile 2963 lib/isc/$thread_dir/include/Makefile 2964 lib/isc/$thread_dir/include/isc/Makefile 2965 lib/isc/$arch/Makefile 2966 lib/isc/$arch/include/Makefile 2967 lib/isc/$arch/include/isc/Makefile 2968 lib/isccc/Makefile 2969 lib/isccc/include/Makefile 2970 lib/isccc/include/isccc/Makefile 2971 lib/isccfg/Makefile 2972 lib/isccfg/include/Makefile 2973 lib/isccfg/include/isccfg/Makefile 2974 lib/dns/Makefile 2975 lib/dns/include/Makefile 2976 lib/dns/include/dns/Makefile 2977 lib/dns/include/dst/Makefile 2978 lib/bind9/Makefile 2979 lib/bind9/include/Makefile 2980 lib/bind9/include/bind9/Makefile 2981 lib/lwres/Makefile 2982 lib/lwres/include/Makefile 2983 lib/lwres/include/lwres/Makefile 2984 lib/lwres/include/lwres/netdb.h 2985 lib/lwres/include/lwres/platform.h 2986 lib/lwres/man/Makefile 2987 lib/lwres/unix/Makefile 2988 lib/lwres/unix/include/Makefile 2989 lib/lwres/unix/include/lwres/Makefile 2990 lib/tests/Makefile 2991 lib/tests/include/Makefile 2992 lib/tests/include/tests/Makefile 2993 bin/Makefile 2994 bin/check/Makefile 2995 bin/named/Makefile 2996 bin/named/unix/Makefile 2997 bin/rndc/Makefile 2998 bin/rndc/unix/Makefile 2999 bin/dig/Makefile 3000 bin/nsupdate/Makefile 3001 bin/tests/Makefile 3002 bin/tests/names/Makefile 3003 bin/tests/master/Makefile 3004 bin/tests/rbt/Makefile 3005 bin/tests/db/Makefile 3006 bin/tests/tasks/Makefile 3007 bin/tests/timers/Makefile 3008 bin/tests/dst/Makefile 3009 bin/tests/mem/Makefile 3010 bin/tests/hashes/Makefile 3011 bin/tests/net/Makefile 3012 bin/tests/sockaddr/Makefile 3013 bin/tests/system/Makefile 3014 bin/tests/system/conf.sh 3015 bin/tests/system/lwresd/Makefile 3016 bin/tests/system/tkey/Makefile 3017 bin/tests/headerdep_test.sh 3018 bin/dnssec/Makefile 3019 doc/Makefile 3020 doc/arm/Makefile 3021 doc/misc/Makefile 3022 isc-config.sh 3023 doc/xsl/Makefile 3024 doc/xsl/isc-docbook-chunk.xsl 3025 doc/xsl/isc-docbook-html.xsl 3026 doc/xsl/isc-docbook-latex.xsl 3027 doc/xsl/isc-manpage.xsl 3028 doc/doxygen/Doxyfile 3029 doc/doxygen/Makefile 3030 doc/doxygen/doxygen-input-filter 3031]) 3032 3033# 3034# Do it 3035# 3036 3037AC_OUTPUT 3038 3039# 3040# Now that the Makefiles exist we can ensure that everything is rebuilt. 3041# 3042AC_ARG_WITH(make-clean, 3043[ --with-make-clean Run "make clean" at end of configure [[yes|no]].], 3044 make_clean="$withval", make_clean="yes") 3045case "$make_clean" in 3046yes) 3047 make clean 3048 ;; 3049esac 3050 3051if test "X$USE_OPENSSL" = "X"; then 3052cat << \EOF 3053BIND is being built without OpenSSL. This means it will not have DNSSEC support. 3054EOF 3055fi 3056 3057if test "X$OPENSSL_WARNING" != "X"; then 3058cat << \EOF 3059WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 3060WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 3061WARNING WARNING 3062WARNING Your OpenSSL crypto library may be vulnerable to WARNING 3063WARNING one or more of the the following known security WARNING 3064WARNING flaws: WARNING 3065WARNING WARNING 3066WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING 3067WARNING CVE-2006-2940. WARNING 3068WARNING WARNING 3069WARNING It is recommended that you upgrade to OpenSSL WARNING 3070WARNING version 0.9.8d/0.9.7l (or greater). WARNING 3071WARNING WARNING 3072WARNING You can disable this warning by specifying: WARNING 3073WARNING WARNING 3074WARNING --disable-openssl-version-check WARNING 3075WARNING WARNING 3076WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 3077WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 3078EOF 3079fi 3080 3081# Tell Emacs to edit this file in shell mode. 3082# Local Variables: 3083# mode: sh 3084# End: 3085