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