configure.in revision 163976
1# Copyright (C) 2004-2006 Internet Systems Consortium, Inc. ("ISC") 2# Copyright (C) 1998-2003 Internet Software Consortium. 3# 4# Permission to use, copy, modify, and distribute this software for any 5# purpose with or without fee is hereby granted, provided that the above 6# copyright notice and this permission notice appear in all copies. 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.294.2.23.2.51.4.3 $) 22 23AC_INIT(lib/dns/name.c) 24AC_PREREQ(2.13) 25 26AC_CONFIG_HEADER(config.h) 27AC_CONFIG_SUBDIRS(lib/bind) 28 29AC_CANONICAL_HOST 30 31AC_PROG_MAKE_SET 32AC_PROG_RANLIB 33AC_PROG_INSTALL 34 35AC_SUBST(STD_CINCLUDES) 36AC_SUBST(STD_CDEFINES) 37AC_SUBST(STD_CWARNINGS) 38AC_SUBST(CCOPT) 39 40AC_PATH_PROG(AR, ar) 41ARFLAGS="cruv" 42AC_SUBST(AR) 43AC_SUBST(ARFLAGS) 44 45# The POSIX ln(1) program. Non-POSIX systems may substitute 46# "copy" or something. 47LN=ln 48AC_SUBST(LN) 49 50case "$AR" in 51 "") 52 AC_MSG_ERROR([ 53ar program not found. Please fix your PATH to include the directory in 54which ar resides, or set AR in the environment with the full path to ar. 55]) 56 57 ;; 58esac 59 60# 61# Etags. 62# 63AC_PATH_PROGS(ETAGS, etags emacs-etags) 64 65# 66# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of 67# GNU emacs etags, and it requires the -L flag. 68# 69if test "X$ETAGS" != "X"; then 70 AC_MSG_CHECKING(for Exuberant Ctags etags) 71 if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then 72 AC_MSG_RESULT(yes) 73 ETAGS="$ETAGS -L" 74 else 75 AC_MSG_RESULT(no) 76 fi 77fi 78AC_SUBST(ETAGS) 79 80# 81# Perl is optional; it is used only by some of the system test scripts. 82# 83AC_PATH_PROGS(PERL, perl5 perl) 84AC_SUBST(PERL) 85 86# 87# Special processing of paths depending on whether --prefix, 88# --sysconfdir or --localstatedir arguments were given. What's 89# desired is some compatibility with the way previous versions 90# of BIND built; they defaulted to /usr/local for most parts of 91# the installation, but named.boot/named.conf was in /etc 92# and named.pid was in /var/run. 93# 94# So ... if none of --prefix, --sysconfdir or --localstatedir are 95# specified, set things up that way. If --prefix is given, use 96# it for sysconfdir and localstatedir the way configure normally 97# would. To change the prefix for everything but leave named.conf 98# in /etc or named.pid in /var/run, then do this the usual configure way: 99# ./configure --prefix=/somewhere --sysconfdir=/etc 100# ./configure --prefix=/somewhere --localstatedir=/var 101# 102# To put named.conf and named.pid in /usr/local with everything else, 103# set the prefix explicitly to /usr/local even though that's the default: 104# ./configure --prefix=/usr/local 105# 106case "$prefix" in 107 NONE) 108 case "$sysconfdir" in 109 '${prefix}/etc') 110 sysconfdir=/etc 111 ;; 112 esac 113 case "$localstatedir" in 114 '${prefix}/var') 115 localstatedir=/var 116 ;; 117 esac 118 ;; 119esac 120 121# 122# Make sure INSTALL uses an absolute path, else it will be wrong in all 123# Makefiles, since they use make/rules.in and INSTALL will be adjusted by 124# configure based on the location of the file where it is substituted. 125# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate 126# subdirectory of install-sh, This relative path will be wrong for all 127# directories more than one level down from install-sh. 128# 129case "$INSTALL" in 130 /*) 131 ;; 132 *) 133 # 134 # Not all systems have dirname. 135 # 136 changequote({, }) 137 ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`" 138 changequote([, ]) 139 140 ac_prog="`echo $INSTALL | sed 's%.*/%%'`" 141 test "$ac_dir" = "$ac_prog" && ac_dir=. 142 test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`" 143 INSTALL="$ac_dir/$ac_prog" 144 ;; 145esac 146 147# 148# On these hosts, we really want to use cc, not gcc, even if it is 149# found. The gcc that these systems have will not correctly handle 150# pthreads. 151# 152# However, if the user sets $CC to be something, let that override 153# our change. 154# 155if test "X$CC" = "X" ; then 156 case "$host" in 157 *-dec-osf*) 158 CC="cc" 159 ;; 160 *-solaris*) 161 # Use Sun's cc if it is available, but watch 162 # out for /usr/ucb/cc; it will never be the right 163 # compiler to use. 164 # 165 # If setting CC here fails, the AC_PROG_CC done 166 # below might still find gcc. 167 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" 168 for ac_dir in $PATH; do 169 test -z "$ac_dir" && ac_dir=. 170 case "$ac_dir" in 171 /usr/ucb) 172 # exclude 173 ;; 174 *) 175 if test -f "$ac_dir/cc"; then 176 CC="$ac_dir/cc" 177 break 178 fi 179 ;; 180 esac 181 done 182 IFS="$ac_save_ifs" 183 ;; 184 *-hp-hpux*) 185 CC="cc" 186 ;; 187 mips-sgi-irix*) 188 CC="cc" 189 ;; 190 esac 191fi 192 193AC_PROG_CC 194 195# 196# gcc's optimiser is broken at -02 for ultrasparc 197# 198if test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then 199 case "$host" in 200 sparc-*) 201 CCFLAGS="-g -O1" 202 ;; 203 esac 204fi 205 206# 207# OS dependent CC flags 208# 209case "$host" in 210 # OSF 5.0: recv/send are only avaliable with -D_POSIX_PII_SOCKET or 211 # -D_XOPEN_SOURCE_EXTENDED. 212 *-dec-osf*) 213 STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET" 214 CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET" 215 ;; 216 #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros 217 *-hp-hpux*) 218 STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED" 219 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" 220 LIBS="-lxnet $LIBS" 221 ;; 222 # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros 223 *-solaris*) 224 STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__" 225 CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__" 226 ;; 227esac 228 229AC_HEADER_STDC 230 231AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h,,, 232[$ac_includes_default 233#ifdef HAVE_SYS_PARAM_H 234# include <sys/param.h> 235#endif 236]) 237 238AC_C_CONST 239AC_C_INLINE 240AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME)) 241 242# 243# UnixWare 7.1.1 with the feature supplement to the UDK compiler 244# is reported to not support "static inline" (RT #1212). 245# 246AC_MSG_CHECKING(for static inline breakage) 247AC_TRY_COMPILE(, [ 248 foo1(); 249 } 250 251 static inline int foo1() { 252 return 0; 253 } 254 255 static inline int foo2() { 256 return foo1(); 257 ], 258 [AC_MSG_RESULT(no)], 259 [AC_MSG_RESULT(yes) 260 AC_DEFINE(inline, )]) 261 262AC_TYPE_SIZE_T 263AC_CHECK_TYPE(ssize_t, int) 264AC_CHECK_TYPE(uintptr_t,unsigned long) 265AC_CHECK_TYPE(socklen_t, 266[AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)], 267[ 268AC_TRY_COMPILE( 269[ 270#include <sys/types.h> 271#include <sys/socket.h> 272int getsockname(int, struct sockaddr *, size_t *); 273],[], 274[AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)], 275[AC_DEFINE(ISC_SOCKADDR_LEN_T, int)]) 276], 277[ 278#include <sys/types.h> 279#include <sys/socket.h> 280]) 281AC_SUBST(ISC_SOCKADDR_LEN_T) 282AC_HEADER_TIME 283AC_MSG_CHECKING(for long long) 284AC_TRY_COMPILE([],[long long i = 0; return (0);], 285 [AC_MSG_RESULT(yes) 286 ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"], 287 [AC_MSG_RESULT(no) 288 ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"]) 289AC_SUBST(ISC_PLATFORM_HAVELONGLONG) 290 291# 292# check if we have lifconf 293# 294AC_MSG_CHECKING(for struct lifconf) 295AC_TRY_COMPILE([ 296#include <sys/types.h> 297#include <sys/socket.h> 298#include <net/if.h> 299], 300[ 301struct lifconf lifconf; 302lifconf.lifc_len = 0; 303] 304, 305 [AC_MSG_RESULT(yes) 306 ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"], 307 [AC_MSG_RESULT(no) 308 ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"]) 309AC_SUBST(ISC_PLATFORM_HAVELIFCONF) 310 311 312# 313# check if we need to #include sys/select.h explicitly 314# 315case $ac_cv_header_unistd_h in 316yes) 317AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set) 318AC_TRY_COMPILE([ 319#include <sys/types.h> /* Ultrix */ 320#include <unistd.h>], 321[fd_set read_set; return (0);], 322 [AC_MSG_RESULT(yes) 323 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" 324 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"], 325 [AC_MSG_RESULT(no) 326 case $ac_cv_header_sys_select_h in 327 yes) 328 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 329 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 330 ;; 331 no) 332 AC_MSG_ERROR([need either working unistd.h or sys/select.h]) 333 ;; 334 esac 335 ]) 336 ;; 337no) 338 case $ac_cv_header_sys_select_h in 339 yes) 340 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1" 341 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1" 342 ;; 343 no) 344 AC_MSG_ERROR([need either unistd.h or sys/select.h]) 345 ;; 346 esac 347 ;; 348esac 349AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH) 350AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH) 351 352# 353# Find the machine's endian flavor. 354# 355AC_C_BIGENDIAN 356 357# 358# was --with-openssl specified? 359# 360OPENSSL_WARNING= 361AC_MSG_CHECKING(for OpenSSL library) 362AC_ARG_WITH(openssl, 363[ --with-openssl[=PATH] Build with OpenSSL [yes|no|path]. 364 (Required for DNSSEC)], 365 use_openssl="$withval", use_openssl="auto") 366 367openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg" 368if test "$use_openssl" = "auto" 369then 370 for d in $openssldirs 371 do 372 if test -f $d/include/openssl/opensslv.h 373 then 374 use_openssl=$d 375 break 376 fi 377 done 378fi 379case "$use_openssl" in 380 no) 381 AC_MSG_RESULT(no) 382 DST_OPENSSL_INC="" 383 USE_OPENSSL="" 384 ;; 385 auto) 386 DST_OPENSSL_INC="" 387 USE_OPENSSL="" 388 AC_MSG_RESULT(not found) 389 ;; 390 *) 391 if test "$use_openssl" = "yes" 392 then 393 # User did not specify a path - guess it 394 for d in $openssldirs 395 do 396 if test -f $d/include/openssl/opensslv.h 397 then 398 use_openssl=$d 399 break 400 fi 401 done 402 if test "$use_openssl" = "yes" 403 then 404 AC_MSG_RESULT(not found) 405 AC_MSG_ERROR( 406[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path]) 407 fi 408 fi 409 USE_OPENSSL='-DOPENSSL' 410 if test "$use_openssl" = "/usr" 411 then 412 DST_OPENSSL_INC="" 413 DNS_OPENSSL_LIBS="-lcrypto" 414 else 415 DST_OPENSSL_INC="-I$use_openssl/include" 416 case $host in 417 *-solaris*) 418 DNS_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto" 419 ;; 420 *) 421 DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto" 422 ;; 423 esac 424 fi 425 AC_MSG_RESULT(using openssl from $use_openssl/lib and $use_openssl/include) 426 427 saved_cflags="$CFLAGS" 428 saved_libs="$LIBS" 429 CFLAGS="$CFLAGS $DST_OPENSSL_INC" 430 LIBS="$LIBS $DNS_OPENSSL_LIBS" 431 AC_MSG_CHECKING(whether linking with OpenSSL works) 432 AC_TRY_RUN([ 433#include <openssl/err.h> 434int main() { 435 ERR_clear_error(); 436 return (0); 437} 438], 439 [AC_MSG_RESULT(yes)], 440 [AC_MSG_RESULT(no) 441 AC_MSG_ERROR(Could not run test program using OpenSSL from 442$use_openssl/lib and $use_openssl/include. 443Please check the argument to --with-openssl and your 444shared library configuration (e.g., LD_LIBRARY_PATH).)], 445 [AC_MSG_RESULT(assuming it does work on target platform)]) 446 447 AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl) 448 AC_TRY_LINK([ 449#include <openssl/err.h>], 450[ DSO_METHOD_dlfcn(); ], 451 [AC_MSG_RESULT(no)], 452 [LIBS="$LIBS -ldl" 453 AC_TRY_LINK([ 454#include <openssl/err.h> 455],[ DSO_METHOD_dlfcn(); ], 456 [AC_MSG_RESULT(yes) 457 DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl" 458 ], 459 [AC_MSG_RESULT(unknown) 460 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)], 461 [AC_MSG_RESULT(assuming it does work on target platform)]) 462 ], 463 [AC_MSG_RESULT(assuming it does work on target platform)] 464 ) 465 466AC_ARG_ENABLE(openssl-version-check, 467[AC_HELP_STRING([--enable-openssl-version-check], 468 [Check OpenSSL Version @<:@default=yes@:>@])]) 469case "$enable_openssl_version_check" in 470yes|'') 471 AC_MSG_CHECKING(OpenSSL library version) 472 AC_TRY_RUN([ 473#include <stdio.h> 474#include <openssl/opensslv.h> 475int main() { 476 if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL && 477 OPENSSL_VERSION_NUMBER < 0x009080000L) || 478 OPENSSL_VERSION_NUMBER >= 0x0090804fL) 479 return (0); 480 printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n", 481 OPENSSL_VERSION_NUMBER); 482 printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n" 483 "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n"); 484 return (1); 485} 486 ], 487 [AC_MSG_RESULT(ok)], 488 [AC_MSG_RESULT(not compatible) 489 OPENSSL_WARNING=yes 490 ], 491 [AC_MSG_RESULT(assuming target platform has compatible version)]) 492;; 493no) 494 AC_MSG_RESULT(Skipped OpenSSL version check) 495;; 496esac 497 498 AC_MSG_CHECKING(for OpenSSL DSA support) 499 if test -f $use_openssl/include/openssl/dsa.h 500 then 501 AC_DEFINE(HAVE_OPENSSL_DSA) 502 AC_MSG_RESULT(yes) 503 else 504 AC_MSG_RESULT(no) 505 fi 506 CFLAGS="$saved_cflags" 507 LIBS="$saved_libs" 508 ;; 509esac 510 511# 512# This would include the system openssl path (and linker options to use 513# it as needed) if it is found. 514# 515 516AC_SUBST(USE_OPENSSL) 517AC_SUBST(DST_OPENSSL_INC) 518DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS" 519 520# 521# was --with-gssapi specified? 522# 523#AC_MSG_CHECKING(for GSSAPI library) 524#AC_ARG_WITH(gssapi, 525#[ --with-gssapi=PATH Specify path for system-supplied GSSAPI], 526# use_gssapi="$withval", use_gssapi="no") 527# 528#case "$use_gssapi" in 529# no) 530# USE_GSSAPI='' 531# DST_GSSAPI_INC='' 532# DNS_GSSAPI_LIBS='' 533# AC_MSG_RESULT(not specified) 534# ;; 535# yes) 536# AC_MSG_ERROR([--with-gssapi must specify a path]) 537# ;; 538# *) 539# USE_GSSAPI='-DGSSAPI' 540# DST_GSSAPI_INC="-I$use_gssapi/include" 541# DNS_GSSAPI_LIBS="-L$use_gssapi/lib -lgssapi_krb5" 542# AC_MSG_RESULT(using gssapi from $use_gssapi/lib and $use_gssapi/include) 543# ;; 544#esac 545 546USE_GSSAPI='' 547DST_GSSAPI_INC='' 548DNS_GSSAPI_LIBS='' 549 550AC_SUBST(USE_GSSAPI) 551AC_SUBST(DST_GSSAPI_INC) 552DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_GSSAPI_LIBS" 553 554# 555# Applications linking with libdns also need to link with these libraries. 556# 557 558AC_SUBST(DNS_CRYPTO_LIBS) 559 560# 561# was --with-randomdev specified? 562# 563AC_MSG_CHECKING(for random device) 564AC_ARG_WITH(randomdev, 565[ --with-randomdev=PATH Specify path for random device], 566 use_randomdev="$withval", use_randomdev="unspec") 567 568case "$use_randomdev" in 569 unspec) 570 case "$host" in 571 *-openbsd*) 572 devrandom=/dev/arandom 573 ;; 574 *) 575 devrandom=/dev/random 576 ;; 577 esac 578 AC_MSG_RESULT($devrandom) 579 AC_CHECK_FILE($devrandom, 580 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, 581 "$devrandom"),) 582 ;; 583 yes) 584 AC_MSG_ERROR([--with-randomdev must specify a path]) 585 ;; 586 no) 587 AC_MSG_RESULT(disabled) 588 ;; 589 *) 590 AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev") 591 AC_MSG_RESULT(using "$use_randomdev") 592 ;; 593esac 594 595# 596# Do we have arc4random() ? 597# 598AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM)) 599 600sinclude(config.threads.in)dnl 601 602if $use_threads 603then 604 # 605 # We'd like to use sigwait() too 606 # 607 AC_CHECK_LIB(c, sigwait, 608 AC_DEFINE(HAVE_SIGWAIT), 609 AC_CHECK_LIB(pthread, sigwait, 610 AC_DEFINE(HAVE_SIGWAIT), 611 AC_CHECK_LIB(pthread, _Psigwait, 612 AC_DEFINE(HAVE_SIGWAIT),)) 613 ) 614 615 AC_CHECK_FUNC(pthread_attr_getstacksize, 616 AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),) 617 618 AC_CHECK_FUNC(pthread_attr_setstacksize, 619 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),) 620 621 # 622 # Additional OS-specific issues related to pthreads and sigwait. 623 # 624 case "$host" in 625 # 626 # One more place to look for sigwait. 627 # 628 *-freebsd*) 629 AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),) 630 case $host in 631 *-freebsd5.[[012]]|*-freebsd5.[[012]].*);; 632 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*) 633 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 634 ;; 635 *-freebsd6.*) 636 AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM) 637 ;; 638 esac 639 ;; 640 # 641 # BSDI 3.0 through 4.0.1 needs pthread_init() to be 642 # called before certain pthreads calls. This is deprecated 643 # in BSD/OS 4.1. 644 # 645 *-bsdi3.*|*-bsdi4.0*) 646 AC_DEFINE(NEED_PTHREAD_INIT) 647 ;; 648 # 649 # LinuxThreads requires some changes to the way we 650 # deal with signals. 651 # 652 *-linux*) 653 AC_DEFINE(HAVE_LINUXTHREADS) 654 ;; 655 # 656 # Ensure the right sigwait() semantics on Solaris and make 657 # sure we call pthread_setconcurrency. 658 # 659 *-solaris*) 660 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) 661 AC_CHECK_FUNC(pthread_setconcurrency, 662 AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY)) 663 ;; 664 # 665 # UnixWare does things its own way. 666 # 667 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 668 AC_DEFINE(HAVE_UNIXWARE_SIGWAIT) 669 ;; 670 esac 671 672 # 673 # Look for sysconf to allow detection of the number of processors. 674 # 675 AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),) 676 677 if test "X$GCC" = "Xyes"; then 678 case "$host" in 679 *-freebsd*) 680 CC="$CC -pthread" 681 CCOPT="$CCOPT -pthread" 682 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 683 ;; 684 *-openbsd*) 685 CC="$CC -pthread" 686 CCOPT="$CCOPT -pthread" 687 ;; 688 *-solaris*) 689 LIBS="$LIBS -lthread" 690 ;; 691 *-ibm-aix*) 692 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 693 ;; 694 esac 695 else 696 case $host in 697 *-dec-osf*) 698 CC="$CC -pthread" 699 CCOPT="$CCOPT -pthread" 700 ;; 701 *-solaris*) 702 CC="$CC -mt" 703 CCOPT="$CCOPT -mt" 704 ;; 705 *-ibm-aix*) 706 STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE" 707 ;; 708 *-sco-sysv*uw*|*-*-sysv*UnixWare*) 709 CC="$CC -Kthread" 710 CCOPT="$CCOPT -Kthread" 711 ;; 712 *-*-sysv*OpenUNIX*) 713 CC="$CC -Kpthread" 714 CCOPT="$CCOPT -Kpthread" 715 ;; 716 esac 717 fi 718 ALWAYS_DEFINES="-D_REENTRANT" 719 ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1" 720 thread_dir=pthreads 721else 722 ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS" 723 thread_dir=nothreads 724 ALWAYS_DEFINES="" 725fi 726 727AC_SUBST(ALWAYS_DEFINES) 728AC_SUBST(ISC_PLATFORM_USETHREADS) 729ISC_THREAD_DIR=$thread_dir 730AC_SUBST(ISC_THREAD_DIR) 731 732# 733# In solaris 10, SMF can manage named service 734# 735AC_CHECK_LIB(scf, smf_enable_instance) 736 737# 738# flockfile is usually provided by pthreads, but we may want to use it 739# even if compiled with --disable-threads. getc_unlocked might also not 740# be defined. 741# 742AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),) 743AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),) 744 745# 746# Indicate what the final decision was regarding threads. 747# 748AC_MSG_CHECKING(whether to build with threads) 749if $use_threads; then 750 AC_MSG_RESULT(yes) 751else 752 AC_MSG_RESULT(no) 753fi 754 755# 756# End of pthreads stuff. 757# 758 759# 760# Large File 761# 762AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support], 763 want_largefile="yes", want_largefile="no") 764case $want_largefile in 765 yes) 766 ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" 767 ;; 768 *) 769 ;; 770esac 771 772# 773# Additional compiler settings. 774# 775MKDEPCC="$CC" 776MKDEPCFLAGS="-M" 777IRIX_DNSSEC_WARNINGS_HACK="" 778 779if test "X$GCC" = "Xyes"; then 780 STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat" 781 case "$host" in 782 *-hp-hpux*) 783 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS" 784 ;; 785 esac 786else 787 case $host in 788 *-dec-osf*) 789 CC="$CC -std" 790 CCOPT="$CCOPT -std" 791 MKDEPCC="$CC" 792 ;; 793 *-hp-hpux*) 794 CC="$CC -Ae -z" 795 # The version of the C compiler that constantly warns about 796 # 'const' as well as alignment issues is unfortunately not 797 # able to be discerned via the version of the operating 798 # system, nor does cc have a version flag. 799 case "`$CC +W 123 2>&1`" in 800 *Unknown?option*) 801 STD_CWARNINGS="+w1" 802 ;; 803 *) 804 # Turn off the pointlessly noisy warnings. 805 STD_CWARNINGS="+w1 +W 474,530,2193,2236" 806 ;; 807 esac 808 CCOPT="$CCOPT -Ae -z" 809 LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS" 810 MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP' 811 ;; 812 *-sgi-irix*) 813 STD_CWARNINGS="-fullwarn -woff 1209" 814 # 815 # Silence more than 250 instances of 816 # "prototyped function redeclared without prototype" 817 # and 11 instances of 818 # "variable ... was set but never used" 819 # from lib/dns/sec/openssl. 820 # 821 IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552" 822 ;; 823 *-solaris*) 824 MKDEPCFLAGS="-xM" 825 ;; 826 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 827 # UnixWare 828 CC="$CC -w" 829 ;; 830 esac 831fi 832 833AC_SUBST(MKDEPCC) 834AC_SUBST(MKDEPCFLAGS) 835AC_SUBST(MKDEPPROG) 836AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK) 837 838# 839# NLS 840# 841AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),) 842 843# 844# -lxnet buys us one big porting headache... standards, gotta love 'em. 845# 846# AC_CHECK_LIB(xnet, socket, , 847# AC_CHECK_LIB(socket, socket) 848# AC_CHECK_LIB(nsl, inet_ntoa) 849# ) 850# 851# Use this for now, instead: 852# 853case "$host" in 854 mips-sgi-irix*) 855 ;; 856 *) 857 AC_CHECK_LIB(socket, socket) 858 AC_CHECK_LIB(nsl, inet_ntoa) 859 ;; 860esac 861 862# 863# Purify support 864# 865AC_MSG_CHECKING(whether to use purify) 866AC_ARG_WITH(purify, 867 [ --with-purify[=PATH] use Rational purify], 868 use_purify="$withval", use_purify="no") 869 870case "$use_purify" in 871 no) 872 ;; 873 yes) 874 AC_PATH_PROG(purify_path, purify, purify) 875 ;; 876 *) 877 purify_path="$use_purify" 878 ;; 879esac 880 881case "$use_purify" in 882 no) 883 AC_MSG_RESULT(no) 884 PURIFY="" 885 ;; 886 *) 887 if test -f $purify_path || test $purify_path = purify; then 888 AC_MSG_RESULT($purify_path) 889 PURIFYFLAGS="`echo $PURIFYOPTIONS`" 890 PURIFY="$purify_path $PURIFYFLAGS" 891 else 892 AC_MSG_ERROR([$purify_path not found. 893 894Please choose the proper path with the following command: 895 896 configure --with-purify=PATH 897]) 898 fi 899 ;; 900esac 901 902AC_SUBST(PURIFY) 903 904# 905# GNU libtool support 906# 907AC_ARG_WITH(libtool, 908 [ --with-libtool use GNU libtool (following indented options supported)], 909 use_libtool="$withval", use_libtool="no") 910 911case $use_libtool in 912 yes) 913 AM_PROG_LIBTOOL 914 O=lo 915 A=la 916 LIBTOOL_MKDEP_SED='s;\.o;\.lo;' 917 LIBTOOL_MODE_COMPILE='--mode=compile' 918 LIBTOOL_MODE_INSTALL='--mode=install' 919 LIBTOOL_MODE_LINK='--mode=link' 920 case "$host" in 921 *) LIBTOOL_ALLOW_UNDEFINED= ;; 922 esac 923 case "$host" in 924 *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;; 925 *) LIBTOOL_IN_MAIN= ;; 926 esac; 927 ;; 928 *) 929 O=o 930 A=a 931 LIBTOOL= 932 AC_SUBST(LIBTOOL) 933 LIBTOOL_MKDEP_SED= 934 LIBTOOL_MODE_COMPILE= 935 LIBTOOL_MODE_INSTALL= 936 LIBTOOL_MODE_LINK= 937 LIBTOOL_ALLOW_UNDEFINED= 938 LIBTOOL_IN_MAIN= 939 ;; 940esac 941 942# 943# File name extension for static archive files, for those few places 944# where they are treated differently from dynamic ones. 945# 946SA=a 947 948AC_SUBST(O) 949AC_SUBST(A) 950AC_SUBST(SA) 951AC_SUBST(LIBTOOL_MKDEP_SED) 952AC_SUBST(LIBTOOL_MODE_COMPILE) 953AC_SUBST(LIBTOOL_MODE_INSTALL) 954AC_SUBST(LIBTOOL_MODE_LINK) 955AC_SUBST(LIBTOOL_ALLOW_UNDEFINED) 956AC_SUBST(LIBTOOL_IN_MAIN) 957 958# 959# build libbind? 960# 961AC_ARG_ENABLE(libbind, 962 [ --enable-libbind build libbind [default=no]]) 963 964case "$enable_libbind" in 965 yes) 966 LIBBIND=lib/bind 967 AC_SUBST(LIBBIND) 968 ;; 969 no|'') 970 ;; 971esac 972 973# 974# Here begins a very long section to determine the system's networking 975# capabilities. The order of the tests is signficant. 976# 977 978# 979# IPv6 980# 981AC_ARG_ENABLE(ipv6, 982 [ --enable-ipv6 use IPv6 [default=autodetect]]) 983 984case "$enable_ipv6" in 985 yes|''|autodetect) 986 AC_DEFINE(WANT_IPV6) 987 ;; 988 no) 989 ;; 990esac 991 992# 993# We do the IPv6 compilation checking after libtool so that we can put 994# the right suffix on the files. 995# 996AC_MSG_CHECKING(for IPv6 structures) 997AC_TRY_COMPILE([ 998#include <sys/types.h> 999#include <sys/socket.h> 1000#include <netinet/in.h>], 1001[struct sockaddr_in6 sin6; return (0);], 1002 [AC_MSG_RESULT(yes) 1003 found_ipv6=yes], 1004 [AC_MSG_RESULT(no) 1005 found_ipv6=no]) 1006 1007# 1008# See whether IPv6 support is provided via a Kame add-on. 1009# This is done before other IPv6 linking tests to LIBS is properly set. 1010# 1011AC_MSG_CHECKING(for Kame IPv6 support) 1012AC_ARG_WITH(kame, 1013 [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]], 1014 use_kame="$withval", use_kame="no") 1015 1016case "$use_kame" in 1017 no) 1018 ;; 1019 yes) 1020 kame_path=/usr/local/v6 1021 ;; 1022 *) 1023 kame_path="$use_kame" 1024 ;; 1025esac 1026 1027case "$use_kame" in 1028 no) 1029 AC_MSG_RESULT(no) 1030 ;; 1031 *) 1032 if test -f $kame_path/lib/libinet6.a; then 1033 AC_MSG_RESULT($kame_path/lib/libinet6.a) 1034 LIBS="-L$kame_path/lib -linet6 $LIBS" 1035 else 1036 AC_MSG_ERROR([$kame_path/lib/libinet6.a not found. 1037 1038Please choose the proper path with the following command: 1039 1040 configure --with-kame=PATH 1041]) 1042 fi 1043 ;; 1044esac 1045 1046# 1047# Whether netinet6/in6.h is needed has to be defined in isc/platform.h. 1048# Including it on Kame-using platforms is very bad, though, because 1049# Kame uses #error against direct inclusion. So include it on only 1050# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1. 1051# This is done before the in6_pktinfo check because that's what 1052# netinet6/in6.h is needed for. 1053# 1054changequote({, }) 1055case "$host" in 1056*-bsdi4.[01]*) 1057 ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1" 1058 LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1" 1059 isc_netinet6in6_hack="#include <netinet6/in6.h>" 1060 ;; 1061*) 1062 ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H" 1063 LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H" 1064 isc_netinet6in6_hack="" 1065 ;; 1066esac 1067changequote([, ]) 1068 1069# 1070# This is similar to the netinet6/in6.h issue. 1071# 1072case "$host" in 1073*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 1074 # UnixWare 1075 ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1" 1076 LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1" 1077 ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1" 1078 isc_netinetin6_hack="#include <netinet/in6.h>" 1079 ;; 1080*) 1081 ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H" 1082 LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H" 1083 ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR" 1084 isc_netinetin6_hack="" 1085 ;; 1086esac 1087 1088# 1089# Now delve deeper into the suitability of the IPv6 support. 1090# 1091case "$found_ipv6" in 1092 yes) 1093 ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1" 1094 LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" 1095 1096 AC_MSG_CHECKING(for in6_addr) 1097 AC_TRY_COMPILE([ 1098#include <sys/types.h> 1099#include <sys/socket.h> 1100#include <netinet/in.h> 1101$isc_netinetin6_hack 1102$isc_netinet6in6_hack 1103], 1104[struct in6_addr in6; return (0);], 1105 [AC_MSG_RESULT(yes) 1106 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" 1107 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6" 1108 isc_in_addr6_hack=""], 1109 [AC_MSG_RESULT(no) 1110 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1" 1111 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1" 1112 isc_in_addr6_hack="#define in6_addr in_addr6"]) 1113 1114 AC_MSG_CHECKING(for in6addr_any) 1115 AC_TRY_LINK([ 1116#include <sys/types.h> 1117#include <sys/socket.h> 1118#include <netinet/in.h> 1119$isc_netinetin6_hack 1120$isc_netinet6in6_hack 1121$isc_in_addr6_hack 1122], 1123 [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);], 1124 [AC_MSG_RESULT(yes) 1125 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 1126 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"], 1127 [AC_MSG_RESULT(no) 1128 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1" 1129 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"]) 1130 1131 AC_MSG_CHECKING(for in6addr_loopback) 1132 AC_TRY_LINK([ 1133#include <sys/types.h> 1134#include <sys/socket.h> 1135#include <netinet/in.h> 1136$isc_netinetin6_hack 1137$isc_netinet6in6_hack 1138$isc_in_addr6_hack 1139], 1140 [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);], 1141 [AC_MSG_RESULT(yes) 1142 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK" 1143 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"], 1144 [AC_MSG_RESULT(no) 1145 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1" 1146 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"]) 1147 1148 AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6) 1149 AC_TRY_COMPILE([ 1150#include <sys/types.h> 1151#include <sys/socket.h> 1152#include <netinet/in.h> 1153$isc_netinetin6_hack 1154$isc_netinet6in6_hack 1155], 1156 [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);], 1157 [AC_MSG_RESULT(yes) 1158 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 1159 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"], 1160 [AC_MSG_RESULT(no) 1161 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID" 1162 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"]) 1163 LWRES_HAVE_SIN6_SCOPE_ID="$result" 1164 1165 AC_MSG_CHECKING(for in6_pktinfo) 1166 AC_TRY_COMPILE([ 1167#include <sys/types.h> 1168#include <sys/socket.h> 1169#include <netinet/in.h> 1170$isc_netinetin6_hack 1171$isc_netinet6in6_hack 1172], 1173 [struct in6_pktinfo xyzzy; return (0);], 1174 [AC_MSG_RESULT(yes) 1175 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"], 1176 [AC_MSG_RESULT(no -- disabling runtime ipv6 support) 1177 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"]) 1178 ;; 1179 no) 1180 ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6" 1181 LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6" 1182 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" 1183 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY" 1184 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO" 1185 LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1" 1186 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1" 1187 ISC_IPV6_H="ipv6.h" 1188 ISC_IPV6_O="ipv6.$O" 1189 ISC_ISCIPV6_O="unix/ipv6.$O" 1190 ISC_IPV6_C="ipv6.c" 1191 ;; 1192esac 1193 1194AC_SUBST(ISC_PLATFORM_HAVEIPV6) 1195AC_SUBST(LWRES_PLATFORM_HAVEIPV6) 1196AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H) 1197AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H) 1198AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H) 1199AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H) 1200AC_SUBST(ISC_PLATFORM_HAVEINADDR6) 1201AC_SUBST(LWRES_PLATFORM_HAVEINADDR6) 1202AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY) 1203AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY) 1204AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK) 1205AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK) 1206AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO) 1207AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR) 1208AC_SUBST(ISC_IPV6_H) 1209AC_SUBST(ISC_IPV6_O) 1210AC_SUBST(ISC_ISCIPV6_O) 1211AC_SUBST(ISC_IPV6_C) 1212AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID) 1213AC_SUBST(ISC_PLATFORM_HAVESCOPEID) 1214 1215AC_MSG_CHECKING([for struct if_laddrreq]) 1216AC_TRY_LINK([ 1217#include <sys/types.h> 1218#include <net/if6.h> 1219],[ struct if_laddrreq a; ], 1220 [AC_MSG_RESULT(yes) 1221 ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"], 1222 [AC_MSG_RESULT(no) 1223 ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"]) 1224AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ) 1225 1226AC_MSG_CHECKING([for struct if_laddrconf]) 1227AC_TRY_LINK([ 1228#include <sys/types.h> 1229#include <net/if6.h> 1230],[ struct if_laddrconf a; ], 1231 [AC_MSG_RESULT(yes) 1232 ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"], 1233 [AC_MSG_RESULT(no) 1234 ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"]) 1235AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF) 1236 1237# 1238# Check for network functions that are often missing. We do this 1239# after the libtool checking, so we can put the right suffix on 1240# the files. It also needs to come after checking for a Kame add-on, 1241# which provides some (all?) of the desired functions. 1242# 1243 1244AC_MSG_CHECKING([for inet_ntop with IPv6 support]) 1245AC_TRY_RUN([ 1246#include <sys/types.h> 1247#include <sys/socket.h> 1248#include <netinet/in.h> 1249#include <arpa/inet.h> 1250main() { 1251char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}], 1252 [AC_MSG_RESULT(yes) 1253 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"], 1254 1255 [AC_MSG_RESULT(no) 1256 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O" 1257 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c" 1258 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"], 1259 [AC_MSG_RESULT(assuming inet_ntop needed) 1260 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O" 1261 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c" 1262 ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"]) 1263 1264 1265# On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts 1266# addresses with less than four octets, like "1.2.3". Also leading 1267# zeros should also be rejected. 1268 1269AC_MSG_CHECKING([for working inet_pton with IPv6 support]) 1270AC_TRY_RUN([ 1271#include <sys/types.h> 1272#include <sys/socket.h> 1273#include <netinet/in.h> 1274#include <arpa/inet.h> 1275main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 : 1276 inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 1277 (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }], 1278 [AC_MSG_RESULT(yes) 1279 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"], 1280 [AC_MSG_RESULT(no) 1281 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 1282 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 1283 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"], 1284 [AC_MSG_RESULT(assuming target platform has working inet_pton) 1285 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"], 1286 [AC_MSG_RESULT(assuming inet_pton needed) 1287 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" 1288 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" 1289 ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"], 1290 [AC_MSG_RESULT(assuming target platform has working inet_pton) 1291 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"]) 1292 1293AC_MSG_CHECKING([for inet_aton]) 1294AC_TRY_LINK([ 1295#include <sys/types.h> 1296#include <netinet/in.h> 1297#include <arpa/inet.h>], 1298 [struct in_addr in; inet_aton(0, &in); return (0);], 1299 [AC_MSG_RESULT(yes) 1300 ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"], 1301 1302 [AC_MSG_RESULT(no) 1303 ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_aton.$O" 1304 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_aton.c" 1305 ISC_PLATFORM_NEEDATON="#define ISC_PLATFORM_NEEDATON 1"]) 1306 1307AC_SUBST(ISC_PLATFORM_NEEDNTOP) 1308AC_SUBST(ISC_PLATFORM_NEEDPTON) 1309AC_SUBST(ISC_PLATFORM_NEEDATON) 1310 1311# 1312# Look for a 4.4BSD-style sa_len member in struct sockaddr. 1313# 1314case "$host" in 1315 *-dec-osf*) 1316 # Turn on 4.4BSD style sa_len support. 1317 AC_DEFINE(_SOCKADDR_LEN) 1318 ;; 1319esac 1320 1321AC_MSG_CHECKING(for sa_len in struct sockaddr) 1322AC_TRY_COMPILE([ 1323#include <sys/types.h> 1324#include <sys/socket.h>], 1325[struct sockaddr sa; sa.sa_len = 0; return (0);], 1326 [AC_MSG_RESULT(yes) 1327 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" 1328 LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"], 1329 [AC_MSG_RESULT(no) 1330 ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN" 1331 LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"]) 1332AC_SUBST(ISC_PLATFORM_HAVESALEN) 1333AC_SUBST(LWRES_PLATFORM_HAVESALEN) 1334 1335# 1336# Look for a 4.4BSD or 4.3BSD struct msghdr 1337# 1338AC_MSG_CHECKING(for struct msghdr flavor) 1339AC_TRY_COMPILE([ 1340#include <sys/types.h> 1341#include <sys/socket.h>], 1342[struct msghdr msg; msg.msg_flags = 0; return (0);], 1343 [AC_MSG_RESULT(4.4BSD) 1344 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"], 1345 [AC_MSG_RESULT(4.3BSD) 1346 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"]) 1347AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR) 1348 1349# 1350# Look for in_port_t. 1351# 1352AC_MSG_CHECKING(for type in_port_t) 1353AC_TRY_COMPILE([ 1354#include <sys/types.h> 1355#include <netinet/in.h>], 1356[in_port_t port = 25; return (0);], 1357 [AC_MSG_RESULT(yes) 1358 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"], 1359 [AC_MSG_RESULT(no) 1360 ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"]) 1361AC_SUBST(ISC_PLATFORM_NEEDPORTT) 1362 1363# 1364# Check for addrinfo 1365# 1366AC_MSG_CHECKING(for struct addrinfo) 1367AC_TRY_COMPILE([ 1368#include <netdb.h>], 1369[struct addrinfo a; return (0);], 1370 [AC_MSG_RESULT(yes) 1371 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" 1372 AC_DEFINE(HAVE_ADDRINFO)], 1373 [AC_MSG_RESULT(no) 1374 ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"]) 1375AC_SUBST(ISC_LWRES_NEEDADDRINFO) 1376 1377# 1378# Check for rrsetinfo 1379# 1380AC_MSG_CHECKING(for struct rrsetinfo) 1381AC_TRY_COMPILE([ 1382#include <netdb.h>], 1383[struct rrsetinfo r; return (0);], 1384 [AC_MSG_RESULT(yes) 1385 ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"], 1386 [AC_MSG_RESULT(no) 1387 ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"]) 1388AC_SUBST(ISC_LWRES_NEEDRRSETINFO) 1389 1390AC_MSG_CHECKING(for int sethostent) 1391AC_TRY_COMPILE([ 1392#include <netdb.h>], 1393[int i = sethostent(0); return(0);], 1394 [AC_MSG_RESULT(yes) 1395 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"], 1396 [AC_MSG_RESULT(no) 1397 ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"]) 1398AC_SUBST(ISC_LWRES_SETHOSTENTINT) 1399 1400AC_MSG_CHECKING(for int endhostent) 1401AC_TRY_COMPILE([ 1402#include <netdb.h>], 1403[int i = endhostent(); return(0);], 1404 [AC_MSG_RESULT(yes) 1405 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"], 1406 [AC_MSG_RESULT(no) 1407 ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"]) 1408AC_SUBST(ISC_LWRES_ENDHOSTENTINT) 1409 1410AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...)) 1411AC_TRY_COMPILE([ 1412#include <netdb.h> 1413struct netent *getnetbyaddr(in_addr_t, int);], 1414[], 1415 [AC_MSG_RESULT(yes) 1416 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"], 1417 [AC_MSG_RESULT(no) 1418 ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"]) 1419AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR) 1420 1421AC_MSG_CHECKING(for int setnetent) 1422AC_TRY_COMPILE([ 1423#include <netdb.h>], 1424[int i = setnetent(0); return(0);], 1425 [AC_MSG_RESULT(yes) 1426 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"], 1427 [AC_MSG_RESULT(no) 1428 ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"]) 1429AC_SUBST(ISC_LWRES_SETNETENTINT) 1430 1431AC_MSG_CHECKING(for int endnetent) 1432AC_TRY_COMPILE([ 1433#include <netdb.h>], 1434[int i = endnetent(); return(0);], 1435 [AC_MSG_RESULT(yes) 1436 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"], 1437 [AC_MSG_RESULT(no) 1438 ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"]) 1439AC_SUBST(ISC_LWRES_ENDNETENTINT) 1440 1441AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...)) 1442AC_TRY_COMPILE([ 1443#include <netdb.h> 1444struct hostent *gethostbyaddr(const void *, size_t, int);], 1445[return(0);], 1446 [AC_MSG_RESULT(yes) 1447 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"], 1448 [AC_MSG_RESULT(no) 1449 ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"]) 1450AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID) 1451 1452AC_MSG_CHECKING(for h_errno in netdb.h) 1453AC_TRY_COMPILE([ 1454#include <netdb.h>], 1455[h_errno = 1; return(0);], 1456 [AC_MSG_RESULT(yes) 1457 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"], 1458 [AC_MSG_RESULT(no) 1459 ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"]) 1460AC_SUBST(ISC_LWRES_NEEDHERRNO) 1461 1462AC_CHECK_FUNC(getipnodebyname, 1463 [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"], 1464 [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"]) 1465AC_CHECK_FUNC(getnameinfo, 1466 [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"], 1467 [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"]) 1468AC_CHECK_FUNC(getaddrinfo, 1469 [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO" 1470 AC_DEFINE(HAVE_GETADDRINFO)], 1471 [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"]) 1472AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR)) 1473AC_SUBST(ISC_LWRES_GETIPNODEPROTO) 1474AC_SUBST(ISC_LWRES_GETADDRINFOPROTO) 1475AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO) 1476 1477AC_ARG_ENABLE(getifaddrs, 1478[ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no|glibc]]. 1479 glibc: Use getifaddrs() in glibc if you know it supports IPv6.], 1480 want_getifaddrs="$enableval", want_getifaddrs="yes") 1481 1482case $want_getifaddrs in 1483yes|glibc) 1484# 1485# Do we have getifaddrs() ? 1486# 1487case $host in 1488*-linux*) 1489 # Some recent versions of glibc support getifaddrs() which does not 1490 # provide AF_INET6 addresses while the function provided by the USAGI 1491 # project handles the AF_INET6 case correctly. We need to avoid 1492 # using the former but prefer the latter unless overridden by 1493 # --enable-getifaddrs=glibc. 1494 if test $want_getifaddrs = glibc 1495 then 1496 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 1497 else 1498 save_LIBS="$LIBS" 1499 LIBS="-L/usr/local/v6/lib $LIBS" 1500 AC_CHECK_LIB(inet6, getifaddrs, 1501 LIBS="$LIBS -linet6" 1502 AC_DEFINE(HAVE_GETIFADDRS), 1503 LIBS=${save_LIBS}) 1504 fi 1505 ;; 1506*) 1507 AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS)) 1508 ;; 1509esac 1510;; 1511no) 1512;; 1513esac 1514 1515# 1516# Look for a sysctl call to get the list of network interfaces. 1517# 1518case $ac_cv_header_sys_sysctl_h in 1519yes) 1520AC_MSG_CHECKING(for interface list sysctl) 1521AC_EGREP_CPP(found_rt_iflist, [ 1522#include <sys/param.h> 1523#include <sys/sysctl.h> 1524#include <sys/socket.h> 1525#ifdef NET_RT_IFLIST 1526found_rt_iflist 1527#endif 1528], 1529 [AC_MSG_RESULT(yes) 1530 AC_DEFINE(HAVE_IFLIST_SYSCTL)], 1531 [AC_MSG_RESULT(no)]) 1532;; 1533esac 1534 1535# 1536# Check for some other useful functions that are not ever-present. 1537# 1538 1539# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC 1540# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77 1541# reportedly defines strsep() without declaring it in <string.h> when 1542# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and 1543# AC_CHECK_FUNC() incorrectly succeeds because it declares 1544# the function itself. 1545AC_MSG_CHECKING(for correctly declared strsep()) 1546AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");], 1547 [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"], 1548 [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"]) 1549AC_SUBST(ISC_PLATFORM_NEEDSTRSEP) 1550 1551AC_CHECK_FUNC(memmove, 1552 [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"], 1553 [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"]) 1554AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE) 1555 1556AC_CHECK_FUNC(strtoul, 1557 [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL" 1558 LWRES_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL" 1559 GENRANDOMLIB=""], 1560 [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1" 1561 LWRES_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1" 1562 "GENRANDOMLIB=${ISCLIBS}"]) 1563AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL) 1564AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL) 1565AC_SUBST(GENRANDOMLIB) 1566 1567AC_CHECK_FUNC(strlcpy, 1568 [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"], 1569 [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"]) 1570AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY) 1571 1572AC_CHECK_FUNC(strlcat, 1573 [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"], 1574 [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"]) 1575AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT) 1576 1577ISC_PRINT_OBJS= 1578ISC_PRINT_SRCS= 1579AC_MSG_CHECKING(sprintf) 1580AC_TRY_COMPILE([ 1581#include <stdio.h> 1582], 1583[ char buf[2]; return(*sprintf(buf,"x"));], 1584[ 1585ISC_PRINT_OBJS="print.$O" 1586ISC_PRINT_SRCS="print.c" 1587ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF" 1588LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF" 1589], 1590[ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF" 1591 LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"] 1592) 1593AC_SUBST(ISC_PLATFORM_NEEDSPRINTF) 1594AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF) 1595 1596AC_CHECK_FUNC(vsnprintf, 1597 [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF" 1598 LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"], 1599 [ISC_PRINT_OBJS="print.$O" 1600 ISC_PRINT_SRCS="print.c" 1601 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1" 1602 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"]) 1603AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF) 1604AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF) 1605ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS" 1606ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS" 1607 1608AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR)) 1609 1610AC_SUBST(ISC_EXTRA_OBJS) 1611AC_SUBST(ISC_EXTRA_SRCS) 1612 1613# Determine the printf format characters to use when printing 1614# values of type isc_int64_t. This will normally be "ll", but where 1615# the compiler treats "long long" as a alias for "long" and printf 1616# doesn't know about "long long" use "l". Hopefully the sprintf 1617# will produce a inconsistant result in the later case. If the compiler 1618# fails due to seeing "%lld" we fall back to "l". 1619# 1620# Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses 1621# %ld even for (long long)/ 1622# 1623# Win32 uses "%I64d", but that's defined elsewhere since we don't use 1624# configure on Win32. 1625# 1626AC_MSG_CHECKING(printf format modifier for 64-bit integers) 1627AC_TRY_RUN([ 1628#include <stdio.h> 1629main() { 1630 long long int j = 0; 1631 char buf[100]; 1632 buf[0] = 0; 1633 sprintf(buf, "%lld", j); 1634 exit((sizeof(long long int) != sizeof(long int))? 0 : 1635 (strcmp(buf, "0") != 0)); 1636} 1637], 1638 [AC_MSG_RESULT(ll) 1639 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 1640 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'], 1641 [AC_MSG_RESULT(l) 1642 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"' 1643 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'], 1644 [AC_MSG_RESULT(assuming target platform uses ll) 1645 ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' 1646 LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"']) 1647AC_SUBST(ISC_PLATFORM_QUADFORMAT) 1648AC_SUBST(LWRES_PLATFORM_QUADFORMAT) 1649 1650# 1651# Security Stuff 1652# 1653AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT)) 1654AC_ARG_ENABLE(linux-caps, 1655 [ --disable-linux-caps disable linux capabilities]) 1656case "$enable_linux_caps" in 1657 yes|'') 1658 AC_CHECK_HEADERS(linux/capability.h) 1659 ;; 1660 no) 1661 ;; 1662esac 1663AC_CHECK_HEADERS(sys/prctl.h) 1664 1665# 1666# Time Zone Stuff 1667# 1668AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET)) 1669 1670AC_MSG_CHECKING(for optarg decarartion) 1671AC_TRY_COMPILE([ 1672#include <unistd.h> 1673], 1674[optarg = 0;], 1675[AC_MSG_RESULT(yes)], 1676[AC_MSG_RESULT(no) 1677AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])]) 1678 1679# 1680# BSD/OS, and perhaps some others, don't define rlim_t. 1681# 1682AC_MSG_CHECKING(for type rlim_t) 1683AC_TRY_COMPILE([ 1684#include <sys/types.h> 1685#include <sys/time.h> 1686#include <sys/resource.h>], 1687[rlim_t rl = 19671212; return (0);], 1688[AC_MSG_RESULT(yes) 1689 ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"], 1690[AC_MSG_RESULT(no) 1691 1692AC_MSG_CHECKING(type of rlim_cur) 1693AC_TRY_RUN([ 1694#include <sys/types.h> 1695#include <sys/time.h> 1696#include <sys/resource.h> 1697main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}], 1698[AC_MSG_RESULT(int) 1699ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"], 1700[ 1701AC_TRY_RUN([ 1702#include <sys/types.h> 1703#include <sys/time.h> 1704#include <sys/resource.h> 1705main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}], 1706[AC_MSG_RESULT(long int) 1707ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"], 1708[ 1709AC_TRY_RUN([ 1710#include <sys/types.h> 1711#include <sys/time.h> 1712#include <sys/resource.h> 1713main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}], 1714[AC_MSG_RESULT(long long int) 1715ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"], 1716[AC_MSG_ERROR([unable to determine sizeof rlim_cur]) 1717],[AC_MSG_ERROR(this cannot happen)]) 1718],[AC_MSG_ERROR(this cannot happen)]) 1719],[ 1720ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" 1721AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming long long int)]) 1722]) 1723AC_SUBST(ISC_PLATFORM_RLIMITTYPE) 1724 1725# 1726# Compaq TruCluster requires more code for handling cluster IP aliases 1727# 1728case "$host" in 1729 *-dec-osf*) 1730 AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS") 1731 AC_CHECK_FUNC(clua_getaliasaddress, 1732 AC_DEFINE(HAVE_TRUCLUSTER, 1, 1733 [Define if running under Compaq TruCluster])) 1734 ;; 1735 *) 1736 ;; 1737esac 1738 1739# 1740# Microsoft has their own way of handling shared libraries that requires 1741# additional qualifiers on extern variables. Unix systems don't need it. 1742# 1743AC_SUBST(ISC_PLATFORM_USEDECLSPEC) 1744ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC" 1745AC_SUBST(LWRES_PLATFORM_USEDECLSPEC) 1746LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC" 1747 1748# 1749# Random remaining OS-specific issues involving compiler warnings. 1750# XXXDCL print messages to indicate some compensation is being done? 1751# 1752AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT) 1753ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT" 1754 1755case "$host" in 1756 *-aix5.1.*) 1757 hack_shutup_pthreadonceinit=yes 1758 ;; 1759 *-bsdi3.1*) 1760 hack_shutup_sputaux=yes 1761 ;; 1762 *-bsdi4.0*) 1763 hack_shutup_sigwait=yes 1764 hack_shutup_sputaux=yes 1765 ;; 1766 [*-bsdi4.[12]*]) 1767 hack_shutup_stdargcast=yes 1768 ;; 1769 [*-solaris2.[89]]) 1770 hack_shutup_pthreadonceinit=yes 1771 ;; 1772esac 1773 1774case "$hack_shutup_pthreadonceinit" in 1775 yes) 1776 # 1777 # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings. 1778 # 1779 ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1" 1780 ;; 1781esac 1782 1783case "$hack_shutup_sigwait" in 1784 yes) 1785 # 1786 # Shut up a -Wmissing-prototypes warning for sigwait(). 1787 # 1788 AC_DEFINE(SHUTUP_SIGWAIT) 1789 ;; 1790esac 1791 1792case "$hack_shutup_sputaux" in 1793 yes) 1794 # 1795 # Shut up a -Wmissing-prototypes warning from <stdio.h>. 1796 # 1797 AC_DEFINE(SHUTUP_SPUTAUX) 1798 ;; 1799esac 1800 1801case "$hack_shutup_stdargcast" in 1802 yes) 1803 # 1804 # Shut up a -Wcast-qual warning from va_start(). 1805 # 1806 AC_DEFINE(SHUTUP_STDARG_CAST) 1807 ;; 1808esac 1809 1810# 1811# Check for if_nametoindex() for IPv6 scoped addresses support 1812# 1813AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes, 1814 ac_cv_have_if_nametoindex=no) 1815case $ac_cv_have_if_nametoindex in 1816no) 1817 case "$host" in 1818 *-hp-hpux*) 1819 AC_CHECK_LIB(ipv6, if_nametoindex, 1820 ac_cv_have_if_nametoindex=yes 1821 LIBS="-lipv6 $LIBS",) 1822 ;; 1823 esac 1824esac 1825case $ac_cv_have_if_nametoindex in 1826yes) 1827 ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1" 1828 ;; 1829*) 1830 ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX" 1831 ;; 1832esac 1833AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX) 1834 1835# 1836# The following sets up how non-blocking i/o is established. 1837# Sunos, cygwin and solaris 2.x (x<5) require special handling. 1838# 1839case "$host" in 1840*-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 1841*-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);; 1842*-solaris2.[[01234]]) 1843 AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK) 1844 AC_DEFINE(USE_FIONBIO_IOCTL, 1, 1845 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.]) 1846 ;; 1847*) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK, 1848 [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).]) 1849 ;; 1850esac 1851# 1852# The following sections deal with tools used for formatting 1853# the documentation. They are all optional, unless you are 1854# a developer editing the documentation source. 1855# 1856 1857# 1858# Look for TeX. 1859# 1860 1861AC_PATH_PROGS(LATEX, latex, latex) 1862AC_SUBST(LATEX) 1863 1864AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex) 1865AC_SUBST(PDFLATEX) 1866 1867# 1868# Look for xsltproc (libxslt) 1869# 1870 1871AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc) 1872AC_SUBST(XSLTPROC) 1873 1874# 1875# Look for xmllint (libxml2) 1876# 1877 1878AC_PATH_PROG(XMLLINT, xmllint, xmllint) 1879AC_SUBST(XMLLINT) 1880 1881# 1882# Subroutine for searching for an ordinary file (e.g., a stylesheet) 1883# in a number of directories: 1884# 1885# NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES) 1886# 1887# If the file FILENAME is found in one of the DIRECTORIES, the shell 1888# variable VARIABLE is defined to its absolute pathname. Otherwise, 1889# it is set to FILENAME, with no directory prefix (that's not terribly 1890# useful, but looks less confusing in substitutions than leaving it 1891# empty). The variable VARIABLE will be substituted into output files. 1892# 1893 1894AC_DEFUN(NOM_PATH_FILE, [ 1895$1="" 1896AC_MSG_CHECKING(for $2) 1897for d in $3 1898do 1899 f=$d/$2 1900 if test -f $f 1901 then 1902 $1=$f 1903 AC_MSG_RESULT($f) 1904 break 1905 fi 1906done 1907if test "X[$]$1" = "X" 1908then 1909 AC_MSG_RESULT("not found"); 1910 $1=$2 1911fi 1912AC_SUBST($1) 1913]) 1914 1915# 1916# Look for Docbook-XSL stylesheets. Location probably varies by 1917# system. Guessing where it might be found, based on where SGML stuff 1918# lives on some systems. FreeBSD is the only one I'm sure of at the 1919# moment. 1920# 1921 1922docbook_xsl_trees="/usr/pkg/share/xsl /usr/local/share/xsl /usr/share/xsl" 1923 1924# 1925# Look for stylesheets we need. 1926# 1927 1928NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, docbook/html/docbook.xsl, $docbook_xsl_trees) 1929NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, docbook/xhtml/docbook.xsl, $docbook_xsl_trees) 1930NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, docbook/manpages/docbook.xsl, $docbook_xsl_trees) 1931NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, docbook/html/chunk.xsl, $docbook_xsl_trees) 1932NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, docbook/xhtml/chunk.xsl, $docbook_xsl_trees) 1933 1934# 1935# Same dance for db2latex 1936# 1937# No idea where this lives except on FreeBSD. 1938# 1939 1940db2latex_xsl_trees="/usr/local/share" 1941 1942# 1943# Look for stylesheets we need. 1944# 1945 1946NOM_PATH_FILE(XSLT_DB2LATEX_STYLE, db2latex/xsl/docbook.xsl, $db2latex_xsl_trees) 1947 1948# 1949# Look for "admonition" image directory. Can't use NOM_PATH_FILE() 1950# because it's a directory, so just do the same things, inline. 1951# 1952 1953AC_MSG_CHECKING(for db2latex/xsl/figures) 1954for d in $db2latex_xsl_trees 1955do 1956 dd=$d/db2latex/xsl/figures 1957 if test -d $dd 1958 then 1959 XSLT_DB2LATEX_ADMONITIONS=$dd 1960 AC_MSG_RESULT($dd) 1961 break 1962 fi 1963done 1964if test "X$XSLT_DB2LATEX_ADMONITIONS" = "X" 1965then 1966 AC_MSG_RESULT(not found) 1967 XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures 1968fi 1969AC_SUBST(XSLT_DB2LATEX_ADMONITIONS) 1970 1971# 1972# Substitutions 1973# 1974AC_SUBST(BIND9_TOP_BUILDDIR) 1975BIND9_TOP_BUILDDIR=`pwd` 1976 1977AC_SUBST(BIND9_ISC_BUILDINCLUDE) 1978AC_SUBST(BIND9_ISCCC_BUILDINCLUDE) 1979AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE) 1980AC_SUBST(BIND9_DNS_BUILDINCLUDE) 1981AC_SUBST(BIND9_LWRES_BUILDINCLUDE) 1982AC_SUBST(BIND9_BIND9_BUILDINCLUDE) 1983if test "X$srcdir" != "X"; then 1984 BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include" 1985 BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include" 1986 BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include" 1987 BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include" 1988 BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include" 1989 BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include" 1990else 1991 BIND9_ISC_BUILDINCLUDE="" 1992 BIND9_ISCCC_BUILDINCLUDE="" 1993 BIND9_ISCCFG_BUILDINCLUDE="" 1994 BIND9_DNS_BUILDINCLUDE="" 1995 BIND9_LWRES_BUILDINCLUDE="" 1996 BIND9_BIND9_BUILDINCLUDE="" 1997fi 1998 1999AC_SUBST_FILE(BIND9_MAKE_INCLUDES) 2000BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes 2001 2002AC_SUBST_FILE(BIND9_MAKE_RULES) 2003BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules 2004 2005. $srcdir/version 2006BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}" 2007AC_SUBST(BIND9_VERSION) 2008 2009AC_SUBST_FILE(LIBISC_API) 2010LIBISC_API=$srcdir/lib/isc/api 2011 2012AC_SUBST_FILE(LIBISCCC_API) 2013LIBISCCC_API=$srcdir/lib/isccc/api 2014 2015AC_SUBST_FILE(LIBISCCFG_API) 2016LIBISCCFG_API=$srcdir/lib/isccfg/api 2017 2018AC_SUBST_FILE(LIBDNS_API) 2019LIBDNS_API=$srcdir/lib/dns/api 2020 2021AC_SUBST_FILE(LIBBIND9_API) 2022LIBBIND9_API=$srcdir/lib/bind9/api 2023 2024AC_SUBST_FILE(LIBLWRES_API) 2025LIBLWRES_API=$srcdir/lib/lwres/api 2026 2027AC_OUTPUT( 2028 make/rules 2029 make/includes 2030 Makefile 2031 make/Makefile 2032 make/mkdep 2033 lib/Makefile 2034 lib/isc/Makefile 2035 lib/isc/include/Makefile 2036 lib/isc/include/isc/Makefile 2037 lib/isc/include/isc/platform.h 2038 lib/isc/unix/Makefile 2039 lib/isc/unix/include/Makefile 2040 lib/isc/unix/include/isc/Makefile 2041 lib/isc/nls/Makefile 2042 lib/isc/$thread_dir/Makefile 2043 lib/isc/$thread_dir/include/Makefile 2044 lib/isc/$thread_dir/include/isc/Makefile 2045 lib/isccc/Makefile 2046 lib/isccc/include/Makefile 2047 lib/isccc/include/isccc/Makefile 2048 lib/isccfg/Makefile 2049 lib/isccfg/include/Makefile 2050 lib/isccfg/include/isccfg/Makefile 2051 lib/dns/Makefile 2052 lib/dns/include/Makefile 2053 lib/dns/include/dns/Makefile 2054 lib/dns/include/dst/Makefile 2055 lib/bind9/Makefile 2056 lib/bind9/include/Makefile 2057 lib/bind9/include/bind9/Makefile 2058 lib/lwres/Makefile 2059 lib/lwres/include/Makefile 2060 lib/lwres/include/lwres/Makefile 2061 lib/lwres/include/lwres/netdb.h 2062 lib/lwres/include/lwres/platform.h 2063 lib/lwres/man/Makefile 2064 lib/lwres/unix/Makefile 2065 lib/lwres/unix/include/Makefile 2066 lib/lwres/unix/include/lwres/Makefile 2067 lib/tests/Makefile 2068 lib/tests/include/Makefile 2069 lib/tests/include/tests/Makefile 2070 bin/Makefile 2071 bin/check/Makefile 2072 bin/named/Makefile 2073 bin/named/unix/Makefile 2074 bin/rndc/Makefile 2075 bin/rndc/unix/Makefile 2076 bin/dig/Makefile 2077 bin/nsupdate/Makefile 2078 bin/tests/Makefile 2079 bin/tests/names/Makefile 2080 bin/tests/master/Makefile 2081 bin/tests/rbt/Makefile 2082 bin/tests/db/Makefile 2083 bin/tests/tasks/Makefile 2084 bin/tests/timers/Makefile 2085 bin/tests/dst/Makefile 2086 bin/tests/mem/Makefile 2087 bin/tests/net/Makefile 2088 bin/tests/sockaddr/Makefile 2089 bin/tests/system/Makefile 2090 bin/tests/system/conf.sh 2091 bin/tests/system/lwresd/Makefile 2092 bin/tests/system/tkey/Makefile 2093 bin/tests/headerdep_test.sh 2094 bin/dnssec/Makefile 2095 doc/Makefile 2096 doc/arm/Makefile 2097 doc/misc/Makefile 2098 doc/xsl/Makefile 2099 isc-config.sh 2100 doc/xsl/isc-docbook-chunk.xsl 2101 doc/xsl/isc-docbook-html.xsl 2102 doc/xsl/isc-docbook-latex.xsl 2103 doc/xsl/isc-manpage.xsl 2104) 2105chmod a+x isc-config.sh 2106 2107if test "X$OPENSSL_WARNING" != "X"; then 2108cat << \EOF 2109WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 2110WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 2111WARNING WARNING 2112WARNING Your OpenSSL crypto library may be vulnerable to WARNING 2113WARNING one or more of the the following known security WARNING 2114WARNING flaws: WARNING 2115WARNING WARNING 2116WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING 2117WARNING CVE-2006-2940. WARNING 2118WARNING WARNING 2119WARNING It is recommended that you upgrade to OpenSSL WARNING 2120WARNING version 0.9.8d/0.9.7l (or greater). WARNING 2121WARNING WARNING 2122WARNING You can disable this warning by specifying: WARNING 2123WARNING WARNING 2124WARNING --disable-openssl-version-check WARNING 2125WARNING WARNING 2126WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 2127WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 2128EOF 2129fi 2130 2131# Tell Emacs to edit this file in shell mode. 2132# Local Variables: 2133# mode: sh 2134# End: 2135