configure.in revision afb4ad8f988591bccae0ee2ac73b2fef5d969366
dnl Copyright (C) 1998, 1999 Internet Software Consortium.
dnl
dnl Permission to use, copy, modify, and distribute this software for any
dnl purpose with or without fee is hereby granted, provided that the above
dnl copyright notice and this permission notice appear in all copies.
dnl
dnl THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
dnl ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
dnl OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
dnl CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
dnl DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
dnl PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
dnl ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
dnl SOFTWARE.
AC_REVISION($Revision: 1.84 $)
AC_PREREQ(2.13)
AC_INIT(lib/dns/name.c)
AC_CONFIG_HEADER(config.h)
AC_CANONICAL_HOST
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AC_PROG_INSTALL
STD_CINCLUDES=""
STD_CDEFINES=""
STD_CWARNINGS=""
AC_SUBST(STD_CINCLUDES)
AC_SUBST(STD_CDEFINES)
AC_SUBST(STD_CWARNINGS)
AC_PATH_PROG(AR, ar)
ARFLAGS="cruv"
AC_SUBST(AR)
AC_SUBST(ARFLAGS)
dnl
dnl On these hosts, we really want to use cc, not gcc, even if it is
dnl found. The gcc that these systems have will not correctly handle
dnl pthreads.
dnl
dnl However, if the user sets $CC to be something, let that override
dnl our change.
dnl
if test "X$CC" = "X" ; then
case "$host" in
*-dec-osf*)
CC="cc"
;;
*-sun-solaris*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
case "$ac_dir" in
# 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
dnl
dnl NetBSD has two alternative pthreads implementations. Make the
dnl user choose one by saying --with-mit-pthreads or --with-ptl2
dnl if necessary.
dnl
case "$host" in
*-netbsd*)
CC="gcc"
AC_MSG_CHECKING(which thread library to use)
AC_ARG_WITH(mit-pthreads,
[ --with-mit-pthreads use the mit-pthreads thread library],
use_mit_pthreads="$withval", use_mit_pthreads="no")
AC_ARG_WITH(ptl2,
[ --with-ptl2 use the ptl2 thread library],
use_ptl2="$withval", use_ptl2="no")
dnl If user did not choose a thread library explicitly,
dnl try to choose one automatically. This will work when
dnl exactly one library is installed.
case "$use_mit_pthreads+$use_ptl2" in
no+no)
if test -d /usr/pkg/pthreads
then
use_mit_pthreads="yes"
fi
if test -d /usr/pkg/PTL
then
use_ptl2="yes"
fi
;;
esac
case "$use_mit_pthreads+$use_ptl2" in
yes+no)
AC_MSG_RESULT(mit-pthreads)
pkg="/usr/pkg/pthreads"
lib2="-lpthread -lm -lgcc -lpthread"
LIBS="$lib1 $lib2 $LIBS"
CPPFLAGS="-I$pkg/include $CPPFLAGS"
STD_CINCLUDES="-I$pkg/include"
;;
no+yes)
AC_MSG_RESULT(PTL2)
dnl pkg="/usr/pkg/PTL"
dnl LIBS="-L/usr/pkg/lib -lPTL $LIBS"
dnl STD_CINCLUDES="-nostdinc -idirafter $pkg/include"
CC=ptlgcc
;;
*)
AC_MSG_ERROR([no thread library.
Please choose a thread library using one of
configure --with-mit-pthreads
configure --with-ptl2
])
;;
esac
;;
esac
AC_PROG_CC
AC_PROG_YACC
AC_HEADER_STDC
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_CHECK_LIB(pthread, pthread_create,,
AC_CHECK_LIB(pthread, __pthread_create)
AC_CHECK_LIB(pthread, __pthread_create_system)
)
dnl For FreeBSD which has no libpthread but instead libc_r
if test "$ac_cv_lib_pthread" != "yes"; then
AC_CHECK_LIB(c_r, pthread_create)
fi
dnl
dnl We'd like to use sigwait() too
dnl
AC_CHECK_LIB(pthread, sigwait,
AC_DEFINE(HAVE_SIGWAIT),
AC_CHECK_LIB(pthread, _Psigwait,
AC_DEFINE(HAVE_SIGWAIT),)
)
dnl
dnl Make sure we get the right sigwait() semantics...
dnl
case "$host" in
*-sun-solaris*)
AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
;;
esac
dnl
dnl NLS
dnl
AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
dnl
dnl BSDI 3.1 needs pthread_init() to be called before certain pthreads
dnl calls. LinuxThreads requires some changes to the way we deal with
dnl signals.
dnl
case "$host" in
*-bsdi3.1*)
AC_DEFINE(NEED_PTHREAD_INIT)
;;
*-linux*)
AC_DEFINE(HAVE_LINUXTHREADS)
;;
esac
dnl
dnl -lxnet buys us one big porting headache... standards, gotta love 'em.
dnl
dnl AC_CHECK_LIB(xnet, socket, ,
dnl AC_CHECK_LIB(socket, socket)
dnl AC_CHECK_LIB(nsl, inet_ntoa)
dnl )
dnl
dnl Use this for now, instead:
dnl
case "$host" in
mips-sgi-irix*)
;;
*)
AC_CHECK_LIB(socket, socket)
AC_CHECK_LIB(nsl, inet_ntoa)
;;
esac
MKDEPCC="$CC"
MKDEPCFLAGS="-M"
if test "X$GCC" = "Xyes"; then
STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes"
case "$host" in
*-sun-solaris*)
LIBS="$LIBS -lthread"
;;
esac
else
case "$host" in
*-dec-osf*)
CC="$CC -pthread"
MKDEPCC="$CC"
;;
*-sun-solaris*)
CC="$CC -mt"
MKDEPCC="$CC"
MKDEPCFLAGS="-xM"
;;
*-hp-hpux*)
CC="$CC -Ae -z +w1"
MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
;;
esac
fi
AC_SUBST(MKDEPCC)
AC_SUBST(MKDEPCFLAGS)
AC_SUBST(MKDEPPROG)
dnl
dnl Networking specifics.
dnl
case "$host" in
*-dec-osf*)
dnl Turn on 4.4BSD style sa_len support.
AC_DEFINE(_SOCKADDR_LEN)
;;
esac
dnl
dnl Look for a 4.4BSD-style sa_len member in struct sockaddr.
dnl
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"],
[AC_MSG_RESULT(no)
ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"])
AC_SUBST(ISC_PLATFORM_HAVESALEN)
dnl
dnl Look for a 4.4BSD or 4.3BSD struct msghdr
dnl
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)
dnl
dnl Look for in_port_t.
dnl
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)
dnl
dnl Check for addrinfo
dnl
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_MSG_RESULT(no)
ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"])
AC_SUBST(ISC_LWRES_NEEDADDRINFO)
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_SETNETENTINT)
AC_MSG_CHECKING(for gethostbyadd(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"],
[ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
dnl
dnl Look for a sysctl call to get the list of network interfaces.
dnl
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)])
dnl
dnl GNU libtool support
dnl
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
;;
*)
O=o
A=a
LIBTOOL=
AC_SUBST(LIBTOOL)
;;
esac
AC_SUBST(O)
AC_SUBST(A)
dnl
dnl IPv6
dnl
AC_ARG_ENABLE(ipv6,
[ --enable-ipv6 use IPv6 [default=autodetect]])
dnl
dnl We do the IPv6 compilation checking after libtool so that we can put
dnl the right suffix on the files.
dnl
case "$enable_ipv6" in
yes|''|autodetect)
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])
;;
no)
found_ipv6=no
;;
esac
case "$found_ipv6" in
yes)
ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1",
;;
no)
ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
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(ISC_IPV6_H)
AC_SUBST(ISC_IPV6_O)
AC_SUBST(ISC_ISCIPV6_O)
AC_SUBST(ISC_IPV6_C)
dnl
dnl IPv6 support provided via Kame
dnl
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="$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
dnl
dnl Check for network functions that are often missing. We do this
dnl after the libtool checking, so we can put the right suffix on
dnl the files.
dnl
AC_CHECK_FUNC(inet_ntop,
[ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
[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_CHECK_FUNC(inet_pton,
[ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
[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_CHECK_FUNC(inet_aton,
[ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"],
[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_CHECK_FUNC(strsep,
[ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
[ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS strsep.$O"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS strsep.c"
ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
AC_CHECK_FUNC(vsnprintf,
[ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"],
[ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS print.$O"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS print.c"
ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"])
AC_SUBST(ISC_PLATFORM_NEEDNTOP)
AC_SUBST(ISC_PLATFORM_NEEDPTON)
AC_SUBST(ISC_PLATFORM_NEEDATON)
AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
AC_SUBST(ISC_EXTRA_OBJS)
AC_SUBST(ISC_EXTRA_SRCS)
dnl
dnl Security Stuff
dnl
AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT))
AC_CHECK_HEADERS(linux/capability.h)
dnl
dnl Substitutions
dnl
AC_SUBST(BIND9_TOP_BUILDDIR)
BIND9_TOP_BUILDDIR=`pwd`
AC_SUBST(BIND9_ISC_BUILDINCLUDE)
AC_SUBST(BIND9_DNS_BUILDINCLUDE)
AC_SUBST(BIND9_OMAPI_BUILDINCLUDE)
AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
if test "X$srcdir" != "X"; then
BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
BIND9_OMAPI_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/omapi/include"
BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
else
BIND9_ISC_BUILDINCLUDE=""
BIND9_DNS_BUILDINCLUDE=""
BIND9_OMAPI_BUILDINCLUDE=""
BIND9_LWRES_BUILDINCLUDE=""
fi
AC_SUBST_FILE(BIND9_INCLUDES)
BIND9_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
AC_SUBST_FILE(BIND9_MAKE_RULES)
BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
AC_SUBST_FILE(BIND9_VERSION)
BIND9_VERSION=$srcdir/version
AC_SUBST_FILE(LIBISC_API)
LIBISC_API=$srcdir/lib/isc/api
AC_SUBST_FILE(LIBDNS_API)
LIBDNS_API=$srcdir/lib/dns/api
AC_SUBST_FILE(LIBOMAPI_API)
LIBOMAPI_API=$srcdir/lib/omapi/api
AC_OUTPUT(
Makefile
)