2547 lines
66 KiB
Plaintext
2547 lines
66 KiB
Plaintext
# Copyright (C) 2004-2007 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.355.18.71 $)
|
|
|
|
AC_INIT(lib/dns/name.c)
|
|
AC_PREREQ(2.59)
|
|
|
|
AC_CONFIG_HEADER(config.h)
|
|
AC_CONFIG_SUBDIRS(lib/bind)
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_RANLIB
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
|
|
AC_SUBST(STD_CINCLUDES)
|
|
AC_SUBST(STD_CDEFINES)
|
|
AC_SUBST(STD_CWARNINGS)
|
|
AC_SUBST(CCOPT)
|
|
|
|
#
|
|
# 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() subsitutions 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.
|
|
#
|
|
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 avaliable 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__"
|
|
;;
|
|
esac
|
|
|
|
AC_HEADER_STDC
|
|
|
|
AC_CHECK_HEADERS(fcntl.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_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
|
|
|
|
#
|
|
# 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, )])
|
|
|
|
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 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 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
|
|
case "$use_openssl" in
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
DST_OPENSSL_INC=""
|
|
USE_OPENSSL=""
|
|
;;
|
|
auto)
|
|
DST_OPENSSL_INC=""
|
|
USE_OPENSSL=""
|
|
AC_MSG_RESULT(not found)
|
|
;;
|
|
*)
|
|
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
|
|
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
|
|
CFLAGS="$saved_cflags"
|
|
LIBS="$saved_libs"
|
|
;;
|
|
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)
|
|
DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS"
|
|
|
|
#
|
|
# was --with-gssapi specified?
|
|
#
|
|
#AC_MSG_CHECKING(for GSSAPI library)
|
|
#AC_ARG_WITH(gssapi,
|
|
#[ --with-gssapi=PATH Specify path for system-supplied GSSAPI],
|
|
# use_gssapi="$withval", use_gssapi="no")
|
|
#
|
|
#case "$use_gssapi" in
|
|
# no)
|
|
# USE_GSSAPI=''
|
|
# DST_GSSAPI_INC=''
|
|
# DNS_GSSAPI_LIBS=''
|
|
# AC_MSG_RESULT(not specified)
|
|
# ;;
|
|
# yes)
|
|
# AC_MSG_ERROR([--with-gssapi must specify a path])
|
|
# ;;
|
|
# *)
|
|
# USE_GSSAPI='-DGSSAPI'
|
|
# DST_GSSAPI_INC="-I$use_gssapi/include"
|
|
# DNS_GSSAPI_LIBS="-L$use_gssapi/lib -lgssapi_krb5"
|
|
# AC_MSG_RESULT(using gssapi from $use_gssapi/lib and $use_gssapi/include)
|
|
# ;;
|
|
#esac
|
|
|
|
USE_GSSAPI=''
|
|
DST_GSSAPI_INC=''
|
|
DNS_GSSAPI_LIBS=''
|
|
|
|
AC_SUBST(USE_GSSAPI)
|
|
AC_SUBST(DST_GSSAPI_INC)
|
|
DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_GSSAPI_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"
|
|
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
|
|
ALWAYS_DEFINES=""
|
|
fi
|
|
|
|
AC_SUBST(ALWAYS_DEFINES)
|
|
AC_SUBST(ISC_PLATFORM_USETHREADS)
|
|
ISC_THREAD_DIR=$thread_dir
|
|
AC_SUBST(ISC_THREAD_DIR)
|
|
|
|
#
|
|
# 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=-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)
|
|
# AC_CHECK_LIB(nsl, inet_ntoa)
|
|
# )
|
|
#
|
|
# Use this for now, instead:
|
|
#
|
|
case "$host" in
|
|
mips-sgi-irix*)
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(socket, socket)
|
|
AC_CHECK_LIB(nsl, inet_ntoa)
|
|
;;
|
|
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)
|
|
|
|
#
|
|
# GNU libtool support
|
|
#
|
|
AC_ARG_WITH(libtool,
|
|
[ --with-libtool use GNU libtool (following indented options supported)],
|
|
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'
|
|
LIBTOOL_MODE_INSTALL='--mode=install'
|
|
LIBTOOL_MODE_LINK='--mode=link'
|
|
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
|
|
|
|
#
|
|
# 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 libbind?
|
|
#
|
|
AC_ARG_ENABLE(libbind,
|
|
[ --enable-libbind build libbind [default=no]])
|
|
|
|
case "$enable_libbind" in
|
|
yes)
|
|
LIBBIND=lib/bind
|
|
AC_SUBST(LIBBIND)
|
|
;;
|
|
no|'')
|
|
;;
|
|
esac
|
|
|
|
|
|
#
|
|
# Here begins a very long section to determine the system's networking
|
|
# capabilities. The order of the tests is signficant.
|
|
#
|
|
|
|
#
|
|
# 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 needed)
|
|
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"])
|
|
|
|
|
|
# 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 target platform has working inet_pton)
|
|
ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
|
|
[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_MSG_RESULT(assuming target platform has working inet_pton)
|
|
ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"])
|
|
|
|
AC_MSG_CHECKING([for inet_aton])
|
|
AC_TRY_LINK([
|
|
#include <sys/types.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/inet.h>],
|
|
[struct in_addr in; inet_aton(0, &in); return (0);],
|
|
[AC_MSG_RESULT(yes)
|
|
ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"],
|
|
|
|
[AC_MSG_RESULT(no)
|
|
ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_aton.$O"
|
|
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_aton.c"
|
|
ISC_PLATFORM_NEEDATON="#define ISC_PLATFORM_NEEDATON 1"])
|
|
|
|
AC_SUBST(ISC_PLATFORM_NEEDNTOP)
|
|
AC_SUBST(ISC_PLATFORM_NEEDPTON)
|
|
AC_SUBST(ISC_PLATFORM_NEEDATON)
|
|
|
|
#
|
|
# 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"
|
|
AC_DEFINE(HAVE_ADDRINFO)],
|
|
[AC_MSG_RESULT(no)
|
|
ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"])
|
|
AC_SUBST(ISC_LWRES_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)
|
|
|
|
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_ARG_ENABLE(getifaddrs,
|
|
[ --enable-getifaddrs Enable the use of getifaddrs() [[yes|no|glibc]].
|
|
glibc: Use getifaddrs() in glibc if you know it supports IPv6.],
|
|
want_getifaddrs="$enableval", want_getifaddrs="yes")
|
|
|
|
case $want_getifaddrs in
|
|
yes|glibc)
|
|
#
|
|
# Do we have getifaddrs() ?
|
|
#
|
|
case $host in
|
|
*-linux*)
|
|
# Some recent versions of glibc support getifaddrs() which does not
|
|
# provide AF_INET6 addresses while the function provided by the USAGI
|
|
# project handles the AF_INET6 case correctly. We need to avoid
|
|
# using the former but prefer the latter unless overridden by
|
|
# --enable-getifaddrs=glibc.
|
|
if test $want_getifaddrs = glibc
|
|
then
|
|
AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
|
|
else
|
|
save_LIBS="$LIBS"
|
|
LIBS="-L/usr/local/v6/lib $LIBS"
|
|
AC_CHECK_LIB(inet6, getifaddrs,
|
|
LIBS="$LIBS -linet6"
|
|
AC_DEFINE(HAVE_GETIFADDRS),
|
|
LIBS=${save_LIBS})
|
|
fi
|
|
;;
|
|
*)
|
|
AC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
|
|
;;
|
|
esac
|
|
;;
|
|
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)
|
|
|
|
# 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 inconsistant 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
|
|
#
|
|
AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT))
|
|
AC_ARG_ENABLE(linux-caps,
|
|
[ --disable-linux-caps disable linux capabilities])
|
|
case "$enable_linux_caps" in
|
|
yes|'')
|
|
AC_CHECK_HEADERS(linux/capability.h)
|
|
;;
|
|
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 decarartion)
|
|
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)])
|
|
],[
|
|
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
|
|
AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming long long int)])
|
|
])
|
|
AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
|
|
|
|
#
|
|
# 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"
|
|
|
|
#
|
|
# 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.10)
|
|
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)
|
|
|
|
#
|
|
# 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)
|
|
use_atomic=yes
|
|
;;
|
|
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_TRY_RUN([
|
|
main() {
|
|
exit((sizeof(void *) == 8) ? 0 : 1);
|
|
}
|
|
],
|
|
[arch=x86_64],
|
|
[arch=x86_32],
|
|
[arch=x86_32])
|
|
;;
|
|
x86_64-*)
|
|
arch=x86_64
|
|
;;
|
|
alpha*-*)
|
|
arch=alpha
|
|
;;
|
|
powerpc-*)
|
|
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
|
|
|
|
AC_SUBST(ISC_PLATFORM_HAVEXADD)
|
|
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)
|
|
|
|
#
|
|
# 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)
|
|
|
|
#
|
|
# 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. Guessing where it might be found, based on where SGML stuff
|
|
# lives on some systems. FreeBSD is the only one I'm sure of at the
|
|
# moment.
|
|
#
|
|
|
|
docbook_xsl_trees="/usr/pkg/share/xsl /usr/local/share/xsl /usr/share/xsl"
|
|
|
|
#
|
|
# Look for stylesheets we need.
|
|
#
|
|
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, docbook/html/docbook.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, docbook/xhtml/docbook.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, docbook/manpages/docbook.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, docbook/html/chunk.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, docbook/xhtml/chunk.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, docbook/html/chunktoc.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, docbook/xhtml/chunktoc.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, docbook/html/maketoc.xsl, $docbook_xsl_trees)
|
|
NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, docbook/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)
|
|
|
|
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}${RELEASETYPE}${RELEASEVER}"
|
|
AC_SUBST(BIND9_VERSION)
|
|
|
|
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
|
|
|
|
#
|
|
# Configure any DLZ drivers.
|
|
#
|
|
# If config.dlz.in selects one or more DLZ drivers, it will set
|
|
# USE_DLZ to a non-empty value, which will be our clue to
|
|
# enable the DLZ core functions.
|
|
#
|
|
# This section has to come after the libtool stuff because it needs to
|
|
# know how to name the driver object files.
|
|
#
|
|
|
|
USE_DLZ=""
|
|
DLZ_DRIVER_INCLUDES=""
|
|
DLZ_DRIVER_LIBS=""
|
|
DLZ_DRIVER_SRCS=""
|
|
DLZ_DRIVER_OBJS=""
|
|
|
|
sinclude(contrib/dlz/config.dlz.in)
|
|
|
|
AC_MSG_CHECKING(for DLZ)
|
|
|
|
if test -n "$USE_DLZ"
|
|
then
|
|
AC_MSG_RESULT(yes)
|
|
USE_DLZ="-DDLZ $USE_DLZ"
|
|
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(USE_DLZ)
|
|
AC_SUBST(DLZ_DRIVER_INCLUDES)
|
|
AC_SUBST(DLZ_DRIVER_LIBS)
|
|
AC_SUBST(DLZ_DRIVER_SRCS)
|
|
AC_SUBST(DLZ_DRIVER_OBJS)
|
|
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
|
|
|
|
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])
|
|
|
|
#
|
|
# 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([
|
|
Makefile
|
|
make/Makefile
|
|
make/mkdep
|
|
lib/Makefile
|
|
lib/isc/Makefile
|
|
lib/isc/include/Makefile
|
|
lib/isc/include/isc/Makefile
|
|
lib/isc/include/isc/platform.h
|
|
lib/isc/unix/Makefile
|
|
lib/isc/unix/include/Makefile
|
|
lib/isc/unix/include/isc/Makefile
|
|
lib/isc/nls/Makefile
|
|
lib/isc/$thread_dir/Makefile
|
|
lib/isc/$thread_dir/include/Makefile
|
|
lib/isc/$thread_dir/include/isc/Makefile
|
|
lib/isc/$arch/Makefile
|
|
lib/isc/$arch/include/Makefile
|
|
lib/isc/$arch/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/dns/Makefile
|
|
lib/dns/include/Makefile
|
|
lib/dns/include/dns/Makefile
|
|
lib/dns/include/dst/Makefile
|
|
lib/bind9/Makefile
|
|
lib/bind9/include/Makefile
|
|
lib/bind9/include/bind9/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
|
|
bin/Makefile
|
|
bin/check/Makefile
|
|
bin/named/Makefile
|
|
bin/named/unix/Makefile
|
|
bin/rndc/Makefile
|
|
bin/rndc/unix/Makefile
|
|
bin/dig/Makefile
|
|
bin/nsupdate/Makefile
|
|
bin/tests/Makefile
|
|
bin/tests/names/Makefile
|
|
bin/tests/master/Makefile
|
|
bin/tests/rbt/Makefile
|
|
bin/tests/db/Makefile
|
|
bin/tests/tasks/Makefile
|
|
bin/tests/timers/Makefile
|
|
bin/tests/dst/Makefile
|
|
bin/tests/mem/Makefile
|
|
bin/tests/net/Makefile
|
|
bin/tests/sockaddr/Makefile
|
|
bin/tests/system/Makefile
|
|
bin/tests/system/conf.sh
|
|
bin/tests/system/lwresd/Makefile
|
|
bin/tests/system/tkey/Makefile
|
|
bin/tests/headerdep_test.sh
|
|
bin/dnssec/Makefile
|
|
doc/Makefile
|
|
doc/arm/Makefile
|
|
doc/misc/Makefile
|
|
isc-config.sh
|
|
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
|
|
])
|
|
|
|
#
|
|
# Do it
|
|
#
|
|
|
|
AC_OUTPUT
|
|
|
|
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:
|