configure.in revision 37aa91031830d2fc428331378f089169eb3e6dc2
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# Copyright (C) 1998-2001 Internet Software Consortium.
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews#
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# Permission to use, copy, modify, and distribute this software for any
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# purpose with or without fee is hereby granted, provided that the above
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# copyright notice and this permission notice appear in all copies.
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews#
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrewsdnl
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
37d266d288410d1ead241c02a8a1dbcb0160be46Michael Graffesyscmd([sed "s/^/# /" COPYRIGHT])dnl
37d266d288410d1ead241c02a8a1dbcb0160be46Michael GraffAC_DIVERT_POP()dnl
37d266d288410d1ead241c02a8a1dbcb0160be46Michael Graff
37d266d288410d1ead241c02a8a1dbcb0160be46Michael GraffAC_REVISION($Revision: 1.270 $)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_INIT(lib/dns/name.c)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_PREREQ(2.13)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_CONFIG_HEADER(config.h)
37d266d288410d1ead241c02a8a1dbcb0160be46Michael GraffAC_CONFIG_SUBDIRS(lib/bind)
37d266d288410d1ead241c02a8a1dbcb0160be46Michael Graff
37d266d288410d1ead241c02a8a1dbcb0160be46Michael GraffAC_CANONICAL_HOST
37d266d288410d1ead241c02a8a1dbcb0160be46Michael Graff
37d266d288410d1ead241c02a8a1dbcb0160be46Michael GraffAC_PROG_MAKE_SET
d0783e645b149fcea7e7f22cd43f87b5d188b055Mark AndrewsAC_PROG_RANLIB
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_PROG_INSTALL
d0783e645b149fcea7e7f22cd43f87b5d188b055Mark Andrews
d0783e645b149fcea7e7f22cd43f87b5d188b055Mark AndrewsAC_SUBST(STD_CINCLUDES)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(STD_CDEFINES)
d0783e645b149fcea7e7f22cd43f87b5d188b055Mark AndrewsAC_SUBST(STD_CWARNINGS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(CCOPT)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_PATH_PROG(AR, ar)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsARFLAGS="cruv"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(AR)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(ARFLAGS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# The POSIX ln(1) program. Non-POSIX systems may substitute
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# "copy" or something.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsLN=ln
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(LN)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase "$AR" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews "")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR([
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsar program not found. Please fix your PATH to include the directory in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewswhich ar resides, or set AR in the environment with the full path to ar.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Etags.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark AndrewsAC_PATH_PROGS(ETAGS, etags emacs-etags)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# GNU emacs etags, and it requires the -L flag.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsif test "X$ETAGS" != "X"; then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_CHECKING(for Exuberant Ctags etags)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ETAGS="$ETAGS -L"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews else
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews fi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsfi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(ETAGS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Perl is optional; it is used only by some of the system test scripts.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_PATH_PROGS(PERL, perl5 perl)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(PERL)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Special processing of paths depending on whether --prefix,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# --sysconfdir or --localstatedir arguments were given. What's
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# desired is some compatability with the way previous versions
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# of BIND built; they defaulted to /usr/local for most parts of
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# the installation, but named.boot/named.conf was in /etc
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# and named.pid was in /var/run.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# So ... if none of --prefix, --sysconfdir or --localstatedir are
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# specified, set things up that way. If --prefix is given, use
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# it for sysconfdir and localstatedir the way configure normally
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# would. To change the prefix for everything but leave named.conf
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# in /etc or named.pid in /var/run, then do this the usual configure way:
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# ./configure --prefix=/somewhere --sysconfdir=/etc
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# ./configure --prefix=/somewhere --localstatedir=/var
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# To put named.conf and named.pid in /usr/local with everything else,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# set the prefix explicitly to /usr/local even though that's the default:
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# ./configure --prefix=/usr/local
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase "$prefix" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews NONE)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$sysconfdir" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews '${prefix}/etc')
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews sysconfdir=/etc
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$localstatedir" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews '${prefix}/var')
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews localstatedir=/var
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Make sure INSTALL uses an absolute path, else it will be wrong in all
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Makefiles, since they use make/rules.in and INSTALL will be adjusted by
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# configure based on the location of the file where it is substituted.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# subdirectory of install-sh, This relative path will be wrong for all
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# directories more than one level down from install-sh.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase "$INSTALL" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews /*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Not all systems have dirname.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews changequote({, })
6add3af8397580475ab9fa10ac8c1269465cff87Mark Andrews ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
6add3af8397580475ab9fa10ac8c1269465cff87Mark Andrews changequote([, ])
6add3af8397580475ab9fa10ac8c1269465cff87Mark Andrews
6add3af8397580475ab9fa10ac8c1269465cff87Mark Andrews ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews test "$ac_dir" = "$ac_prog" && ac_dir=.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews INSTALL="$ac_dir/$ac_prog"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews#
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# On these hosts, we really want to use cc, not gcc, even if it is
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# found. The gcc that these systems have will not correctly handle
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# pthreads.
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# However, if the user sets $CC to be something, let that override
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# our change.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsif test "X$CC" = "X" ; then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$host" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-dec-osf*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="cc"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-solaris*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Use Sun's cc if it is available, but watch
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # out for /usr/ucb/cc; it will never be the right
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # compiler to use.
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews #
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews # If setting CC here fails, the AC_PROG_CC done
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews # below might still find gcc.
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews for ac_dir in $PATH; do
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews test -z "$ac_dir" && ac_dir=.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$ac_dir" in
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews /usr/ucb)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # exclude
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews if test -f "$ac_dir/cc"; then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="$ac_dir/cc"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews break
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews fi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews done
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews IFS="$ac_save_ifs"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews *-hp-hpux*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="cc"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews mips-sgi-irix*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="cc"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsfi
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_PROG_CC
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_HEADER_STDC
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h sys/sockio.h sys/select.h)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_C_CONST
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_C_INLINE
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# UnixWare 7.1.1 with the feature supplement to the UDK compiler
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# is reported to not support "static inline" (RT #1212).
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_MSG_CHECKING(for static inline breakage)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_TRY_COMPILE(, [
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews foo1();
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews }
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews static inline int foo1() {
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews return 0;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews }
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews static inline int foo2() {
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews return foo1();
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews [AC_MSG_RESULT(no)],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews [AC_MSG_RESULT(yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(inline, )])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_TYPE_SIZE_T
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_HEADER_TIME
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_MSG_CHECKING(for long long)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_TRY_COMPILE([],[long long i = 0; return (0);],
ea023072092112a831ca7c2943387ccbb422a3f2Mark Andrews [AC_MSG_RESULT(yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews [AC_MSG_RESULT(no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark AndrewsAC_SUBST(ISC_PLATFORM_HAVELONGLONG)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews#
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# check if we need to #include sys/select.h explicitly
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrewscase $ac_cv_header_unistd_h in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsyes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_MSG_CHECKING(if unistd.h defines fd_set)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_TRY_COMPILE([
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#include <unistd.h>],
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews[fd_set read_set; return (0);],
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews [AC_MSG_RESULT(yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews [AC_MSG_RESULT(no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case ac_cv_header_sys_select_h in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR([need either working unistd.h or sys/select.h])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsno)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case ac_cv_header_sys_select_h in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR([need either unistd.h or sys/select.h])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Find the machine's endian flavor.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark AndrewsAC_C_BIGENDIAN
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews#
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# was --with-openssl specified?
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_MSG_CHECKING(for compatible OpenSSL library)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_ARG_WITH(openssl,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews[ --with-openssl=PATH Specify path for system-supplied openssl
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews (required for DNSSEC)],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_openssl="$withval", use_openssl="no")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# If the user didn't specify where openssl is, and we didn't find or it
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# is incompatible with our code, use our internal one.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# XXX This appears to assume that the user specified path is correct,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# and does no checking.
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase "$use_openssl" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews DST_OPENSSL_INC=""
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews USE_OPENSSL=""
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR([--with-openssl must specify a path])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews USE_OPENSSL='-DOPENSSL'
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews DST_OPENSSL_INC="-L$use_openssl/include"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews AC_MSG_RESULT(using openssl from $use_openssl/lib and $use_openssl/include)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# This would include the system openssl path (and linker options to use
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# it as needed) if it is found.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(DST_OPENSSL_INC)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(DNS_OPENSSL_LIBS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(USE_OPENSSL)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# was --with-gssapi specified?
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#AC_MSG_CHECKING(for GSSAPI library)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#AC_ARG_WITH(gssapi,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#[ --with-gssapi=PATH Specify path for system-supplied GSSAPI],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# use_gssapi="$withval", use_gssapi="no")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#case "$use_gssapi" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# USE_GSSAPI=''
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# DST_GSSAPI_INC=''
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# DNS_GSSAPI_LIBS=''
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# AC_MSG_RESULT(not specified)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# AC_MSG_ERROR([--with-gssapi must specify a path])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# USE_GSSAPI='-DGSSAPI'
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# DST_GSSAPI_INC="-I$use_gssapi/include"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# DNS_GSSAPI_LIBS="-L$use_gssapi/lib -lgssapi_krb5"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# AC_MSG_RESULT(using gssapi from $use_gssapi/lib and $use_gssapi/include)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsUSE_GSSAPI=''
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsDST_GSSAPI_INC=''
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsDNS_GSSAPI_LIBS=''
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(USE_GSSAPI)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(DST_GSSAPI_INC)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(DNS_GSSAPI_LIBS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# was --with-randomdev specified?
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_MSG_CHECKING(for random device)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_ARG_WITH(randomdev,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews[ --with-randomdev=PATH Specify path for random device],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_randomdev="$withval", use_randomdev="unspec")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase "$use_randomdev" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews unspec)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$host" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-openbsd*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews devrandom=/dev/srandom
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews devrandom=/dev/random
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_FILE($devrandom,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews "$devrandom"),)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR([--with-randomdev must specify a path])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(disabled)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(using "$use_randomdev")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Begin pthreads checking.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# First, decide whether to use multithreading or not.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Enable multithreading by default on systems where it is known
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# to work well, and where debugging of multithreaded programs
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews# is supported.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_MSG_CHECKING(whether to build with thread support)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase $host in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-dec-osf*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=true ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews[*-solaris-2[0-6]])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Thread signals are broken on Solaris 2.6; they are sometimes
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # delivered to the wrong thread.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-solaris-2*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=true ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-ibm-aix*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=true ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-hp-hpux*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=true ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-sgi-irix*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=true ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-sco-sysv*uw*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # UnixWare
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-netbsd*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Socket I/O optimizations introduced in 9.2 expose a
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # bug in unproven-pthreads; see PR #12650
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-openbsd*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # OpenBSD users have reported that named dumps core on
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # startup when built with threads.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-freebsd*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-bsdi*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Thread signals do not appear to work reliably on BSDI.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*-linux*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Threads are disabled on Linux by default because most
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Linux kernels produce unusable core dumps from multithreaded
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # programs, and because of limitations in setuid().
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=false ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_ARG_ENABLE(threads,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews [ --enable-threads enable multithreading])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase "$enable_threads" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_threads=true
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews no)
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews use_threads=false
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews '')
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Use system-dependent default
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR([--enable-threads takes yes or no])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsesac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsif $use_threads
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsthen
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewselse
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsfi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsif $use_threads
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsthen
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Search for / configure pthreads in a system-dependent fashion.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$host" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-netbsd*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # NetBSD has multiple pthreads implementations. The
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # recommended one to use is "unproven-pthreads". The
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # older "mit-pthreads" may also work on some NetBSD
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # versions. The PTL2 thread library does not
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # currently work with bind9, but can be chosen with
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # the --with-ptl2 option for those who wish to
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # experiment with it.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="gcc"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_CHECKING(which NetBSD thread library to use)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_ARG_WITH(ptl2,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews[ --with-ptl2 on NetBSD, use the ptl2 thread library (experimental)],
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews use_ptl2="$withval", use_ptl2="no")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews : ${LOCALBASE:=/usr/pkg}
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews if test "X$use_ptl2" = "Xyes"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(PTL2)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_WARN(
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews[linking with PTL2 is highly experimental and not expected to work])
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC=ptlgcc
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews else
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews if test ! -d $LOCALBASE/pthreads
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(none)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR("could not find thread libraries")
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews fi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews if $use_threads
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(mit-pthreads/unproven-pthreads)
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews pkg="$LOCALBASE/pthreads"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews lib1="-L$pkg/lib -Wl,-R$pkg/lib"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews lib2="-lpthread -lm -lgcc -lpthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews LIBS="$lib1 $lib2 $LIBS"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews CPPFLAGS="$CPPFLAGS -I$pkg/include"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews STD_CINCLUDES="$STD_CINCLUDES -I$pkg/include"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews fi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews fi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(pthread, pthread_create,,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(pthread, __pthread_create,,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(pthread, __pthread_create_system,,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(c_r, pthread_create,,
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews AC_CHECK_LIB(c, pthread_create,,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_ERROR("could not find thread libraries"))))))
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsfi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsif $use_threads
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsthen
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # We'd like to use sigwait() too
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(c, sigwait,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(HAVE_SIGWAIT),
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(pthread, sigwait,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(HAVE_SIGWAIT),
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(pthread, _Psigwait,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(HAVE_SIGWAIT),))
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews )
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_FUNC(pthread_attr_getstacksize,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Additional OS-specific issues related to pthreads and sigwait.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$host" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # One more place to look for sigwait.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-freebsd*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # BSDI 3.0 through 4.0.1 needs pthread_init() to be
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # called before certain pthreads calls. This is deprecated
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # in BSD/OS 4.1.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-bsdi3.*|*-bsdi4.0*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(NEED_PTHREAD_INIT)
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # LinuxThreads requires some changes to the way we
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # deal with signals.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-linux*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(HAVE_LINUXTHREADS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Ensure the right sigwait() semantics on Solaris and make
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews # sure we call pthread_setconcurrency.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-solaris*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_FUNC(pthread_setconcurrency,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # UnixWare does things its own way.
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-sco-sysv*uw*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Look for sysconf to allow detection of the number of processors.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews if test "X$GCC" = "Xyes"; then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "$host" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-freebsd*)
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews CC="$CC -pthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CCOPT="$CCOPT -pthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-openbsd*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="$CC -pthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CCOPT="$CCOPT -pthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews *-solaris*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews LIBS="$LIBS -lthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-ibm-aix*)
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews else
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case $host in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-dec-osf*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="$CC -pthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CCOPT="$CCOPT -pthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-solaris*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="$CC -mt"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews CCOPT="$CCOPT -mt"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-ibm-aix*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-sco-sysv*uw*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="$CC -Kthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CCOPT="$CCOPT -Kthread"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews fi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ALWAYS_DEFINES="-D_REENTRANT"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews thread_dir=pthreads
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewselse
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews thread_dir=nothreads
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ALWAYS_DEFINES=""
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsfi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(ALWAYS_DEFINES)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(ISC_PLATFORM_USETHREADS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
88ed7381f16a72409061875ddeda598f477e5ef6Michael GraffISC_THREAD_DIR=$thread_dir
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(ISC_THREAD_DIR)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# flockfile is usually provided by pthreads, but we may want to use it
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# even if compiled with --disable-threads. getc_unlocked might also not
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# be defined.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Indicate what the final decision was regarding threads.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_MSG_CHECKING(whether to build with threads)
c4cc75482fd6846163cafa79e98abb11bcfaf3d3Mark Andrewsif $use_threads; then
c4cc75482fd6846163cafa79e98abb11bcfaf3d3Mark Andrews AC_MSG_RESULT(yes)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewselse
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews AC_MSG_RESULT(no)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsfi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
c4cc75482fd6846163cafa79e98abb11bcfaf3d3Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# End of pthreads stuff.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Additional compiler settings.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsMKDEPCC="$CC"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsMKDEPCFLAGS="-M"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsIRIX_DNSSEC_WARNINGS_HACK=""
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsif test "X$GCC" = "Xyes"; then
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewselse
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case $host in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-dec-osf*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="$CC -std"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CCOPT="$CCOPT -std"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews MKDEPCC="$CC"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-hp-hpux*)
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews CC="$CC -Ae -z"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # The version of the C compiler that constantly warns about
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # 'const' as well as alignment issues is unfortunately not
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # able to be discerned via the version of the operating
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # system, nor does cc have a version flag.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews case "`$CC +W 123 2>&1`" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *Unknown?option*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews STD_CWARNINGS="+w1"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Turn off the pointlessly noisy warnings.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews STD_CWARNINGS="+w1 +W 474,530"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CCOPT="$CCOPT -Ae -z"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews LIBS="-Wl,+vnocompatwarnings $LIBS"
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-sgi-irix*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews STD_CWARNINGS="-fullwarn -woff 1209"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # Silence more than 250 instances of
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # "prototyped function redeclared without prototype"
88ed7381f16a72409061875ddeda598f477e5ef6Michael Graff # and 11 instances of
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # "variable ... was set but never used"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # from lib/dns/sec/openssl.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews #
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-solaris*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews MKDEPCFLAGS="-xM"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *-sco-sysv*uw*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews # UnixWare
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews CC="$CC -w"
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews esac
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewsfi
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(MKDEPCC)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(MKDEPCFLAGS)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_SUBST(MKDEPPROG)
3b5362b0730c43f1d1c4dace7b1213c6e2a80032Mark AndrewsAC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# NLS
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark AndrewsAC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# -lxnet buys us one big porting headache... standards, gotta love 'em.
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# AC_CHECK_LIB(xnet, socket, ,
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# AC_CHECK_LIB(socket, socket)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# AC_CHECK_LIB(nsl, inet_ntoa)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# )
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews# Use this for now, instead:
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews#
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrewscase "$host" in
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews mips-sgi-irix*)
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews ;;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews *)
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;'
;;
*)
O=o
A=a
LIBTOOL=
AC_SUBST(LIBTOOL)
LIBTOOL_MKDEP_SED=
;;
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)
#
# 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*)
# 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 (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 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)
result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
[AC_MSG_RESULT(no)
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_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_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)
#
# 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])
AC_TRY_LINK([
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>],
[inet_ntop(0, 0, 0, 0); return (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"])
# On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
# addresses with less than four octets, like "1.2.3".
AC_MSG_CHECKING([for inet_pton])
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
main() { char a[4]; return (inet_pton(AF_INET, "1.2.3", a) == 0 ? 0 : 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_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)
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)
#
# Look for a sysctl call to get the list of network interfaces.
#
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)])
#
# Check for some other useful functions that are not ever-present.
#
AC_CHECK_FUNC(strsep,
[ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
[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_NEEDSTRSEP)
AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
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. We make the assumption that platforms
# where a "long long" is the same size as a "long" (e.g., Alpha/OSF1)
# want "%ld" and everyone else can use "%lld". 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([main() { exit(!(sizeof(long long int) == sizeof(long int))); }],
[AC_MSG_RESULT(l)
ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'],
[AC_MSG_RESULT(ll)
ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'],
[AC_MSG_RESULT(default ll)
ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'])
AC_SUBST(ISC_PLATFORM_QUADFORMAT)
#
# Security Stuff
#
AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT))
AC_CHECK_HEADERS(linux/capability.h)
AC_CHECK_HEADERS(sys/prctl.h)
#
# 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)
AC_DEFINE(HAVE_RLIM_T)],
[AC_MSG_RESULT(no)])
AC_MSG_CHECKING(sizeof 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_SUBST(ISC_PLATFORM_RLIMITTYPE)
#
# 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"
#
# 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
*-bsdi3.1*)
hack_shutup_sputaux=yes
;;
*-bsdi4.0*)
hack_shutup_sigwait=yes
hack_shutup_sputaux=yes
;;
*-bsdi4.1*)
hack_shutup_stdargcast=yes
;;
*-solaris2.8)
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
#
# The following sections deal with tools used for formatting
# the documentation. They are all optional, unless you are
# a developer editing the documentation source.
#
# Directory trees where SGML files are commonly found.
sgmltrees="/usr/pkg/share/sgml /usr/local/share/sgml"
#
# Look for openjade. Plain jade is no longer supported.
#
AC_PATH_PROGS(OPENJADE, openjade, openjade)
AC_SUBST(OPENJADE)
#
# Look for TeX.
#
AC_PATH_PROGS(JADETEX, jadetex, jadetex)
AC_SUBST(JADETEX)
AC_PATH_PROGS(PDFJADETEX, pdfjadetex, pdfjadetex)
AC_SUBST(PDFJADETEX)
#
# 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, [
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)
])
NOM_PATH_FILE(SGMLCATALOG, catalog, $sgmltrees)
#
# Look for the HTML stylesheet html/docbook.dsl, used for
# formatting man pages in HTML. Its location varies,
# so far we have seen:
#
# NetBSD /usr/pkg/share/docbook/dsssl/modular/
# FreeBSD /usr/local/share/docbook/dsssl/modular/
# Linux /usr/local/share/dsssl/docbook/
#
# Ditto for the print stylesheet print/docbook.dsl.
#
stylepath=""
for d in $sgmltrees
do
for s in docbook/dsssl/modular dsssl/docbook
do
stylepath="$stylepath $d/$s"
done
done
NOM_PATH_FILE(HTMLSTYLE, html/docbook.dsl, $stylepath)
NOM_PATH_FILE(PRINTSTYLE, print/docbook.dsl, $stylepath)
#
# Look for XML declarations
#
NOM_PATH_FILE(XMLDCL, docbook/dsssl/modular/dtds/decls/xml.dcl, $sgmltrees)
#
# Look for docbook2man-spec.pl
#
NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees)
#
# 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)
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"
else
BIND9_ISC_BUILDINCLUDE=""
BIND9_ISCCC_BUILDINCLUDE=""
BIND9_ISCCFG_BUILDINCLUDE=""
BIND9_DNS_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
. $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(LIBLWRES_API)
LIBLWRES_API=$srcdir/lib/lwres/api
AC_OUTPUT(
make/rules
make/includes
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/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/sec/Makefile
lib/dns/sec/dst/Makefile
lib/dns/sec/dst/include/Makefile
lib/dns/sec/dst/include/dst/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/lwres/win32/Makefile
lib/lwres/win32/include/Makefile
lib/lwres/win32/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/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/arm/nominum-docbook-html.dsl
doc/arm/nominum-docbook-print.dsl
doc/arm/validate.sh
docutil/docbook2man-wrapper.sh
isc-config.sh
)
chmod a+x isc-config.sh
# Tell Emacs to edit this file in shell mode.
# Local Variables:
# mode: sh
# End: