/contrib/bind9/configure.in
Autoconf | 3615 lines | 2647 code | 287 blank | 681 comment | 155 complexity | 556ae3bcc788f39e8f3ac74535031dae MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause, LGPL-2.0, LGPL-2.1, BSD-2-Clause, 0BSD, JSON, AGPL-1.0, GPL-2.0
- # Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC")
- # Copyright (C) 1998-2003 Internet Software Consortium.
- #
- # Permission to use, copy, modify, and/or distribute this software for any
- # purpose with or without fee is hereby granted, provided that the above
- # copyright notice and this permission notice appear in all copies.
- #
- # THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
- # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- # AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
- # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- # PERFORMANCE OF THIS SOFTWARE.
- dnl
- AC_DIVERT_PUSH(1)dnl
- esyscmd([sed "s/^/# /" COPYRIGHT])dnl
- AC_DIVERT_POP()dnl
- AC_REVISION($Revision: 1.512.8.15 $)
- AC_INIT(lib/dns/name.c)
- AC_PREREQ(2.59)
- AC_CONFIG_HEADER(config.h)
- AC_CANONICAL_HOST
- AC_PROG_MAKE_SET
- #
- # GNU libtool support
- #
- case $build_os in
- sunos*)
- # Just set the maximum command line length for sunos as it otherwise
- # takes a exceptionally long time to work it out. Required for libtool.
-
- lt_cv_sys_max_cmd_len=4096;
- ;;
- esac
- AC_PROG_LIBTOOL
- AC_PROG_INSTALL
- AC_PROG_LN_S
- AC_SUBST(STD_CINCLUDES)
- AC_SUBST(STD_CDEFINES)
- AC_SUBST(STD_CWARNINGS)
- AC_SUBST(CCOPT)
- # Warn if the user specified libbind, which is now deprecated
- AC_ARG_ENABLE(libbind, [ --enable-libbind deprecated])
- case "$enable_libbind" in
- yes)
- AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution.
- It is available from http://www.isc.org as a separate download.])
- ;;
- no|'')
- ;;
- esac
- AC_ARG_ENABLE(developer, [ --enable-developer enable developer build settings])
- case "$enable_developer" in
- yes)
- test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
- test "${with_atf+set}" = set || with_atf=yes
- test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes
- test "${enable_rpz_nsip+set}" = set || enable_rpz_nsip=yes
- test "${enable_rpz_nsdname+set}" = set || enable_rpz_nsdname=yes
- test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
- case "$host" in
- *-darwin*)
- test "${enable_exportlib+set}" = set || enable_exportlib=yes
- ;;
- *-linux*)
- test "${enable_exportlib+set}" = set || enable_exportlib=yes
- ;;
- esac
- ;;
- esac
- #
- # Make very sure that these are the first files processed by
- # config.status, since we use the processed output as the input for
- # AC_SUBST_FILE() substitutions in other files.
- #
- AC_CONFIG_FILES([make/rules make/includes])
- AC_PATH_PROG(AR, ar)
- ARFLAGS="cruv"
- AC_SUBST(AR)
- AC_SUBST(ARFLAGS)
- # The POSIX ln(1) program. Non-POSIX systems may substitute
- # "copy" or something.
- LN=ln
- AC_SUBST(LN)
- case "$AR" in
- "")
- AC_MSG_ERROR([
- ar program not found. Please fix your PATH to include the directory in
- which ar resides, or set AR in the environment with the full path to ar.
- ])
- ;;
- esac
- #
- # Etags.
- #
- AC_PATH_PROGS(ETAGS, etags emacs-etags)
- #
- # Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
- # GNU emacs etags, and it requires the -L flag.
- #
- if test "X$ETAGS" != "X"; then
- AC_MSG_CHECKING(for Exuberant Ctags etags)
- if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
- AC_MSG_RESULT(yes)
- ETAGS="$ETAGS -L"
- else
- AC_MSG_RESULT(no)
- fi
- fi
- AC_SUBST(ETAGS)
- #
- # Perl is optional; it is used only by some of the system test scripts.
- # Note: the backtrace feature (see below) uses perl to build the symbol table,
- # but it still compiles without perl, in which case an empty table will be used.
- #
- AC_PATH_PROGS(PERL, perl5 perl)
- AC_SUBST(PERL)
- #
- # Special processing of paths depending on whether --prefix,
- # --sysconfdir or --localstatedir arguments were given. What's
- # desired is some compatibility with the way previous versions
- # of BIND built; they defaulted to /usr/local for most parts of
- # the installation, but named.boot/named.conf was in /etc
- # and named.pid was in /var/run.
- #
- # So ... if none of --prefix, --sysconfdir or --localstatedir are
- # specified, set things up that way. If --prefix is given, use
- # it for sysconfdir and localstatedir the way configure normally
- # would. To change the prefix for everything but leave named.conf
- # in /etc or named.pid in /var/run, then do this the usual configure way:
- # ./configure --prefix=/somewhere --sysconfdir=/etc
- # ./configure --prefix=/somewhere --localstatedir=/var
- #
- # To put named.conf and named.pid in /usr/local with everything else,
- # set the prefix explicitly to /usr/local even though that's the default:
- # ./configure --prefix=/usr/local
- #
- case "$prefix" in
- NONE)
- case "$sysconfdir" in
- '${prefix}/etc')
- sysconfdir=/etc
- ;;
- esac
- case "$localstatedir" in
- '${prefix}/var')
- localstatedir=/var
- ;;
- esac
- ;;
- esac
- #
- # Make sure INSTALL uses an absolute path, else it will be wrong in all
- # Makefiles, since they use make/rules.in and INSTALL will be adjusted by
- # configure based on the location of the file where it is substituted.
- # Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
- # subdirectory of install-sh, This relative path will be wrong for all
- # directories more than one level down from install-sh.
- #
- case "$INSTALL" in
- /*)
- ;;
- *)
- #
- # Not all systems have dirname.
- #
- changequote({, })
- ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
- changequote([, ])
- ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
- test "$ac_dir" = "$ac_prog" && ac_dir=.
- test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
- INSTALL="$ac_dir/$ac_prog"
- ;;
- esac
- #
- # On these hosts, we really want to use cc, not gcc, even if it is
- # found. The gcc that these systems have will not correctly handle
- # pthreads.
- #
- # However, if the user sets $CC to be something, let that override
- # our change.
- #
- if test "X$CC" = "X" ; then
- case "$host" in
- *-dec-osf*)
- CC="cc"
- ;;
- *-solaris*)
- # Use Sun's cc if it is available, but watch
- # out for /usr/ucb/cc; it will never be the right
- # compiler to use.
- #
- # If setting CC here fails, the AC_PROG_CC done
- # below might still find gcc.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- case "$ac_dir" in
- /usr/ucb)
- # exclude
- ;;
- *)
- if test -f "$ac_dir/cc"; then
- CC="$ac_dir/cc"
- break
- fi
- ;;
- esac
- done
- IFS="$ac_save_ifs"
- ;;
- *-hp-hpux*)
- CC="cc"
- ;;
- mips-sgi-irix*)
- CC="cc"
- ;;
- esac
- fi
- AC_PROG_CC
- #
- # gcc's optimiser is broken at -02 for ultrasparc
- #
- if test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then
- case "$host" in
- sparc-*)
- CCFLAGS="-g -O1"
- ;;
- esac
- fi
- #
- # OS dependent CC flags
- #
- case "$host" in
- # OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or
- # -D_XOPEN_SOURCE_EXTENDED.
- *-dec-osf*)
- STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET"
- CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET"
- ;;
- #HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros
- *-hp-hpux*)
- STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
- LIBS="-lxnet $LIBS"
- ;;
- # Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros
- *-solaris*)
- STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__"
- CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
- ;;
- # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides
- # parts of the IPv6 Advanced Socket API as a result. This is stupid
- # as it breaks how the two halves (Basic and Advanced) of the IPv6
- # Socket API were designed to be used but we have to live with it.
- # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
- *-linux* | *-kfreebsd*-gnu)
- STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- ;;
- #
- # Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use.
- # Setting this is sufficient to select the correct behavior for BIND 9.
- #
- *-darwin*)
- STD_CDEFINES="$STD_CDEFINES -D__APPLE_USE_RFC_3542"
- CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542"
- ;;
- esac
- AC_HEADER_STDC
- AC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h,,,
- [$ac_includes_default
- #ifdef HAVE_SYS_PARAM_H
- # include <sys/param.h>
- #endif
- ])
- AC_C_CONST
- AC_C_INLINE
- AC_C_VOLATILE
- AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
- AC_C_FLEXIBLE_ARRAY_MEMBER
- #
- # Older versions of HP/UX don't define seteuid() and setegid()
- #
- AC_CHECK_FUNCS(seteuid setresuid)
- AC_CHECK_FUNCS(setegid setresgid)
- #
- # UnixWare 7.1.1 with the feature supplement to the UDK compiler
- # is reported to not support "static inline" (RT #1212).
- #
- AC_MSG_CHECKING(for static inline breakage)
- AC_TRY_COMPILE(, [
- foo1();
- }
- static inline int foo1() {
- return 0;
- }
- static inline int foo2() {
- return foo1();
- ],
- [AC_MSG_RESULT(no)],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])])
- AC_TYPE_SIZE_T
- AC_CHECK_TYPE(ssize_t, int)
- AC_CHECK_TYPE(uintptr_t,unsigned long)
- AC_CHECK_TYPE(socklen_t,
- [AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)],
- [
- AC_TRY_COMPILE(
- [
- #include <sys/types.h>
- #include <sys/socket.h>
- int getsockname(int, struct sockaddr *, size_t *);
- ],[],
- [AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)],
- [AC_DEFINE(ISC_SOCKADDR_LEN_T, int)])
- ],
- [
- #include <sys/types.h>
- #include <sys/socket.h>
- ])
- AC_SUBST(ISC_SOCKADDR_LEN_T)
- AC_HEADER_TIME
- AC_MSG_CHECKING(for long long)
- AC_TRY_COMPILE([],[long long i = 0; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
- AC_SUBST(ISC_PLATFORM_HAVELONGLONG)
- #
- # check for GCC noreturn attribute
- #
- AC_MSG_CHECKING(for GCC noreturn attribute)
- AC_TRY_COMPILE([],[void foo() __attribute__((noreturn));],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
- ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
- ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"])
- AC_SUBST(ISC_PLATFORM_NORETURN_PRE)
- AC_SUBST(ISC_PLATFORM_NORETURN_POST)
- #
- # check if we have lifconf
- #
- AC_MSG_CHECKING(for struct lifconf)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <net/if.h>
- ],
- [
- struct lifconf lifconf;
- lifconf.lifc_len = 0;
- ]
- ,
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"])
- AC_SUBST(ISC_PLATFORM_HAVELIFCONF)
- #
- # check if we have kqueue
- #
- AC_ARG_ENABLE(kqueue,
- [ --enable-kqueue use BSD kqueue when available [[default=yes]]],
- want_kqueue="$enableval", want_kqueue="yes")
- case $want_kqueue in
- yes)
- AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
- case $ac_cv_have_kqueue in
- yes)
- ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
- ;;
- *)
- ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
- ;;
- esac
- ;;
- *)
- ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_HAVEKQUEUE)
- #
- # check if we have epoll. Linux kernel 2.4 has epoll_create() which fails,
- # so we need to try running the code, not just test its existence.
- #
- AC_ARG_ENABLE(epoll,
- [ --enable-epoll use Linux epoll when available [[default=auto]]],
- want_epoll="$enableval", want_epoll="auto")
- case $want_epoll in
- auto)
- AC_MSG_CHECKING(epoll support)
- AC_TRY_RUN([
- #include <sys/epoll.h>
- int main() {
- if (epoll_create(1) < 0)
- return (1);
- return (0);
- }
- ],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"])
- ;;
- yes)
- ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
- ;;
- *)
- ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_HAVEEPOLL)
- #
- # check if we support /dev/poll
- #
- AC_ARG_ENABLE(devpoll,
- [ --enable-devpoll use /dev/poll when available [[default=yes]]],
- want_devpoll="$enableval", want_devpoll="yes")
- case $want_devpoll in
- yes)
- AC_CHECK_HEADERS(sys/devpoll.h devpoll.h,
- ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
- ,
- ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
- )
- ;;
- *)
- ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL)
- #
- # check if we need to #include sys/select.h explicitly
- #
- case $ac_cv_header_unistd_h in
- yes)
- AC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set)
- AC_TRY_COMPILE([
- #include <sys/types.h> /* Ultrix */
- #include <unistd.h>],
- [fd_set read_set; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
- LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
- [AC_MSG_RESULT(no)
- case $ac_cv_header_sys_select_h in
- yes)
- ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
- LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
- ;;
- no)
- AC_MSG_ERROR([need either working unistd.h or sys/select.h])
- ;;
- esac
- ])
- ;;
- no)
- case $ac_cv_header_sys_select_h in
- yes)
- ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
- LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
- ;;
- no)
- AC_MSG_ERROR([need either unistd.h or sys/select.h])
- ;;
- esac
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
- AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)
- #
- # Find the machine's endian flavor.
- #
- AC_C_BIGENDIAN
- #
- # was --with-openssl specified?
- #
- OPENSSL_WARNING=
- AC_MSG_CHECKING(for OpenSSL library)
- AC_ARG_WITH(openssl,
- [ --with-openssl[=PATH] Build with OpenSSL [yes|no|path].
- (Required for DNSSEC)],
- use_openssl="$withval", use_openssl="auto")
- openssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw"
- if test "$use_openssl" = "auto"
- then
- for d in $openssldirs
- do
- if test -f $d/include/openssl/opensslv.h
- then
- use_openssl=$d
- break
- fi
- done
- fi
- OPENSSL_GOST=""
- case "$use_openssl" in
- no)
- AC_MSG_RESULT(no)
- DST_OPENSSL_INC=""
- USE_OPENSSL=""
- OPENSSLLINKOBJS=""
- OPENSSLLINKSRCS=""
- ;;
- auto)
- DST_OPENSSL_INC=""
- USE_OPENSSL=""
- OPENSSLLINKOBJS=""
- OPENSSLLINKSRCS=""
- AC_MSG_ERROR(
- [OpenSSL was not found in any of $openssldirs; use --with-openssl=/path
- If you don't want OpenSSL, use --without-openssl])
- ;;
- *)
- if test "$use_openssl" = "yes"
- then
- # User did not specify a path - guess it
- for d in $openssldirs
- do
- if test -f $d/include/openssl/opensslv.h
- then
- use_openssl=$d
- break
- fi
- done
- if test "$use_openssl" = "yes"
- then
- AC_MSG_RESULT(not found)
- AC_MSG_ERROR(
- [OpenSSL was not found in any of $openssldirs; use --with-openssl=/path])
- fi
- elif ! test -f "$use_openssl"/include/openssl/opensslv.h
- then
- AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found])
- fi
- USE_OPENSSL='-DOPENSSL'
- if test "$use_openssl" = "/usr"
- then
- DST_OPENSSL_INC=""
- DNS_OPENSSL_LIBS="-lcrypto"
- else
- DST_OPENSSL_INC="-I$use_openssl/include"
- case $host in
- *-solaris*)
- DNS_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto"
- ;;
- *-hp-hpux*)
- DNS_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto"
- ;;
- *-apple-darwin*)
- #
- # Apple's ld seaches for serially for dynamic
- # then static libraries. This means you can't
- # use -L to override dynamic system libraries
- # with static ones when linking. Instead
- # we specify a absolute path.
- #
- if test -f "$use_openssl/lib/libcrypto.dylib"
- then
- DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
- else
- DNS_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a"
- fi
- ;;
- *)
- DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
- ;;
- esac
- fi
- AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include)
- saved_cflags="$CFLAGS"
- saved_libs="$LIBS"
- CFLAGS="$CFLAGS $DST_OPENSSL_INC"
- LIBS="$LIBS $DNS_OPENSSL_LIBS"
- AC_MSG_CHECKING(whether linking with OpenSSL works)
- AC_TRY_RUN([
- #include <openssl/err.h>
- int main() {
- ERR_clear_error();
- return (0);
- }
- ],
- [AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)
- AC_MSG_ERROR(Could not run test program using OpenSSL from
- $use_openssl/lib and $use_openssl/include.
- Please check the argument to --with-openssl and your
- shared library configuration (e.g., LD_LIBRARY_PATH).)],
- [AC_MSG_RESULT(assuming it does work on target platform)])
- AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
- AC_TRY_LINK([
- #include <openssl/err.h>],
- [ DSO_METHOD_dlfcn(); ],
- [AC_MSG_RESULT(no)],
- [LIBS="$LIBS -ldl"
- AC_TRY_LINK([
- #include <openssl/err.h>
- ],[ DSO_METHOD_dlfcn(); ],
- [AC_MSG_RESULT(yes)
- DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl"
- ],
- [AC_MSG_RESULT(unknown)
- AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)],
- [AC_MSG_RESULT(assuming it does work on target platform)])
- ],
- [AC_MSG_RESULT(assuming it does work on target platform)]
- )
-
- AC_ARG_ENABLE(openssl-version-check,
- [AC_HELP_STRING([--enable-openssl-version-check],
- [Check OpenSSL Version @<:@default=yes@:>@])])
- case "$enable_openssl_version_check" in
- yes|'')
- AC_MSG_CHECKING(OpenSSL library version)
- AC_TRY_RUN([
- #include <stdio.h>
- #include <openssl/opensslv.h>
- int main() {
- if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
- OPENSSL_VERSION_NUMBER < 0x00908000L) ||
- OPENSSL_VERSION_NUMBER >= 0x0090804fL)
- return (0);
- printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
- OPENSSL_VERSION_NUMBER);
- printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
- "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n");
- return (1);
- }
- ],
- [AC_MSG_RESULT(ok)],
- [AC_MSG_RESULT(not compatible)
- OPENSSL_WARNING=yes
- ],
- [AC_MSG_RESULT(assuming target platform has compatible version)])
- ;;
- no)
- AC_MSG_RESULT(Skipped OpenSSL version check)
- ;;
- esac
- AC_MSG_CHECKING(for OpenSSL DSA support)
- if test -f $use_openssl/include/openssl/dsa.h
- then
- AC_DEFINE(HAVE_OPENSSL_DSA)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_CHECK_FUNCS(EVP_sha256 EVP_sha512)
- AC_MSG_CHECKING(for OpenSSL GOST support)
- have_gost=""
- AC_TRY_RUN([
- #include <openssl/conf.h>
- #include <openssl/engine.h>
- int main() {
- #if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
- ENGINE *e;
- EC_KEY *ek;
- ek = NULL;
- OPENSSL_config(NULL);
- e = ENGINE_by_id("gost");
- if (e == NULL)
- return (1);
- if (ENGINE_init(e) <= 0)
- return (1);
- return (0);
- #else
- return (1);
- #endif
- }
- ],
- [AC_MSG_RESULT(yes)
- have_gost="yes"],
- [AC_MSG_RESULT(no)
- have_gost="no"],
- [AC_MSG_RESULT(using --with-gost)])
- AC_ARG_WITH(gost, , with_gost="$withval", with_gost="auto")
- case "$with_gost" in
- yes)
- case "$have_gost" in
- no) AC_MSG_ERROR([gost not supported]) ;;
- *) have_gost=yes ;;
- esac
- ;;
- no)
- have_gost=no ;;
- *)
- case "$have_gost" in
- yes|no) ;;
- *) AC_MSG_ERROR([need --with-gost=[[yes or no]]]) ;;
- esac
- ;;
- esac
- case $have_gost in
- yes)
- OPENSSL_GOST="yes"
- AC_DEFINE(HAVE_OPENSSL_GOST, 1,
- [Define if your OpenSSL version supports GOST.])
- ;;
- *)
- ;;
- esac
- CFLAGS="$saved_cflags"
- LIBS="$saved_libs"
- OPENSSLLINKOBJS='${OPENSSLLINKOBJS}'
- OPENSSLLINKSRCS='${OPENSSLLINKSRCS}'
- ;;
- esac
- #
- # This would include the system openssl path (and linker options to use
- # it as needed) if it is found.
- #
- AC_SUBST(USE_OPENSSL)
- AC_SUBST(DST_OPENSSL_INC)
- AC_SUBST(OPENSSLLINKOBJS)
- AC_SUBST(OPENSSLLINKSRCS)
- AC_SUBST(OPENSSL_GOST)
- DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS"
- #
- # Use OpenSSL for hash functions
- #
- AC_ARG_ENABLE(openssl-hash,
- [ --enable-openssl-hash use OpenSSL for hash functions [[default=no]]],
- want_openssl_hash="$enableval", want_openssl_hash="no")
- case $want_openssl_hash in
- yes)
- if test "$USE_OPENSSL" = ""
- then
- AC_MSG_ERROR([No OpenSSL for hash functions])
- fi
- ISC_PLATFORM_OPENSSLHASH="#define ISC_PLATFORM_OPENSSLHASH 1"
- ISC_OPENSSL_INC="$DST_OPENSSL_INC"
- ;;
- no)
- ISC_PLATFORM_OPENSSLHASH="#undef ISC_PLATFORM_OPENSSLHASH"
- ISC_OPENSSL_INC=""
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_OPENSSLHASH)
- AC_SUBST(ISC_OPENSSL_INC)
- #
- # PKCS11 (aka crypto hardware) support
- #
- # This works only with the right OpenSSL with PKCS11 engine!
- #
- AC_MSG_CHECKING(for PKCS11 support)
- AC_ARG_WITH(pkcs11,
- [ --with-pkcs11[=PATH] Build with PKCS11 support [yes|no|path]
- (PATH is for the PKCS11 provider)],
- use_pkcs11="$withval", use_pkcs11="no")
- case "$use_pkcs11" in
- no|'')
- AC_MSG_RESULT(disabled)
- USE_PKCS11=''
- PKCS11_TOOLS=''
- ;;
- yes|*)
- AC_MSG_RESULT(using OpenSSL with PKCS11 support)
- USE_PKCS11='-DUSE_PKCS11'
- PKCS11_TOOLS=pkcs11
- ;;
- esac
- AC_SUBST(USE_PKCS11)
- AC_SUBST(PKCS11_TOOLS)
- AC_MSG_CHECKING(for PKCS11 tools)
- case "$use_pkcs11" in
- no|yes|'')
- AC_MSG_RESULT(disabled)
- PKCS11_PROVIDER="undefined"
- ;;
- *)
- AC_MSG_RESULT(PKCS11 provider is "$use_pkcs11")
- PKCS11_PROVIDER="$use_pkcs11"
- ;;
- esac
- AC_SUBST(PKCS11_PROVIDER)
- AC_MSG_CHECKING(for GSSAPI library)
- AC_ARG_WITH(gssapi,
- [ --with-gssapi=PATH Specify path for system-supplied GSSAPI [[default=yes]]],
- use_gssapi="$withval", use_gssapi="yes")
- # gssapi is just the framework, we really require kerberos v5, so
- # look for those headers (the gssapi headers must be there, too)
- # The problem with this implementation is that it doesn't allow
- # for the specification of gssapi and krb5 headers in different locations,
- # which probably ought to be fixed although fixing might raise the issue of
- # trying to build with incompatible versions of gssapi and krb5.
- if test "$use_gssapi" = "yes"
- then
- # first, deal with the obvious
- if test \( -f /usr/include/kerberosv5/krb5.h -o \
- -f /usr/include/krb5/krb5.h -o \
- -f /usr/include/krb5.h \) -a \
- \( -f /usr/include/gssapi.h -o \
- -f /usr/include/gssapi/gssapi.h \)
- then
- use_gssapi=/usr
- else
- krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr"
- for d in $krb5dirs
- do
- if test -f $d/include/gssapi/gssapi_krb5.h -o \
- -f $d/include/krb5.h
- then
- if test -f $d/include/gssapi/gssapi.h -o \
- -f $d/include/gssapi.h
- then
- use_gssapi=$d
- break
- fi
- fi
- use_gssapi="no"
- done
- fi
- fi
- case "$use_gssapi" in
- no)
- AC_MSG_RESULT(disabled)
- USE_GSSAPI=''
- ;;
- yes)
- AC_MSG_ERROR([--with-gssapi must specify a path])
- ;;
- *)
- AC_MSG_RESULT(looking in $use_gssapi/lib)
- USE_GSSAPI='-DGSSAPI'
- saved_cppflags="$CPPFLAGS"
- CPPFLAGS="-I$use_gssapi/include $CPPFLAGS"
- AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
- [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"])
- if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then
- AC_MSG_ERROR([gssapi.h not found])
- fi
- AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h,
- [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"])
- AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h,
- [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"])
- if test "$ISC_PLATFORM_KRB5HEADER" = ""; then
- AC_MSG_ERROR([krb5.h not found])
- fi
- CPPFLAGS="$saved_cppflags"
- #
- # XXXDCL This probably doesn't work right on all systems.
- # It will need to be worked on as problems become evident.
- #
- # Essentially the problems here relate to two different
- # areas. The first area is building with either KTH
- # or MIT Kerberos, particularly when both are present on
- # the machine. The other is static versus dynamic linking.
- #
- # On the KTH vs MIT issue, Both have libkrb5 that can mess
- # up the works if one implementation ends up trying to
- # use the other's krb. This is unfortunately a situation
- # that very easily arises.
- #
- # Dynamic linking when the dependency information is built
- # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes
- # all such problems go away, but when that setup is not
- # present, because either the dynamic libraries lack
- # dependencies or static linking is being done, then the
- # problems start to show up.
- saved_libs="$LIBS"
- for TRY_LIBS in \
- "-lgssapi_krb5" \
- "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \
- "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \
- "-lgssapi" \
- "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \
- "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
- "-lgss -lkrb5"
- do
- # Note that this does not include $saved_libs, because
- # on FreeBSD machines this configure script has added
- # -L/usr/local/lib to LIBS, which can make the
- # -lgssapi_krb5 test succeed with shared libraries even
- # when you are trying to build with KTH in /usr/lib.
- if test "$use_gssapi" = "/usr"
- then
- LIBS="$TRY_LIBS"
- else
- LIBS="-L$use_gssapi/lib $TRY_LIBS"
- fi
- AC_MSG_CHECKING(linking as $TRY_LIBS)
- AC_TRY_LINK( , [gss_acquire_cred();krb5_init_context()],
- gssapi_linked=yes, gssapi_linked=no)
- case $gssapi_linked in
- yes) AC_MSG_RESULT(yes); break ;;
- no) AC_MSG_RESULT(no) ;;
- esac
- done
- case $gssapi_linked in
- no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;;
- esac
- #
- # XXXDCL Major kludge. Tries to cope with KTH in /usr/lib
- # but MIT in /usr/local/lib and trying to build with KTH.
- # /usr/local/lib can end up earlier on the link lines.
- # Like most kludges, this one is not only inelegant it
- # is also likely to be the wrong thing to do at least as
- # many times as it is the right thing. Something better
- # needs to be done.
- #
- if test "$use_gssapi" = "/usr" -a \
- -f /usr/local/lib/libkrb5.a; then
- FIX_KTH_VS_MIT=yes
- fi
- case "$FIX_KTH_VS_MIT" in
- yes)
- case "$enable_static_linking" in
- yes) gssapi_lib_suffix=".a" ;;
- *) gssapi_lib_suffix=".so" ;;
- esac
- for lib in $LIBS; do
- case $lib in
- -L*)
- ;;
- -l*)
- new_lib=`echo $lib |
- sed -e s%^-l%$use_gssapi/lib/lib% \
- -e s%$%$gssapi_lib_suffix%`
- NEW_LIBS="$NEW_LIBS $new_lib"
- ;;
- *)
- AC_MSG_ERROR([KTH vs MIT Kerberos confusion!])
- ;;
- esac
- done
- LIBS="$NEW_LIBS"
- ;;
- esac
- DST_GSSAPI_INC="-I$use_gssapi/include"
- DNS_GSSAPI_LIBS="$LIBS"
- AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include)
- LIBS="$saved_libs"
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_HAVEGSSAPI)
- AC_SUBST(ISC_PLATFORM_GSSAPIHEADER)
- AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER)
- AC_SUBST(ISC_PLATFORM_KRB5HEADER)
- AC_SUBST(USE_GSSAPI)
- AC_SUBST(DST_GSSAPI_INC)
- AC_SUBST(DNS_GSSAPI_LIBS)
- DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS"
- #
- # Applications linking with libdns also need to link with these libraries.
- #
- AC_SUBST(DNS_CRYPTO_LIBS)
- #
- # was --with-randomdev specified?
- #
- AC_MSG_CHECKING(for random device)
- AC_ARG_WITH(randomdev,
- [ --with-randomdev=PATH Specify path for random device],
- use_randomdev="$withval", use_randomdev="unspec")
- case "$use_randomdev" in
- unspec)
- case "$host" in
- *-openbsd*)
- devrandom=/dev/arandom
- ;;
- *)
- devrandom=/dev/random
- ;;
- esac
- AC_MSG_RESULT($devrandom)
- AC_CHECK_FILE($devrandom,
- AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
- "$devrandom"),)
- ;;
- yes)
- AC_MSG_ERROR([--with-randomdev must specify a path])
- ;;
- no)
- AC_MSG_RESULT(disabled)
- ;;
- *)
- AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
- AC_MSG_RESULT(using "$use_randomdev")
- ;;
- esac
- #
- # Do we have arc4random() ?
- #
- AC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM))
- sinclude(config.threads.in)dnl
- if $use_threads
- then
- if test "X$GCC" = "Xyes"; then
- case "$host" in
- *-freebsd*)
- CC="$CC -pthread"
- CCOPT="$CCOPT -pthread"
- STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
- ;;
- *-openbsd*)
- CC="$CC -pthread"
- CCOPT="$CCOPT -pthread"
- ;;
- *-solaris*)
- LIBS="$LIBS -lthread"
- ;;
- *-ibm-aix*)
- STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
- ;;
- esac
- else
- case $host in
- *-dec-osf*)
- CC="$CC -pthread"
- CCOPT="$CCOPT -pthread"
- ;;
- *-solaris*)
- CC="$CC -mt"
- CCOPT="$CCOPT -mt"
- ;;
- *-ibm-aix*)
- STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
- ;;
- *-sco-sysv*uw*|*-*-sysv*UnixWare*)
- CC="$CC -Kthread"
- CCOPT="$CCOPT -Kthread"
- ;;
- *-*-sysv*OpenUNIX*)
- CC="$CC -Kpthread"
- CCOPT="$CCOPT -Kpthread"
- ;;
- esac
- fi
- ALWAYS_DEFINES="-D_REENTRANT"
- ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
- THREADOPTOBJS='${THREADOPTOBJS}'
- THREADOPTSRCS='${THREADOPTSRCS}'
- thread_dir=pthreads
- #
- # We'd like to use sigwait() too
- #
- AC_CHECK_FUNC(sigwait,
- AC_DEFINE(HAVE_SIGWAIT),
- AC_CHECK_LIB(c, sigwait,
- AC_DEFINE(HAVE_SIGWAIT),
- AC_CHECK_LIB(pthread, sigwait,
- AC_DEFINE(HAVE_SIGWAIT),
- AC_CHECK_LIB(pthread, _Psigwait,
- AC_DEFINE(HAVE_SIGWAIT),))))
- AC_CHECK_FUNC(pthread_attr_getstacksize,
- AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
- AC_CHECK_FUNC(pthread_attr_setstacksize,
- AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
- #
- # Additional OS-specific issues related to pthreads and sigwait.
- #
- case "$host" in
- #
- # One more place to look for sigwait.
- #
- *-freebsd*)
- AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
- case $host in
- *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
- *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
- AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
- ;;
- *-freebsd6.*)
- AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
- ;;
- esac
- ;;
- #
- # BSDI 3.0 through 4.0.1 needs pthread_init() to be
- # called before certain pthreads calls. This is deprecated
- # in BSD/OS 4.1.
- #
- *-bsdi3.*|*-bsdi4.0*)
- AC_DEFINE(NEED_PTHREAD_INIT)
- ;;
- #
- # LinuxThreads requires some changes to the way we
- # deal with signals.
- #
- *-linux*)
- AC_DEFINE(HAVE_LINUXTHREADS)
- ;;
- #
- # Ensure the right sigwait() semantics on Solaris and make
- # sure we call pthread_setconcurrency.
- #
- *-solaris*)
- AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
- AC_CHECK_FUNC(pthread_setconcurrency,
- AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
- ;;
- #
- # UnixWare does things its own way.
- #
- *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
- AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
- ;;
- esac
- #
- # Look for sysconf to allow detection of the number of processors.
- #
- AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
- else
- ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
- thread_dir=nothreads
- THREADOPTOBJS=""
- THREADOPTSRCS=""
- ALWAYS_DEFINES=""
- fi
- AC_SUBST(ALWAYS_DEFINES)
- AC_SUBST(ISC_PLATFORM_USETHREADS)
- AC_SUBST(THREADOPTOBJS)
- AC_SUBST(THREADOPTSRCS)
- ISC_THREAD_DIR=$thread_dir
- AC_SUBST(ISC_THREAD_DIR)
- #
- # was --with-libxml2 specified?
- #
- AC_MSG_CHECKING(for libxml2 library)
- AC_ARG_WITH(libxml2,
- [ --with-libxml2[=PATH] Build with libxml2 library [yes|no|path]],
- use_libxml2="$withval", use_libxml2="auto")
- case "$use_libxml2" in
- no)
- DST_LIBXML2_INC=""
- ;;
- auto|yes)
- case X`(xml2-config --version) 2>/dev/null` in
- X2.[[67]].*)
- libxml2_libs=`xml2-config --libs`
- libxml2_cflags=`xml2-config --cflags`
- ;;
- *)
- libxml2_libs=
- libxml2_cflags=
- ;;
- esac
- ;;
- *)
- if test -f "$use_libxml2/bin/xml2-config" ; then
- libxml2_libs=`$use_libxml2/bin/xml2-config --libs`
- libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags`
- fi
- ;;
- esac
- if test "X$libxml2_libs" != "X"
- then
- AC_MSG_RESULT(yes)
- CFLAGS="$CFLAGS $libxml2_cflags"
- LIBS="$LIBS $libxml2_libs"
- AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found])
- else
- AC_MSG_RESULT(no)
- fi
- #
- # In solaris 10, SMF can manage named service
- #
- AC_CHECK_LIB(scf, smf_enable_instance)
- #
- # flockfile is usually provided by pthreads, but we may want to use it
- # even if compiled with --disable-threads. getc_unlocked might also not
- # be defined.
- #
- AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
- AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
- #
- # Indicate what the final decision was regarding threads.
- #
- AC_MSG_CHECKING(whether to build with threads)
- if $use_threads; then
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- #
- # End of pthreads stuff.
- #
- #
- # Large File
- #
- AC_ARG_ENABLE(largefile, [ --enable-largefile 64-bit file support],
- want_largefile="yes", want_largefile="no")
- case $want_largefile in
- yes)
- ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
- ;;
- *)
- ;;
- esac
- #
- # Additional compiler settings.
- #
- MKDEPCC="$CC"
- MKDEPCFLAGS="-M"
- IRIX_DNSSEC_WARNINGS_HACK=""
- if test "X$GCC" = "Xyes"; then
- AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing)
- SAVE_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -fno-strict-aliasing"
- AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no])
- CFLAGS=$SAVE_CFLAGS
- if test "$FNOSTRICTALIASING" = "yes"; then
- AC_MSG_RESULT(yes)
- STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing"
- else
- AC_MSG_RESULT(no)
- STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith"
- fi
- case "$host" in
- *-hp-hpux*)
- LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
- ;;
- esac
- else
- case $host in
- *-dec-osf*)
- CC="$CC -std"
- CCOPT="$CCOPT -std"
- MKDEPCC="$CC"
- ;;
- *-hp-hpux*)
- CC="$CC -Ae -z"
- # The version of the C compiler that constantly warns about
- # 'const' as well as alignment issues is unfortunately not
- # able to be discerned via the version of the operating
- # system, nor does cc have a version flag.
- case "`$CC +W 123 2>&1`" in
- *Unknown?option*)
- STD_CWARNINGS="+w1"
- ;;
- *)
- # Turn off the pointlessly noisy warnings.
- STD_CWARNINGS="+w1 +W 474,530,2193,2236"
- ;;
- esac
- CCOPT="$CCOPT -Ae -z"
- LDFLAGS="-Wl,+vnocompatwarnings $LDFLAGS"
- MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
- ;;
- *-sgi-irix*)
- STD_CWARNINGS="-fullwarn -woff 1209"
- #
- # Silence more than 250 instances of
- # "prototyped function redeclared without prototype"
- # and 11 instances of
- # "variable ... was set but never used"
- # from lib/dns/sec/openssl.
- #
- IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
- ;;
- *-solaris*)
- MKDEPCFLAGS="-xM"
- ;;
- *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
- # UnixWare
- CC="$CC -w"
- ;;
- esac
- fi
- AC_SUBST(MKDEPCC)
- AC_SUBST(MKDEPCFLAGS)
- AC_SUBST(MKDEPPROG)
- AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
- #
- # NLS
- #
- AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
- #
- # -lxnet buys us one big porting headache... standards, gotta love 'em.
- #
- # AC_CHECK_LIB(xnet, socket, ,
- # AC_CHECK_LIB(socket, socket)
- # )
- #
- # Use this for now, instead:
- #
- case "$host" in
- mips-sgi-irix*)
- ;;
- *-linux*)
- ;;
- *)
- AC_CHECK_LIB(socket, socket)
- AC_CHECK_LIB(nsl, inet_addr)
- ;;
- esac
- #
- # Work around Solaris's select() limitations.
- #
- case "$host" in
- *-solaris2.[[89]]|*-solaris2.1?)
- AC_DEFINE(FD_SETSIZE, 65536,
- [Solaris hack to get select_large_fdset.])
- ;;
- esac
- #
- # Purify support
- #
- AC_MSG_CHECKING(whether to use purify)
- AC_ARG_WITH(purify,
- [ --with-purify[=PATH] use Rational purify],
- use_purify="$withval", use_purify="no")
- case "$use_purify" in
- no)
- ;;
- yes)
- AC_PATH_PROG(purify_path, purify, purify)
- ;;
- *)
- purify_path="$use_purify"
- ;;
- esac
- case "$use_purify" in
- no)
- AC_MSG_RESULT(no)
- PURIFY=""
- ;;
- *)
- if test -f $purify_path || test $purify_path = purify; then
- AC_MSG_RESULT($purify_path)
- PURIFYFLAGS="`echo $PURIFYOPTIONS`"
- PURIFY="$purify_path $PURIFYFLAGS"
- else
- AC_MSG_ERROR([$purify_path not found.
- Please choose the proper path with the following command:
- configure --with-purify=PATH
- ])
- fi
- ;;
- esac
- AC_SUBST(PURIFY)
- AC_ARG_WITH(libtool,
- [ --with-libtool use GNU libtool],
- use_libtool="$withval", use_libtool="no")
- case $use_libtool in
- yes)
- AM_PROG_LIBTOOL
- O=lo
- A=la
- LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
- LIBTOOL_MODE_COMPILE='--mode=compile --tag=CC'
- LIBTOOL_MODE_INSTALL='--mode=install --tag=CC'
- LIBTOOL_MODE_LINK='--mode=link --tag=CC'
- case "$host" in
- *) LIBTOOL_ALLOW_UNDEFINED= ;;
- esac
- case "$host" in
- *-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;;
- *) LIBTOOL_IN_MAIN= ;;
- esac;
- ;;
- *)
- O=o
- A=a
- LIBTOOL=
- AC_SUBST(LIBTOOL)
- LIBTOOL_MKDEP_SED=
- LIBTOOL_MODE_COMPILE=
- LIBTOOL_MODE_INSTALL=
- LIBTOOL_MODE_LINK=
- LIBTOOL_ALLOW_UNDEFINED=
- LIBTOOL_IN_MAIN=
- ;;
- esac
- #
- # enable/disable dumping stack backtrace. Also check if the system supports
- # glibc-compatible backtrace() function.
- #
- AC_ARG_ENABLE(backtrace,
- [ --enable-backtrace log stack backtrace on abort [[default=yes]]],
- want_backtrace="$enableval", want_backtrace="yes")
- case $want_backtrace in
- yes)
- ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1"
- AC_TRY_LINK([#include <execinfo.h>],
- [return (backtrace((void **)0, 0));],
- [AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],)
- ;;
- *)
- ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE"
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_USEBACKTRACE)
- AC_ARG_ENABLE(symtable,
- [ --enable-symtable use internal symbol table for backtrace
- [[all|minimal(default)|none]]],
- want_symtable="$enableval", want_symtable="minimal")
- case $want_symtable in
- yes|all|minimal) # "yes" is a hidden value equivalent to "minimal"
- if test "$PERL" = ""
- then
- AC_MSG_ERROR([Internal symbol table requires perl but no perl is found.
- Install perl or explicitly disable the feature by --disable-symtable.])
- fi
- if test "$use_libtool" = "yes"; then
- AC_MSG_WARN([Internal symbol table does not work with libtool. Disabling symbol table.])
- else
- # we generate the internal symbol table only for those systems
- # known to work to avoid unexpected build failure. Also, warn
- # about unsupported systems when the feature is enabled
- # manually.
- case $host_os in
- freebsd*|netbsd*|openbsd*|linux*|solaris*|darwin*)
- MKSYMTBL_PROGRAM="$PERL"
- if test $want_symtable = all; then
- ALWAYS_MAKE_SYMTABLE="yes"
- fi
- ;;
- *)
- if test $want_symtable = yes -o $want_symtable = all
- then
- AC_MSG_WARN([this system is not known to generate internal symbol table safely; disabling it])
- fi
- esac
- fi
- ;;
- *)
- ;;
- esac
- AC_SUBST(MKSYMTBL_PROGRAM)
- AC_SUBST(ALWAYS_MAKE_SYMTABLE)
- #
- # File name extension for static archive files, for those few places
- # where they are treated differently from dynamic ones.
- #
- SA=a
- AC_SUBST(O)
- AC_SUBST(A)
- AC_SUBST(SA)
- AC_SUBST(LIBTOOL_MKDEP_SED)
- AC_SUBST(LIBTOOL_MODE_COMPILE)
- AC_SUBST(LIBTOOL_MODE_INSTALL)
- AC_SUBST(LIBTOOL_MODE_LINK)
- AC_SUBST(LIBTOOL_ALLOW_UNDEFINED)
- AC_SUBST(LIBTOOL_IN_MAIN)
- #
- # build exportable DNS library?
- #
- AC_ARG_ENABLE(exportlib,
- [ --enable-exportlib build exportable library (GNU make required)
- [[default=no]]])
- case "$enable_exportlib" in
- yes)
- gmake=
- for x in gmake gnumake make; do
- if $x --version 2>/dev/null | grep GNU > /dev/null; then
- gmake=$x
- break;
- fi
- done
- if test -z "$gmake"; then
- AC_MSG_ERROR([exportlib requires GNU make. Install it or disable the feature.])
- fi
- LIBEXPORT=lib/export
- AC_SUBST(LIBEXPORT)
- BIND9_CO_RULE="%.$O: \${srcdir}/%.c"
- ;;
- no|*)
- BIND9_CO_RULE=".c.$O:"
- ;;
- esac
- AC_SUBST(BIND9_CO_RULE)
- AC_ARG_WITH(export-libdir,
- [ --with-export-libdir[=PATH]
- installation directory for the export library
- [[EPREFIX/lib/bind9]]],
- export_libdir="$withval",)
- if test -z "$export_libdir"; then
- export_libdir="\${exec_prefix}/lib/bind9/"
- fi
- AC_SUBST(export_libdir)
- AC_ARG_WITH(export-includedir,
- [ --with-export-includedir[=PATH]
- installation directory for the header files of the
- export library [[PREFIX/include/bind9]]],
- export_includedir="$withval",)
- if test -z "$export_includedir"; then
- export_includedir="\${prefix}/include/bind9/"
- fi
- AC_SUBST(export_includedir)
- #
- # Here begins a very long section to determine the system's networking
- # capabilities. The order of the tests is significant.
- #
- #
- # IPv6
- #
- AC_ARG_ENABLE(ipv6,
- [ --enable-ipv6 use IPv6 [default=autodetect]])
- case "$enable_ipv6" in
- yes|''|autodetect)
- AC_DEFINE(WANT_IPV6)
- ;;
- no)
- ;;
- esac
- #
- # We do the IPv6 compilation checking after libtool so that we can put
- # the right suffix on the files.
- #
- AC_MSG_CHECKING(for IPv6 structures)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>],
- [struct sockaddr_in6 sin6; return (0);],
- [AC_MSG_RESULT(yes)
- found_ipv6=yes],
- [AC_MSG_RESULT(no)
- found_ipv6=no])
- #
- # See whether IPv6 support is provided via a Kame add-on.
- # This is done before other IPv6 linking tests to LIBS is properly set.
- #
- AC_MSG_CHECKING(for Kame IPv6 support)
- AC_ARG_WITH(kame,
- [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]],
- use_kame="$withval", use_kame="no")
- case "$use_kame" in
- no)
- ;;
- yes)
- kame_path=/usr/local/v6
- ;;
- *)
- kame_path="$use_kame"
- ;;
- esac
- case "$use_kame" in
- no)
- AC_MSG_RESULT(no)
- ;;
- *)
- if test -f $kame_path/lib/libinet6.a; then
- AC_MSG_RESULT($kame_path/lib/libinet6.a)
- LIBS="-L$kame_path/lib -linet6 $LIBS"
- else
- AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
- Please choose the proper path with the following command:
- configure --with-kame=PATH
- ])
- fi
- ;;
- esac
- #
- # Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
- # Including it on Kame-using platforms is very bad, though, because
- # Kame uses #error against direct inclusion. So include it on only
- # the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
- # This is done before the in6_pktinfo check because that's what
- # netinet6/in6.h is needed for.
- #
- changequote({, })
- case "$host" in
- *-bsdi4.[01]*)
- ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
- LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
- isc_netinet6in6_hack="#include <netinet6/in6.h>"
- ;;
- *)
- ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
- LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
- isc_netinet6in6_hack=""
- ;;
- esac
- changequote([, ])
- #
- # This is similar to the netinet6/in6.h issue.
- #
- case "$host" in
- *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
- # UnixWare
- ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
- LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
- ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
- isc_netinetin6_hack="#include <netinet/in6.h>"
- ;;
- *)
- ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
- LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
- ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
- isc_netinetin6_hack=""
- ;;
- esac
- #
- # Now delve deeper into the suitability of the IPv6 support.
- #
- case "$found_ipv6" in
- yes)
- ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
- LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
- AC_MSG_CHECKING(for in6_addr)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- ],
- [struct in6_addr in6; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
- LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
- isc_in_addr6_hack=""],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
- LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
- isc_in_addr6_hack="#define in6_addr in_addr6"])
- AC_MSG_CHECKING(for in6addr_any)
- AC_TRY_LINK([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- $isc_in_addr6_hack
- ],
- [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
- LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
- LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
- AC_MSG_CHECKING(for in6addr_loopback)
- AC_TRY_LINK([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- $isc_in_addr6_hack
- ],
- [struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
- LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1"
- LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"])
- AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- ],
- [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
- result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
- result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
- LWRES_HAVE_SIN6_SCOPE_ID="$result"
- AC_MSG_CHECKING(for in6_pktinfo)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- ],
- [struct in6_pktinfo xyzzy; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
- [AC_MSG_RESULT(no -- disabling runtime ipv6 support)
- ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
- ;;
- no)
- ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
- LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
- ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
- LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
- ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
- LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
- ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
- ISC_IPV6_H="ipv6.h"
- ISC_IPV6_O="ipv6.$O"
- ISC_ISCIPV6_O="unix/ipv6.$O"
- ISC_IPV6_C="ipv6.c"
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_HAVEIPV6)
- AC_SUBST(LWRES_PLATFORM_HAVEIPV6)
- AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
- AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
- AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
- AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
- AC_SUBST(ISC_PLATFORM_HAVEINADDR6)
- AC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
- AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
- AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
- AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
- AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK)
- AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
- AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
- AC_SUBST(ISC_IPV6_H)
- AC_SUBST(ISC_IPV6_O)
- AC_SUBST(ISC_ISCIPV6_O)
- AC_SUBST(ISC_IPV6_C)
- AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
- AC_SUBST(ISC_PLATFORM_HAVESCOPEID)
- AC_MSG_CHECKING([for struct if_laddrreq])
- AC_TRY_LINK([
- #include <sys/types.h>
- #include <net/if6.h>
- ],[ struct if_laddrreq a; ],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"])
- AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ)
- AC_MSG_CHECKING([for struct if_laddrconf])
- AC_TRY_LINK([
- #include <sys/types.h>
- #include <net/if6.h>
- ],[ struct if_laddrconf a; ],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"])
- AC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF)
- #
- # Check for network functions that are often missing. We do this
- # after the libtool checking, so we can put the right suffix on
- # the files. It also needs to come after checking for a Kame add-on,
- # which provides some (all?) of the desired functions.
- #
- AC_MSG_CHECKING([for inet_ntop with IPv6 support])
- AC_TRY_RUN([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- main() {
- char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
- [AC_MSG_RESULT(no)
- ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
- ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
- ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
- [AC_MSG_RESULT(assuming inet_ntop not needed)
- ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"])
- # On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
- # addresses with less than four octets, like "1.2.3". Also leading
- # zeros should also be rejected.
- AC_MSG_CHECKING([for working inet_pton with IPv6 support])
- AC_TRY_RUN([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
- inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
- (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
- [AC_MSG_RESULT(no)
- ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
- ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
- ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
- [AC_MSG_RESULT(assuming inet_pton needed)
- ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
- ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
- ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"])
- AC_SUBST(ISC_PLATFORM_NEEDNTOP)
- AC_SUBST(ISC_PLATFORM_NEEDPTON)
- #
- # Look for a 4.4BSD-style sa_len member in struct sockaddr.
- #
- case "$host" in
- *-dec-osf*)
- # Turn on 4.4BSD style sa_len support.
- AC_DEFINE(_SOCKADDR_LEN)
- ;;
- esac
- AC_MSG_CHECKING(for sa_len in struct sockaddr)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>],
- [struct sockaddr sa; sa.sa_len = 0; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
- LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
- LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
- AC_SUBST(ISC_PLATFORM_HAVESALEN)
- AC_SUBST(LWRES_PLATFORM_HAVESALEN)
- #
- # Look for a 4.4BSD or 4.3BSD struct msghdr
- #
- AC_MSG_CHECKING(for struct msghdr flavor)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>],
- [struct msghdr msg; msg.msg_flags = 0; return (0);],
- [AC_MSG_RESULT(4.4BSD)
- ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
- [AC_MSG_RESULT(4.3BSD)
- ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
- AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)
- #
- # Look for in_port_t.
- #
- AC_MSG_CHECKING(for type in_port_t)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <netinet/in.h>],
- [in_port_t port = 25; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
- [AC_MSG_RESULT(no)
- ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
- AC_SUBST(ISC_PLATFORM_NEEDPORTT)
- #
- # Check for addrinfo
- #
- AC_MSG_CHECKING(for struct addrinfo)
- AC_TRY_COMPILE([
- #include <netdb.h>],
- [struct addrinfo a; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
- ISC_IRS_NEEDADDRINFO="#undef ISC_IRS_NEEDADDRINFO"
- AC_DEFINE(HAVE_ADDRINFO)],
- [AC_MSG_RESULT(no)
- ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"
- ISC_IRS_NEEDADDRINFO="#define ISC_IRS_NEEDADDRINFO 1"])
- AC_SUBST(ISC_LWRES_NEEDADDRINFO)
- AC_SUBST(ISC_IRS_NEEDADDRINFO)
- #
- # Check for rrsetinfo
- #
- AC_MSG_CHECKING(for struct rrsetinfo)
- AC_TRY_COMPILE([
- #include <netdb.h>],
- [struct rrsetinfo r; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"])
- AC_SUBST(ISC_LWRES_NEEDRRSETINFO)
- AC_MSG_CHECKING(for int sethostent)
- AC_TRY_COMPILE([
- #include <netdb.h>],
- [int i = sethostent(0); return(0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
- AC_SUBST(ISC_LWRES_SETHOSTENTINT)
- AC_MSG_CHECKING(for int endhostent)
- AC_TRY_COMPILE([
- #include <netdb.h>],
- [int i = endhostent(); return(0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
- AC_SUBST(ISC_LWRES_ENDHOSTENTINT)
- AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
- AC_TRY_COMPILE([
- #include <netdb.h>
- struct netent *getnetbyaddr(in_addr_t, int);],
- [],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
- AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)
- AC_MSG_CHECKING(for int setnetent)
- AC_TRY_COMPILE([
- #include <netdb.h>],
- [int i = setnetent(0); return(0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
- AC_SUBST(ISC_LWRES_SETNETENTINT)
- AC_MSG_CHECKING(for int endnetent)
- AC_TRY_COMPILE([
- #include <netdb.h>],
- [int i = endnetent(); return(0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
- AC_SUBST(ISC_LWRES_ENDNETENTINT)
- AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
- AC_TRY_COMPILE([
- #include <netdb.h>
- struct hostent *gethostbyaddr(const void *, size_t, int);],
- [return(0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
- AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)
- AC_MSG_CHECKING(for h_errno in netdb.h)
- AC_TRY_COMPILE([
- #include <netdb.h>],
- [h_errno = 1; return(0);],
- [AC_MSG_RESULT(yes)
- ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
- [AC_MSG_RESULT(no)
- ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
- AC_SUBST(ISC_LWRES_NEEDHERRNO)
- #
- # Sadly, the definitions of system-supplied getnameinfo(3) vary. Try to catch
- # known variations here:
- #
- AC_MSG_CHECKING(for getnameinfo prototype definitions)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- int getnameinfo(const struct sockaddr *, socklen_t, char *,
- socklen_t, char *, socklen_t, unsigned int);],
- [ return (0);],
- [AC_MSG_RESULT(socklen_t for buflen; u_int for flags)
- AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t,
- [Define to the buffer length type used by getnameinfo(3).])
- AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int,
- [Define to the flags type used by getnameinfo(3).])],
- [AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- int getnameinfo(const struct sockaddr *, socklen_t, char *,
- size_t, char *, size_t, int);],
- [ return (0);],
- [AC_MSG_RESULT(size_t for buflen; int for flags)
- AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
- AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
- [AC_MSG_RESULT(not match any subspecies; assume standard definition)
- AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t)
- AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])
- #
- # ...and same for gai_strerror().
- #
- AC_MSG_CHECKING(for gai_strerror prototype definitions)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- char *gai_strerror(int ecode);],
- [ return (0); ],
- [AC_MSG_RESULT(returning char *)
- AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [char *],
- [return type of gai_strerror])],
- [AC_MSG_RESULT(not match any subspecies; assume standard definition)
- AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [const char *])])
- AC_CHECK_FUNC(getipnodebyname,
- [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
- [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
- AC_CHECK_FUNC(getnameinfo,
- [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
- [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
- AC_CHECK_FUNC(getaddrinfo,
- [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
- AC_DEFINE(HAVE_GETADDRINFO)],
- [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
- AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
- AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
- AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
- AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
- AC_SUBST(ISC_IRS_GETNAMEINFOSOCKLEN)
- AC_ARG_ENABLE(getifaddrs,
- [ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no]].],
- want_getifaddrs="$enableval", want_getifaddrs="yes")
- #
- # This interface iteration code for getifaddrs() will fall back to using
- # /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6
- # addresses.
- #
- case $want_getifaddrs in
- glibc)
- AC_MSG_WARN("--enable-getifaddrs=glibc is no longer required")
- AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
- ;;
- yes)
- AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
- ;;
- no)
- ;;
- esac
- #
- # Look for a sysctl call to get the list of network interfaces.
- #
- case $ac_cv_header_sys_sysctl_h in
- yes)
- AC_MSG_CHECKING(for interface list sysctl)
- AC_EGREP_CPP(found_rt_iflist, [
- #include <sys/param.h>
- #include <sys/sysctl.h>
- #include <sys/socket.h>
- #ifdef NET_RT_IFLIST
- found_rt_iflist
- #endif
- ],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_IFLIST_SYSCTL)],
- [AC_MSG_RESULT(no)])
- ;;
- esac
- #
- # Check for some other useful functions that are not ever-present.
- #
- # We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC
- # because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77
- # reportedly defines strsep() without declaring it in <string.h> when
- # -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and
- # AC_CHECK_FUNC() incorrectly succeeds because it declares
- # the function itself.
- AC_MSG_CHECKING(for correctly declared strsep())
- AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");],
- [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
- [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
- AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
- AC_CHECK_FUNC(memmove,
- [ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"],
- [ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"])
- AC_SUBST(ISC_PLATFORM_NEEDMEMMOVE)
- AC_CHECK_FUNC(strtoul,
- [ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL"
- LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL"
- GENRANDOMLIB=""],
- [ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1"
- LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1"
- GENRANDOMLIB='${ISCLIBS}'])
- AC_SUBST(ISC_PLATFORM_NEEDSTRTOUL)
- AC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL)
- AC_SUBST(GENRANDOMLIB)
- AC_CHECK_FUNC(strlcpy,
- [ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"],
- [ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"])
- AC_SUBST(ISC_PLATFORM_NEEDSTRLCPY)
- AC_CHECK_FUNC(strlcat,
- [ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"],
- [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"])
- AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT)
- ISC_PRINT_OBJS=
- ISC_PRINT_SRCS=
- AC_MSG_CHECKING(sprintf)
- AC_TRY_COMPILE([
- #include <stdio.h>
- ],
- [ char buf[2]; return(*sprintf(buf,"x"));],
- [
- ISC_PRINT_OBJS="print.$O"
- ISC_PRINT_SRCS="print.c"
- ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
- LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
- ],
- [ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF"
- LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"]
- )
- AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
- AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
- AC_CHECK_FUNC(vsnprintf,
- [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"
- LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"],
- [ISC_PRINT_OBJS="print.$O"
- ISC_PRINT_SRCS="print.c"
- ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
- LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
- AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
- AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
- ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
- ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
- AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
- AC_SUBST(ISC_EXTRA_OBJS)
- AC_SUBST(ISC_EXTRA_SRCS)
- #
- # Use our own SPNEGO implementation?
- #
- AC_ARG_ENABLE(isc-spnego,
- [ --disable-isc-spnego use SPNEGO from GSSAPI library])
- if test -n "$USE_GSSAPI"
- then
- case "$enable_isc_spnego" in
- yes|'')
- USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO'
- DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O"
- DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c"
- AC_MSG_RESULT(using SPNEGO from lib/dns)
- ;;
- no)
- AC_MSG_RESULT(using SPNEGO from GSSAPI library)
- ;;
- esac
- fi
- AC_SUBST(USE_ISC_SPNEGO)
- AC_SUBST(DST_EXTRA_OBJS)
- AC_SUBST(DST_EXTRA_SRCS)
- # Determine the printf format characters to use when printing
- # values of type isc_int64_t. This will normally be "ll", but where
- # the compiler treats "long long" as a alias for "long" and printf
- # doesn't know about "long long" use "l". Hopefully the sprintf
- # will produce a inconsistent result in the later case. If the compiler
- # fails due to seeing "%lld" we fall back to "l".
- #
- # Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses
- # %ld even for (long long)/
- #
- # Win32 uses "%I64d", but that's defined elsewhere since we don't use
- # configure on Win32.
- #
- AC_MSG_CHECKING(printf format modifier for 64-bit integers)
- AC_TRY_RUN([
- #include <stdio.h>
- main() {
- long long int j = 0;
- char buf[100];
- buf[0] = 0;
- sprintf(buf, "%lld", j);
- exit((sizeof(long long int) != sizeof(long int))? 0 :
- (strcmp(buf, "0") != 0));
- }
- ],
- [AC_MSG_RESULT(ll)
- ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
- LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'],
- [AC_MSG_RESULT(l)
- ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
- LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'],
- [AC_MSG_RESULT(assuming target platform uses ll)
- ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
- LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'])
- AC_SUBST(ISC_PLATFORM_QUADFORMAT)
- AC_SUBST(LWRES_PLATFORM_QUADFORMAT)
- #
- # Security Stuff
- #
- # Note it is very recommended to *not* disable chroot(),
- # this is only because chroot() was made obsolete by Posix.
- AC_ARG_ENABLE(chroot,
- [ --disable-chroot disable chroot])
- case "$enable_chroot" in
- yes|'')
- AC_CHECK_FUNCS(chroot)
- ;;
- no)
- ;;
- esac
- AC_ARG_ENABLE(linux-caps,
- [ --disable-linux-caps disable linux capabilities])
- case "$enable_linux_caps" in
- yes|'')
- AC_CHECK_HEADERS(linux/capability.h sys/capability.h)
- AC_CHECK_LIB(cap, cap_set_proc)
- ;;
- no)
- ;;
- esac
- AC_CHECK_HEADERS(sys/prctl.h)
- AC_CHECK_HEADERS(sys/un.h,
- ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
- ,
- ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
- )
- AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
- case "$host" in
- *-solaris*)
- AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
- [Define if connect does not honour the permission on the UNIX domain socket.])
- ;;
- *-sunos*)
- AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
- [Define if connect does not honour the permission on the UNIX domain socket.])
- ;;
- esac
- #
- # Time Zone Stuff
- #
- AC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET))
- AC_MSG_CHECKING(for optarg declaration)
- AC_TRY_COMPILE([
- #include <unistd.h>
- ],
- [optarg = 0;],
- [AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)
- GEN_NEED_OPTARG="-DNEED_OPTARG=1"
- AC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])])
- #
- # BSD/OS, and perhaps some others, don't define rlim_t.
- #
- AC_MSG_CHECKING(for type rlim_t)
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/time.h>
- #include <sys/resource.h>],
- [rlim_t rl = 19671212; return (0);],
- [AC_MSG_RESULT(yes)
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"],
- [AC_MSG_RESULT(no)
- AC_MSG_CHECKING(type of rlim_cur)
- AC_TRY_RUN([
- #include <sys/types.h>
- #include <sys/time.h>
- #include <sys/resource.h>
- main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
- [AC_MSG_RESULT(int)
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
- [
- AC_TRY_RUN([
- #include <sys/types.h>
- #include <sys/time.h>
- #include <sys/resource.h>
- main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
- [AC_MSG_RESULT(long int)
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
- [
- AC_TRY_RUN([
- #include <sys/types.h>
- #include <sys/time.h>
- #include <sys/resource.h>
- main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
- [AC_MSG_RESULT(long long int)
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
- [AC_MSG_ERROR([unable to determine sizeof rlim_cur])
- ],[AC_MSG_ERROR(this cannot happen)])
- ],[AC_MSG_ERROR(this cannot happen)])
- ],[
- AC_ARG_WITH(rlimtype, , rlimtype="$withval", rlimtype="long long int")
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE $rlimtype"
- AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming $rlimtype)])
- ])
- AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
- #
- # Older HP-UX doesn't have gettune
- #
- case "$host" in
- *-hp-hpux*)
- AC_CHECK_HEADERS(sys/dyntune.h)
- ;;
- *)
- ;;
- esac
- #
- # Compaq TruCluster requires more code for handling cluster IP aliases
- #
- case "$host" in
- *-dec-osf*)
- AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS")
- AC_CHECK_FUNC(clua_getaliasaddress,
- AC_DEFINE(HAVE_TRUCLUSTER, 1,
- [Define if running under Compaq TruCluster]))
- ;;
- *)
- ;;
- esac
- #
- # Some hosts need msg_namelen to match the size of the socket structure.
- # Some hosts don't set msg_namelen appropriately on return from recvmsg().
- #
- case $host in
- *os2*|*hp-mpeix*)
- AC_DEFINE(BROKEN_RECVMSG, 1,
- [Define if recvmsg() does not meet all of the BSD socket API specifications.])
- ;;
- esac
- #
- # Microsoft has their own way of handling shared libraries that requires
- # additional qualifiers on extern variables. Unix systems don't need it.
- #
- AC_SUBST(ISC_PLATFORM_USEDECLSPEC)
- ISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC"
- AC_SUBST(LWRES_PLATFORM_USEDECLSPEC)
- LWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC"
- AC_SUBST(IRS_PLATFORM_USEDECLSPEC)
- IRS_PLATFORM_USEDECLSPEC="#undef IRS_PLATFORM_USEDECLSPEC"
- #
- # Random remaining OS-specific issues involving compiler warnings.
- # XXXDCL print messages to indicate some compensation is being done?
- #
- AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
- ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"
- case "$host" in
- *-aix5.[[123]].*)
- hack_shutup_pthreadonceinit=yes
- ;;
- *-bsdi3.1*)
- hack_shutup_sputaux=yes
- ;;
- *-bsdi4.0*)
- hack_shutup_sigwait=yes
- hack_shutup_sputaux=yes
- ;;
- [*-bsdi4.[12]*])
- hack_shutup_stdargcast=yes
- ;;
- [*-solaris2.[89]])
- hack_shutup_pthreadonceinit=yes
- ;;
- *-solaris2.1[[0-9]])
- AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [hack_shutup_pthreadonceinit=yes], )
- ;;
- esac
- case "$hack_shutup_pthreadonceinit" in
- yes)
- #
- # Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
- #
- ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
- ;;
- esac
- case "$hack_shutup_sigwait" in
- yes)
- #
- # Shut up a -Wmissing-prototypes warning for sigwait().
- #
- AC_DEFINE(SHUTUP_SIGWAIT)
- ;;
- esac
- case "$hack_shutup_sputaux" in
- yes)
- #
- # Shut up a -Wmissing-prototypes warning from <stdio.h>.
- #
- AC_DEFINE(SHUTUP_SPUTAUX)
- ;;
- esac
- case "$hack_shutup_stdargcast" in
- yes)
- #
- # Shut up a -Wcast-qual warning from va_start().
- #
- AC_DEFINE(SHUTUP_STDARG_CAST)
- ;;
- esac
- AC_CHECK_HEADERS(strings.h,
- ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1"
- ,
- ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH"
- )
- AC_SUBST(ISC_PLATFORM_HAVESTRINGSH)
- #
- # Check for if_nametoindex() for IPv6 scoped addresses support
- #
- AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
- ac_cv_have_if_nametoindex=no)
- case $ac_cv_have_if_nametoindex in
- no)
- case "$host" in
- *-hp-hpux*)
- AC_CHECK_LIB(ipv6, if_nametoindex,
- ac_cv_have_if_nametoindex=yes
- LIBS="-lipv6 $LIBS",)
- ;;
- esac
- esac
- case $ac_cv_have_if_nametoindex in
- yes)
- ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1"
- ;;
- *)
- ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX"
- ;;
- esac
- AC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX)
- AC_CHECK_FUNCS(nanosleep)
- #
- # Machine architecture dependent features
- #
- AC_ARG_ENABLE(atomic,
- [ --enable-atomic enable machine specific atomic operations
- [[default=autodetect]]],
- enable_atomic="$enableval",
- enable_atomic="autodetect")
- case "$enable_atomic" in
- yes|''|autodetect)
- case "$host" in
- powerpc-ibm-aix*)
- if test "X$GCC" = "Xyes"; then
- AC_MSG_CHECKING([if asm("isc"); works])
- AC_TRY_COMPILE(,[
- main() { asm("ics"); exit(0); }
- ],
- [AC_MSG_RESULT(yes)
- use_atomic=yes],
- [
- saved_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -Wa,-many"
- AC_TRY_RUN([
- main() { asm("ics"); exit(0); }
- ],
- [AC_MSG_RESULT([yes, required -Wa,-many])
- use_atomic=yes],
- [AC_MSG_RESULT([no, use_atomic disabled])
- CFLAGS="$saved_cflags"
- use_atomic=no],
- [AC_MSG_RESULT([cross compile, assume yes])
- CFLAGS="$saved_cflags"
- use_atomic=yes])
- ]
- )
- else
- use_atomic=yes
- fi
- ;;
- *)
- use_atomic=yes
- ;;
- esac
- ;;
- no)
- use_atomic=no
- arch=noatomic
- ;;
- esac
- ISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM"
- if test "$use_atomic" = "yes"; then
- AC_MSG_CHECKING([architecture type for atomic operations])
- have_atomic=yes # set default
- case "$host" in
- [i[3456]86-*])
- # XXX: some old x86 architectures actually do not support
- # (some of) these operations. Do we need stricter checks?
- AC_CHECK_SIZEOF([void *])
- if test $ac_cv_sizeof_void_p = 8; then
- arch=x86_64
- have_xaddq=yes
- else
- arch=x86_32
- fi
- ;;
- x86_64-*|amd64-*)
- AC_CHECK_SIZEOF([void *])
- if test $ac_cv_sizeof_void_p = 8; then
- arch=x86_64
- have_xaddq=yes
- else
- arch=x86_32
- fi
- ;;
- alpha*-*)
- arch=alpha
- ;;
- powerpc-*|powerpc64-*)
- arch=powerpc
- ;;
- mips-*|mipsel-*|mips64-*|mips64el-*)
- arch=mips
- ;;
- ia64-*)
- arch=ia64
- ;;
- *)
- have_atomic=no
- arch=noatomic
- ;;
- esac
- AC_MSG_RESULT($arch)
- fi
- if test "$have_atomic" = "yes"; then
- AC_MSG_CHECKING([compiler support for inline assembly code])
- compiler=generic
- # Check whether the compiler supports the assembly syntax we provide.
- if test "X$GCC" = "Xyes"; then
- # GCC's ASM extension always works
- compiler=gcc
- if test $arch = "x86_64"; then
- # We can share the same code for gcc with x86_32
- arch=x86_32
- fi
- if test $arch = "powerpc"; then
- #
- # The MacOS (and maybe others) uses "r0" for register
- # zero. Under linux/ibm it is "0" for register 0.
- # Probe to see if we have a MacOS style assembler.
- #
- AC_MSG_CHECKING([Checking for MacOS style assembler syntax])
- AC_TRY_COMPILE(, [
- __asm__ volatile ("li r0, 0x0\n"::);
- ], [
- AC_MSG_RESULT(yes)
- compiler="mac"
- ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1"
- ], [AC_MSG_RESULT(no)])
- fi
- else
- case "$host" in
- alpha*-dec-osf*)
- # Tru64 compiler has its own syntax for inline
- # assembly.
- AC_TRY_COMPILE(, [
- #ifndef __DECC
- #error "unexpected compiler"
- #endif
- return (0);],
- [compiler=osf],)
- ;;
- powerpc-ibm-aix*)
- compiler=aix
- ;;
- esac
- fi
- case "$compiler" in
- gcc)
- ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1"
- ;;
- osf)
- ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1"
- ;;
- aix)
- ;;
- mac)
- ;;
- *)
- # See if the generic __asm function works. If not,
- # we need to disable the atomic operations.
- AC_TRY_LINK(, [
- __asm("nop")
- ],
- [compiler="standard"
- ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"],
- [compiler="not supported (atomic operations disabled)"
- have_atomic=no
- arch=noatomic ]);
- ;;
- esac
- AC_MSG_RESULT($compiler)
- fi
- if test "$have_atomic" = "yes"; then
- ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1"
- ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1"
- ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1"
- else
- ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD"
- ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG"
- ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE"
- fi
- if test "$have_xaddq" = "yes"; then
- ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1"
- else
- ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ"
- fi
- AC_SUBST(ISC_PLATFORM_HAVEXADD)
- AC_SUBST(ISC_PLATFORM_HAVEXADDQ)
- AC_SUBST(ISC_PLATFORM_HAVECMPXCHG)
- AC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE)
- AC_SUBST(ISC_PLATFORM_USEGCCASM)
- AC_SUBST(ISC_PLATFORM_USEOSFASM)
- AC_SUBST(ISC_PLATFORM_USESTDASM)
- AC_SUBST(ISC_PLATFORM_USEMACASM)
- ISC_ARCH_DIR=$arch
- AC_SUBST(ISC_ARCH_DIR)
- #
- # Activate "rrset-order fixed" or not?
- #
- AC_ARG_ENABLE(fixed-rrset,
- [ --enable-fixed-rrset enable fixed rrset ordering
- [[default=no]]],
- enable_fixed="$enableval",
- enable_fixed="no")
- case "$enable_fixed" in
- yes)
- AC_DEFINE(DNS_RDATASET_FIXED, 1,
- [Define to enable "rrset-order fixed" syntax.])
- ;;
- no)
- ;;
- *)
- ;;
- esac
- #
- # Enable response policy rewriting using NS IP addresses
- #
- AC_ARG_ENABLE(rpz-nsip,
- [ --enable-rpz-nsip enable rpz-nsip rules [[default=no]]],
- enable_nsip="$enableval",
- enable_nsip="no")
- case "$enable_nsip" in
- yes)
- AC_DEFINE(ENABLE_RPZ_NSIP, 1,
- [Define to enable rpz-nsip rules.])
- ;;
- no)
- ;;
- *)
- ;;
- esac
- #
- # Enable response policy rewriting using NS name
- #
- AC_ARG_ENABLE(rpz-nsdname,
- [ --enable-rpz-nsdname enable rpz-nsdname rules [[default=no]]],
- enable_nsdname="$enableval",
- enable_nsdname="no")
- case "$enable_nsdname" in
- yes)
- AC_DEFINE(ENABLE_RPZ_NSDNAME, 1,
- [Define to enable rpz-nsdname rules.])
- ;;
- no)
- ;;
- *)
- ;;
- esac
- #
- # Activate "filter-aaaa-on-v4" or not?
- #
- AC_ARG_ENABLE(filter-aaaa,
- [ --enable-filter-aaaa enable filtering of AAAA records over IPv4
- [[default=no]]],
- enable_filter="$enableval",
- enable_filter="no")
- case "$enable_filter" in
- yes)
- AC_DEFINE(ALLOW_FILTER_AAAA_ON_V4, 1,
- [Define to enable the "filter-aaaa-on-v4" option.])
- ;;
- no)
- ;;
- *)
- ;;
- esac
- #
- # The following sets up how non-blocking i/o is established.
- # Sunos, cygwin and solaris 2.x (x<5) require special handling.
- #
- case "$host" in
- *-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
- *-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
- *-solaris2.[[01234]])
- AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
- AC_DEFINE(USE_FIONBIO_IOCTL, 1,
- [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
- ;;
- *) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
- [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
- ;;
- esac
- #
- # Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
- # This prevents the source address being set.
- #
- case "$host" in
- *-solaris2.[[012345]]|*-solaris2.5.1)
- AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
- [Define if you cannot bind() before connect() for TCP sockets.])
- ;;
- esac
- #
- # The following sections deal with tools used for formatting
- # the documentation. They are all optional, unless you are
- # a developer editing the documentation source.
- #
- #
- # Look for TeX.
- #
- AC_PATH_PROGS(LATEX, latex, latex)
- AC_SUBST(LATEX)
- AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
- AC_SUBST(PDFLATEX)
- #
- # Look for w3m
- #
- AC_PATH_PROGS(W3M, w3m, w3m)
- AC_SUBST(W3M)
- #
- # Look for xsltproc (libxslt)
- #
- AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
- AC_SUBST(XSLTPROC)
- #
- # Look for xmllint (libxml2)
- #
- AC_PATH_PROG(XMLLINT, xmllint, xmllint)
- AC_SUBST(XMLLINT)
- #
- # Look for Doxygen
- #
- AC_PATH_PROG(DOXYGEN, doxygen, doxygen)
- AC_SUBST(DOXYGEN)
- #
- # Subroutine for searching for an ordinary file (e.g., a stylesheet)
- # in a number of directories:
- #
- # NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
- #
- # If the file FILENAME is found in one of the DIRECTORIES, the shell
- # variable VARIABLE is defined to its absolute pathname. Otherwise,
- # it is set to FILENAME, with no directory prefix (that's not terribly
- # useful, but looks less confusing in substitutions than leaving it
- # empty). The variable VARIABLE will be substituted into output files.
- #
- AC_DEFUN(NOM_PATH_FILE, [
- $1=""
- AC_MSG_CHECKING(for $2)
- for d in $3
- do
- f=$d/$2
- if test -f $f
- then
- $1=$f
- AC_MSG_RESULT($f)
- break
- fi
- done
- if test "X[$]$1" = "X"
- then
- AC_MSG_RESULT("not found");
- $1=$2
- fi
- AC_SUBST($1)
- ])
- #
- # Look for Docbook-XSL stylesheets. Location probably varies by system.
- # If it's not explicitly specified, guess where it might be found, based on
- # where SGML stuff lives on some systems (FreeBSD is the only one we're sure
- # of at the moment).
- #
- AC_MSG_CHECKING(for Docbook-XSL path)
- AC_ARG_WITH(docbook-xsl,
- [ --with-docbook-xsl=PATH Specify path for Docbook-XSL stylesheets],
- docbook_path="$withval", docbook_path="auto")
- case "$docbook_path" in
- auto)
- AC_MSG_RESULT(auto)
- docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook"
- ;;
- *)
- docbook_xsl_trees="$withval"
- AC_MSG_RESULT($docbook_xsl_trees)
- ;;
- esac
- #
- # Look for stylesheets we need.
- #
- NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees)
- NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees)
- #
- # Same dance for db2latex
- #
- # No idea where this lives except on FreeBSD.
- #
- db2latex_xsl_trees="/usr/local/share"
- #
- # Look for stylesheets we need.
- #
- NOM_PATH_FILE(XSLT_DB2LATEX_STYLE, db2latex/xsl/docbook.xsl, $db2latex_xsl_trees)
- #
- # Look for "admonition" image directory. Can't use NOM_PATH_FILE()
- # because it's a directory, so just do the same things, inline.
- #
- AC_MSG_CHECKING(for db2latex/xsl/figures)
- for d in $db2latex_xsl_trees
- do
- dd=$d/db2latex/xsl/figures
- if test -d $dd
- then
- XSLT_DB2LATEX_ADMONITIONS=$dd
- AC_MSG_RESULT($dd)
- break
- fi
- done
- if test "X$XSLT_DB2LATEX_ADMONITIONS" = "X"
- then
- AC_MSG_RESULT(not found)
- XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures
- fi
- AC_SUBST(XSLT_DB2LATEX_ADMONITIONS)
- #
- # IDN support
- #
- AC_ARG_WITH(idn,
- [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
- use_idn="$withval", use_idn="no")
- case "$use_idn" in
- yes)
- if test X$prefix = XNONE ; then
- idn_path=/usr/local
- else
- idn_path=$prefix
- fi
- ;;
- no)
- ;;
- *)
- idn_path="$use_idn"
- ;;
- esac
- iconvinc=
- iconvlib=
- AC_ARG_WITH(libiconv,
- [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]],
- use_libiconv="$withval", use_libiconv="no")
- case "$use_libiconv" in
- yes)
- if test X$prefix = XNONE ; then
- iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
- else
- iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
- fi
- ;;
- no)
- iconvlib=
- ;;
- *)
- iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
- ;;
- esac
- AC_ARG_WITH(iconv,
- [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]],
- iconvlib="$withval")
- case "$iconvlib" in
- no)
- iconvlib=
- ;;
- yes)
- iconvlib=-liconv
- ;;
- esac
- AC_ARG_WITH(idnlib,
- [ --with-idnlib=ARG specify libidnkit],
- idnlib="$withval", idnlib="no")
- if test "$idnlib" = yes; then
- AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
- fi
- IDNLIBS=
- if test "$use_idn" != no; then
- AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
- STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
- if test "$idnlib" != no; then
- IDNLIBS="$idnlib $iconvlib"
- else
- IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
- fi
- fi
- AC_SUBST(IDNLIBS)
- #
- # Check whether to build Automated Test Framework unit tests
- #
- AC_ARG_WITH(atf,
- [ --with-atf=ARG Automated Test Framework support],
- atf="$withval", atf="no")
- if test "$atf" = yes; then
- atf=`pwd`/unit/atf
- ATFBUILD=atf-src
- AC_SUBST(ATFBUILD)
- AC_CONFIG_COMMANDS([atf-config],
- [cd unit/atf-src; ${SHELL} ./configure MISSING=: --prefix $atfdir; cd ../..],
- [atfdir=`pwd`/unit/atf])
- AC_MSG_RESULT(building ATF from bind9/unit/atf-src)
- fi
- ATFLIBS=
- if test "$atf" != no; then
- AC_DEFINE(ATF_TEST, 1, [define if ATF unit tests are to be built.])
- STD_CINCLUDES="$STD_CINCLUDES -I$atf/include"
- ATFBIN="$atf/bin"
- ATFLIBS="-L$atf/lib -latf-c"
- UNITTESTS=tests
- fi
- AC_SUBST(ATFBIN)
- AC_SUBST(ATFLIBS)
- AC_SUBST(UNITTESTS)
- AC_CHECK_HEADERS(locale.h)
- AC_CHECK_FUNCS(setlocale)
- #
- # Substitutions
- #
- AC_SUBST(BIND9_TOP_BUILDDIR)
- BIND9_TOP_BUILDDIR=`pwd`
- AC_SUBST(BIND9_ISC_BUILDINCLUDE)
- AC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
- AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
- AC_SUBST(BIND9_DNS_BUILDINCLUDE)
- AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
- AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
- if test "X$srcdir" != "X"; then
- BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
- BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
- BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
- BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
- BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
- BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
- else
- BIND9_ISC_BUILDINCLUDE=""
- BIND9_ISCCC_BUILDINCLUDE=""
- BIND9_ISCCFG_BUILDINCLUDE=""
- BIND9_DNS_BUILDINCLUDE=""
- BIND9_LWRES_BUILDINCLUDE=""
- BIND9_BIND9_BUILDINCLUDE=""
- fi
- AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
- BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
- AC_SUBST_FILE(BIND9_MAKE_RULES)
- BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
- . $srcdir/version
- BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}"
- AC_SUBST(BIND9_VERSION)
- if test -z "$ac_configure_args"; then
- BIND9_CONFIGARGS="defaults"
- else
- for a in $ac_configure_args
- do
- BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a"
- done
- fi
- BIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`"
- BIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}"
- AC_SUBST(BIND9_CONFIGARGS)
- AC_SUBST_FILE(LIBISC_API)
- LIBISC_API=$srcdir/lib/isc/api
- AC_SUBST_FILE(LIBISCCC_API)
- LIBISCCC_API=$srcdir/lib/isccc/api
- AC_SUBST_FILE(LIBISCCFG_API)
- LIBISCCFG_API=$srcdir/lib/isccfg/api
- AC_SUBST_FILE(LIBDNS_API)
- LIBDNS_API=$srcdir/lib/dns/api
- AC_SUBST_FILE(LIBBIND9_API)
- LIBBIND9_API=$srcdir/lib/bind9/api
- AC_SUBST_FILE(LIBLWRES_API)
- LIBLWRES_API=$srcdir/lib/lwres/api
- AC_SUBST_FILE(LIBIRS_API)
- LIBIRS_API=$srcdir/lib/irs/api
- #
- # Configure any DLZ drivers.
- #
- # If config.dlz.in selects one or more DLZ drivers, it will set
- # CONTRIB_DLZ to a non-empty value, which will be our clue to
- # build DLZ drivers in contrib.
- #
- # This section has to come after the libtool stuff because it needs to
- # know how to name the driver object files.
- #
- CONTRIB_DLZ=""
- DLZ_DRIVER_INCLUDES=""
- DLZ_DRIVER_LIBS=""
- DLZ_DRIVER_SRCS=""
- DLZ_DRIVER_OBJS=""
- DLZ_SYSTEM_TEST=""
- #
- # Configure support for building a shared library object
- #
- # Even when libtool is available it can't always be relied upon
- # to build an object that can be dlopen()'ed, but this is necessary
- # for building the dlzexternal system test, so we'll try it the
- # old-fashioned way.
- #
- SO="so"
- SO_CFLAGS=""
- SO_LD=""
- SO_TARGETS=""
- AC_ARG_WITH(dlopen,
- [ --with-dlopen=ARG Support dynamically loadable DLZ drivers],
- dlopen="$withval", dlopen="yes")
- if test "$dlopen" = "yes"; then
- AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
- if test "$have_dl" = "yes"; then
- LIBS="-ldl $LIBS"
- fi
- AC_CHECK_FUNCS(dlopen dlclose dlsym,,dlopen=no)
- fi
- if test "$dlopen" = "yes"; then
- case $host in
- *-linux*)
- SO_CFLAGS="-fPIC"
- if test "$have_dl" = "yes"
- then
- SO_LD="${CC} -shared"
- else
- SO_LD="ld -shared"
- fi
- ;;
- *-freebsd*|*-openbsd*|*-netbsd*)
- SO_CFLAGS="-fpic"
- SO_LD="ld -Bshareable -x"
- ;;
- *-solaris*)
- SO_CFLAGS="-KPIC"
- SO_LD="ld -G -z text"
- ;;
- *-hp-hpux*)
- SO=sl
- SO_CFLAGS="+z"
- SO_LD="ld -b"
- ;;
- *)
- SO_CFLAGS="-fPIC"
- ;;
- esac
- if test "X$GCC" = "Xyes"; then
- SO_CFLAGS="-fPIC"
- test -n "$SO_LD" || SO_LD="${CC} -shared"
- fi
- # If we still don't know how to make shared objects, don't make any.
- if test -n "$SO_LD"; then
- SO_TARGETS="\${SO_TARGETS}"
- AC_DEFINE(ISC_DLZ_DLOPEN, 1,
- [Define to allow building of objects for dlopen().])
- fi
- fi
- AC_SUBST(SO)
- AC_SUBST(SO_CFLAGS)
- AC_SUBST(SO_LD)
- AC_SUBST(SO_TARGETS)
- sinclude(contrib/dlz/config.dlz.in)
- AC_MSG_CHECKING(contributed DLZ drivers)
- if test -n "$CONTRIB_DLZ"
- then
- AC_MSG_RESULT(yes)
- DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
- AC_CONFIG_FILES([$DLZ_DRIVER_RULES])
- else
- AC_MSG_RESULT(no)
- DLZ_DRIVER_RULES=/dev/null
- fi
- AC_SUBST(CONTRIB_DLZ)
- AC_SUBST(DLZ_DRIVER_INCLUDES)
- AC_SUBST(DLZ_DRIVER_LIBS)
- AC_SUBST(DLZ_DRIVER_SRCS)
- AC_SUBST(DLZ_DRIVER_OBJS)
- AC_SUBST(DLZ_SYSTEM_TEST)
- AC_SUBST_FILE(DLZ_DRIVER_RULES)
- if test "$cross_compiling" = "yes"; then
- if test -z "$BUILD_CC"; then
- AC_ERROR([BUILD_CC not set])
- fi
- BUILD_CFLAGS="$BUILD_CFLAGS"
- BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
- BUILD_LDFLAGS="$BUILD_LDFLAGS"
- BUILD_LIBS="$BUILD_LIBS"
- else
- BUILD_CC="$CC"
- BUILD_CFLAGS="$CFLAGS"
- BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
- BUILD_LDFLAGS="$LDFLAGS"
- BUILD_LIBS="$LIBS"
- fi
- NEWFLAGS=""
- for e in $BUILD_LDFLAGS ; do
- case $e in
- -L*)
- case $host_os in
- netbsd*)
- ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- freebsd*)
- ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- solaris*)
- ee=`echo $e | sed -e 's%^-L%-R%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- *)
- NEWFLAGS="$NEWFLAGS $e"
- ;;
- esac
- ;;
- *)
- NEWFLAGS="$NEWFLAGS $e"
- ;;
- esac
- done
- BUILD_LDFLAGS="$NEWFLAGS"
- NEWFLAGS=""
- for e in $DNS_GSSAPI_LIBS ; do
- case $e in
- -L*)
- case $host_os in
- netbsd*)
- ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- freebsd*)
- ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- solaris*)
- ee=`echo $e | sed -e 's%^-L%-R%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- *)
- NEWFLAGS="$NEWFLAGS $e"
- ;;
- esac
- ;;
- *)
- NEWFLAGS="$NEWFLAGS $e"
- ;;
- esac
- done
- DNS_GSSAPI_LIBS="$NEWFLAGS"
- NEWFLAGS=""
- for e in $DNS_CRYPTO_LIBS ; do
- case $e in
- -L*)
- case $host_os in
- netbsd*)
- ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- freebsd*)
- ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- solaris*)
- ee=`echo $e | sed -e 's%^-L%-R%'`
- NEWFLAGS="$NEWFLAGS $e $ee"
- ;;
- *)
- NEWFLAGS="$NEWFLAGS $e"
- ;;
- esac
- ;;
- *)
- NEWFLAGS="$NEWFLAGS $e"
- ;;
- esac
- done
- DNS_CRYPTO_LIBS="$NEWFLAGS"
- AC_SUBST(BUILD_CC)
- AC_SUBST(BUILD_CFLAGS)
- AC_SUBST(BUILD_CPPFLAGS)
- AC_SUBST(BUILD_LDFLAGS)
- AC_SUBST(BUILD_LIBS)
- #
- # Commands to run at the end of config.status.
- # Don't just put these into configure, it won't work right if somebody
- # runs config.status directly (which autoconf allows).
- #
- AC_CONFIG_COMMANDS(
- [chmod],
- [chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter])
- #
- # Files to configure. These are listed here because we used to
- # specify them as arguments to AC_OUTPUT. It's (now) ok to move these
- # elsewhere if there's a good reason for doing so.
- #
- AC_CONFIG_FILES([
- make/Makefile
- make/mkdep
- Makefile
- bin/Makefile
- bin/check/Makefile
- bin/confgen/Makefile
- bin/confgen/unix/Makefile
- bin/dig/Makefile
- bin/dnssec/Makefile
- bin/named/Makefile
- bin/named/unix/Makefile
- bin/nsupdate/Makefile
- bin/pkcs11/Makefile
- bin/rndc/Makefile
- bin/tests/Makefile
- bin/tests/atomic/Makefile
- bin/tests/db/Makefile
- bin/tests/dst/Makefile
- bin/tests/hashes/Makefile
- bin/tests/headerdep_test.sh
- bin/tests/master/Makefile
- bin/tests/mem/Makefile
- bin/tests/names/Makefile
- bin/tests/net/Makefile
- bin/tests/rbt/Makefile
- bin/tests/resolver/Makefile
- bin/tests/sockaddr/Makefile
- bin/tests/system/Makefile
- bin/tests/system/conf.sh
- bin/tests/system/dlz/prereq.sh
- bin/tests/system/dlzexternal/Makefile
- bin/tests/system/dlzexternal/ns1/named.conf
- bin/tests/system/filter-aaaa/Makefile
- bin/tests/system/gost/prereq.sh
- bin/tests/system/lwresd/Makefile
- bin/tests/system/rpz/Makefile
- bin/tests/system/tkey/Makefile
- bin/tests/system/tsiggss/Makefile
- bin/tests/tasks/Makefile
- bin/tests/timers/Makefile
- bin/tests/virtual-time/Makefile
- bin/tests/virtual-time/conf.sh
- bin/tools/Makefile
- contrib/check-secure-delegation.pl
- contrib/zone-edit.sh
- doc/Makefile
- doc/arm/Makefile
- doc/doxygen/Doxyfile
- doc/doxygen/Makefile
- doc/doxygen/doxygen-input-filter
- doc/misc/Makefile
- doc/xsl/Makefile
- doc/xsl/isc-docbook-chunk.xsl
- doc/xsl/isc-docbook-html.xsl
- doc/xsl/isc-docbook-latex.xsl
- doc/xsl/isc-manpage.xsl
- isc-config.sh
- lib/Makefile
- lib/bind9/Makefile
- lib/bind9/include/Makefile
- lib/bind9/include/bind9/Makefile
- lib/dns/Makefile
- lib/dns/include/Makefile
- lib/dns/include/dns/Makefile
- lib/dns/include/dst/Makefile
- lib/dns/tests/Makefile
- lib/export/Makefile
- lib/export/dns/Makefile
- lib/export/dns/include/Makefile
- lib/export/dns/include/dns/Makefile
- lib/export/dns/include/dst/Makefile
- lib/export/irs/Makefile
- lib/export/irs/include/Makefile
- lib/export/irs/include/irs/Makefile
- lib/export/isc/$thread_dir/Makefile
- lib/export/isc/$thread_dir/include/Makefile
- lib/export/isc/$thread_dir/include/isc/Makefile
- lib/export/isc/Makefile
- lib/export/isc/include/Makefile
- lib/export/isc/include/isc/Makefile
- lib/export/isc/nls/Makefile
- lib/export/isc/unix/Makefile
- lib/export/isc/unix/include/Makefile
- lib/export/isc/unix/include/isc/Makefile
- lib/export/isccfg/Makefile
- lib/export/isccfg/include/Makefile
- lib/export/isccfg/include/isccfg/Makefile
- lib/export/samples/Makefile
- lib/export/samples/Makefile-postinstall
- lib/irs/Makefile
- lib/irs/include/Makefile
- lib/irs/include/irs/Makefile
- lib/irs/include/irs/netdb.h
- lib/irs/include/irs/platform.h
- lib/isc/$arch/Makefile
- lib/isc/$arch/include/Makefile
- lib/isc/$arch/include/isc/Makefile
- lib/isc/$thread_dir/Makefile
- lib/isc/$thread_dir/include/Makefile
- lib/isc/$thread_dir/include/isc/Makefile
- lib/isc/Makefile
- lib/isc/include/Makefile
- lib/isc/include/isc/Makefile
- lib/isc/include/isc/platform.h
- lib/isc/tests/Makefile
- lib/isc/nls/Makefile
- lib/isc/unix/Makefile
- lib/isc/unix/include/Makefile
- lib/isc/unix/include/isc/Makefile
- lib/isccc/Makefile
- lib/isccc/include/Makefile
- lib/isccc/include/isccc/Makefile
- lib/isccfg/Makefile
- lib/isccfg/include/Makefile
- lib/isccfg/include/isccfg/Makefile
- lib/lwres/Makefile
- lib/lwres/include/Makefile
- lib/lwres/include/lwres/Makefile
- lib/lwres/include/lwres/netdb.h
- lib/lwres/include/lwres/platform.h
- lib/lwres/man/Makefile
- lib/lwres/unix/Makefile
- lib/lwres/unix/include/Makefile
- lib/lwres/unix/include/lwres/Makefile
- lib/tests/Makefile
- lib/tests/include/Makefile
- lib/tests/include/tests/Makefile
- unit/Makefile
- unit/unittest.sh
- ])
- #
- # Do it
- #
- AC_OUTPUT
- #
- # Now that the Makefiles exist we can ensure that everything is rebuilt.
- #
- AC_ARG_WITH(make-clean,
- [ --with-make-clean Run "make clean" at end of configure [[yes|no]].],
- make_clean="$withval", make_clean="yes")
- case "$make_clean" in
- yes)
- make clean
- ;;
- esac
- if test "X$USE_OPENSSL" = "X"; then
- cat << \EOF
- BIND is being built without OpenSSL. This means it will not have DNSSEC support.
- EOF
- fi
- if test "X$OPENSSL_WARNING" != "X"; then
- cat << \EOF
- WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- WARNING WARNING
- WARNING Your OpenSSL crypto library may be vulnerable to WARNING
- WARNING one or more of the the following known security WARNING
- WARNING flaws: WARNING
- WARNING WARNING
- WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING
- WARNING CVE-2006-2940. WARNING
- WARNING WARNING
- WARNING It is recommended that you upgrade to OpenSSL WARNING
- WARNING version 0.9.8d/0.9.7l (or greater). WARNING
- WARNING WARNING
- WARNING You can disable this warning by specifying: WARNING
- WARNING WARNING
- WARNING --disable-openssl-version-check WARNING
- WARNING WARNING
- WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- EOF
- fi
- # Tell Emacs to edit this file in shell mode.
- # Local Variables:
- # mode: sh
- # End: