configure.in revision c0ef1acf49b383d8b6d3742cb963f7d08f5762e3
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.71 $)
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"
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 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(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_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)
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"
else
BIND9_ISC_BUILDINCLUDE=""
BIND9_DNS_BUILDINCLUDE=""
BIND9_OMAPI_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
)