xref: /minix3/external/bsd/bind/dist/configure.in (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek# Copyright (C) 2004-2015  Internet Systems Consortium, Inc. ("ISC")
2*00b67f09SDavid van Moolenbroek# Copyright (C) 1998-2003  Internet Software Consortium.
3*00b67f09SDavid van Moolenbroek#
4*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any
5*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above
6*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies.
7*00b67f09SDavid van Moolenbroek#
8*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
9*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10*00b67f09SDavid van Moolenbroek# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
11*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
13*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE.
15*00b67f09SDavid van Moolenbroek
16*00b67f09SDavid van Moolenbroek# Copyright (C) 1998-2003  Internet Software Consortium.
17*00b67f09SDavid van Moolenbroek#
18*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any
19*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above
20*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies.
21*00b67f09SDavid van Moolenbroek#
22*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
23*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
24*00b67f09SDavid van Moolenbroek# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
25*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
26*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
27*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
28*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE.
29*00b67f09SDavid van Moolenbroek
30*00b67f09SDavid van Moolenbroekdnl
31*00b67f09SDavid van MoolenbroekAC_DIVERT_PUSH(1)dnl
32*00b67f09SDavid van Moolenbroekesyscmd([sed -e 's/^/# /' -e '/Portions of this code/,$d' COPYRIGHT])dnl
33*00b67f09SDavid van MoolenbroekAC_DIVERT_POP()dnl
34*00b67f09SDavid van Moolenbroek
35*00b67f09SDavid van MoolenbroekAC_INIT(BIND, [9.10], [bind9-bugs@isc.org], [], [https://www.isc.org/downloads/BIND/])
36*00b67f09SDavid van MoolenbroekAC_PREREQ(2.59)
37*00b67f09SDavid van Moolenbroek
38*00b67f09SDavid van MoolenbroekAC_CONFIG_HEADER(config.h)
39*00b67f09SDavid van MoolenbroekAC_CONFIG_MACRO_DIR([m4])
40*00b67f09SDavid van Moolenbroek
41*00b67f09SDavid van MoolenbroekAC_CANONICAL_HOST
42*00b67f09SDavid van Moolenbroek
43*00b67f09SDavid van MoolenbroekAC_PROG_MAKE_SET
44*00b67f09SDavid van Moolenbroek
45*00b67f09SDavid van Moolenbroek#
46*00b67f09SDavid van Moolenbroek# GNU libtool support
47*00b67f09SDavid van Moolenbroek#
48*00b67f09SDavid van Moolenbroekcase $build_os in
49*00b67f09SDavid van Moolenbroeksunos*)
50*00b67f09SDavid van Moolenbroek    # Just set the maximum command line length for sunos as it otherwise
51*00b67f09SDavid van Moolenbroek    # takes a exceptionally long time to work it out. Required for libtool.
52*00b67f09SDavid van Moolenbroek
53*00b67f09SDavid van Moolenbroek    lt_cv_sys_max_cmd_len=4096;
54*00b67f09SDavid van Moolenbroek    ;;
55*00b67f09SDavid van Moolenbroekesac
56*00b67f09SDavid van Moolenbroek
57*00b67f09SDavid van MoolenbroekAC_PROG_LIBTOOL
58*00b67f09SDavid van MoolenbroekAC_PROG_INSTALL
59*00b67f09SDavid van MoolenbroekAC_PROG_LN_S
60*00b67f09SDavid van Moolenbroek
61*00b67f09SDavid van MoolenbroekAC_SUBST(STD_CINCLUDES)
62*00b67f09SDavid van MoolenbroekAC_SUBST(STD_CDEFINES)
63*00b67f09SDavid van MoolenbroekAC_SUBST(STD_CWARNINGS)
64*00b67f09SDavid van MoolenbroekAC_SUBST(CCOPT)
65*00b67f09SDavid van MoolenbroekAC_SUBST(CCNOOPT)
66*00b67f09SDavid van MoolenbroekAC_SUBST(BACKTRACECFLAGS)
67*00b67f09SDavid van Moolenbroek
68*00b67f09SDavid van Moolenbroek# Warn if the user specified libbind, which is now deprecated
69*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(libbind, [  --enable-libbind	  deprecated])
70*00b67f09SDavid van Moolenbroek
71*00b67f09SDavid van Moolenbroekcase "$enable_libbind" in
72*00b67f09SDavid van Moolenbroek	yes)
73*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR(['libbind' is no longer part of the BIND 9 distribution.
74*00b67f09SDavid van MoolenbroekIt is available from http://www.isc.org as a separate download.])
75*00b67f09SDavid van Moolenbroek		;;
76*00b67f09SDavid van Moolenbroek	no|'')
77*00b67f09SDavid van Moolenbroek		;;
78*00b67f09SDavid van Moolenbroekesac
79*00b67f09SDavid van Moolenbroek
80*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(warn_shadow, [  --enable-warn-shadow	  turn on -Wshadow when compiling])
81*00b67f09SDavid van Moolenbroek
82*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(warn_error, [  --enable-warn-error	  turn on -Werror when compiling])
83*00b67f09SDavid van Moolenbroek
84*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(developer, [  --enable-developer      enable developer build settings])
85*00b67f09SDavid van Moolenbroekcase "$enable_developer" in
86*00b67f09SDavid van Moolenbroekyes)
87*00b67f09SDavid van Moolenbroek	STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1"
88*00b67f09SDavid van Moolenbroek	test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
89*00b67f09SDavid van Moolenbroek	test "${with_atf+set}" = set || with_atf=yes
90*00b67f09SDavid van Moolenbroek	test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes
91*00b67f09SDavid van Moolenbroek	test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
92*00b67f09SDavid van Moolenbroek	test "${enable_symtable+set}" = set || enable_symtable=all
93*00b67f09SDavid van Moolenbroek	test "${enable_sit+set}" = set || enable_sit=yes
94*00b67f09SDavid van Moolenbroek	test "${enable_warn_error+set}" = set || enable_warn_error=yes
95*00b67f09SDavid van Moolenbroek	test "${enable_warn_shadow+set}" = set || enable_warn_shadow=yes
96*00b67f09SDavid van Moolenbroek	;;
97*00b67f09SDavid van Moolenbroekesac
98*00b67f09SDavid van Moolenbroek
99*00b67f09SDavid van Moolenbroek#libseccomp sandboxing
100*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(seccomp,
101*00b67f09SDavid van Moolenbroek	AS_HELP_STRING([--enable-seccomp],[enable support for libseccomp system call filtering [default=no]]))
102*00b67f09SDavid van Moolenbroekcase "$enable_seccomp" in
103*00b67f09SDavid van Moolenbroek	yes)
104*00b67f09SDavid van Moolenbroek	case $host_os in
105*00b67f09SDavid van Moolenbroek	linux*)
106*00b67f09SDavid van Moolenbroek		;;
107*00b67f09SDavid van Moolenbroek	*)
108*00b67f09SDavid van Moolenbroek		AC_MSG_WARN([seccomp is not supported on non-linux platforms; disabling it])
109*00b67f09SDavid van Moolenbroek		enable_seccomp=no
110*00b67f09SDavid van Moolenbroek		;;
111*00b67f09SDavid van Moolenbroek	esac
112*00b67f09SDavid van Moolenbroek	AC_SEARCH_LIBS(seccomp_init, [seccomp])
113*00b67f09SDavid van Moolenbroek	if test "$ac_cv_search_seccomp_init" = "-lseccomp" ; then
114*00b67f09SDavid van Moolenbroek		AC_TRY_RUN([
115*00b67f09SDavid van Moolenbroek		#include <stdio.h>
116*00b67f09SDavid van Moolenbroek		#include <stdlib.h>
117*00b67f09SDavid van Moolenbroek		#include <errno.h>
118*00b67f09SDavid van Moolenbroek		#include <sys/prctl.h>
119*00b67f09SDavid van Moolenbroek		#include <linux/seccomp.h>
120*00b67f09SDavid van Moolenbroek
121*00b67f09SDavid van Moolenbroek		int main(void)
122*00b67f09SDavid van Moolenbroek		{
123*00b67f09SDavid van Moolenbroek			int ret;
124*00b67f09SDavid van Moolenbroek
125*00b67f09SDavid van Moolenbroek			ret = prctl(PR_GET_SECCOMP, 0, 0, 0, 0);
126*00b67f09SDavid van Moolenbroek			if (ret < 0) {
127*00b67f09SDavid van Moolenbroek				switch (errno) {
128*00b67f09SDavid van Moolenbroek				case ENOSYS:
129*00b67f09SDavid van Moolenbroek					return 1;
130*00b67f09SDavid van Moolenbroek				case EINVAL:
131*00b67f09SDavid van Moolenbroek					return 1;
132*00b67f09SDavid van Moolenbroek				default:
133*00b67f09SDavid van Moolenbroek					return 1;
134*00b67f09SDavid van Moolenbroek				}
135*00b67f09SDavid van Moolenbroek			}
136*00b67f09SDavid van Moolenbroek			ret =
137*00b67f09SDavid van Moolenbroek			prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0);
138*00b67f09SDavid van Moolenbroek			if (ret < 0) {
139*00b67f09SDavid van Moolenbroek				switch (errno) {
140*00b67f09SDavid van Moolenbroek				case EINVAL:
141*00b67f09SDavid van Moolenbroek					return 1;
142*00b67f09SDavid van Moolenbroek				case EFAULT:
143*00b67f09SDavid van Moolenbroek					return 0;
144*00b67f09SDavid van Moolenbroek				default:
145*00b67f09SDavid van Moolenbroek					return 1;
146*00b67f09SDavid van Moolenbroek			}
147*00b67f09SDavid van Moolenbroek		}
148*00b67f09SDavid van Moolenbroek	return 1;
149*00b67f09SDavid van Moolenbroek	}
150*00b67f09SDavid van Moolenbroek	]
151*00b67f09SDavid van Moolenbroek	, AC_DEFINE([HAVE_LIBSECCOMP], 1,
152*00b67f09SDavid van Moolenbroek	[Define to use libseccomp system call filtering.])
153*00b67f09SDavid van Moolenbroek	, []
154*00b67f09SDavid van Moolenbroek	)
155*00b67f09SDavid van Moolenbroek	fi
156*00b67f09SDavid van Moolenbroek		;;
157*00b67f09SDavid van Moolenbroek	*)
158*00b67f09SDavid van Moolenbroek		;;
159*00b67f09SDavid van Moolenbroekesac
160*00b67f09SDavid van Moolenbroek
161*00b67f09SDavid van Moolenbroek#
162*00b67f09SDavid van Moolenbroek# Make very sure that these are the first files processed by
163*00b67f09SDavid van Moolenbroek# config.status, since we use the processed output as the input for
164*00b67f09SDavid van Moolenbroek# AC_SUBST_FILE() substitutions in other files.
165*00b67f09SDavid van Moolenbroek#
166*00b67f09SDavid van MoolenbroekAC_CONFIG_FILES([make/rules make/includes])
167*00b67f09SDavid van Moolenbroek
168*00b67f09SDavid van MoolenbroekAC_PATH_PROG(AR, ar)
169*00b67f09SDavid van MoolenbroekARFLAGS="cruv"
170*00b67f09SDavid van MoolenbroekAC_SUBST(AR)
171*00b67f09SDavid van MoolenbroekAC_SUBST(ARFLAGS)
172*00b67f09SDavid van Moolenbroek
173*00b67f09SDavid van Moolenbroek# The POSIX ln(1) program.  Non-POSIX systems may substitute
174*00b67f09SDavid van Moolenbroek# "copy" or something.
175*00b67f09SDavid van MoolenbroekLN=ln
176*00b67f09SDavid van MoolenbroekAC_SUBST(LN)
177*00b67f09SDavid van Moolenbroek
178*00b67f09SDavid van Moolenbroekcase "$AR" in
179*00b67f09SDavid van Moolenbroek	"")
180*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([
181*00b67f09SDavid van Moolenbroekar program not found.  Please fix your PATH to include the directory in
182*00b67f09SDavid van Moolenbroekwhich ar resides, or set AR in the environment with the full path to ar.
183*00b67f09SDavid van Moolenbroek])
184*00b67f09SDavid van Moolenbroek
185*00b67f09SDavid van Moolenbroek		;;
186*00b67f09SDavid van Moolenbroekesac
187*00b67f09SDavid van Moolenbroek
188*00b67f09SDavid van Moolenbroek#
189*00b67f09SDavid van Moolenbroek# Etags.
190*00b67f09SDavid van Moolenbroek#
191*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(ETAGS, etags emacs-etags)
192*00b67f09SDavid van Moolenbroek
193*00b67f09SDavid van Moolenbroek#
194*00b67f09SDavid van Moolenbroek# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
195*00b67f09SDavid van Moolenbroek# GNU emacs etags, and it requires the -L flag.
196*00b67f09SDavid van Moolenbroek#
197*00b67f09SDavid van Moolenbroekif test "X$ETAGS" != "X"; then
198*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(for Exuberant Ctags etags)
199*00b67f09SDavid van Moolenbroek	if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
200*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
201*00b67f09SDavid van Moolenbroek		ETAGS="$ETAGS -L"
202*00b67f09SDavid van Moolenbroek	else
203*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
204*00b67f09SDavid van Moolenbroek	fi
205*00b67f09SDavid van Moolenbroekfi
206*00b67f09SDavid van MoolenbroekAC_SUBST(ETAGS)
207*00b67f09SDavid van Moolenbroek
208*00b67f09SDavid van Moolenbroek#
209*00b67f09SDavid van Moolenbroek# Perl is optional; it is used only by some of the system test scripts.
210*00b67f09SDavid van Moolenbroek# Note: the backtrace feature (see below) uses perl to build the symbol table,
211*00b67f09SDavid van Moolenbroek# but it still compiles without perl, in which case an empty table will be used.
212*00b67f09SDavid van Moolenbroek#
213*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(PERL, perl5 perl)
214*00b67f09SDavid van MoolenbroekAC_SUBST(PERL)
215*00b67f09SDavid van Moolenbroek
216*00b67f09SDavid van Moolenbroek#
217*00b67f09SDavid van Moolenbroek# Python is also optional; it is used by the tools in bin/python.
218*00b67f09SDavid van Moolenbroek# If python is unavailable, we simply don't build those.
219*00b67f09SDavid van Moolenbroek#
220*00b67f09SDavid van MoolenbroekAC_ARG_WITH(python,
221*00b67f09SDavid van Moolenbroek[  --with-python=PATH      specify path to python interpreter],
222*00b67f09SDavid van Moolenbroek    use_python="$withval", use_python="unspec")
223*00b67f09SDavid van Moolenbroek
224*00b67f09SDavid van Moolenbroekpython="python python3 python3.4 python3.3 python3.2 python3.1 python3.0 python2 python2.7 python2.6 python2.5 python2.4"
225*00b67f09SDavid van Moolenbroektestscript='try: import argparse
226*00b67f09SDavid van Moolenbroekexcept: exit(1)'
227*00b67f09SDavid van Moolenbroekcase "$use_python" in
228*00b67f09SDavid van Moolenbroek	no)
229*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING([for python support])
230*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(disabled)
231*00b67f09SDavid van Moolenbroek		;;
232*00b67f09SDavid van Moolenbroek	unspec|yes|*)
233*00b67f09SDavid van Moolenbroek		case "$use_python" in
234*00b67f09SDavid van Moolenbroek		unspec|yes|'')
235*00b67f09SDavid van Moolenbroek			for p in $python
236*00b67f09SDavid van Moolenbroek			do
237*00b67f09SDavid van Moolenbroek				AC_PATH_PROGS(PYTHON, $p)
238*00b67f09SDavid van Moolenbroek				if test "X$PYTHON" == "X"; then
239*00b67f09SDavid van Moolenbroek					continue;
240*00b67f09SDavid van Moolenbroek				fi
241*00b67f09SDavid van Moolenbroek				AC_MSG_CHECKING([python module 'argparse'])
242*00b67f09SDavid van Moolenbroek				if ${PYTHON:-false} -c "$testscript"; then
243*00b67f09SDavid van Moolenbroek					AC_MSG_RESULT([found, using $PYTHON])
244*00b67f09SDavid van Moolenbroek					break
245*00b67f09SDavid van Moolenbroek				fi
246*00b67f09SDavid van Moolenbroek				AC_MSG_RESULT([not found])
247*00b67f09SDavid van Moolenbroek				unset ac_cv_path_PYTHON
248*00b67f09SDavid van Moolenbroek				unset PYTHON
249*00b67f09SDavid van Moolenbroek			done
250*00b67f09SDavid van Moolenbroek			if test "X$PYTHON" == "X"
251*00b67f09SDavid van Moolenbroek			then
252*00b67f09SDavid van Moolenbroek				AC_MSG_CHECKING([for python support])
253*00b67f09SDavid van Moolenbroek				case "$use_python" in
254*00b67f09SDavid van Moolenbroek				unspec)
255*00b67f09SDavid van Moolenbroek					AC_MSG_RESULT(disabled)
256*00b67f09SDavid van Moolenbroek					;;
257*00b67f09SDavid van Moolenbroek				yes)
258*00b67f09SDavid van Moolenbroek					AC_MSG_ERROR([missing python])
259*00b67f09SDavid van Moolenbroek					;;
260*00b67f09SDavid van Moolenbroek				esac
261*00b67f09SDavid van Moolenbroek			fi
262*00b67f09SDavid van Moolenbroek			;;
263*00b67f09SDavid van Moolenbroek		*)
264*00b67f09SDavid van Moolenbroek			case "$use_python" in
265*00b67f09SDavid van Moolenbroek			/*)
266*00b67f09SDavid van Moolenbroek				PYTHON="$use_python"
267*00b67f09SDavid van Moolenbroek				;;
268*00b67f09SDavid van Moolenbroek			*)
269*00b67f09SDavid van Moolenbroek				AC_PATH_PROGS(PYTHON, $use_python)
270*00b67f09SDavid van Moolenbroek				;;
271*00b67f09SDavid van Moolenbroek			esac
272*00b67f09SDavid van Moolenbroek			AC_MSG_CHECKING([python module 'argparse'])
273*00b67f09SDavid van Moolenbroek			if ${PYTHON:-false} -c "$testscript"; then
274*00b67f09SDavid van Moolenbroek				AC_MSG_RESULT([found, using $PYTHON])
275*00b67f09SDavid van Moolenbroek				break
276*00b67f09SDavid van Moolenbroek			else
277*00b67f09SDavid van Moolenbroek				AC_MSG_ERROR([not found])
278*00b67f09SDavid van Moolenbroek			fi
279*00b67f09SDavid van Moolenbroek			;;
280*00b67f09SDavid van Moolenbroek		esac
281*00b67f09SDavid van Moolenbroek		;;
282*00b67f09SDavid van Moolenbroekesac
283*00b67f09SDavid van Moolenbroek
284*00b67f09SDavid van MoolenbroekPYTHON_TOOLS=''
285*00b67f09SDavid van MoolenbroekCHECKDS=''
286*00b67f09SDavid van MoolenbroekCOVERAGE=''
287*00b67f09SDavid van Moolenbroekif test "X$PYTHON" != "X"; then
288*00b67f09SDavid van Moolenbroek	PYTHON_TOOLS=python
289*00b67f09SDavid van Moolenbroek	CHECKDS=checkds
290*00b67f09SDavid van Moolenbroek	COVERAGE=coverage
291*00b67f09SDavid van Moolenbroekfi
292*00b67f09SDavid van MoolenbroekAC_SUBST(CHECKDS)
293*00b67f09SDavid van MoolenbroekAC_SUBST(COVERAGE)
294*00b67f09SDavid van MoolenbroekAC_SUBST(PYTHON_TOOLS)
295*00b67f09SDavid van Moolenbroek
296*00b67f09SDavid van Moolenbroek#
297*00b67f09SDavid van Moolenbroek# Special processing of paths depending on whether --prefix,
298*00b67f09SDavid van Moolenbroek# --sysconfdir or --localstatedir arguments were given.  What's
299*00b67f09SDavid van Moolenbroek# desired is some compatibility with the way previous versions
300*00b67f09SDavid van Moolenbroek# of BIND built; they defaulted to /usr/local for most parts of
301*00b67f09SDavid van Moolenbroek# the installation, but named.boot/named.conf was in /etc
302*00b67f09SDavid van Moolenbroek# and named.pid was in /var/run.
303*00b67f09SDavid van Moolenbroek#
304*00b67f09SDavid van Moolenbroek# So ... if none of --prefix, --sysconfdir or --localstatedir are
305*00b67f09SDavid van Moolenbroek# specified, set things up that way.  If --prefix is given, use
306*00b67f09SDavid van Moolenbroek# it for sysconfdir and localstatedir the way configure normally
307*00b67f09SDavid van Moolenbroek# would.  To change the prefix for everything but leave named.conf
308*00b67f09SDavid van Moolenbroek# in /etc or named.pid in /var/run, then do this the usual configure way:
309*00b67f09SDavid van Moolenbroek# ./configure --prefix=/somewhere --sysconfdir=/etc
310*00b67f09SDavid van Moolenbroek# ./configure --prefix=/somewhere --localstatedir=/var
311*00b67f09SDavid van Moolenbroek#
312*00b67f09SDavid van Moolenbroek# To put named.conf and named.pid in /usr/local with everything else,
313*00b67f09SDavid van Moolenbroek# set the prefix explicitly to /usr/local even though that's the default:
314*00b67f09SDavid van Moolenbroek# ./configure --prefix=/usr/local
315*00b67f09SDavid van Moolenbroek#
316*00b67f09SDavid van Moolenbroekcase "$prefix" in
317*00b67f09SDavid van Moolenbroek	NONE)
318*00b67f09SDavid van Moolenbroek		case "$sysconfdir" in
319*00b67f09SDavid van Moolenbroek			'${prefix}/etc')
320*00b67f09SDavid van Moolenbroek				sysconfdir=/etc
321*00b67f09SDavid van Moolenbroek				;;
322*00b67f09SDavid van Moolenbroek		esac
323*00b67f09SDavid van Moolenbroek		case "$localstatedir" in
324*00b67f09SDavid van Moolenbroek			'${prefix}/var')
325*00b67f09SDavid van Moolenbroek				localstatedir=/var
326*00b67f09SDavid van Moolenbroek				;;
327*00b67f09SDavid van Moolenbroek		esac
328*00b67f09SDavid van Moolenbroek		;;
329*00b67f09SDavid van Moolenbroekesac
330*00b67f09SDavid van Moolenbroek
331*00b67f09SDavid van Moolenbroek#
332*00b67f09SDavid van Moolenbroek# Make sure INSTALL uses an absolute path, else it will be wrong in all
333*00b67f09SDavid van Moolenbroek# Makefiles, since they use make/rules.in and INSTALL will be adjusted by
334*00b67f09SDavid van Moolenbroek# configure based on the location of the file where it is substituted.
335*00b67f09SDavid van Moolenbroek# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
336*00b67f09SDavid van Moolenbroek# subdirectory of install-sh, This relative path will be wrong for all
337*00b67f09SDavid van Moolenbroek# directories more than one level down from install-sh.
338*00b67f09SDavid van Moolenbroek#
339*00b67f09SDavid van Moolenbroekcase "$INSTALL" in
340*00b67f09SDavid van Moolenbroek	/*)
341*00b67f09SDavid van Moolenbroek		;;
342*00b67f09SDavid van Moolenbroek	*)
343*00b67f09SDavid van Moolenbroek		#
344*00b67f09SDavid van Moolenbroek		# Not all systems have dirname.
345*00b67f09SDavid van Moolenbroek		#
346*00b67f09SDavid van Moolenbroek		changequote({, })
347*00b67f09SDavid van Moolenbroek		ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
348*00b67f09SDavid van Moolenbroek		changequote([, ])
349*00b67f09SDavid van Moolenbroek
350*00b67f09SDavid van Moolenbroek		ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
351*00b67f09SDavid van Moolenbroek		test "$ac_dir" = "$ac_prog" && ac_dir=.
352*00b67f09SDavid van Moolenbroek		test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
353*00b67f09SDavid van Moolenbroek		INSTALL="$ac_dir/$ac_prog"
354*00b67f09SDavid van Moolenbroek		;;
355*00b67f09SDavid van Moolenbroekesac
356*00b67f09SDavid van Moolenbroek
357*00b67f09SDavid van Moolenbroek#
358*00b67f09SDavid van Moolenbroek# On these hosts, we really want to use cc, not gcc, even if it is
359*00b67f09SDavid van Moolenbroek# found.  The gcc that these systems have will not correctly handle
360*00b67f09SDavid van Moolenbroek# pthreads.
361*00b67f09SDavid van Moolenbroek#
362*00b67f09SDavid van Moolenbroek# However, if the user sets $CC to be something, let that override
363*00b67f09SDavid van Moolenbroek# our change.
364*00b67f09SDavid van Moolenbroek#
365*00b67f09SDavid van Moolenbroekif test "X$CC" = "X" ; then
366*00b67f09SDavid van Moolenbroek	case "$host" in
367*00b67f09SDavid van Moolenbroek		*-dec-osf*)
368*00b67f09SDavid van Moolenbroek			CC="cc"
369*00b67f09SDavid van Moolenbroek			;;
370*00b67f09SDavid van Moolenbroek		*-solaris*)
371*00b67f09SDavid van Moolenbroek			# Use Sun's cc if it is available, but watch
372*00b67f09SDavid van Moolenbroek			# out for /usr/ucb/cc; it will never be the right
373*00b67f09SDavid van Moolenbroek			# compiler to use.
374*00b67f09SDavid van Moolenbroek			#
375*00b67f09SDavid van Moolenbroek			# If setting CC here fails, the AC_PROG_CC done
376*00b67f09SDavid van Moolenbroek			# below might still find gcc.
377*00b67f09SDavid van Moolenbroek			IFS="${IFS=	}"; ac_save_ifs="$IFS"; IFS=":"
378*00b67f09SDavid van Moolenbroek			for ac_dir in $PATH; do
379*00b67f09SDavid van Moolenbroek				test -z "$ac_dir" && ac_dir=.
380*00b67f09SDavid van Moolenbroek				case "$ac_dir" in
381*00b67f09SDavid van Moolenbroek				/usr/ucb)
382*00b67f09SDavid van Moolenbroek					# exclude
383*00b67f09SDavid van Moolenbroek					;;
384*00b67f09SDavid van Moolenbroek				*)
385*00b67f09SDavid van Moolenbroek					if test -f "$ac_dir/cc"; then
386*00b67f09SDavid van Moolenbroek						CC="$ac_dir/cc"
387*00b67f09SDavid van Moolenbroek						break
388*00b67f09SDavid van Moolenbroek					fi
389*00b67f09SDavid van Moolenbroek					;;
390*00b67f09SDavid van Moolenbroek				esac
391*00b67f09SDavid van Moolenbroek			done
392*00b67f09SDavid van Moolenbroek			IFS="$ac_save_ifs"
393*00b67f09SDavid van Moolenbroek			;;
394*00b67f09SDavid van Moolenbroek		*-hp-hpux*)
395*00b67f09SDavid van Moolenbroek			CC="cc"
396*00b67f09SDavid van Moolenbroek			;;
397*00b67f09SDavid van Moolenbroek		mips-sgi-irix*)
398*00b67f09SDavid van Moolenbroek			CC="cc"
399*00b67f09SDavid van Moolenbroek			;;
400*00b67f09SDavid van Moolenbroek	esac
401*00b67f09SDavid van Moolenbroekfi
402*00b67f09SDavid van Moolenbroek
403*00b67f09SDavid van MoolenbroekAC_PROG_CC
404*00b67f09SDavid van Moolenbroek
405*00b67f09SDavid van Moolenbroek#
406*00b67f09SDavid van Moolenbroek# gcc's optimiser is broken at -02 for ultrasparc
407*00b67f09SDavid van Moolenbroek#
408*00b67f09SDavid van Moolenbroekif test "$ac_env_CFLAGS_set" != set -a "X$GCC" = "Xyes"; then
409*00b67f09SDavid van Moolenbroek	case "$host" in
410*00b67f09SDavid van Moolenbroek	sparc-*)
411*00b67f09SDavid van Moolenbroek		CCFLAGS="-g -O1"
412*00b67f09SDavid van Moolenbroek		;;
413*00b67f09SDavid van Moolenbroek	esac
414*00b67f09SDavid van Moolenbroekfi
415*00b67f09SDavid van Moolenbroek
416*00b67f09SDavid van Moolenbroek#
417*00b67f09SDavid van Moolenbroek# OS dependent CC flags
418*00b67f09SDavid van Moolenbroek#
419*00b67f09SDavid van Moolenbroekcase "$host" in
420*00b67f09SDavid van Moolenbroek	# OSF 5.0: recv/send are only available with -D_POSIX_PII_SOCKET or
421*00b67f09SDavid van Moolenbroek	# -D_XOPEN_SOURCE_EXTENDED.
422*00b67f09SDavid van Moolenbroek	*-dec-osf*)
423*00b67f09SDavid van Moolenbroek		STD_CDEFINES="$STD_CDEFINES -D_POSIX_PII_SOCKET"
424*00b67f09SDavid van Moolenbroek		CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET"
425*00b67f09SDavid van Moolenbroek		;;
426*00b67f09SDavid van Moolenbroek	#HP-UX: need -D_XOPEN_SOURCE_EXTENDED and -lxnet for CMSG macros
427*00b67f09SDavid van Moolenbroek	*-hp-hpux*)
428*00b67f09SDavid van Moolenbroek		STD_CDEFINES="$STD_CDEFINES -D_XOPEN_SOURCE_EXTENDED"
429*00b67f09SDavid van Moolenbroek		CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
430*00b67f09SDavid van Moolenbroek		LIBS="-lxnet $LIBS"
431*00b67f09SDavid van Moolenbroek		;;
432*00b67f09SDavid van Moolenbroek	# Solaris: need -D_XPG4_2 and -D__EXTENSIONS__ for CMSG macros
433*00b67f09SDavid van Moolenbroek	*-solaris*)
434*00b67f09SDavid van Moolenbroek		STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__"
435*00b67f09SDavid van Moolenbroek		CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
436*00b67f09SDavid van Moolenbroek		;;
437*00b67f09SDavid van Moolenbroek	# POSIX doesn't include the IPv6 Advanced Socket API and glibc hides
438*00b67f09SDavid van Moolenbroek	# parts of the IPv6 Advanced Socket API as a result.  This is stupid
439*00b67f09SDavid van Moolenbroek	# as it breaks how the two halves (Basic and Advanced) of the IPv6
440*00b67f09SDavid van Moolenbroek	# Socket API were designed to be used but we have to live with it.
441*00b67f09SDavid van Moolenbroek	# Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
442*00b67f09SDavid van Moolenbroek	*-linux* | *-kfreebsd*-gnu*)
443*00b67f09SDavid van Moolenbroek		STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE"
444*00b67f09SDavid van Moolenbroek		CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
445*00b67f09SDavid van Moolenbroek		;;
446*00b67f09SDavid van Moolenbroek	#
447*00b67f09SDavid van Moolenbroek	# Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use.
448*00b67f09SDavid van Moolenbroek	# Setting this is sufficient to select the correct behavior for BIND 9.
449*00b67f09SDavid van Moolenbroek	#
450*00b67f09SDavid van Moolenbroek	*-darwin*)
451*00b67f09SDavid van Moolenbroek	  STD_CDEFINES="$STD_CDEFINES -D__APPLE_USE_RFC_3542"
452*00b67f09SDavid van Moolenbroek	  CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542"
453*00b67f09SDavid van Moolenbroek	  ;;
454*00b67f09SDavid van Moolenbroekesac
455*00b67f09SDavid van Moolenbroek
456*00b67f09SDavid van Moolenbroek#
457*00b67f09SDavid van Moolenbroek# CCNOOPT defaults to -O0 on gcc and disables optimization when is last
458*00b67f09SDavid van Moolenbroek#
459*00b67f09SDavid van Moolenbroekif test "X$CCNOOPT" = "X" -a "X$GCC" = "Xyes"; then
460*00b67f09SDavid van Moolenbroek	CCNOOPT="-O0"
461*00b67f09SDavid van Moolenbroekfi
462*00b67f09SDavid van Moolenbroek
463*00b67f09SDavid van MoolenbroekAC_HEADER_STDC
464*00b67f09SDavid van Moolenbroek
465*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/mman.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h sys/socket.h net/route.h linux/netlink.h linux/rtnetlink.h,,,
466*00b67f09SDavid van Moolenbroek[$ac_includes_default
467*00b67f09SDavid van Moolenbroek#ifdef HAVE_SYS_PARAM_H
468*00b67f09SDavid van Moolenbroek# include <sys/param.h>
469*00b67f09SDavid van Moolenbroek#endif
470*00b67f09SDavid van Moolenbroek#ifdef HAVE_SYS_SOCKET_H
471*00b67f09SDavid van Moolenbroek# include <sys/socket.h>
472*00b67f09SDavid van Moolenbroek#endif
473*00b67f09SDavid van Moolenbroek])
474*00b67f09SDavid van Moolenbroek
475*00b67f09SDavid van MoolenbroekAC_C_CONST
476*00b67f09SDavid van MoolenbroekAC_C_INLINE
477*00b67f09SDavid van MoolenbroekAC_C_VOLATILE
478*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
479*00b67f09SDavid van MoolenbroekAC_C_FLEXIBLE_ARRAY_MEMBER
480*00b67f09SDavid van Moolenbroek
481*00b67f09SDavid van Moolenbroek#
482*00b67f09SDavid van Moolenbroek# Check for the existence of mmap to enable the fast format zones
483*00b67f09SDavid van Moolenbroek#
484*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(mmap)
485*00b67f09SDavid van Moolenbroek
486*00b67f09SDavid van Moolenbroek#
487*00b67f09SDavid van Moolenbroek# Older versions of HP/UX don't define seteuid() and setegid()
488*00b67f09SDavid van Moolenbroek#
489*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(seteuid setresuid)
490*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(setegid setresgid)
491*00b67f09SDavid van Moolenbroek
492*00b67f09SDavid van Moolenbroek# BSDI doesn't have ftello fseeko
493*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(ftello fseeko)
494*00b67f09SDavid van Moolenbroek
495*00b67f09SDavid van Moolenbroek#
496*00b67f09SDavid van Moolenbroek# UnixWare 7.1.1 with the feature supplement to the UDK compiler
497*00b67f09SDavid van Moolenbroek# is reported to not support "static inline" (RT #1212).
498*00b67f09SDavid van Moolenbroek#
499*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for static inline breakage)
500*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
501*00b67f09SDavid van Moolenbroek	static inline int foo1() {
502*00b67f09SDavid van Moolenbroek		return 0;
503*00b67f09SDavid van Moolenbroek	}
504*00b67f09SDavid van Moolenbroek
505*00b67f09SDavid van Moolenbroek	static inline int foo2() {
506*00b67f09SDavid van Moolenbroek		return foo1();
507*00b67f09SDavid van Moolenbroek	}
508*00b67f09SDavid van Moolenbroek	], [foo1();],
509*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)],
510*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
511*00b67f09SDavid van Moolenbroek	 AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])])
512*00b67f09SDavid van Moolenbroek
513*00b67f09SDavid van MoolenbroekAC_TYPE_SIZE_T
514*00b67f09SDavid van MoolenbroekAC_CHECK_TYPE(ssize_t, int)
515*00b67f09SDavid van MoolenbroekAC_CHECK_TYPE(uintptr_t,unsigned long)
516*00b67f09SDavid van MoolenbroekAC_CHECK_TYPE(socklen_t,
517*00b67f09SDavid van Moolenbroek[AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)],
518*00b67f09SDavid van Moolenbroek[
519*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE(
520*00b67f09SDavid van Moolenbroek[
521*00b67f09SDavid van Moolenbroek#include <sys/types.h>
522*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
523*00b67f09SDavid van Moolenbroekint getsockname(int, struct sockaddr *, size_t *);
524*00b67f09SDavid van Moolenbroek],[],
525*00b67f09SDavid van Moolenbroek[AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)],
526*00b67f09SDavid van Moolenbroek[AC_DEFINE(ISC_SOCKADDR_LEN_T, int)])
527*00b67f09SDavid van Moolenbroek],
528*00b67f09SDavid van Moolenbroek[
529*00b67f09SDavid van Moolenbroek#include <sys/types.h>
530*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
531*00b67f09SDavid van Moolenbroek])
532*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_SOCKADDR_LEN_T)
533*00b67f09SDavid van MoolenbroekAC_HEADER_TIME
534*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for long long)
535*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([],[long long i = 0; return (0);],
536*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
537*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
538*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
539*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
540*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVELONGLONG)
541*00b67f09SDavid van Moolenbroek
542*00b67f09SDavid van Moolenbroek#
543*00b67f09SDavid van Moolenbroek# check for GCC noreturn attribute
544*00b67f09SDavid van Moolenbroek#
545*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for GCC noreturn attribute)
546*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([],[void foo() __attribute__((noreturn));],
547*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
548*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
549*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"],
550*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
551*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
552*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"])
553*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NORETURN_PRE)
554*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NORETURN_POST)
555*00b67f09SDavid van Moolenbroek
556*00b67f09SDavid van Moolenbroek#
557*00b67f09SDavid van Moolenbroek# check if we have lifconf
558*00b67f09SDavid van Moolenbroek#
559*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct lifconf)
560*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
561*00b67f09SDavid van Moolenbroek#include <sys/types.h>
562*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
563*00b67f09SDavid van Moolenbroek#include <net/if.h>
564*00b67f09SDavid van Moolenbroek],
565*00b67f09SDavid van Moolenbroek[
566*00b67f09SDavid van Moolenbroekstruct lifconf lifconf;
567*00b67f09SDavid van Moolenbroeklifconf.lifc_len = 0;
568*00b67f09SDavid van Moolenbroek]
569*00b67f09SDavid van Moolenbroek,
570*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
571*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVELIFCONF="#define ISC_PLATFORM_HAVELIFCONF 1"],
572*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
573*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"])
574*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVELIFCONF)
575*00b67f09SDavid van Moolenbroek
576*00b67f09SDavid van Moolenbroek#
577*00b67f09SDavid van Moolenbroek# check if we have kqueue
578*00b67f09SDavid van Moolenbroek#
579*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(kqueue,
580*00b67f09SDavid van Moolenbroek	[  --enable-kqueue         use BSD kqueue when available [[default=yes]]],
581*00b67f09SDavid van Moolenbroek	      want_kqueue="$enableval",  want_kqueue="yes")
582*00b67f09SDavid van Moolenbroekcase $want_kqueue in
583*00b67f09SDavid van Moolenbroekyes)
584*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
585*00b67f09SDavid van Moolenbroek	case $ac_cv_have_kqueue in
586*00b67f09SDavid van Moolenbroek	yes)
587*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
588*00b67f09SDavid van Moolenbroek		;;
589*00b67f09SDavid van Moolenbroek	*)
590*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
591*00b67f09SDavid van Moolenbroek		;;
592*00b67f09SDavid van Moolenbroek	esac
593*00b67f09SDavid van Moolenbroek	;;
594*00b67f09SDavid van Moolenbroek*)
595*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
596*00b67f09SDavid van Moolenbroek	;;
597*00b67f09SDavid van Moolenbroekesac
598*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEKQUEUE)
599*00b67f09SDavid van Moolenbroek
600*00b67f09SDavid van Moolenbroek#
601*00b67f09SDavid van Moolenbroek# check if we have epoll.  Linux kernel 2.4 has epoll_create() which fails,
602*00b67f09SDavid van Moolenbroek# so we need to try running the code, not just test its existence.
603*00b67f09SDavid van Moolenbroek#
604*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(epoll,
605*00b67f09SDavid van Moolenbroek[  --enable-epoll          use Linux epoll when available [[default=auto]]],
606*00b67f09SDavid van Moolenbroek	      want_epoll="$enableval",  want_epoll="auto")
607*00b67f09SDavid van Moolenbroekcase $want_epoll in
608*00b67f09SDavid van Moolenbroekauto)
609*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(epoll support)
610*00b67f09SDavid van Moolenbroek	AC_TRY_RUN([
611*00b67f09SDavid van Moolenbroek#include <sys/epoll.h>
612*00b67f09SDavid van Moolenbroekint main() {
613*00b67f09SDavid van Moolenbroek	if (epoll_create(1) < 0)
614*00b67f09SDavid van Moolenbroek		return (1);
615*00b67f09SDavid van Moolenbroek	return (0);
616*00b67f09SDavid van Moolenbroek}
617*00b67f09SDavid van Moolenbroek],
618*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
619*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"],
620*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
621*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"],
622*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
623*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"])
624*00b67f09SDavid van Moolenbroek	;;
625*00b67f09SDavid van Moolenbroekyes)
626*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
627*00b67f09SDavid van Moolenbroek	;;
628*00b67f09SDavid van Moolenbroek*)
629*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
630*00b67f09SDavid van Moolenbroek	;;
631*00b67f09SDavid van Moolenbroekesac
632*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEEPOLL)
633*00b67f09SDavid van Moolenbroek
634*00b67f09SDavid van Moolenbroek#
635*00b67f09SDavid van Moolenbroek# check if we support /dev/poll
636*00b67f09SDavid van Moolenbroek#
637*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(devpoll,
638*00b67f09SDavid van Moolenbroek	[  --enable-devpoll        use /dev/poll when available [[default=yes]]],
639*00b67f09SDavid van Moolenbroek	      want_devpoll="$enableval",  want_devpoll="yes")
640*00b67f09SDavid van Moolenbroekcase $want_devpoll in
641*00b67f09SDavid van Moolenbroekyes)
642*00b67f09SDavid van Moolenbroek	AC_CHECK_HEADERS(sys/devpoll.h devpoll.h,
643*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
644*00b67f09SDavid van Moolenbroek	,
645*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
646*00b67f09SDavid van Moolenbroek	)
647*00b67f09SDavid van Moolenbroek	;;
648*00b67f09SDavid van Moolenbroek*)
649*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
650*00b67f09SDavid van Moolenbroek	;;
651*00b67f09SDavid van Moolenbroekesac
652*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEDEVPOLL)
653*00b67f09SDavid van Moolenbroek
654*00b67f09SDavid van Moolenbroek#
655*00b67f09SDavid van Moolenbroek# check if we need to #include sys/select.h explicitly
656*00b67f09SDavid van Moolenbroek#
657*00b67f09SDavid van Moolenbroekcase $ac_cv_header_unistd_h in
658*00b67f09SDavid van Moolenbroekyes)
659*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(if unistd.h or sys/types.h defines fd_set)
660*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
661*00b67f09SDavid van Moolenbroek#include <sys/types.h> /* Ultrix */
662*00b67f09SDavid van Moolenbroek#include <unistd.h>],
663*00b67f09SDavid van Moolenbroek[fd_set read_set; return (0);],
664*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
665*00b67f09SDavid van Moolenbroek	 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
666*00b67f09SDavid van Moolenbroek	 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
667*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
668*00b67f09SDavid van Moolenbroek	case $ac_cv_header_sys_select_h in
669*00b67f09SDavid van Moolenbroek	yes)
670*00b67f09SDavid van Moolenbroek	 ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
671*00b67f09SDavid van Moolenbroek	 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
672*00b67f09SDavid van Moolenbroek		;;
673*00b67f09SDavid van Moolenbroek	no)
674*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([need either working unistd.h or sys/select.h])
675*00b67f09SDavid van Moolenbroek		;;
676*00b67f09SDavid van Moolenbroek	esac
677*00b67f09SDavid van Moolenbroek	])
678*00b67f09SDavid van Moolenbroek	;;
679*00b67f09SDavid van Moolenbroekno)
680*00b67f09SDavid van Moolenbroek	case $ac_cv_header_sys_select_h in
681*00b67f09SDavid van Moolenbroek	yes)
682*00b67f09SDavid van Moolenbroek	     ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
683*00b67f09SDavid van Moolenbroek	     LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
684*00b67f09SDavid van Moolenbroek		;;
685*00b67f09SDavid van Moolenbroek	no)
686*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([need either unistd.h or sys/select.h])
687*00b67f09SDavid van Moolenbroek		;;
688*00b67f09SDavid van Moolenbroek	esac
689*00b67f09SDavid van Moolenbroek	;;
690*00b67f09SDavid van Moolenbroekesac
691*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
692*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)
693*00b67f09SDavid van Moolenbroek
694*00b67f09SDavid van Moolenbroek#
695*00b67f09SDavid van Moolenbroek# Find the machine's endian flavor.
696*00b67f09SDavid van Moolenbroek#
697*00b67f09SDavid van MoolenbroekAC_C_BIGENDIAN
698*00b67f09SDavid van Moolenbroek
699*00b67f09SDavid van Moolenbroek#
700*00b67f09SDavid van Moolenbroek# GeoIP support?
701*00b67f09SDavid van Moolenbroek#
702*00b67f09SDavid van MoolenbroekGEOIPLINKSRCS=
703*00b67f09SDavid van MoolenbroekGEOIPLINKOBJS=
704*00b67f09SDavid van MoolenbroekAC_ARG_WITH(geoip,
705*00b67f09SDavid van Moolenbroek[  --with-geoip=PATH       Build with GeoIP support (yes|no|path)],
706*00b67f09SDavid van Moolenbroek    use_geoip="$withval", use_geoip="no")
707*00b67f09SDavid van Moolenbroek
708*00b67f09SDavid van Moolenbroekif test "$use_geoip" = "yes"
709*00b67f09SDavid van Moolenbroekthen
710*00b67f09SDavid van Moolenbroek	for d in /usr /usr/local /opt/local
711*00b67f09SDavid van Moolenbroek	do
712*00b67f09SDavid van Moolenbroek		if test -f $d/include/GeoIP.h
713*00b67f09SDavid van Moolenbroek		then
714*00b67f09SDavid van Moolenbroek			use_geoip=$d
715*00b67f09SDavid van Moolenbroek			break
716*00b67f09SDavid van Moolenbroek		fi
717*00b67f09SDavid van Moolenbroek	done
718*00b67f09SDavid van Moolenbroekfi
719*00b67f09SDavid van Moolenbroek
720*00b67f09SDavid van Moolenbroekcase "$use_geoip" in
721*00b67f09SDavid van Moolenbroek	no|'')
722*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING([for GeoIP support])
723*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT([disabled])
724*00b67f09SDavid van Moolenbroek		;;
725*00b67f09SDavid van Moolenbroek	*)
726*00b67f09SDavid van Moolenbroek		if test -d "$use_geoip" -o -L "$use_geoip"
727*00b67f09SDavid van Moolenbroek		then
728*00b67f09SDavid van Moolenbroek			CFLAGS="$CFLAGS -I$use_geoip/include"
729*00b67f09SDavid van Moolenbroek			CPPFLAGS="$CPPFLAGS -I$use_geoip/include"
730*00b67f09SDavid van Moolenbroek			LIBS="$LIBS -L$use_geoip/lib"
731*00b67f09SDavid van Moolenbroek			case "$host_os" in
732*00b67f09SDavid van Moolenbroek				netbsd*|openbsd*|solaris*)
733*00b67f09SDavid van Moolenbroek					LIBS="$LIBS -Wl,-rpath=$use_geoip/lib"
734*00b67f09SDavid van Moolenbroek					;;
735*00b67f09SDavid van Moolenbroek			esac
736*00b67f09SDavid van Moolenbroek		elif test "$use_geoip" = "yes"
737*00b67f09SDavid van Moolenbroek		then
738*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([GeoIP path not found])
739*00b67f09SDavid van Moolenbroek		else
740*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([GeoIP path $use_geoip does not exist])
741*00b67f09SDavid van Moolenbroek		fi
742*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADER(GeoIP.h, [],
743*00b67f09SDavid van Moolenbroek			[AC_MSG_ERROR([GeoIP header file not found])]
744*00b67f09SDavid van Moolenbroek		)
745*00b67f09SDavid van Moolenbroek		AC_SEARCH_LIBS(GeoIP_open, GeoIP, [],
746*00b67f09SDavid van Moolenbroek			[AC_MSG_ERROR([GeoIP library not found])]
747*00b67f09SDavid van Moolenbroek		)
748*00b67f09SDavid van Moolenbroek		AC_SEARCH_LIBS(fabsf, m, [],
749*00b67f09SDavid van Moolenbroek			[AC_MSG_ERROR([Math library not found])]
750*00b67f09SDavid van Moolenbroek		)
751*00b67f09SDavid van Moolenbroek		AC_DEFINE(HAVE_GEOIP, 1, Build with GeoIP support)
752*00b67f09SDavid van Moolenbroek		GEOIPLINKSRCS='${GEOIPLINKSRCS}'
753*00b67f09SDavid van Moolenbroek		GEOIPLINKOBJS='${GEOIPLINKOBJS}'
754*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING([for GeoIP support])
755*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT([yes])
756*00b67f09SDavid van Moolenbroek
757*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING([for GeoIP Country IPv6 support])
758*00b67f09SDavid van Moolenbroek		AC_COMPILE_IFELSE(
759*00b67f09SDavid van Moolenbroek			[AC_LANG_PROGRAM([
760*00b67f09SDavid van Moolenbroek				#include <GeoIP.h>
761*00b67f09SDavid van Moolenbroek				#include <netinet/in.h>
762*00b67f09SDavid van Moolenbroek			], [
763*00b67f09SDavid van Moolenbroek				struct in6_addr in6;
764*00b67f09SDavid van Moolenbroek				GeoIP_country_name_by_ipnum_v6(NULL, in6);
765*00b67f09SDavid van Moolenbroek			])],
766*00b67f09SDavid van Moolenbroek			[
767*00b67f09SDavid van Moolenbroek				AC_MSG_RESULT([yes])
768*00b67f09SDavid van Moolenbroek				AC_DEFINE(HAVE_GEOIP_V6, 1, Build with GeoIP Country IPv6 support)
769*00b67f09SDavid van Moolenbroek			],
770*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT([no])]
771*00b67f09SDavid van Moolenbroek		)
772*00b67f09SDavid van Moolenbroek
773*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING([for GeoIP City IPv6 support])
774*00b67f09SDavid van Moolenbroek		AC_COMPILE_IFELSE(
775*00b67f09SDavid van Moolenbroek			[AC_LANG_PROGRAM([
776*00b67f09SDavid van Moolenbroek				#include <GeoIP.h>
777*00b67f09SDavid van Moolenbroek				#include <GeoIPCity.h>
778*00b67f09SDavid van Moolenbroek				#include <netinet/in.h>
779*00b67f09SDavid van Moolenbroek			], [
780*00b67f09SDavid van Moolenbroek				struct in6_addr in6;
781*00b67f09SDavid van Moolenbroek				int i = GEOIP_CITY_EDITION_REV0_V6;
782*00b67f09SDavid van Moolenbroek				GeoIP_record_by_ipnum_v6(NULL, in6);
783*00b67f09SDavid van Moolenbroek			])],
784*00b67f09SDavid van Moolenbroek			[
785*00b67f09SDavid van Moolenbroek				AC_MSG_RESULT([yes])
786*00b67f09SDavid van Moolenbroek				AC_DEFINE(HAVE_GEOIP_CITY_V6, 1, Build with GeoIP City IPv6 support)
787*00b67f09SDavid van Moolenbroek			],
788*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT([no])]
789*00b67f09SDavid van Moolenbroek		)
790*00b67f09SDavid van Moolenbroek		;;
791*00b67f09SDavid van Moolenbroekesac
792*00b67f09SDavid van MoolenbroekAC_SUBST(GEOIPLINKSRCS)
793*00b67f09SDavid van MoolenbroekAC_SUBST(GEOIPLINKOBJS)
794*00b67f09SDavid van Moolenbroek
795*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for GSSAPI library)
796*00b67f09SDavid van MoolenbroekAC_ARG_WITH(gssapi,
797*00b67f09SDavid van Moolenbroek[  --with-gssapi=PATH      Specify path for system-supplied GSSAPI [[default=yes]]],
798*00b67f09SDavid van Moolenbroek    use_gssapi="$withval", use_gssapi="yes")
799*00b67f09SDavid van Moolenbroek
800*00b67f09SDavid van Moolenbroek# gssapi is just the framework, we really require kerberos v5, so
801*00b67f09SDavid van Moolenbroek# look for those headers (the gssapi headers must be there, too)
802*00b67f09SDavid van Moolenbroek# The problem with this implementation is that it doesn't allow
803*00b67f09SDavid van Moolenbroek# for the specification of gssapi and krb5 headers in different locations,
804*00b67f09SDavid van Moolenbroek# which probably ought to be fixed although fixing might raise the issue of
805*00b67f09SDavid van Moolenbroek# trying to build with incompatible versions of gssapi and krb5.
806*00b67f09SDavid van Moolenbroekif test "$use_gssapi" = "yes"
807*00b67f09SDavid van Moolenbroekthen
808*00b67f09SDavid van Moolenbroek	# first, deal with the obvious
809*00b67f09SDavid van Moolenbroek	if test \( -f /usr/include/kerberosv5/krb5.h -o \
810*00b67f09SDavid van Moolenbroek		   -f /usr/include/krb5/krb5.h -o \
811*00b67f09SDavid van Moolenbroek		   -f /usr/include/krb5.h \)   -a \
812*00b67f09SDavid van Moolenbroek		\( -f /usr/include/gssapi.h -o \
813*00b67f09SDavid van Moolenbroek		   -f /usr/include/gssapi/gssapi.h \)
814*00b67f09SDavid van Moolenbroek	then
815*00b67f09SDavid van Moolenbroek		use_gssapi=/usr
816*00b67f09SDavid van Moolenbroek	else
817*00b67f09SDavid van Moolenbroek	    krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr"
818*00b67f09SDavid van Moolenbroek	    for d in $krb5dirs
819*00b67f09SDavid van Moolenbroek	    do
820*00b67f09SDavid van Moolenbroek		if test -f $d/include/gssapi/gssapi_krb5.h -o \
821*00b67f09SDavid van Moolenbroek			-f $d/include/krb5.h
822*00b67f09SDavid van Moolenbroek		then
823*00b67f09SDavid van Moolenbroek			if test -f $d/include/gssapi/gssapi.h -o \
824*00b67f09SDavid van Moolenbroek				-f $d/include/gssapi.h
825*00b67f09SDavid van Moolenbroek			then
826*00b67f09SDavid van Moolenbroek				use_gssapi=$d
827*00b67f09SDavid van Moolenbroek				break
828*00b67f09SDavid van Moolenbroek			fi
829*00b67f09SDavid van Moolenbroek		fi
830*00b67f09SDavid van Moolenbroek		use_gssapi="no"
831*00b67f09SDavid van Moolenbroek	    done
832*00b67f09SDavid van Moolenbroek	fi
833*00b67f09SDavid van Moolenbroekfi
834*00b67f09SDavid van Moolenbroek
835*00b67f09SDavid van Moolenbroekcase "$use_gssapi" in
836*00b67f09SDavid van Moolenbroek	no)
837*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(disabled)
838*00b67f09SDavid van Moolenbroek		USE_GSSAPI=''
839*00b67f09SDavid van Moolenbroek		;;
840*00b67f09SDavid van Moolenbroek	yes)
841*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([--with-gssapi must specify a path])
842*00b67f09SDavid van Moolenbroek		;;
843*00b67f09SDavid van Moolenbroek	*)
844*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(looking in $use_gssapi/lib)
845*00b67f09SDavid van Moolenbroek		USE_GSSAPI='-DGSSAPI'
846*00b67f09SDavid van Moolenbroek		saved_cppflags="$CPPFLAGS"
847*00b67f09SDavid van Moolenbroek		CPPFLAGS="-I$use_gssapi/include $CPPFLAGS"
848*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
849*00b67f09SDavid van Moolenbroek		    [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"
850*00b67f09SDavid van Moolenbroek		     gssapi_hack="#include <$ac_header>"])
851*00b67f09SDavid van Moolenbroek
852*00b67f09SDavid van Moolenbroek		if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then
853*00b67f09SDavid van Moolenbroek		    AC_MSG_ERROR([gssapi.h not found])
854*00b67f09SDavid van Moolenbroek		fi
855*00b67f09SDavid van Moolenbroek
856*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h,
857*00b67f09SDavid van Moolenbroek		    [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"
858*00b67f09SDavid van Moolenbroek		     gssapi_krb5_hack="#include <$ac_header>"])
859*00b67f09SDavid van Moolenbroek
860*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h,
861*00b67f09SDavid van Moolenbroek		    [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"
862*00b67f09SDavid van Moolenbroek		    krb5_hack="#include <$ac_header>"])
863*00b67f09SDavid van Moolenbroek
864*00b67f09SDavid van Moolenbroek		if test "$ISC_PLATFORM_KRB5HEADER" = ""; then
865*00b67f09SDavid van Moolenbroek		    AC_MSG_ERROR([krb5.h not found])
866*00b67f09SDavid van Moolenbroek		fi
867*00b67f09SDavid van Moolenbroek
868*00b67f09SDavid van Moolenbroek		#
869*00b67f09SDavid van Moolenbroek		# XXXDCL This probably doesn't work right on all systems.
870*00b67f09SDavid van Moolenbroek		# It will need to be worked on as problems become evident.
871*00b67f09SDavid van Moolenbroek		#
872*00b67f09SDavid van Moolenbroek		# Essentially the problems here relate to two different
873*00b67f09SDavid van Moolenbroek		# areas.  The first area is building with either KTH
874*00b67f09SDavid van Moolenbroek		# or MIT Kerberos, particularly when both are present on
875*00b67f09SDavid van Moolenbroek		# the machine.  The other is static versus dynamic linking.
876*00b67f09SDavid van Moolenbroek		#
877*00b67f09SDavid van Moolenbroek		# On the KTH vs MIT issue, Both have libkrb5 that can mess
878*00b67f09SDavid van Moolenbroek		# up the works if one implementation ends up trying to
879*00b67f09SDavid van Moolenbroek		# use the other's krb.  This is unfortunately a situation
880*00b67f09SDavid van Moolenbroek		# that very easily arises.
881*00b67f09SDavid van Moolenbroek		#
882*00b67f09SDavid van Moolenbroek		# Dynamic linking when the dependency information is built
883*00b67f09SDavid van Moolenbroek		# into MIT's libgssapi_krb5 or KTH's libgssapi magically makes
884*00b67f09SDavid van Moolenbroek		# all such problems go away, but when that setup is not
885*00b67f09SDavid van Moolenbroek		# present, because either the dynamic libraries lack
886*00b67f09SDavid van Moolenbroek		# dependencies or static linking is being done, then the
887*00b67f09SDavid van Moolenbroek		# problems start to show up.
888*00b67f09SDavid van Moolenbroek		saved_libs="$LIBS"
889*00b67f09SDavid van Moolenbroek		for TRY_LIBS in \
890*00b67f09SDavid van Moolenbroek		    "-lgssapi_krb5" \
891*00b67f09SDavid van Moolenbroek		    "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \
892*00b67f09SDavid van Moolenbroek		    "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \
893*00b67f09SDavid van Moolenbroek		    "-lgssapi" \
894*00b67f09SDavid van Moolenbroek		    "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \
895*00b67f09SDavid van Moolenbroek		    "-lgssapi -lkrb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
896*00b67f09SDavid van Moolenbroek		    "-lgssapi -lkrb5 -lgssapi_krb5 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
897*00b67f09SDavid van Moolenbroek		    "-lgssapi -lkrb5 -lhx509 -lcrypto -lcrypt -lasn1 -lroken -lcom_err" \
898*00b67f09SDavid van Moolenbroek		    "-lgss -lkrb5"
899*00b67f09SDavid van Moolenbroek		do
900*00b67f09SDavid van Moolenbroek		    # Note that this does not include $saved_libs, because
901*00b67f09SDavid van Moolenbroek		    # on FreeBSD machines this configure script has added
902*00b67f09SDavid van Moolenbroek		    # -L/usr/local/lib to LIBS, which can make the
903*00b67f09SDavid van Moolenbroek		    # -lgssapi_krb5 test succeed with shared libraries even
904*00b67f09SDavid van Moolenbroek		    # when you are trying to build with KTH in /usr/lib.
905*00b67f09SDavid van Moolenbroek		    if test "$use_gssapi" = "/usr"
906*00b67f09SDavid van Moolenbroek		    then
907*00b67f09SDavid van Moolenbroek			    LIBS="$TRY_LIBS"
908*00b67f09SDavid van Moolenbroek		    else
909*00b67f09SDavid van Moolenbroek			    LIBS="-L$use_gssapi/lib $TRY_LIBS"
910*00b67f09SDavid van Moolenbroek		    fi
911*00b67f09SDavid van Moolenbroek		    AC_MSG_CHECKING(linking as $TRY_LIBS)
912*00b67f09SDavid van Moolenbroek		    AC_TRY_LINK([
913*00b67f09SDavid van Moolenbroek#include <sys/types.h>
914*00b67f09SDavid van Moolenbroek$gssapi_hack
915*00b67f09SDavid van Moolenbroek$gssapi_krb5_hack
916*00b67f09SDavid van Moolenbroek$krb5_hack
917*00b67f09SDavid van Moolenbroek				] , [gss_acquire_cred(NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);krb5_init_context(NULL);
918*00b67f09SDavid van Moolenbroek#if defined(HAVE_GSSAPI_KRB5_H) || defined(HAVE_GSSAPI_GSSAPI_KRB5_H)
919*00b67f09SDavid van Moolenbroekgsskrb5_register_acceptor_identity(NULL);
920*00b67f09SDavid van Moolenbroek#endif],
921*00b67f09SDavid van Moolenbroek				gssapi_linked=yes, gssapi_linked=no)
922*00b67f09SDavid van Moolenbroek		    case $gssapi_linked in
923*00b67f09SDavid van Moolenbroek		    yes) AC_MSG_RESULT(yes); break ;;
924*00b67f09SDavid van Moolenbroek		    no)  AC_MSG_RESULT(no) ;;
925*00b67f09SDavid van Moolenbroek		    esac
926*00b67f09SDavid van Moolenbroek		done
927*00b67f09SDavid van Moolenbroek
928*00b67f09SDavid van Moolenbroek		CPPFLAGS="$saved_cppflags"
929*00b67f09SDavid van Moolenbroek
930*00b67f09SDavid van Moolenbroek		case $gssapi_linked in
931*00b67f09SDavid van Moolenbroek		no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;;
932*00b67f09SDavid van Moolenbroek		esac
933*00b67f09SDavid van Moolenbroek
934*00b67f09SDavid van Moolenbroek		#
935*00b67f09SDavid van Moolenbroek		# XXXDCL Major kludge.  Tries to cope with KTH in /usr/lib
936*00b67f09SDavid van Moolenbroek		# but MIT in /usr/local/lib and trying to build with KTH.
937*00b67f09SDavid van Moolenbroek		# /usr/local/lib can end up earlier on the link lines.
938*00b67f09SDavid van Moolenbroek		# Like most kludges, this one is not only inelegant it
939*00b67f09SDavid van Moolenbroek		# is also likely to be the wrong thing to do at least as
940*00b67f09SDavid van Moolenbroek		# many times as it is the right thing.  Something better
941*00b67f09SDavid van Moolenbroek		# needs to be done.
942*00b67f09SDavid van Moolenbroek		#
943*00b67f09SDavid van Moolenbroek		if test "$use_gssapi" = "/usr" -a \
944*00b67f09SDavid van Moolenbroek			-f /usr/local/lib/libkrb5.a; then
945*00b67f09SDavid van Moolenbroek		    FIX_KTH_VS_MIT=yes
946*00b67f09SDavid van Moolenbroek		fi
947*00b67f09SDavid van Moolenbroek
948*00b67f09SDavid van Moolenbroek		case "$FIX_KTH_VS_MIT" in
949*00b67f09SDavid van Moolenbroek		yes)
950*00b67f09SDavid van Moolenbroek		    case "$enable_static_linking" in
951*00b67f09SDavid van Moolenbroek		    yes) gssapi_lib_suffix=".a"  ;;
952*00b67f09SDavid van Moolenbroek		    *)   gssapi_lib_suffix=".so" ;;
953*00b67f09SDavid van Moolenbroek		    esac
954*00b67f09SDavid van Moolenbroek
955*00b67f09SDavid van Moolenbroek		    for lib in $LIBS; do
956*00b67f09SDavid van Moolenbroek			case $lib in
957*00b67f09SDavid van Moolenbroek			-L*)
958*00b67f09SDavid van Moolenbroek			    ;;
959*00b67f09SDavid van Moolenbroek			-l*)
960*00b67f09SDavid van Moolenbroek			    new_lib=`echo $lib |
961*00b67f09SDavid van Moolenbroek				     sed -e s%^-l%$use_gssapi/lib/lib% \
962*00b67f09SDavid van Moolenbroek					 -e s%$%$gssapi_lib_suffix%`
963*00b67f09SDavid van Moolenbroek			    NEW_LIBS="$NEW_LIBS $new_lib"
964*00b67f09SDavid van Moolenbroek			    ;;
965*00b67f09SDavid van Moolenbroek			*)
966*00b67f09SDavid van Moolenbroek			   AC_MSG_ERROR([KTH vs MIT Kerberos confusion!])
967*00b67f09SDavid van Moolenbroek			    ;;
968*00b67f09SDavid van Moolenbroek			esac
969*00b67f09SDavid van Moolenbroek		    done
970*00b67f09SDavid van Moolenbroek		    LIBS="$NEW_LIBS"
971*00b67f09SDavid van Moolenbroek		    ;;
972*00b67f09SDavid van Moolenbroek		esac
973*00b67f09SDavid van Moolenbroek
974*00b67f09SDavid van Moolenbroek		DST_GSSAPI_INC="-I$use_gssapi/include"
975*00b67f09SDavid van Moolenbroek		DNS_GSSAPI_LIBS="$LIBS"
976*00b67f09SDavid van Moolenbroek
977*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include)
978*00b67f09SDavid van Moolenbroek		LIBS="$saved_libs"
979*00b67f09SDavid van Moolenbroek		;;
980*00b67f09SDavid van Moolenbroekesac
981*00b67f09SDavid van Moolenbroek
982*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEGSSAPI)
983*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_GSSAPIHEADER)
984*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER)
985*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_KRB5HEADER)
986*00b67f09SDavid van Moolenbroek
987*00b67f09SDavid van MoolenbroekAC_SUBST(USE_GSSAPI)
988*00b67f09SDavid van MoolenbroekAC_SUBST(DST_GSSAPI_INC)
989*00b67f09SDavid van MoolenbroekAC_SUBST(DNS_GSSAPI_LIBS)
990*00b67f09SDavid van MoolenbroekDNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS"
991*00b67f09SDavid van Moolenbroek
992*00b67f09SDavid van Moolenbroek#
993*00b67f09SDavid van Moolenbroek# Applications linking with libdns also need to link with these libraries.
994*00b67f09SDavid van Moolenbroek#
995*00b67f09SDavid van Moolenbroek
996*00b67f09SDavid van MoolenbroekAC_SUBST(DNS_CRYPTO_LIBS)
997*00b67f09SDavid van Moolenbroek
998*00b67f09SDavid van Moolenbroek#
999*00b67f09SDavid van Moolenbroek# was --with-randomdev specified?
1000*00b67f09SDavid van Moolenbroek#
1001*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for random device)
1002*00b67f09SDavid van MoolenbroekAC_ARG_WITH(randomdev,
1003*00b67f09SDavid van Moolenbroek[  --with-randomdev=PATH   Specify path for random device],
1004*00b67f09SDavid van Moolenbroek    use_randomdev="$withval", use_randomdev="unspec")
1005*00b67f09SDavid van Moolenbroek
1006*00b67f09SDavid van Moolenbroekcase "$use_randomdev" in
1007*00b67f09SDavid van Moolenbroek	unspec)
1008*00b67f09SDavid van Moolenbroek		case "$cross_compiling" in
1009*00b67f09SDavid van Moolenbroek		yes)
1010*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(unspecified)
1011*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([ need --with-randomdev=PATH or --with-randomdev=no])
1012*00b67f09SDavid van Moolenbroek		esac
1013*00b67f09SDavid van Moolenbroek		case "$host" in
1014*00b67f09SDavid van Moolenbroek			*-openbsd*)
1015*00b67f09SDavid van Moolenbroek				devrandom=/dev/arandom
1016*00b67f09SDavid van Moolenbroek				;;
1017*00b67f09SDavid van Moolenbroek			*)
1018*00b67f09SDavid van Moolenbroek				devrandom=/dev/urandom
1019*00b67f09SDavid van Moolenbroek				;;
1020*00b67f09SDavid van Moolenbroek		esac
1021*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT($devrandom)
1022*00b67f09SDavid van Moolenbroek		AC_CHECK_FILE($devrandom,
1023*00b67f09SDavid van Moolenbroek			      AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
1024*00b67f09SDavid van Moolenbroek						 "$devrandom"),)
1025*00b67f09SDavid van Moolenbroek
1026*00b67f09SDavid van Moolenbroek		;;
1027*00b67f09SDavid van Moolenbroek	yes)
1028*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([--with-randomdev must specify a path])
1029*00b67f09SDavid van Moolenbroek		;;
1030*00b67f09SDavid van Moolenbroek	no)
1031*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(disabled)
1032*00b67f09SDavid van Moolenbroek		;;
1033*00b67f09SDavid van Moolenbroek	*)
1034*00b67f09SDavid van Moolenbroek		AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
1035*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(using "$use_randomdev")
1036*00b67f09SDavid van Moolenbroek		;;
1037*00b67f09SDavid van Moolenbroekesac
1038*00b67f09SDavid van Moolenbroek
1039*00b67f09SDavid van Moolenbroek#
1040*00b67f09SDavid van Moolenbroek# Only check dsa signature generation on these platforms when performing
1041*00b67f09SDavid van Moolenbroek# system tests.
1042*00b67f09SDavid van Moolenbroek#
1043*00b67f09SDavid van MoolenbroekCHECK_DSA=0
1044*00b67f09SDavid van Moolenbroekif grep "#define PATH_RANDOMDEV " confdefs.h > /dev/null
1045*00b67f09SDavid van Moolenbroekthen
1046*00b67f09SDavid van Moolenbroek	case "$host" in
1047*00b67f09SDavid van Moolenbroek	*darwin*|*freebsd*)
1048*00b67f09SDavid van Moolenbroek		CHECK_DSA=1
1049*00b67f09SDavid van Moolenbroek		;;
1050*00b67f09SDavid van Moolenbroek	esac
1051*00b67f09SDavid van Moolenbroekfi
1052*00b67f09SDavid van MoolenbroekAC_SUBST(CHECK_DSA)
1053*00b67f09SDavid van Moolenbroek
1054*00b67f09SDavid van Moolenbroek#
1055*00b67f09SDavid van Moolenbroek# Do we have arc4random(), etc ? arc4random_addrandom() has been removed
1056*00b67f09SDavid van Moolenbroek# from OpenBSD 5.5 onwards.
1057*00b67f09SDavid van Moolenbroek#
1058*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(arc4random, AC_DEFINE(HAVE_ARC4RANDOM))
1059*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(arc4random_addrandom, AC_DEFINE(HAVE_ARC4RANDOM_ADDRANDOM))
1060*00b67f09SDavid van Moolenbroek
1061*00b67f09SDavid van Moolenbroeksinclude(config.threads.in)dnl
1062*00b67f09SDavid van Moolenbroek
1063*00b67f09SDavid van Moolenbroekif $use_threads
1064*00b67f09SDavid van Moolenbroekthen
1065*00b67f09SDavid van Moolenbroek	if test "X$GCC" = "Xyes"; then
1066*00b67f09SDavid van Moolenbroek		case "$host" in
1067*00b67f09SDavid van Moolenbroek		*-freebsd*)
1068*00b67f09SDavid van Moolenbroek			CC="$CC -pthread"
1069*00b67f09SDavid van Moolenbroek			CCOPT="$CCOPT -pthread"
1070*00b67f09SDavid van Moolenbroek			CCNOOPT="$CCNOOPT -pthread"
1071*00b67f09SDavid van Moolenbroek			STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1072*00b67f09SDavid van Moolenbroek			;;
1073*00b67f09SDavid van Moolenbroek		*-openbsd*)
1074*00b67f09SDavid van Moolenbroek			CC="$CC -pthread"
1075*00b67f09SDavid van Moolenbroek			CCOPT="$CCOPT -pthread"
1076*00b67f09SDavid van Moolenbroek			CCNOOPT="$CCNOOPT -pthread"
1077*00b67f09SDavid van Moolenbroek			;;
1078*00b67f09SDavid van Moolenbroek		*-solaris*)
1079*00b67f09SDavid van Moolenbroek			LIBS="$LIBS -lthread"
1080*00b67f09SDavid van Moolenbroek			;;
1081*00b67f09SDavid van Moolenbroek		*-ibm-aix*)
1082*00b67f09SDavid van Moolenbroek			STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1083*00b67f09SDavid van Moolenbroek			;;
1084*00b67f09SDavid van Moolenbroek		esac
1085*00b67f09SDavid van Moolenbroek	else
1086*00b67f09SDavid van Moolenbroek		case $host in
1087*00b67f09SDavid van Moolenbroek		*-dec-osf*)
1088*00b67f09SDavid van Moolenbroek			CC="$CC -pthread"
1089*00b67f09SDavid van Moolenbroek			CCOPT="$CCOPT -pthread"
1090*00b67f09SDavid van Moolenbroek			CCNOOPT="$CCNOOPT -pthread"
1091*00b67f09SDavid van Moolenbroek			;;
1092*00b67f09SDavid van Moolenbroek		*-solaris*)
1093*00b67f09SDavid van Moolenbroek			CC="$CC -mt"
1094*00b67f09SDavid van Moolenbroek			CCOPT="$CCOPT -mt"
1095*00b67f09SDavid van Moolenbroek			CCNOOPT="$CCNOOPT -mt"
1096*00b67f09SDavid van Moolenbroek			;;
1097*00b67f09SDavid van Moolenbroek		*-ibm-aix*)
1098*00b67f09SDavid van Moolenbroek			STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
1099*00b67f09SDavid van Moolenbroek			;;
1100*00b67f09SDavid van Moolenbroek		*-sco-sysv*uw*|*-*-sysv*UnixWare*)
1101*00b67f09SDavid van Moolenbroek			CC="$CC -Kthread"
1102*00b67f09SDavid van Moolenbroek			CCOPT="$CCOPT -Kthread"
1103*00b67f09SDavid van Moolenbroek			CCNOOPT="$CCNOOPT -Kthread"
1104*00b67f09SDavid van Moolenbroek			;;
1105*00b67f09SDavid van Moolenbroek		*-*-sysv*OpenUNIX*)
1106*00b67f09SDavid van Moolenbroek			CC="$CC -Kpthread"
1107*00b67f09SDavid van Moolenbroek			CCOPT="$CCOPT -Kpthread"
1108*00b67f09SDavid van Moolenbroek			CCNOOPT="$CCNOOPT -Kpthread"
1109*00b67f09SDavid van Moolenbroek			;;
1110*00b67f09SDavid van Moolenbroek		esac
1111*00b67f09SDavid van Moolenbroek	fi
1112*00b67f09SDavid van Moolenbroek	ALWAYS_DEFINES="-D_REENTRANT"
1113*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
1114*00b67f09SDavid van Moolenbroek	THREADOPTOBJS='${THREADOPTOBJS}'
1115*00b67f09SDavid van Moolenbroek	THREADOPTSRCS='${THREADOPTSRCS}'
1116*00b67f09SDavid van Moolenbroek	thread_dir=pthreads
1117*00b67f09SDavid van Moolenbroek	#
1118*00b67f09SDavid van Moolenbroek	# We'd like to use sigwait() too
1119*00b67f09SDavid van Moolenbroek	#
1120*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNC(sigwait,
1121*00b67f09SDavid van Moolenbroek		      AC_DEFINE(HAVE_SIGWAIT),
1122*00b67f09SDavid van Moolenbroek		      AC_CHECK_LIB(c, sigwait,
1123*00b67f09SDavid van Moolenbroek		      AC_DEFINE(HAVE_SIGWAIT),
1124*00b67f09SDavid van Moolenbroek		      AC_CHECK_LIB(pthread, sigwait,
1125*00b67f09SDavid van Moolenbroek				   AC_DEFINE(HAVE_SIGWAIT),
1126*00b67f09SDavid van Moolenbroek				   AC_CHECK_LIB(pthread, _Psigwait,
1127*00b67f09SDavid van Moolenbroek						AC_DEFINE(HAVE_SIGWAIT),))))
1128*00b67f09SDavid van Moolenbroek
1129*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNC(pthread_attr_getstacksize,
1130*00b67f09SDavid van Moolenbroek		      AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
1131*00b67f09SDavid van Moolenbroek
1132*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNC(pthread_attr_setstacksize,
1133*00b67f09SDavid van Moolenbroek		      AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
1134*00b67f09SDavid van Moolenbroek
1135*00b67f09SDavid van Moolenbroek        AC_ARG_WITH(locktype,
1136*00b67f09SDavid van Moolenbroek                [  --with-locktype=ARG     Specify mutex lock type (adaptive or standard)],
1137*00b67f09SDavid van Moolenbroek                locktype="$withval", locktype="adaptive")
1138*00b67f09SDavid van Moolenbroek
1139*00b67f09SDavid van Moolenbroek        case "$locktype" in
1140*00b67f09SDavid van Moolenbroek                adaptive)
1141*00b67f09SDavid van Moolenbroek                        AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
1142*00b67f09SDavid van Moolenbroek
1143*00b67f09SDavid van Moolenbroek                        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1144*00b67f09SDavid van Moolenbroek                          #define _GNU_SOURCE
1145*00b67f09SDavid van Moolenbroek                          #include <pthread.h>
1146*00b67f09SDavid van Moolenbroek                        ]], [[
1147*00b67f09SDavid van Moolenbroek                          return (PTHREAD_MUTEX_ADAPTIVE_NP);
1148*00b67f09SDavid van Moolenbroek                        ]])],
1149*00b67f09SDavid van Moolenbroek                        [ AC_MSG_RESULT(using adaptive lock type)
1150*00b67f09SDavid van Moolenbroek                          AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
1151*00b67f09SDavid van Moolenbroek                                    [Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ],
1152*00b67f09SDavid van Moolenbroek                        [ AC_MSG_RESULT(using standard lock type) ])
1153*00b67f09SDavid van Moolenbroek                        ;;
1154*00b67f09SDavid van Moolenbroek                standard)
1155*00b67f09SDavid van Moolenbroek                        AC_MSG_RESULT(using standard lock type)
1156*00b67f09SDavid van Moolenbroek                        ;;
1157*00b67f09SDavid van Moolenbroek                *)
1158*00b67f09SDavid van Moolenbroek                        AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.])
1159*00b67f09SDavid van Moolenbroek                        ;;
1160*00b67f09SDavid van Moolenbroek        esac
1161*00b67f09SDavid van Moolenbroek
1162*00b67f09SDavid van Moolenbroek	AC_CHECK_HEADERS(sched.h)
1163*00b67f09SDavid van Moolenbroek
1164*00b67f09SDavid van Moolenbroek	case "$host" in
1165*00b67f09SDavid van Moolenbroek	*solaris-*)
1166*00b67f09SDavid van Moolenbroek		AC_CHECK_LIB(rt, sched_yield)
1167*00b67f09SDavid van Moolenbroek		;;
1168*00b67f09SDavid van Moolenbroek	esac
1169*00b67f09SDavid van Moolenbroek
1170*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np)
1171*00b67f09SDavid van Moolenbroek
1172*00b67f09SDavid van Moolenbroek	#
1173*00b67f09SDavid van Moolenbroek	# Additional OS-specific issues related to pthreads and sigwait.
1174*00b67f09SDavid van Moolenbroek	#
1175*00b67f09SDavid van Moolenbroek	case "$host" in
1176*00b67f09SDavid van Moolenbroek		#
1177*00b67f09SDavid van Moolenbroek		# One more place to look for sigwait.
1178*00b67f09SDavid van Moolenbroek		#
1179*00b67f09SDavid van Moolenbroek		*-freebsd*)
1180*00b67f09SDavid van Moolenbroek			AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
1181*00b67f09SDavid van Moolenbroek			case $host in
1182*00b67f09SDavid van Moolenbroek			*-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
1183*00b67f09SDavid van Moolenbroek			*-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
1184*00b67f09SDavid van Moolenbroek				AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
1185*00b67f09SDavid van Moolenbroek				;;
1186*00b67f09SDavid van Moolenbroek			*-freebsd6.*)
1187*00b67f09SDavid van Moolenbroek				AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
1188*00b67f09SDavid van Moolenbroek				;;
1189*00b67f09SDavid van Moolenbroek			esac
1190*00b67f09SDavid van Moolenbroek			;;
1191*00b67f09SDavid van Moolenbroek		#
1192*00b67f09SDavid van Moolenbroek		# BSDI 3.0 through 4.0.1 needs pthread_init() to be
1193*00b67f09SDavid van Moolenbroek		# called before certain pthreads calls.	 This is deprecated
1194*00b67f09SDavid van Moolenbroek		# in BSD/OS 4.1.
1195*00b67f09SDavid van Moolenbroek		#
1196*00b67f09SDavid van Moolenbroek		*-bsdi3.*|*-bsdi4.0*)
1197*00b67f09SDavid van Moolenbroek			AC_DEFINE(NEED_PTHREAD_INIT)
1198*00b67f09SDavid van Moolenbroek			;;
1199*00b67f09SDavid van Moolenbroek		#
1200*00b67f09SDavid van Moolenbroek		# LinuxThreads requires some changes to the way we
1201*00b67f09SDavid van Moolenbroek		# deal with signals.
1202*00b67f09SDavid van Moolenbroek		#
1203*00b67f09SDavid van Moolenbroek		*-linux*)
1204*00b67f09SDavid van Moolenbroek			AC_DEFINE(HAVE_LINUXTHREADS)
1205*00b67f09SDavid van Moolenbroek			;;
1206*00b67f09SDavid van Moolenbroek		#
1207*00b67f09SDavid van Moolenbroek		# Ensure the right sigwait() semantics on Solaris and make
1208*00b67f09SDavid van Moolenbroek		# sure we call pthread_setconcurrency.
1209*00b67f09SDavid van Moolenbroek		#
1210*00b67f09SDavid van Moolenbroek		*-solaris*)
1211*00b67f09SDavid van Moolenbroek			AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
1212*00b67f09SDavid van Moolenbroek			AC_CHECK_FUNC(pthread_setconcurrency,
1213*00b67f09SDavid van Moolenbroek				      AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
1214*00b67f09SDavid van Moolenbroek			;;
1215*00b67f09SDavid van Moolenbroek		#
1216*00b67f09SDavid van Moolenbroek		# UnixWare does things its own way.
1217*00b67f09SDavid van Moolenbroek		#
1218*00b67f09SDavid van Moolenbroek		*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
1219*00b67f09SDavid van Moolenbroek			AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
1220*00b67f09SDavid van Moolenbroek			;;
1221*00b67f09SDavid van Moolenbroek	esac
1222*00b67f09SDavid van Moolenbroek
1223*00b67f09SDavid van Moolenbroek	#
1224*00b67f09SDavid van Moolenbroek	# Look for sysconf to allow detection of the number of processors.
1225*00b67f09SDavid van Moolenbroek	#
1226*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
1227*00b67f09SDavid van Moolenbroek
1228*00b67f09SDavid van Moolenbroekelse
1229*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
1230*00b67f09SDavid van Moolenbroek	thread_dir=nothreads
1231*00b67f09SDavid van Moolenbroek	THREADOPTOBJS=""
1232*00b67f09SDavid van Moolenbroek	THREADOPTSRCS=""
1233*00b67f09SDavid van Moolenbroek	ALWAYS_DEFINES=""
1234*00b67f09SDavid van Moolenbroekfi
1235*00b67f09SDavid van Moolenbroek
1236*00b67f09SDavid van MoolenbroekAC_SUBST(ALWAYS_DEFINES)
1237*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USETHREADS)
1238*00b67f09SDavid van MoolenbroekAC_SUBST(THREADOPTOBJS)
1239*00b67f09SDavid van MoolenbroekAC_SUBST(THREADOPTSRCS)
1240*00b67f09SDavid van MoolenbroekISC_THREAD_DIR=$thread_dir
1241*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_THREAD_DIR)
1242*00b67f09SDavid van Moolenbroek
1243*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for libtool)
1244*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libtool,
1245*00b67f09SDavid van Moolenbroek	    [  --with-libtool          use GNU libtool],
1246*00b67f09SDavid van Moolenbroek	    use_libtool="$withval", use_libtool="no")
1247*00b67f09SDavid van Moolenbroek
1248*00b67f09SDavid van Moolenbroekcase $use_libtool in
1249*00b67f09SDavid van Moolenbroek	yes)
1250*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
1251*00b67f09SDavid van Moolenbroek		AM_PROG_LIBTOOL
1252*00b67f09SDavid van Moolenbroek		O=lo
1253*00b67f09SDavid van Moolenbroek		A=la
1254*00b67f09SDavid van Moolenbroek		LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
1255*00b67f09SDavid van Moolenbroek		LIBTOOL_MODE_COMPILE='--mode=compile --tag=CC'
1256*00b67f09SDavid van Moolenbroek		LIBTOOL_MODE_INSTALL='--mode=install --tag=CC'
1257*00b67f09SDavid van Moolenbroek		LIBTOOL_MODE_LINK='--mode=link --tag=CC'
1258*00b67f09SDavid van Moolenbroek		INSTALL_LIBRARY='${INSTALL_PROGRAM}'
1259*00b67f09SDavid van Moolenbroek		case "$host" in
1260*00b67f09SDavid van Moolenbroek		*) LIBTOOL_ALLOW_UNDEFINED= ;;
1261*00b67f09SDavid van Moolenbroek		esac
1262*00b67f09SDavid van Moolenbroek		case "$host" in
1263*00b67f09SDavid van Moolenbroek		*-ibm-aix*) LIBTOOL_IN_MAIN="-Wl,-bI:T_testlist.imp" ;;
1264*00b67f09SDavid van Moolenbroek		*) LIBTOOL_IN_MAIN= ;;
1265*00b67f09SDavid van Moolenbroek		esac;
1266*00b67f09SDavid van Moolenbroek		;;
1267*00b67f09SDavid van Moolenbroek	*)
1268*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
1269*00b67f09SDavid van Moolenbroek		O=o
1270*00b67f09SDavid van Moolenbroek		A=a
1271*00b67f09SDavid van Moolenbroek		LIBTOOL=
1272*00b67f09SDavid van Moolenbroek		AC_SUBST(LIBTOOL)
1273*00b67f09SDavid van Moolenbroek		LIBTOOL_MKDEP_SED=
1274*00b67f09SDavid van Moolenbroek		LIBTOOL_MODE_COMPILE=
1275*00b67f09SDavid van Moolenbroek		LIBTOOL_MODE_INSTALL=
1276*00b67f09SDavid van Moolenbroek		LIBTOOL_MODE_LINK=
1277*00b67f09SDavid van Moolenbroek		LIBTOOL_ALLOW_UNDEFINED=
1278*00b67f09SDavid van Moolenbroek		LIBTOOL_IN_MAIN=
1279*00b67f09SDavid van Moolenbroek		INSTALL_LIBRARY='${INSTALL_DATA}'
1280*00b67f09SDavid van Moolenbroek		;;
1281*00b67f09SDavid van Moolenbroekesac
1282*00b67f09SDavid van MoolenbroekAC_SUBST(INSTALL_LIBRARY)
1283*00b67f09SDavid van Moolenbroek
1284*00b67f09SDavid van Moolenbroek#
1285*00b67f09SDavid van Moolenbroek# was --enable-native-pkcs11 specified?
1286*00b67f09SDavid van Moolenbroek#  (note it implies both --without-openssl and --with-pkcs11)
1287*00b67f09SDavid van Moolenbroek#
1288*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(native-pkcs11,
1289*00b67f09SDavid van Moolenbroek	[  --enable-native-pkcs11  use native PKCS11 for all crypto [[default=no]]],
1290*00b67f09SDavid van Moolenbroek	want_native_pkcs11="$enableval", want_native_pkcs11="no")
1291*00b67f09SDavid van Moolenbroek
1292*00b67f09SDavid van Moolenbroek#
1293*00b67f09SDavid van Moolenbroek# was --with-openssl specified?
1294*00b67f09SDavid van Moolenbroek#
1295*00b67f09SDavid van MoolenbroekAC_ARG_WITH(openssl,
1296*00b67f09SDavid van Moolenbroek[  --with-openssl[=PATH]     Build with OpenSSL [yes|no|path].
1297*00b67f09SDavid van Moolenbroek			  (Crypto is required for DNSSEC)],
1298*00b67f09SDavid van Moolenbroek    use_openssl="$withval", use_openssl="auto")
1299*00b67f09SDavid van Moolenbroek
1300*00b67f09SDavid van Moolenbroek#
1301*00b67f09SDavid van Moolenbroek# was --with-pkcs11 specified?
1302*00b67f09SDavid van Moolenbroek#
1303*00b67f09SDavid van MoolenbroekAC_ARG_WITH(pkcs11,
1304*00b67f09SDavid van Moolenbroek[  --with-pkcs11[=PATH]      Build with PKCS11 support [yes|no|path]
1305*00b67f09SDavid van Moolenbroek			  (PATH is for the PKCS11 provider)],
1306*00b67f09SDavid van Moolenbroek   use_pkcs11="$withval", use_pkcs11="auto")
1307*00b67f09SDavid van Moolenbroek
1308*00b67f09SDavid van Moolenbroek#
1309*00b67f09SDavid van Moolenbroek# were --with-ecdsa, --with-gost, --with-aes specified
1310*00b67f09SDavid van Moolenbroek#
1311*00b67f09SDavid van MoolenbroekAC_ARG_WITH(ecdsa, [  --with-ecdsa            Crypto ECDSA],
1312*00b67f09SDavid van Moolenbroek	    with_ecdsa="$withval", with_ecdsa="auto")
1313*00b67f09SDavid van MoolenbroekAC_ARG_WITH(gost, [  --with-gost             Crypto GOST [yes|no|raw|asn1].],
1314*00b67f09SDavid van Moolenbroek	    with_gost="$withval", with_gost="auto")
1315*00b67f09SDavid van MoolenbroekAC_ARG_WITH(aes, [  --with-aes              Crypto AES],
1316*00b67f09SDavid van Moolenbroek	    with_aes="$withval", with_aes="checksit")
1317*00b67f09SDavid van Moolenbroek
1318*00b67f09SDavid van Moolenbroek#
1319*00b67f09SDavid van Moolenbroek# was --enable-openssl-hash specified?
1320*00b67f09SDavid van Moolenbroek#
1321*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(openssl-hash,
1322*00b67f09SDavid van Moolenbroek	[  --enable-openssl-hash   use OpenSSL for hash functions [[default=no]]],
1323*00b67f09SDavid van Moolenbroek	want_openssl_hash="$enableval", want_openssl_hash="checksit")
1324*00b67f09SDavid van Moolenbroek
1325*00b67f09SDavid van Moolenbroek#
1326*00b67f09SDavid van Moolenbroek# Enable Source Identity Token support
1327*00b67f09SDavid van Moolenbroek#
1328*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for Source Identity Token support)
1329*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(sit,
1330*00b67f09SDavid van Moolenbroek	[  --enable-sit            enable source identity token [[default=no]]],
1331*00b67f09SDavid van Moolenbroek	enable_sit="$enableval", enable_sit="no")
1332*00b67f09SDavid van MoolenbroekHAVE_SIT=
1333*00b67f09SDavid van MoolenbroekISC_PLATFORM_USESIT="#undef ISC_PLATFORM_USESIT"
1334*00b67f09SDavid van Moolenbroek
1335*00b67f09SDavid van Moolenbroekcase "$enable_sit" in
1336*00b67f09SDavid van Moolenbroekyes)
1337*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(yes)
1338*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_USESIT="#define ISC_PLATFORM_USESIT 1"
1339*00b67f09SDavid van Moolenbroek	HAVE_SIT=1
1340*00b67f09SDavid van Moolenbroek	;;
1341*00b67f09SDavid van Moolenbroekno)
1342*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(no)
1343*00b67f09SDavid van Moolenbroek	;;
1344*00b67f09SDavid van Moolenbroek*)
1345*00b67f09SDavid van Moolenbroek	AC_MSG_ERROR("enable-sit requires yes or no")
1346*00b67f09SDavid van Moolenbroek	;;
1347*00b67f09SDavid van Moolenbroekesac
1348*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USESIT)
1349*00b67f09SDavid van MoolenbroekAC_SUBST(HAVE_SIT)
1350*00b67f09SDavid van Moolenbroek
1351*00b67f09SDavid van Moolenbroek#
1352*00b67f09SDavid van Moolenbroek# Source Identity Token algorithm choice
1353*00b67f09SDavid van Moolenbroek#
1354*00b67f09SDavid van MoolenbroekAC_ARG_WITH(sit-alg,
1355*00b67f09SDavid van Moolenbroek	[  --with-sit-alg=ALG      choose the algorithm for SIT [[aes|sha1|sha256]]],
1356*00b67f09SDavid van Moolenbroek	with_sit_alg="$withval", with_sit_alg="auto")
1357*00b67f09SDavid van Moolenbroek
1358*00b67f09SDavid van Moolenbroekif test "$enable_sit" = "yes"
1359*00b67f09SDavid van Moolenbroekthen
1360*00b67f09SDavid van Moolenbroek	case $with_sit_alg in
1361*00b67f09SDavid van Moolenbroek		*1)
1362*00b67f09SDavid van Moolenbroek			with_sit_alg="sha1"
1363*00b67f09SDavid van Moolenbroek			;;
1364*00b67f09SDavid van Moolenbroek		*2*)
1365*00b67f09SDavid van Moolenbroek			with_sit_alg="sha256"
1366*00b67f09SDavid van Moolenbroek			;;
1367*00b67f09SDavid van Moolenbroek		auto)
1368*00b67f09SDavid van Moolenbroek			if test "$with_aes" != "no"
1369*00b67f09SDavid van Moolenbroek			then
1370*00b67f09SDavid van Moolenbroek				with_aes="yes"
1371*00b67f09SDavid van Moolenbroek			fi
1372*00b67f09SDavid van Moolenbroek			;;
1373*00b67f09SDavid van Moolenbroek		*)
1374*00b67f09SDavid van Moolenbroek			with_sit_alg="aes"
1375*00b67f09SDavid van Moolenbroek			if test "$with_aes" != "no"
1376*00b67f09SDavid van Moolenbroek			then
1377*00b67f09SDavid van Moolenbroek				with_aes="yes"
1378*00b67f09SDavid van Moolenbroek			fi
1379*00b67f09SDavid van Moolenbroek			;;
1380*00b67f09SDavid van Moolenbroek	esac
1381*00b67f09SDavid van Moolenbroekfi
1382*00b67f09SDavid van Moolenbroekif test "with_aes" = "checksit"
1383*00b67f09SDavid van Moolenbroekthen
1384*00b67f09SDavid van Moolenbroek	with_aes="no"
1385*00b67f09SDavid van Moolenbroekfi
1386*00b67f09SDavid van Moolenbroek
1387*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for OpenSSL library)
1388*00b67f09SDavid van MoolenbroekOPENSSL_WARNING=
1389*00b67f09SDavid van Moolenbroekopenssldirs="/usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw"
1390*00b67f09SDavid van Moolenbroekif test "$use_openssl" = "auto"
1391*00b67f09SDavid van Moolenbroekthen
1392*00b67f09SDavid van Moolenbroek	if test "$want_native_pkcs11" = "yes"
1393*00b67f09SDavid van Moolenbroek	then
1394*00b67f09SDavid van Moolenbroek		use_openssl="native_pkcs11"
1395*00b67f09SDavid van Moolenbroek	else
1396*00b67f09SDavid van Moolenbroek		for d in $openssldirs
1397*00b67f09SDavid van Moolenbroek		do
1398*00b67f09SDavid van Moolenbroek			if test -f $d/include/openssl/opensslv.h
1399*00b67f09SDavid van Moolenbroek			then
1400*00b67f09SDavid van Moolenbroek				use_openssl=$d
1401*00b67f09SDavid van Moolenbroek				break
1402*00b67f09SDavid van Moolenbroek			fi
1403*00b67f09SDavid van Moolenbroek		done
1404*00b67f09SDavid van Moolenbroek	fi
1405*00b67f09SDavid van Moolenbroekfi
1406*00b67f09SDavid van MoolenbroekOPENSSL_ECDSA=""
1407*00b67f09SDavid van MoolenbroekOPENSSL_GOST=""
1408*00b67f09SDavid van Moolenbroekgosttype="raw"
1409*00b67f09SDavid van Moolenbroekcase "$with_gost" in
1410*00b67f09SDavid van Moolenbroek	raw)
1411*00b67f09SDavid van Moolenbroek		with_gost="yes"
1412*00b67f09SDavid van Moolenbroek		;;
1413*00b67f09SDavid van Moolenbroek	asn1)
1414*00b67f09SDavid van Moolenbroek		AC_DEFINE(PREFER_GOSTASN1, 1,
1415*00b67f09SDavid van Moolenbroek			  [Define if GOST private keys are encoded in ASN.1.])
1416*00b67f09SDavid van Moolenbroek		gosttype="asn1"
1417*00b67f09SDavid van Moolenbroek		with_gost="yes"
1418*00b67f09SDavid van Moolenbroek		;;
1419*00b67f09SDavid van Moolenbroek	auto|yes|no)
1420*00b67f09SDavid van Moolenbroek		;;
1421*00b67f09SDavid van Moolenbroek	*)
1422*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR(unknown GOST private key encoding)
1423*00b67f09SDavid van Moolenbroek		;;
1424*00b67f09SDavid van Moolenbroekesac
1425*00b67f09SDavid van Moolenbroek
1426*00b67f09SDavid van Moolenbroekcase "$use_openssl" in
1427*00b67f09SDavid van Moolenbroek	native_pkcs11)
1428*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(disabled because of native PKCS11)
1429*00b67f09SDavid van Moolenbroek		DST_OPENSSL_INC=""
1430*00b67f09SDavid van Moolenbroek		CRYPTO="-DPKCS11CRYPTO"
1431*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKOBJS=""
1432*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKSRS=""
1433*00b67f09SDavid van Moolenbroek		OPENSSLLINKOBJS=""
1434*00b67f09SDavid van Moolenbroek		OPENSSLLINKSRCS=""
1435*00b67f09SDavid van Moolenbroek		;;
1436*00b67f09SDavid van Moolenbroek	no)
1437*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
1438*00b67f09SDavid van Moolenbroek		DST_OPENSSL_INC=""
1439*00b67f09SDavid van Moolenbroek		CRYPTO=""
1440*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKOBJS=""
1441*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKSRS=""
1442*00b67f09SDavid van Moolenbroek		OPENSSLLINKOBJS=""
1443*00b67f09SDavid van Moolenbroek		OPENSSLLINKSRCS=""
1444*00b67f09SDavid van Moolenbroek		;;
1445*00b67f09SDavid van Moolenbroek	auto)
1446*00b67f09SDavid van Moolenbroek		DST_OPENSSL_INC=""
1447*00b67f09SDavid van Moolenbroek		CRYPTO=""
1448*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKOBJS=""
1449*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKSRS=""
1450*00b67f09SDavid van Moolenbroek		OPENSSLLINKOBJS=""
1451*00b67f09SDavid van Moolenbroek		OPENSSLLINKSRCS=""
1452*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR(
1453*00b67f09SDavid van Moolenbroek[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path
1454*00b67f09SDavid van MoolenbroekIf you don't want OpenSSL, use --without-openssl])
1455*00b67f09SDavid van Moolenbroek		;;
1456*00b67f09SDavid van Moolenbroek	*)
1457*00b67f09SDavid van Moolenbroek		if test "$want_native_pkcs11" = "yes"
1458*00b67f09SDavid van Moolenbroek		then
1459*00b67f09SDavid van Moolenbroek                        AC_MSG_RESULT()
1460*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([OpenSSL and native PKCS11 cannot be used together.])
1461*00b67f09SDavid van Moolenbroek		fi
1462*00b67f09SDavid van Moolenbroek		if test "$use_openssl" = "yes"
1463*00b67f09SDavid van Moolenbroek		then
1464*00b67f09SDavid van Moolenbroek			# User did not specify a path - guess it
1465*00b67f09SDavid van Moolenbroek			for d in $openssldirs
1466*00b67f09SDavid van Moolenbroek			do
1467*00b67f09SDavid van Moolenbroek				if test -f $d/include/openssl/opensslv.h
1468*00b67f09SDavid van Moolenbroek				then
1469*00b67f09SDavid van Moolenbroek					use_openssl=$d
1470*00b67f09SDavid van Moolenbroek					break
1471*00b67f09SDavid van Moolenbroek				fi
1472*00b67f09SDavid van Moolenbroek			done
1473*00b67f09SDavid van Moolenbroek			if test "$use_openssl" = "yes"
1474*00b67f09SDavid van Moolenbroek			then
1475*00b67f09SDavid van Moolenbroek				AC_MSG_RESULT(not found)
1476*00b67f09SDavid van Moolenbroek				AC_MSG_ERROR(
1477*00b67f09SDavid van Moolenbroek[OpenSSL was not found in any of $openssldirs; use --with-openssl=/path])
1478*00b67f09SDavid van Moolenbroek			fi
1479*00b67f09SDavid van Moolenbroek		elif ! test -f "$use_openssl"/include/openssl/opensslv.h
1480*00b67f09SDavid van Moolenbroek		then
1481*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR(["$use_openssl/include/openssl/opensslv.h" not found])
1482*00b67f09SDavid van Moolenbroek		fi
1483*00b67f09SDavid van Moolenbroek		CRYPTO='-DOPENSSL'
1484*00b67f09SDavid van Moolenbroek		if test "$use_openssl" = "/usr"
1485*00b67f09SDavid van Moolenbroek		then
1486*00b67f09SDavid van Moolenbroek			DST_OPENSSL_INC=""
1487*00b67f09SDavid van Moolenbroek			DST_OPENSSL_LIBS="-lcrypto"
1488*00b67f09SDavid van Moolenbroek		else
1489*00b67f09SDavid van Moolenbroek			DST_OPENSSL_INC="-I$use_openssl/include"
1490*00b67f09SDavid van Moolenbroek			case $host in
1491*00b67f09SDavid van Moolenbroek			*-solaris*)
1492*00b67f09SDavid van Moolenbroek				DST_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto"
1493*00b67f09SDavid van Moolenbroek				;;
1494*00b67f09SDavid van Moolenbroek			*-hp-hpux*)
1495*00b67f09SDavid van Moolenbroek				DST_OPENSSL_LIBS="-L$use_openssl/lib -Wl,+b: -lcrypto"
1496*00b67f09SDavid van Moolenbroek				;;
1497*00b67f09SDavid van Moolenbroek			*-apple-darwin*)
1498*00b67f09SDavid van Moolenbroek				#
1499*00b67f09SDavid van Moolenbroek				# Apple's ld seaches for serially for dynamic
1500*00b67f09SDavid van Moolenbroek				# then static libraries.  This means you can't
1501*00b67f09SDavid van Moolenbroek				# use -L to override dynamic system libraries
1502*00b67f09SDavid van Moolenbroek				# with static ones when linking.  Instead
1503*00b67f09SDavid van Moolenbroek				# we specify a absolute path.
1504*00b67f09SDavid van Moolenbroek				#
1505*00b67f09SDavid van Moolenbroek				if test -f "$use_openssl/lib/libcrypto.dylib"
1506*00b67f09SDavid van Moolenbroek				then
1507*00b67f09SDavid van Moolenbroek					DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
1508*00b67f09SDavid van Moolenbroek				else
1509*00b67f09SDavid van Moolenbroek					DST_OPENSSL_LIBS="$use_openssl/lib/libcrypto.a"
1510*00b67f09SDavid van Moolenbroek				fi
1511*00b67f09SDavid van Moolenbroek				;;
1512*00b67f09SDavid van Moolenbroek			*)
1513*00b67f09SDavid van Moolenbroek				DST_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
1514*00b67f09SDavid van Moolenbroek				;;
1515*00b67f09SDavid van Moolenbroek			esac
1516*00b67f09SDavid van Moolenbroek		fi
1517*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(using OpenSSL from $use_openssl/lib and $use_openssl/include)
1518*00b67f09SDavid van Moolenbroek
1519*00b67f09SDavid van Moolenbroek		saved_cc="$CC"
1520*00b67f09SDavid van Moolenbroek		saved_cflags="$CFLAGS"
1521*00b67f09SDavid van Moolenbroek		saved_libs="$LIBS"
1522*00b67f09SDavid van Moolenbroek		CFLAGS="$CFLAGS $DST_OPENSSL_INC"
1523*00b67f09SDavid van Moolenbroek		LIBS="$LIBS $DST_OPENSSL_LIBS"
1524*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(whether linking with OpenSSL works)
1525*00b67f09SDavid van Moolenbroek		AC_TRY_RUN([
1526*00b67f09SDavid van Moolenbroek#include <openssl/err.h>
1527*00b67f09SDavid van Moolenbroekint main() {
1528*00b67f09SDavid van Moolenbroek	ERR_clear_error();
1529*00b67f09SDavid van Moolenbroek	return (0);
1530*00b67f09SDavid van Moolenbroek}
1531*00b67f09SDavid van Moolenbroek],
1532*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(yes)],
1533*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(no)
1534*00b67f09SDavid van Moolenbroek		 AC_MSG_ERROR(Could not run test program using OpenSSL from
1535*00b67f09SDavid van Moolenbroek$use_openssl/lib and $use_openssl/include.
1536*00b67f09SDavid van MoolenbroekPlease check the argument to --with-openssl and your
1537*00b67f09SDavid van Moolenbroekshared library configuration (e.g., LD_LIBRARY_PATH).)],
1538*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(assuming it does work on target platform)])
1539*00b67f09SDavid van Moolenbroek
1540*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
1541*00b67f09SDavid van Moolenbroek		AC_TRY_LINK([
1542*00b67f09SDavid van Moolenbroek#include <openssl/err.h>],
1543*00b67f09SDavid van Moolenbroek[ DSO_METHOD_dlfcn(); ],
1544*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(no)],
1545*00b67f09SDavid van Moolenbroek		[LIBS="$LIBS -ldl"
1546*00b67f09SDavid van Moolenbroek		AC_TRY_LINK([
1547*00b67f09SDavid van Moolenbroek#include <openssl/err.h>
1548*00b67f09SDavid van Moolenbroek],[ DSO_METHOD_dlfcn(); ],
1549*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(yes)
1550*00b67f09SDavid van Moolenbroek		DST_OPENSSL_LIBS="$DST_OPENSSL_LIBS -ldl"
1551*00b67f09SDavid van Moolenbroek		],
1552*00b67f09SDavid van Moolenbroek		 [AC_MSG_RESULT(unknown)
1553*00b67f09SDavid van Moolenbroek		 AC_MSG_ERROR(OpenSSL has unsupported dynamic loading)],
1554*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(assuming it does work on target platform)])
1555*00b67f09SDavid van Moolenbroek		],
1556*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(assuming it does work on target platform)]
1557*00b67f09SDavid van Moolenbroek		)
1558*00b67f09SDavid van Moolenbroek
1559*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(openssl-version-check,
1560*00b67f09SDavid van Moolenbroek[AC_HELP_STRING([--enable-openssl-version-check],
1561*00b67f09SDavid van Moolenbroek	[check OpenSSL version @<:@default=yes@:>@])])
1562*00b67f09SDavid van Moolenbroekcase "$enable_openssl_version_check" in
1563*00b67f09SDavid van Moolenbroekyes|'')
1564*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(OpenSSL library version)
1565*00b67f09SDavid van Moolenbroek		AC_TRY_RUN([
1566*00b67f09SDavid van Moolenbroek#include <stdio.h>
1567*00b67f09SDavid van Moolenbroek#include <openssl/opensslv.h>
1568*00b67f09SDavid van Moolenbroekint main() {
1569*00b67f09SDavid van Moolenbroek	if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
1570*00b67f09SDavid van Moolenbroek	     OPENSSL_VERSION_NUMBER < 0x00908000L) ||
1571*00b67f09SDavid van Moolenbroek	     OPENSSL_VERSION_NUMBER >= 0x0090804fL)
1572*00b67f09SDavid van Moolenbroek		return (0);
1573*00b67f09SDavid van Moolenbroek	printf("\n\nFound   OPENSSL_VERSION_NUMBER %#010x\n",
1574*00b67f09SDavid van Moolenbroek		OPENSSL_VERSION_NUMBER);
1575*00b67f09SDavid van Moolenbroek	printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
1576*00b67f09SDavid van Moolenbroek	       "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n");
1577*00b67f09SDavid van Moolenbroek	return (1);
1578*00b67f09SDavid van Moolenbroek}
1579*00b67f09SDavid van Moolenbroek		],
1580*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(ok)],
1581*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(not compatible)
1582*00b67f09SDavid van Moolenbroek		 OPENSSL_WARNING=yes
1583*00b67f09SDavid van Moolenbroek		],
1584*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(assuming target platform has compatible version)])
1585*00b67f09SDavid van Moolenbroek;;
1586*00b67f09SDavid van Moolenbroekno)
1587*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(Skipped OpenSSL version check)
1588*00b67f09SDavid van Moolenbroek;;
1589*00b67f09SDavid van Moolenbroekesac
1590*00b67f09SDavid van Moolenbroek
1591*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(for OpenSSL DSA support)
1592*00b67f09SDavid van Moolenbroek	if test -f $use_openssl/include/openssl/dsa.h
1593*00b67f09SDavid van Moolenbroek	then
1594*00b67f09SDavid van Moolenbroek		AC_DEFINE(HAVE_OPENSSL_DSA)
1595*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
1596*00b67f09SDavid van Moolenbroek	else
1597*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
1598*00b67f09SDavid van Moolenbroek	fi
1599*00b67f09SDavid van Moolenbroek
1600*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512)
1601*00b67f09SDavid van Moolenbroek
1602*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(for OpenSSL ECDSA support)
1603*00b67f09SDavid van Moolenbroek	have_ecdsa=""
1604*00b67f09SDavid van Moolenbroek	AC_TRY_RUN([
1605*00b67f09SDavid van Moolenbroek#include <openssl/ecdsa.h>
1606*00b67f09SDavid van Moolenbroek#include <openssl/objects.h>
1607*00b67f09SDavid van Moolenbroekint main() {
1608*00b67f09SDavid van Moolenbroek	EC_KEY *ec256, *ec384;
1609*00b67f09SDavid van Moolenbroek
1610*00b67f09SDavid van Moolenbroek#if !defined(HAVE_EVP_SHA256) || !defined(HAVE_EVP_SHA384)
1611*00b67f09SDavid van Moolenbroek	return (1);
1612*00b67f09SDavid van Moolenbroek#endif
1613*00b67f09SDavid van Moolenbroek	ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
1614*00b67f09SDavid van Moolenbroek	ec384 = EC_KEY_new_by_curve_name(NID_secp384r1);
1615*00b67f09SDavid van Moolenbroek	if (ec256 == NULL || ec384 == NULL)
1616*00b67f09SDavid van Moolenbroek		return (2);
1617*00b67f09SDavid van Moolenbroek	return (0);
1618*00b67f09SDavid van Moolenbroek}
1619*00b67f09SDavid van Moolenbroek],
1620*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
1621*00b67f09SDavid van Moolenbroek	have_ecdsa="yes"],
1622*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
1623*00b67f09SDavid van Moolenbroek	have_ecdsa="no"],
1624*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(using --with-ecdsa)])
1625*00b67f09SDavid van Moolenbroek	case "$with_ecdsa" in
1626*00b67f09SDavid van Moolenbroek	yes)
1627*00b67f09SDavid van Moolenbroek	    case "$have_ecdsa" in
1628*00b67f09SDavid van Moolenbroek	    no)  AC_MSG_ERROR([ecdsa not supported]) ;;
1629*00b67f09SDavid van Moolenbroek	    *)  have_ecdsa=yes ;;
1630*00b67f09SDavid van Moolenbroek	    esac
1631*00b67f09SDavid van Moolenbroek	    ;;
1632*00b67f09SDavid van Moolenbroek	no)
1633*00b67f09SDavid van Moolenbroek	    have_ecdsa=no ;;
1634*00b67f09SDavid van Moolenbroek	*)
1635*00b67f09SDavid van Moolenbroek	    case "$have_ecdsa" in
1636*00b67f09SDavid van Moolenbroek	    yes|no) ;;
1637*00b67f09SDavid van Moolenbroek	    *) AC_MSG_ERROR([need --with-ecdsa=[[yes or no]]]) ;;
1638*00b67f09SDavid van Moolenbroek	    esac
1639*00b67f09SDavid van Moolenbroek	    ;;
1640*00b67f09SDavid van Moolenbroek	esac
1641*00b67f09SDavid van Moolenbroek	case $have_ecdsa in
1642*00b67f09SDavid van Moolenbroek	yes)
1643*00b67f09SDavid van Moolenbroek		OPENSSL_ECDSA="yes"
1644*00b67f09SDavid van Moolenbroek		AC_DEFINE(HAVE_OPENSSL_ECDSA, 1,
1645*00b67f09SDavid van Moolenbroek			  [Define if your OpenSSL version supports ECDSA.])
1646*00b67f09SDavid van Moolenbroek		;;
1647*00b67f09SDavid van Moolenbroek	*)
1648*00b67f09SDavid van Moolenbroek		;;
1649*00b67f09SDavid van Moolenbroek	esac
1650*00b67f09SDavid van Moolenbroek
1651*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(for OpenSSL GOST support)
1652*00b67f09SDavid van Moolenbroek	have_gost=""
1653*00b67f09SDavid van Moolenbroek	case "$use_pkcs11" in
1654*00b67f09SDavid van Moolenbroek		auto|no)
1655*00b67f09SDavid van Moolenbroek			;;
1656*00b67f09SDavid van Moolenbroek		*)
1657*00b67f09SDavid van Moolenbroek			if $use_threads; then
1658*00b67f09SDavid van Moolenbroek				CC="$CC -pthread"
1659*00b67f09SDavid van Moolenbroek			fi
1660*00b67f09SDavid van Moolenbroek			;;
1661*00b67f09SDavid van Moolenbroek	esac
1662*00b67f09SDavid van Moolenbroek	AC_TRY_RUN([
1663*00b67f09SDavid van Moolenbroek#include <openssl/conf.h>
1664*00b67f09SDavid van Moolenbroek#include <openssl/engine.h>
1665*00b67f09SDavid van Moolenbroekint main() {
1666*00b67f09SDavid van Moolenbroek#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
1667*00b67f09SDavid van Moolenbroek	ENGINE *e;
1668*00b67f09SDavid van Moolenbroek	EC_KEY *ek;
1669*00b67f09SDavid van Moolenbroek
1670*00b67f09SDavid van Moolenbroek	ek = NULL;
1671*00b67f09SDavid van Moolenbroek	OPENSSL_config(NULL);
1672*00b67f09SDavid van Moolenbroek
1673*00b67f09SDavid van Moolenbroek	e = ENGINE_by_id("gost");
1674*00b67f09SDavid van Moolenbroek	if (e == NULL)
1675*00b67f09SDavid van Moolenbroek		return (1);
1676*00b67f09SDavid van Moolenbroek	if (ENGINE_init(e) <= 0)
1677*00b67f09SDavid van Moolenbroek		return (1);
1678*00b67f09SDavid van Moolenbroek	return (0);
1679*00b67f09SDavid van Moolenbroek#else
1680*00b67f09SDavid van Moolenbroek	return (1);
1681*00b67f09SDavid van Moolenbroek#endif
1682*00b67f09SDavid van Moolenbroek}
1683*00b67f09SDavid van Moolenbroek],
1684*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
1685*00b67f09SDavid van Moolenbroek	have_gost="yes"],
1686*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
1687*00b67f09SDavid van Moolenbroek	have_gost="no"],
1688*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(using --with-gost)])
1689*00b67f09SDavid van Moolenbroek	case "$with_gost" in
1690*00b67f09SDavid van Moolenbroek	yes)
1691*00b67f09SDavid van Moolenbroek	    case "$have_gost" in
1692*00b67f09SDavid van Moolenbroek	    no)  AC_MSG_ERROR([gost not supported]) ;;
1693*00b67f09SDavid van Moolenbroek	    *)  have_gost=yes ;;
1694*00b67f09SDavid van Moolenbroek	    esac
1695*00b67f09SDavid van Moolenbroek	    ;;
1696*00b67f09SDavid van Moolenbroek	no)
1697*00b67f09SDavid van Moolenbroek	    have_gost=no ;;
1698*00b67f09SDavid van Moolenbroek	*)
1699*00b67f09SDavid van Moolenbroek	    case "$have_gost" in
1700*00b67f09SDavid van Moolenbroek	    yes|no) ;;
1701*00b67f09SDavid van Moolenbroek	    *) AC_MSG_ERROR([need --with-gost=[[yes, no, raw or asn1]]]) ;;
1702*00b67f09SDavid van Moolenbroek	    esac
1703*00b67f09SDavid van Moolenbroek	    ;;
1704*00b67f09SDavid van Moolenbroek	esac
1705*00b67f09SDavid van Moolenbroek	case $have_gost in
1706*00b67f09SDavid van Moolenbroek	yes)
1707*00b67f09SDavid van Moolenbroek		OPENSSL_GOST="yes"
1708*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKOBJS='${OPENSSLGOSTLINKOBJS}'
1709*00b67f09SDavid van Moolenbroek		OPENSSLGOSTLINKSRCS='${OPENSSLGOSTLINKSRCS}'
1710*00b67f09SDavid van Moolenbroek		AC_DEFINE(HAVE_OPENSSL_GOST, 1,
1711*00b67f09SDavid van Moolenbroek			  [Define if your OpenSSL version supports GOST.])
1712*00b67f09SDavid van Moolenbroek		;;
1713*00b67f09SDavid van Moolenbroek	*)
1714*00b67f09SDavid van Moolenbroek		;;
1715*00b67f09SDavid van Moolenbroek	esac
1716*00b67f09SDavid van Moolenbroek
1717*00b67f09SDavid van Moolenbroek	have_aes="no"
1718*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(for OpenSSL AES support)
1719*00b67f09SDavid van Moolenbroek	AC_TRY_RUN([
1720*00b67f09SDavid van Moolenbroek#include <openssl/evp.h>
1721*00b67f09SDavid van Moolenbroekint main() {
1722*00b67f09SDavid van Moolenbroek	EVP_CIPHER *aes128, *aes192, *aes256;
1723*00b67f09SDavid van Moolenbroek
1724*00b67f09SDavid van Moolenbroek	aes128 = EVP_aes_128_ecb();
1725*00b67f09SDavid van Moolenbroek	aes192 = EVP_aes_192_ecb();
1726*00b67f09SDavid van Moolenbroek	aes256 = EVP_aes_256_ecb();
1727*00b67f09SDavid van Moolenbroek	if (aes128 == NULL || aes192 == NULL || aes256 == NULL)
1728*00b67f09SDavid van Moolenbroek		return (1);
1729*00b67f09SDavid van Moolenbroek	return (0);
1730*00b67f09SDavid van Moolenbroek}
1731*00b67f09SDavid van Moolenbroek],
1732*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
1733*00b67f09SDavid van Moolenbroek	 have_aes="evp"],
1734*00b67f09SDavid van Moolenbroek	[AC_CHECK_FUNC(AES_encrypt,
1735*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
1736*00b67f09SDavid van Moolenbroek	 have_aes="yes"],
1737*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)])],
1738*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(using --with-aes)])
1739*00b67f09SDavid van Moolenbroek
1740*00b67f09SDavid van Moolenbroek	ISC_OPENSSL_INC=""
1741*00b67f09SDavid van Moolenbroek	ISC_OPENSSL_LIBS=""
1742*00b67f09SDavid van Moolenbroek	if test "$with_aes" = "yes"
1743*00b67f09SDavid van Moolenbroek	then
1744*00b67f09SDavid van Moolenbroek		case "$have_aes" in
1745*00b67f09SDavid van Moolenbroek		evp)
1746*00b67f09SDavid van Moolenbroek			AC_DEFINE(HAVE_OPENSSL_EVP_AES, 1,
1747*00b67f09SDavid van Moolenbroek				  [Define if your OpenSSL version supports EVP AES])
1748*00b67f09SDavid van Moolenbroek			ISC_OPENSSL_INC="$DST_OPENSSL_INC"
1749*00b67f09SDavid van Moolenbroek			ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS"
1750*00b67f09SDavid van Moolenbroek			;;
1751*00b67f09SDavid van Moolenbroek		yes)
1752*00b67f09SDavid van Moolenbroek			AC_DEFINE(HAVE_OPENSSL_AES, 1,
1753*00b67f09SDavid van Moolenbroek				  [Define if your OpenSSL version supports AES])
1754*00b67f09SDavid van Moolenbroek			ISC_OPENSSL_INC="$DST_OPENSSL_INC"
1755*00b67f09SDavid van Moolenbroek			ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS"
1756*00b67f09SDavid van Moolenbroek			;;
1757*00b67f09SDavid van Moolenbroek		*)
1758*00b67f09SDavid van Moolenbroek			;;
1759*00b67f09SDavid van Moolenbroek		esac
1760*00b67f09SDavid van Moolenbroek	fi
1761*00b67f09SDavid van Moolenbroek
1762*00b67f09SDavid van Moolenbroek	CC="$saved_cc"
1763*00b67f09SDavid van Moolenbroek	CFLAGS="$saved_cflags"
1764*00b67f09SDavid van Moolenbroek	LIBS="$saved_libs"
1765*00b67f09SDavid van Moolenbroek	OPENSSLLINKOBJS='${OPENSSLLINKOBJS}'
1766*00b67f09SDavid van Moolenbroek	OPENSSLLINKSRCS='${OPENSSLLINKSRCS}'
1767*00b67f09SDavid van Moolenbroek
1768*00b67f09SDavid van Moolenbroek	;;
1769*00b67f09SDavid van Moolenbroekesac
1770*00b67f09SDavid van Moolenbroek
1771*00b67f09SDavid van Moolenbroek#
1772*00b67f09SDavid van Moolenbroek# This would include the system openssl path (and linker options to use
1773*00b67f09SDavid van Moolenbroek# it as needed) if it is found.
1774*00b67f09SDavid van Moolenbroek#
1775*00b67f09SDavid van Moolenbroek
1776*00b67f09SDavid van MoolenbroekAC_SUBST(DST_OPENSSL_INC)
1777*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLGOSTLINKOBJS)
1778*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLGOSTLINKSRCS)
1779*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLLINKOBJS)
1780*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSLLINKSRCS)
1781*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSL_ECDSA)
1782*00b67f09SDavid van MoolenbroekAC_SUBST(OPENSSL_GOST)
1783*00b67f09SDavid van Moolenbroek
1784*00b67f09SDavid van MoolenbroekDNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DST_OPENSSL_LIBS"
1785*00b67f09SDavid van Moolenbroek
1786*00b67f09SDavid van MoolenbroekISC_PLATFORM_WANTAES="#undef ISC_PLATFORM_WANTAES"
1787*00b67f09SDavid van Moolenbroekif test "$with_aes" = "yes"
1788*00b67f09SDavid van Moolenbroekthen
1789*00b67f09SDavid van Moolenbroek	if test "X$CRYPTO" = "X"
1790*00b67f09SDavid van Moolenbroek	then
1791*00b67f09SDavid van Moolenbroek		with_aes="no"
1792*00b67f09SDavid van Moolenbroek	fi
1793*00b67f09SDavid van Moolenbroekfi
1794*00b67f09SDavid van Moolenbroekif test "$with_aes" = "yes"
1795*00b67f09SDavid van Moolenbroekthen
1796*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_WANTAES="#define ISC_PLATFORM_WANTAES 1"
1797*00b67f09SDavid van Moolenbroekfi
1798*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_WANTAES)
1799*00b67f09SDavid van Moolenbroek
1800*00b67f09SDavid van Moolenbroek#
1801*00b67f09SDavid van Moolenbroek# Choose SIT algorithm
1802*00b67f09SDavid van Moolenbroek#
1803*00b67f09SDavid van Moolenbroek
1804*00b67f09SDavid van Moolenbroekif test "$enable_sit" = "yes"
1805*00b67f09SDavid van Moolenbroekthen
1806*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(for the Algorithm for SIT)
1807*00b67f09SDavid van Moolenbroek	if test "$with_sit_alg" = "auto"
1808*00b67f09SDavid van Moolenbroek	then
1809*00b67f09SDavid van Moolenbroek		if test "$with_aes" = "yes"
1810*00b67f09SDavid van Moolenbroek		then
1811*00b67f09SDavid van Moolenbroek			with_sit_alg="aes"
1812*00b67f09SDavid van Moolenbroek		else
1813*00b67f09SDavid van Moolenbroek			with_sit_alg="sha256"
1814*00b67f09SDavid van Moolenbroek		fi
1815*00b67f09SDavid van Moolenbroek	fi
1816*00b67f09SDavid van Moolenbroekfi
1817*00b67f09SDavid van Moolenbroekcase $with_sit_alg in
1818*00b67f09SDavid van Moolenbroek	sha1)
1819*00b67f09SDavid van Moolenbroek		if test "$enable_sit" != "yes"
1820*00b67f09SDavid van Moolenbroek		then
1821*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR("with-sit-alg requires enable-sit");
1822*00b67f09SDavid van Moolenbroek		fi
1823*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(sha1)
1824*00b67f09SDavid van Moolenbroek		if test "$CRYPTO" = "-DOPENSSL"
1825*00b67f09SDavid van Moolenbroek		then
1826*00b67f09SDavid van Moolenbroek			if test "$want_openssl_hash" = "checksit"
1827*00b67f09SDavid van Moolenbroek			then
1828*00b67f09SDavid van Moolenbroek				want_openssl_hash="yes"
1829*00b67f09SDavid van Moolenbroek			fi
1830*00b67f09SDavid van Moolenbroek		fi
1831*00b67f09SDavid van Moolenbroek		AC_DEFINE(HMAC_SHA1_SIT, 1,
1832*00b67f09SDavid van Moolenbroek			  [Use HMAC-SHA1 for Source Identity Token generation])
1833*00b67f09SDavid van Moolenbroek		;;
1834*00b67f09SDavid van Moolenbroek	sha256)
1835*00b67f09SDavid van Moolenbroek		if test "$enable_sit" != "yes"
1836*00b67f09SDavid van Moolenbroek		then
1837*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR("with-sit-alg requires enable-sit");
1838*00b67f09SDavid van Moolenbroek		fi
1839*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(sha256)
1840*00b67f09SDavid van Moolenbroek		if test "$CRYPTO" = "-DOPENSSL"
1841*00b67f09SDavid van Moolenbroek		then
1842*00b67f09SDavid van Moolenbroek			if test "$want_openssl_hash" = "checksit"
1843*00b67f09SDavid van Moolenbroek			then
1844*00b67f09SDavid van Moolenbroek				want_openssl_hash="yes"
1845*00b67f09SDavid van Moolenbroek			fi
1846*00b67f09SDavid van Moolenbroek		fi
1847*00b67f09SDavid van Moolenbroek		AC_DEFINE(HMAC_SHA256_SIT, 1,
1848*00b67f09SDavid van Moolenbroek			  [Use HMAC-SHA256 for Source Identity Token generation])
1849*00b67f09SDavid van Moolenbroek		;;
1850*00b67f09SDavid van Moolenbroek	aes)
1851*00b67f09SDavid van Moolenbroek		if test "$enable_sit" != "yes"
1852*00b67f09SDavid van Moolenbroek		then
1853*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR("with-sit-alg requires enable-sit");
1854*00b67f09SDavid van Moolenbroek		fi
1855*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(aes)
1856*00b67f09SDavid van Moolenbroek		if test "$with_aes" != "yes"
1857*00b67f09SDavid van Moolenbroek		then
1858*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR("SIT wants to use unavailable AES");
1859*00b67f09SDavid van Moolenbroek		fi
1860*00b67f09SDavid van Moolenbroek		AC_DEFINE(AES_SIT, 1,
1861*00b67f09SDavid van Moolenbroek			  [Use AES for Source Identity Token generation])
1862*00b67f09SDavid van Moolenbroek		;;
1863*00b67f09SDavid van Moolenbroekesac
1864*00b67f09SDavid van Moolenbroekif test "$want_openssl_hash" = "checksit"
1865*00b67f09SDavid van Moolenbroekthen
1866*00b67f09SDavid van Moolenbroek	want_openssl_hash="no"
1867*00b67f09SDavid van Moolenbroekfi
1868*00b67f09SDavid van Moolenbroek
1869*00b67f09SDavid van Moolenbroek#
1870*00b67f09SDavid van Moolenbroek# Use OpenSSL for hash functions
1871*00b67f09SDavid van Moolenbroek#
1872*00b67f09SDavid van Moolenbroek
1873*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for using OpenSSL for hash functions)
1874*00b67f09SDavid van MoolenbroekISC_PLATFORM_OPENSSLHASH="#undef ISC_PLATFORM_OPENSSLHASH"
1875*00b67f09SDavid van Moolenbroekcase $want_openssl_hash in
1876*00b67f09SDavid van Moolenbroek	yes)
1877*00b67f09SDavid van Moolenbroek		if test "$CRYPTO" != "-DOPENSSL"
1878*00b67f09SDavid van Moolenbroek		then
1879*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([No OpenSSL for hash functions])
1880*00b67f09SDavid van Moolenbroek		fi
1881*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
1882*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_OPENSSLHASH="#define ISC_PLATFORM_OPENSSLHASH 1"
1883*00b67f09SDavid van Moolenbroek		ISC_OPENSSL_INC="$DST_OPENSSL_INC"
1884*00b67f09SDavid van Moolenbroek		ISC_OPENSSL_LIBS="$DST_OPENSSL_LIBS"
1885*00b67f09SDavid van Moolenbroek		saved_cflags="$CFLAGS"
1886*00b67f09SDavid van Moolenbroek		save_libs="$LIBS"
1887*00b67f09SDavid van Moolenbroek		CFLAGS="$CFLAGS $ISC_OPENSSL_INC"
1888*00b67f09SDavid van Moolenbroek		LIBS="$LIBS $ISC_OPENSSL_LIBS"
1889*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING([HMAC_Init() return type])
1890*00b67f09SDavid van Moolenbroek		AC_TRY_COMPILE([
1891*00b67f09SDavid van Moolenbroek		#include <openssl/hmac.h>],[
1892*00b67f09SDavid van Moolenbroek		HMAC_CTX ctx;
1893*00b67f09SDavid van Moolenbroek		int n = HMAC_Init(&ctx, NULL, 0, NULL);
1894*00b67f09SDavid van Moolenbroek		n += HMAC_Update(&ctx, NULL, 0);
1895*00b67f09SDavid van Moolenbroek		n += HMAC_Final(&ctx, NULL, NULL);],[
1896*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(int)
1897*00b67f09SDavid van Moolenbroek		AC_DEFINE(HMAC_RETURN_INT, 1, [HMAC_*() return ints])],[
1898*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(void)])
1899*00b67f09SDavid van Moolenbroek		CFLAGS="$saved_cflags"
1900*00b67f09SDavid van Moolenbroek		LIBS="$save_libs"
1901*00b67f09SDavid van Moolenbroek		;;
1902*00b67f09SDavid van Moolenbroek	no)
1903*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
1904*00b67f09SDavid van Moolenbroek		;;
1905*00b67f09SDavid van Moolenbroekesac
1906*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_OPENSSLHASH)
1907*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_OPENSSL_INC)
1908*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_OPENSSL_LIBS)
1909*00b67f09SDavid van Moolenbroek
1910*00b67f09SDavid van Moolenbroek#
1911*00b67f09SDavid van Moolenbroek# PKCS11 (aka crypto hardware) support (--with moved just after openssl)
1912*00b67f09SDavid van Moolenbroek#
1913*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for PKCS11 support)
1914*00b67f09SDavid van Moolenbroek
1915*00b67f09SDavid van Moolenbroekif test "$use_pkcs11" = "auto"
1916*00b67f09SDavid van Moolenbroekthen
1917*00b67f09SDavid van Moolenbroek	if test "$want_native_pkcs11" = "yes"
1918*00b67f09SDavid van Moolenbroek	then
1919*00b67f09SDavid van Moolenbroek		use_pkcs11="yes"
1920*00b67f09SDavid van Moolenbroek	else
1921*00b67f09SDavid van Moolenbroek		use_pkcs11="no"
1922*00b67f09SDavid van Moolenbroek	fi
1923*00b67f09SDavid van Moolenbroekfi
1924*00b67f09SDavid van Moolenbroek
1925*00b67f09SDavid van Moolenbroekcase "$use_pkcs11" in
1926*00b67f09SDavid van Moolenbroek	no)
1927*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
1928*00b67f09SDavid van Moolenbroek		USE_PKCS11=""
1929*00b67f09SDavid van Moolenbroek		PKCS11_TEST=""
1930*00b67f09SDavid van Moolenbroek		PKCS11_TOOLS=""
1931*00b67f09SDavid van Moolenbroek		ISC_PK11_C=""
1932*00b67f09SDavid van Moolenbroek		ISC_PK11_O=""
1933*00b67f09SDavid van Moolenbroek		ISC_PK11_API_C=""
1934*00b67f09SDavid van Moolenbroek		ISC_PK11_API_O=""
1935*00b67f09SDavid van Moolenbroek		ISC_PK11_RESULT_C=""
1936*00b67f09SDavid van Moolenbroek		ISC_PK11_RESULT_O=""
1937*00b67f09SDavid van Moolenbroek		ISC_ISCPK11_API_C=""
1938*00b67f09SDavid van Moolenbroek		ISC_ISCPK11_API_O=""
1939*00b67f09SDavid van Moolenbroek		;;
1940*00b67f09SDavid van Moolenbroek	yes|*)
1941*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
1942*00b67f09SDavid van Moolenbroek		if ! $use_threads; then
1943*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([PKCS11 requires thread support])
1944*00b67f09SDavid van Moolenbroek		fi
1945*00b67f09SDavid van Moolenbroek		if test "$CRYPTO" = "-DOPENSSL"
1946*00b67f09SDavid van Moolenbroek		then
1947*00b67f09SDavid van Moolenbroek			AC_MSG_CHECKING(for OpenSSL with PKCS11 support)
1948*00b67f09SDavid van Moolenbroek			saved_cc="$CC"
1949*00b67f09SDavid van Moolenbroek			saved_cflags="$CFLAGS"
1950*00b67f09SDavid van Moolenbroek			saved_libs="$LIBS"
1951*00b67f09SDavid van Moolenbroek			CC="$CC -pthread"
1952*00b67f09SDavid van Moolenbroek			CFLAGS="$CFLAGS $DST_OPENSSL_INC"
1953*00b67f09SDavid van Moolenbroek			LIBS="$LIBS $DST_OPENSSL_LIBS"
1954*00b67f09SDavid van Moolenbroek			AC_TRY_RUN([
1955*00b67f09SDavid van Moolenbroek#include <openssl/conf.h>
1956*00b67f09SDavid van Moolenbroek#include <openssl/engine.h>
1957*00b67f09SDavid van Moolenbroekint main() {
1958*00b67f09SDavid van Moolenbroek	ENGINE *e;
1959*00b67f09SDavid van Moolenbroek
1960*00b67f09SDavid van Moolenbroek	OPENSSL_config(NULL);
1961*00b67f09SDavid van Moolenbroek	e = ENGINE_by_id("pkcs11");
1962*00b67f09SDavid van Moolenbroek	if (e == NULL)
1963*00b67f09SDavid van Moolenbroek		return (1);
1964*00b67f09SDavid van Moolenbroek	if (ENGINE_init(e) <= 0)
1965*00b67f09SDavid van Moolenbroek		return (1);
1966*00b67f09SDavid van Moolenbroek	return (0);
1967*00b67f09SDavid van Moolenbroek}
1968*00b67f09SDavid van Moolenbroek],
1969*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(yes)
1970*00b67f09SDavid van Moolenbroek			PKCS11_TEST=pkcs11ssl
1971*00b67f09SDavid van Moolenbroek			PKCS11_ENGINE='-DPKCS11_ENGINE="\"pkcs11\""'],
1972*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(no)
1973*00b67f09SDavid van Moolenbroek			PKCS11_TEST=''
1974*00b67f09SDavid van Moolenbroek			PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'],
1975*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(cross compile, defaulting to no)
1976*00b67f09SDavid van Moolenbroek			PKCS11_TEST=''
1977*00b67f09SDavid van Moolenbroek			PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'])
1978*00b67f09SDavid van Moolenbroek			CC="$saved_cc"
1979*00b67f09SDavid van Moolenbroek			CFLAGS="$saved_cflags"
1980*00b67f09SDavid van Moolenbroek			LIBS="$saved_libs"
1981*00b67f09SDavid van Moolenbroek		else
1982*00b67f09SDavid van Moolenbroek			PKCS11_TEST=''
1983*00b67f09SDavid van Moolenbroek			PKCS11_ENGINE='-DPKCS11_ENGINE=NULL'
1984*00b67f09SDavid van Moolenbroek
1985*00b67f09SDavid van Moolenbroek		fi
1986*00b67f09SDavid van Moolenbroek		USE_PKCS11='-DUSE_PKCS11'
1987*00b67f09SDavid van Moolenbroek		PKCS11_TOOLS=pkcs11
1988*00b67f09SDavid van Moolenbroek		AC_CHECK_FUNC(getpassphrase, AC_DEFINE(HAVE_GETPASSPHRASE),)
1989*00b67f09SDavid van Moolenbroek		ISC_PK11_C="pk11.c"
1990*00b67f09SDavid van Moolenbroek		ISC_PK11_O="pk11.$O"
1991*00b67f09SDavid van Moolenbroek		ISC_PK11_API_C="pk11_api.c"
1992*00b67f09SDavid van Moolenbroek		ISC_PK11_API_O="pk11_api.$O"
1993*00b67f09SDavid van Moolenbroek		ISC_PK11_RESULT_C="pk11_result.c"
1994*00b67f09SDavid van Moolenbroek		ISC_PK11_RESULT_O="pk11_result.$O"
1995*00b67f09SDavid van Moolenbroek		ISC_ISCPK11_API_C="unix/pk11_api.c"
1996*00b67f09SDavid van Moolenbroek		ISC_ISCPK11_API_O="unix/pk11_api.$O"
1997*00b67f09SDavid van Moolenbroek		;;
1998*00b67f09SDavid van Moolenbroekesac
1999*00b67f09SDavid van MoolenbroekAC_SUBST(USE_PKCS11)
2000*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_TOOLS)
2001*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_ENGINE)
2002*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_C)
2003*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_O)
2004*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_API_C)
2005*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_API_O)
2006*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_RESULT_C)
2007*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PK11_RESULT_O)
2008*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ISCPK11_API_C)
2009*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ISCPK11_API_O)
2010*00b67f09SDavid van Moolenbroek
2011*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for PKCS11 tools)
2012*00b67f09SDavid van Moolenbroekcase "$use_pkcs11" in
2013*00b67f09SDavid van Moolenbroek	no)
2014*00b67f09SDavid van Moolenbroek		PKCS11_PROVIDER="undefined"
2015*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(disabled)
2016*00b67f09SDavid van Moolenbroek		;;
2017*00b67f09SDavid van Moolenbroek	yes|'')
2018*00b67f09SDavid van Moolenbroek		PKCS11_PROVIDER="undefined"
2019*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(enabled)
2020*00b67f09SDavid van Moolenbroek		;;
2021*00b67f09SDavid van Moolenbroek	*)
2022*00b67f09SDavid van Moolenbroek		PKCS11_PROVIDER="$use_pkcs11"
2023*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT([enabled, PKCS11 provider is $PKCS11_PROVIDER])
2024*00b67f09SDavid van Moolenbroek		;;
2025*00b67f09SDavid van Moolenbroekesac
2026*00b67f09SDavid van Moolenbroek
2027*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_PROVIDER)
2028*00b67f09SDavid van Moolenbroek
2029*00b67f09SDavid van MoolenbroekPKCS11_ECDSA=""
2030*00b67f09SDavid van MoolenbroekPKCS11_GOST=""
2031*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for native PKCS11)
2032*00b67f09SDavid van Moolenbroek
2033*00b67f09SDavid van Moolenbroekcase "$want_native_pkcs11" in
2034*00b67f09SDavid van Moolenbroek	yes)
2035*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(using native PKCS11 crypto)
2036*00b67f09SDavid van Moolenbroek		PKCS11LINKOBJS='${PKCS11LINKOBJS}'
2037*00b67f09SDavid van Moolenbroek		PKCS11LINKSRCS='${PKCS11LINKSRCS}'
2038*00b67f09SDavid van Moolenbroek		PKCS11_TEST=pkcs11
2039*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(for PKCS11 ECDSA)
2040*00b67f09SDavid van Moolenbroek		case "$with_ecdsa" in
2041*00b67f09SDavid van Moolenbroek		no)
2042*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(disabled)
2043*00b67f09SDavid van Moolenbroek			;;
2044*00b67f09SDavid van Moolenbroek		*)
2045*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(enabled)
2046*00b67f09SDavid van Moolenbroek			PKCS11_ECDSA="yes"
2047*00b67f09SDavid van Moolenbroek			AC_DEFINE(HAVE_PKCS11_ECDSA, 1,
2048*00b67f09SDavid van Moolenbroek				  [Define if your PKCS11 provider supports ECDSA.])
2049*00b67f09SDavid van Moolenbroek			;;
2050*00b67f09SDavid van Moolenbroek		esac
2051*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(for PKCS11 GOST)
2052*00b67f09SDavid van Moolenbroek		case "$with_gost" in
2053*00b67f09SDavid van Moolenbroek		yes)
2054*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(enabled)
2055*00b67f09SDavid van Moolenbroek			PKCS11_GOST="yes"
2056*00b67f09SDavid van Moolenbroek			AC_DEFINE(HAVE_PKCS11_GOST, 1,
2057*00b67f09SDavid van Moolenbroek				  [Define if your PKCS11 provider supports GOST.])
2058*00b67f09SDavid van Moolenbroek			;;
2059*00b67f09SDavid van Moolenbroek		*)
2060*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(disabled)
2061*00b67f09SDavid van Moolenbroek			;;
2062*00b67f09SDavid van Moolenbroek		esac
2063*00b67f09SDavid van Moolenbroek		;;
2064*00b67f09SDavid van Moolenbroek	no|'')
2065*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(disabled)
2066*00b67f09SDavid van Moolenbroek		;;
2067*00b67f09SDavid van Moolenbroekesac
2068*00b67f09SDavid van Moolenbroek
2069*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11LINKOBJS)
2070*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11LINKSRCS)
2071*00b67f09SDavid van MoolenbroekAC_SUBST(CRYPTO)
2072*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_ECDSA)
2073*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_GOST)
2074*00b67f09SDavid van MoolenbroekAC_SUBST(PKCS11_TEST)
2075*00b67f09SDavid van Moolenbroek
2076*00b67f09SDavid van Moolenbroek# for PKCS11 benchmarks
2077*00b67f09SDavid van Moolenbroek
2078*00b67f09SDavid van Moolenbroekhave_clock_gt=no
2079*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(clock_gettime,have_clock_gt=yes,)
2080*00b67f09SDavid van Moolenbroekif test "$have_clock_gt" = "no"; then
2081*00b67f09SDavid van Moolenbroek	AC_CHECK_LIB(rt,clock_gettime,have_clock_gt=rt,)
2082*00b67f09SDavid van Moolenbroekfi
2083*00b67f09SDavid van Moolenbroek
2084*00b67f09SDavid van Moolenbroekif test "$have_clock_gt" != "no"; then
2085*00b67f09SDavid van Moolenbroek	AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if clock_gettime is available.])
2086*00b67f09SDavid van Moolenbroekfi
2087*00b67f09SDavid van Moolenbroek
2088*00b67f09SDavid van Moolenbroekif test "$have_clock_gt" = "rt"; then
2089*00b67f09SDavid van Moolenbroek	LIBS="-lrt $LIBS"
2090*00b67f09SDavid van Moolenbroekfi
2091*00b67f09SDavid van Moolenbroek
2092*00b67f09SDavid van Moolenbroek#
2093*00b67f09SDavid van Moolenbroek# was --with-libxml2 specified?
2094*00b67f09SDavid van Moolenbroek#
2095*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for libxml2 library)
2096*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libxml2,
2097*00b67f09SDavid van Moolenbroek[  --with-libxml2[=PATH]     build with libxml2 library [yes|no|path]],
2098*00b67f09SDavid van Moolenbroek    use_libxml2="$withval", use_libxml2="auto")
2099*00b67f09SDavid van Moolenbroek
2100*00b67f09SDavid van Moolenbroekcase "$use_libxml2" in
2101*00b67f09SDavid van Moolenbroek	no)
2102*00b67f09SDavid van Moolenbroek		DST_LIBXML2_INC=""
2103*00b67f09SDavid van Moolenbroek		;;
2104*00b67f09SDavid van Moolenbroek	auto|yes)
2105*00b67f09SDavid van Moolenbroek		case X`(xml2-config --version) 2>/dev/null` in
2106*00b67f09SDavid van Moolenbroek		X2.[[6789]].*)
2107*00b67f09SDavid van Moolenbroek			libxml2_libs=`xml2-config --libs`
2108*00b67f09SDavid van Moolenbroek			libxml2_cflags=`xml2-config --cflags`
2109*00b67f09SDavid van Moolenbroek			;;
2110*00b67f09SDavid van Moolenbroek		*)
2111*00b67f09SDavid van Moolenbroek			libxml2_libs=
2112*00b67f09SDavid van Moolenbroek			libxml2_cflags=
2113*00b67f09SDavid van Moolenbroek			;;
2114*00b67f09SDavid van Moolenbroek		esac
2115*00b67f09SDavid van Moolenbroek		;;
2116*00b67f09SDavid van Moolenbroek	*)
2117*00b67f09SDavid van Moolenbroek		if test -f "$use_libxml2/bin/xml2-config" ; then
2118*00b67f09SDavid van Moolenbroek			libxml2_libs=`$use_libxml2/bin/xml2-config --libs`
2119*00b67f09SDavid van Moolenbroek			libxml2_cflags=`$use_libxml2/bin/xml2-config --cflags`
2120*00b67f09SDavid van Moolenbroek		fi
2121*00b67f09SDavid van Moolenbroek		;;
2122*00b67f09SDavid van Moolenbroekesac
2123*00b67f09SDavid van Moolenbroek
2124*00b67f09SDavid van Moolenbroekif test "X$libxml2_libs" != "X"
2125*00b67f09SDavid van Moolenbroekthen
2126*00b67f09SDavid van Moolenbroek	CFLAGS="$CFLAGS $libxml2_cflags"
2127*00b67f09SDavid van Moolenbroek	LIBS="$LIBS $libxml2_libs"
2128*00b67f09SDavid van Moolenbroek	#
2129*00b67f09SDavid van Moolenbroek	# Sanity check xml2-config output.
2130*00b67f09SDavid van Moolenbroek	#
2131*00b67f09SDavid van Moolenbroek	AC_TRY_LINK([#include <libxml/xmlwriter.h>],
2132*00b67f09SDavid van Moolenbroek		    [return(xmlTextWriterStartElement(NULL, NULL));],
2133*00b67f09SDavid van Moolenbroek		    AC_MSG_RESULT(yes),
2134*00b67f09SDavid van Moolenbroek		    AC_MSG_ERROR(xml2-config returns badness))
2135*00b67f09SDavid van Moolenbroek	AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 was found])
2136*00b67f09SDavid van Moolenbroekelse
2137*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(no)
2138*00b67f09SDavid van Moolenbroekfi
2139*00b67f09SDavid van Moolenbroek
2140*00b67f09SDavid van Moolenbroek#
2141*00b67f09SDavid van Moolenbroek# was --with-libjson specified?
2142*00b67f09SDavid van Moolenbroek#
2143*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for json library)
2144*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libjson,
2145*00b67f09SDavid van Moolenbroek[  --with-libjson[=PATH]     build with libjson0 library [yes|no|path]],
2146*00b67f09SDavid van Moolenbroek    use_libjson="$withval", use_libjson="auto")
2147*00b67f09SDavid van Moolenbroek
2148*00b67f09SDavid van Moolenbroekhave_libjson=""
2149*00b67f09SDavid van Moolenbroekcase "$use_libjson" in
2150*00b67f09SDavid van Moolenbroek	no)
2151*00b67f09SDavid van Moolenbroek		libjson_libs=""
2152*00b67f09SDavid van Moolenbroek		;;
2153*00b67f09SDavid van Moolenbroek	auto|yes)
2154*00b67f09SDavid van Moolenbroek		for d in /usr /usr/local /opt/local
2155*00b67f09SDavid van Moolenbroek		do
2156*00b67f09SDavid van Moolenbroek			if test -f "${d}/include/json/json.h"
2157*00b67f09SDavid van Moolenbroek			then
2158*00b67f09SDavid van Moolenbroek				libjson_cflags="-I ${d}/include/json"
2159*00b67f09SDavid van Moolenbroek				if test ${d} != /usr
2160*00b67f09SDavid van Moolenbroek				then
2161*00b67f09SDavid van Moolenbroek					LIBS="$LIBS -L${d}/lib"
2162*00b67f09SDavid van Moolenbroek				fi
2163*00b67f09SDavid van Moolenbroek				have_libjson="yes"
2164*00b67f09SDavid van Moolenbroek			elif test -f "${d}/include/json-c/json.h"
2165*00b67f09SDavid van Moolenbroek			then
2166*00b67f09SDavid van Moolenbroek				libjson_cflags="-I ${d}/include/json-c"
2167*00b67f09SDavid van Moolenbroek				if test ${d} != /usr
2168*00b67f09SDavid van Moolenbroek				then
2169*00b67f09SDavid van Moolenbroek					LIBS="$LIBS -L${d}/lib"
2170*00b67f09SDavid van Moolenbroek				fi
2171*00b67f09SDavid van Moolenbroek				have_libjson="yes"
2172*00b67f09SDavid van Moolenbroek			fi
2173*00b67f09SDavid van Moolenbroek		done
2174*00b67f09SDavid van Moolenbroek		;;
2175*00b67f09SDavid van Moolenbroek	*)
2176*00b67f09SDavid van Moolenbroek		if test -f "${use_libjson}/include/json/json.h"
2177*00b67f09SDavid van Moolenbroek		then
2178*00b67f09SDavid van Moolenbroek			libjson_cflags="-I${use_libjson}/include/json"
2179*00b67f09SDavid van Moolenbroek			LIBS="$LIBS -L${use_libjson}/lib"
2180*00b67f09SDavid van Moolenbroek			have_libjson="yes"
2181*00b67f09SDavid van Moolenbroek		elif test -f "${use_libjson}/include/json-c/json.h"
2182*00b67f09SDavid van Moolenbroek		then
2183*00b67f09SDavid van Moolenbroek			libjson_cflags="-I${use_libjson}/include/json-c"
2184*00b67f09SDavid van Moolenbroek			LIBS="$LIBS -L${use_libjson}/lib"
2185*00b67f09SDavid van Moolenbroek			have_libjson="yes"
2186*00b67f09SDavid van Moolenbroek		else
2187*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([$use_libjson/include/json{,-c}/json.h not found.])
2188*00b67f09SDavid van Moolenbroek		fi
2189*00b67f09SDavid van Moolenbroek		;;
2190*00b67f09SDavid van Moolenbroekesac
2191*00b67f09SDavid van Moolenbroek
2192*00b67f09SDavid van Moolenbroekif test "X${have_libjson}" != "X"
2193*00b67f09SDavid van Moolenbroekthen
2194*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(yes)
2195*00b67f09SDavid van Moolenbroek	AC_SEARCH_LIBS([json_object_new_int64], [json json-c], [],
2196*00b67f09SDavid van Moolenbroek		       [AC_MSG_ERROR([found libjson include but not library.])
2197*00b67f09SDavid van Moolenbroek			have_libjson=""])
2198*00b67f09SDavid van Moolenbroekelif test "X$use_libjson" = Xyes
2199*00b67f09SDavid van Moolenbroekthen
2200*00b67f09SDavid van Moolenbroek	AC_MSG_ERROR([include/json{,-c}/json.h not found.])
2201*00b67f09SDavid van Moolenbroekelse
2202*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(no)
2203*00b67f09SDavid van Moolenbroekfi
2204*00b67f09SDavid van Moolenbroek
2205*00b67f09SDavid van Moolenbroekif test "X${have_libjson}" != "X"
2206*00b67f09SDavid van Moolenbroekthen
2207*00b67f09SDavid van Moolenbroek	CFLAGS="$CFLAGS $libjson_cflags"
2208*00b67f09SDavid van Moolenbroek	AC_DEFINE(HAVE_JSON, 1, [Define if libjson was found])
2209*00b67f09SDavid van Moolenbroekfi
2210*00b67f09SDavid van Moolenbroek
2211*00b67f09SDavid van Moolenbroek#
2212*00b67f09SDavid van Moolenbroek# In solaris 10, SMF can manage named service
2213*00b67f09SDavid van Moolenbroek#
2214*00b67f09SDavid van MoolenbroekAC_CHECK_LIB(scf, smf_enable_instance)
2215*00b67f09SDavid van Moolenbroek
2216*00b67f09SDavid van Moolenbroek#
2217*00b67f09SDavid van Moolenbroek# flockfile is usually provided by pthreads, but we may want to use it
2218*00b67f09SDavid van Moolenbroek# even if compiled with --disable-threads.  getc_unlocked might also not
2219*00b67f09SDavid van Moolenbroek# be defined.
2220*00b67f09SDavid van Moolenbroek#
2221*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
2222*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
2223*00b67f09SDavid van Moolenbroek
2224*00b67f09SDavid van Moolenbroek#
2225*00b67f09SDavid van Moolenbroek# Indicate what the final decision was regarding threads.
2226*00b67f09SDavid van Moolenbroek#
2227*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(whether to build with threads)
2228*00b67f09SDavid van Moolenbroekif $use_threads; then
2229*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(yes)
2230*00b67f09SDavid van Moolenbroekelse
2231*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(no)
2232*00b67f09SDavid van Moolenbroekfi
2233*00b67f09SDavid van Moolenbroek
2234*00b67f09SDavid van Moolenbroek#
2235*00b67f09SDavid van Moolenbroek# End of pthreads stuff.
2236*00b67f09SDavid van Moolenbroek#
2237*00b67f09SDavid van Moolenbroek
2238*00b67f09SDavid van Moolenbroek#
2239*00b67f09SDavid van Moolenbroek# Large File
2240*00b67f09SDavid van Moolenbroek#
2241*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(largefile, [  --enable-largefile	  64-bit file support],
2242*00b67f09SDavid van Moolenbroek	      want_largefile="yes", want_largefile="no")
2243*00b67f09SDavid van Moolenbroekcase $want_largefile in
2244*00b67f09SDavid van Moolenbroek	yes)
2245*00b67f09SDavid van Moolenbroek		ALWAYS_DEFINES="$ALWAYS_DEFINES -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
2246*00b67f09SDavid van Moolenbroek		;;
2247*00b67f09SDavid van Moolenbroek	*)
2248*00b67f09SDavid van Moolenbroek		;;
2249*00b67f09SDavid van Moolenbroekesac
2250*00b67f09SDavid van Moolenbroek
2251*00b67f09SDavid van Moolenbroek#
2252*00b67f09SDavid van Moolenbroek# Additional compiler settings.
2253*00b67f09SDavid van Moolenbroek#
2254*00b67f09SDavid van MoolenbroekMKDEPCC="$CC"
2255*00b67f09SDavid van MoolenbroekMKDEPCFLAGS="-M"
2256*00b67f09SDavid van MoolenbroekIRIX_DNSSEC_WARNINGS_HACK=""
2257*00b67f09SDavid van Moolenbroek
2258*00b67f09SDavid van Moolenbroekif test "X$GCC" = "Xyes"; then
2259*00b67f09SDavid van Moolenbroek	STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith"
2260*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(if "$CC" supports -fno-strict-aliasing)
2261*00b67f09SDavid van Moolenbroek	SAVE_CFLAGS="$CFLAGS"
2262*00b67f09SDavid van Moolenbroek	CFLAGS="$CFLAGS -fno-strict-aliasing"
2263*00b67f09SDavid van Moolenbroek	AC_TRY_COMPILE(,, [FNOSTRICTALIASING=yes],[FNOSTRICTALIASING=no])
2264*00b67f09SDavid van Moolenbroek	CFLAGS="$SAVE_CFLAGS"
2265*00b67f09SDavid van Moolenbroek	if test "$FNOSTRICTALIASING" = "yes"; then
2266*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
2267*00b67f09SDavid van Moolenbroek		STD_CWARNINGS="$STD_CWARNINGS -fno-strict-aliasing"
2268*00b67f09SDavid van Moolenbroek	else
2269*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
2270*00b67f09SDavid van Moolenbroek	fi
2271*00b67f09SDavid van Moolenbroek	#
2272*00b67f09SDavid van Moolenbroek	# turn off delete null pointer checks
2273*00b67f09SDavid van Moolenbroek	#
2274*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING(if "$CC" supports -fno-delete-null-pointer-checks)
2275*00b67f09SDavid van Moolenbroek	SAVE_CFLAGS="$CFLAGS"
2276*00b67f09SDavid van Moolenbroek	CFLAGS="$CFLAGS -fno-delete-null-pointer-checks"
2277*00b67f09SDavid van Moolenbroek	AC_TRY_COMPILE(,, [FNODELETENULLPOINTERCHECKS=yes],
2278*00b67f09SDavid van Moolenbroek			  [FNODELETENULLPOINTERCHECKS=no])
2279*00b67f09SDavid van Moolenbroek	CFLAGS="$SAVE_CFLAGS"
2280*00b67f09SDavid van Moolenbroek	if test "$FNODELETENULLPOINTERCHECKS" = "yes"; then
2281*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
2282*00b67f09SDavid van Moolenbroek		STD_CWARNINGS="$STD_CWARNINGS -fno-delete-null-pointer-checks"
2283*00b67f09SDavid van Moolenbroek	else
2284*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
2285*00b67f09SDavid van Moolenbroek	fi
2286*00b67f09SDavid van Moolenbroek	case "$host" in
2287*00b67f09SDavid van Moolenbroek	*-hp-hpux*)
2288*00b67f09SDavid van Moolenbroek		CFLAGS="$CFLAGS -Wl,+vnocompatwarnings"
2289*00b67f09SDavid van Moolenbroek		BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings"
2290*00b67f09SDavid van Moolenbroek		;;
2291*00b67f09SDavid van Moolenbroek	esac
2292*00b67f09SDavid van Moolenbroek	if test "X$enable_warn_shadow" = Xyes; then
2293*00b67f09SDavid van Moolenbroek		STD_CWARNINGS="$STD_CWARNINGS -Wshadow"
2294*00b67f09SDavid van Moolenbroek	fi
2295*00b67f09SDavid van Moolenbroek	if test "X$enable_warn_error" = Xyes; then
2296*00b67f09SDavid van Moolenbroek		STD_CWARNINGS="$STD_CWARNINGS -Werror"
2297*00b67f09SDavid van Moolenbroek	fi
2298*00b67f09SDavid van Moolenbroekelse
2299*00b67f09SDavid van Moolenbroek	case $host in
2300*00b67f09SDavid van Moolenbroek	*-dec-osf*)
2301*00b67f09SDavid van Moolenbroek		CC="$CC -std"
2302*00b67f09SDavid van Moolenbroek		CCOPT="$CCOPT -std"
2303*00b67f09SDavid van Moolenbroek		CCNOOPT="$CCNOOPT -std"
2304*00b67f09SDavid van Moolenbroek		MKDEPCC="$CC"
2305*00b67f09SDavid van Moolenbroek		;;
2306*00b67f09SDavid van Moolenbroek	*-hp-hpux*)
2307*00b67f09SDavid van Moolenbroek		CC="$CC -Ae -z"
2308*00b67f09SDavid van Moolenbroek		# The version of the C compiler that constantly warns about
2309*00b67f09SDavid van Moolenbroek		# 'const' as well as alignment issues is unfortunately not
2310*00b67f09SDavid van Moolenbroek		# able to be discerned via the version of the operating
2311*00b67f09SDavid van Moolenbroek		# system, nor does cc have a version flag.
2312*00b67f09SDavid van Moolenbroek		case "`$CC +W 123 2>&1`" in
2313*00b67f09SDavid van Moolenbroek		*Unknown?option*)
2314*00b67f09SDavid van Moolenbroek			STD_CWARNINGS="+w1"
2315*00b67f09SDavid van Moolenbroek			;;
2316*00b67f09SDavid van Moolenbroek		*)
2317*00b67f09SDavid van Moolenbroek			# Turn off the pointlessly noisy warnings.
2318*00b67f09SDavid van Moolenbroek			STD_CWARNINGS="+w1 +W 474,530,2193,2236"
2319*00b67f09SDavid van Moolenbroek			;;
2320*00b67f09SDavid van Moolenbroek		esac
2321*00b67f09SDavid van Moolenbroek		CCOPT="$CCOPT -Ae -z"
2322*00b67f09SDavid van Moolenbroek		CCNOOPT="$CCNOOPT -Ae -z"
2323*00b67f09SDavid van Moolenbroek		CFLAGS="$CFLAGS -Wl,+vnocompatwarnings"
2324*00b67f09SDavid van Moolenbroek		BACKTRACECFLAGS="$BACKTRACECFLAGS -Wl,+vnocompatwarnings"
2325*00b67f09SDavid van Moolenbroek		MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
2326*00b67f09SDavid van Moolenbroek		;;
2327*00b67f09SDavid van Moolenbroek	*-sgi-irix*)
2328*00b67f09SDavid van Moolenbroek		STD_CWARNINGS="-fullwarn -woff 1209"
2329*00b67f09SDavid van Moolenbroek		#
2330*00b67f09SDavid van Moolenbroek		# Silence more than 250 instances of
2331*00b67f09SDavid van Moolenbroek		#   "prototyped function redeclared without prototype"
2332*00b67f09SDavid van Moolenbroek		# and 11 instances of
2333*00b67f09SDavid van Moolenbroek		#   "variable ... was set but never used"
2334*00b67f09SDavid van Moolenbroek		# from lib/dns/sec/openssl.
2335*00b67f09SDavid van Moolenbroek		#
2336*00b67f09SDavid van Moolenbroek		IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
2337*00b67f09SDavid van Moolenbroek		;;
2338*00b67f09SDavid van Moolenbroek	*-solaris*)
2339*00b67f09SDavid van Moolenbroek		MKDEPCFLAGS="-xM"
2340*00b67f09SDavid van Moolenbroek		;;
2341*00b67f09SDavid van Moolenbroek	*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
2342*00b67f09SDavid van Moolenbroek		# UnixWare
2343*00b67f09SDavid van Moolenbroek		CC="$CC -w"
2344*00b67f09SDavid van Moolenbroek		;;
2345*00b67f09SDavid van Moolenbroek	esac
2346*00b67f09SDavid van Moolenbroekfi
2347*00b67f09SDavid van Moolenbroek
2348*00b67f09SDavid van MoolenbroekAC_SUBST(MKDEPCC)
2349*00b67f09SDavid van MoolenbroekAC_SUBST(MKDEPCFLAGS)
2350*00b67f09SDavid van MoolenbroekAC_SUBST(MKDEPPROG)
2351*00b67f09SDavid van MoolenbroekAC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)
2352*00b67f09SDavid van Moolenbroek
2353*00b67f09SDavid van Moolenbroek#
2354*00b67f09SDavid van Moolenbroek# NLS
2355*00b67f09SDavid van Moolenbroek#
2356*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)
2357*00b67f09SDavid van Moolenbroek
2358*00b67f09SDavid van Moolenbroek#
2359*00b67f09SDavid van Moolenbroek# -lxnet buys us one big porting headache...  standards, gotta love 'em.
2360*00b67f09SDavid van Moolenbroek#
2361*00b67f09SDavid van Moolenbroek# AC_CHECK_LIB(xnet, socket, ,
2362*00b67f09SDavid van Moolenbroek#    AC_CHECK_LIB(socket, socket)
2363*00b67f09SDavid van Moolenbroek# )
2364*00b67f09SDavid van Moolenbroek#
2365*00b67f09SDavid van Moolenbroek# Use this for now, instead:
2366*00b67f09SDavid van Moolenbroek#
2367*00b67f09SDavid van Moolenbroekcase "$host" in
2368*00b67f09SDavid van Moolenbroek	mips-sgi-irix*)
2369*00b67f09SDavid van Moolenbroek		;;
2370*00b67f09SDavid van Moolenbroek	*-linux*)
2371*00b67f09SDavid van Moolenbroek		;;
2372*00b67f09SDavid van Moolenbroek	*)
2373*00b67f09SDavid van Moolenbroek		AC_CHECK_LIB(socket, socket)
2374*00b67f09SDavid van Moolenbroek		AC_CHECK_LIB(nsl, inet_addr)
2375*00b67f09SDavid van Moolenbroek		;;
2376*00b67f09SDavid van Moolenbroekesac
2377*00b67f09SDavid van Moolenbroek
2378*00b67f09SDavid van Moolenbroek#
2379*00b67f09SDavid van Moolenbroek# Work around Solaris's select() limitations.
2380*00b67f09SDavid van Moolenbroek#
2381*00b67f09SDavid van Moolenbroekcase "$host" in
2382*00b67f09SDavid van Moolenbroek	*-solaris2.[[89]]|*-solaris2.1?)
2383*00b67f09SDavid van Moolenbroek	AC_DEFINE(FD_SETSIZE, 65536,
2384*00b67f09SDavid van Moolenbroek		  [Solaris hack to get select_large_fdset.])
2385*00b67f09SDavid van Moolenbroek	;;
2386*00b67f09SDavid van Moolenbroekesac
2387*00b67f09SDavid van Moolenbroek
2388*00b67f09SDavid van Moolenbroek#
2389*00b67f09SDavid van Moolenbroek# Purify support
2390*00b67f09SDavid van Moolenbroek#
2391*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(whether to use purify)
2392*00b67f09SDavid van MoolenbroekAC_ARG_WITH(purify,
2393*00b67f09SDavid van Moolenbroek	[  --with-purify[=PATH]      use Rational purify],
2394*00b67f09SDavid van Moolenbroek	use_purify="$withval", use_purify="no")
2395*00b67f09SDavid van Moolenbroek
2396*00b67f09SDavid van Moolenbroekcase "$use_purify" in
2397*00b67f09SDavid van Moolenbroek	no)
2398*00b67f09SDavid van Moolenbroek		;;
2399*00b67f09SDavid van Moolenbroek	yes)
2400*00b67f09SDavid van Moolenbroek		AC_PATH_PROG(purify_path, purify, purify)
2401*00b67f09SDavid van Moolenbroek		;;
2402*00b67f09SDavid van Moolenbroek	*)
2403*00b67f09SDavid van Moolenbroek		purify_path="$use_purify"
2404*00b67f09SDavid van Moolenbroek		;;
2405*00b67f09SDavid van Moolenbroekesac
2406*00b67f09SDavid van Moolenbroek
2407*00b67f09SDavid van Moolenbroekcase "$use_purify" in
2408*00b67f09SDavid van Moolenbroek	no)
2409*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
2410*00b67f09SDavid van Moolenbroek		PURIFY=""
2411*00b67f09SDavid van Moolenbroek		;;
2412*00b67f09SDavid van Moolenbroek	*)
2413*00b67f09SDavid van Moolenbroek		if test -f $purify_path || test $purify_path = purify; then
2414*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT($purify_path)
2415*00b67f09SDavid van Moolenbroek			PURIFYFLAGS="`echo $PURIFYOPTIONS`"
2416*00b67f09SDavid van Moolenbroek			PURIFY="$purify_path $PURIFYFLAGS"
2417*00b67f09SDavid van Moolenbroek		else
2418*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([$purify_path not found.
2419*00b67f09SDavid van Moolenbroek
2420*00b67f09SDavid van MoolenbroekPlease choose the proper path with the following command:
2421*00b67f09SDavid van Moolenbroek
2422*00b67f09SDavid van Moolenbroek    configure --with-purify=PATH
2423*00b67f09SDavid van Moolenbroek])
2424*00b67f09SDavid van Moolenbroek		fi
2425*00b67f09SDavid van Moolenbroek		;;
2426*00b67f09SDavid van Moolenbroekesac
2427*00b67f09SDavid van Moolenbroek
2428*00b67f09SDavid van MoolenbroekAC_SUBST(PURIFY)
2429*00b67f09SDavid van Moolenbroek
2430*00b67f09SDavid van Moolenbroek#
2431*00b67f09SDavid van Moolenbroek# Google/Great Performance Tools CPU Profiler
2432*00b67f09SDavid van Moolenbroek#
2433*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(whether to use gperftools profiler)
2434*00b67f09SDavid van MoolenbroekAC_ARG_WITH(gperftools-profiler,
2435*00b67f09SDavid van Moolenbroek	[  --with-gperftools-profiler  use gperftools CPU profiler],
2436*00b67f09SDavid van Moolenbroek	use_profiler="$withval", use_profiler="no")
2437*00b67f09SDavid van Moolenbroek
2438*00b67f09SDavid van Moolenbroekcase $use_profiler in
2439*00b67f09SDavid van Moolenbroek	yes)
2440*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(yes)
2441*00b67f09SDavid van Moolenbroek		AC_DEFINE([HAVE_GPERFTOOLS_PROFILER], 1,
2442*00b67f09SDavid van Moolenbroek		[Define to use gperftools CPU profiler.])
2443*00b67f09SDavid van Moolenbroek		LIBS="$LIBS -lprofiler"
2444*00b67f09SDavid van Moolenbroek		;;
2445*00b67f09SDavid van Moolenbroek	*)
2446*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
2447*00b67f09SDavid van Moolenbroek		;;
2448*00b67f09SDavid van Moolenbroekesac
2449*00b67f09SDavid van Moolenbroek
2450*00b67f09SDavid van Moolenbroek#
2451*00b67f09SDavid van Moolenbroek# enable/disable dumping stack backtrace.  Also check if the system supports
2452*00b67f09SDavid van Moolenbroek# glibc-compatible backtrace() function.
2453*00b67f09SDavid van Moolenbroek#
2454*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(backtrace,
2455*00b67f09SDavid van Moolenbroek[  --enable-backtrace      log stack backtrace on abort [[default=yes]]],
2456*00b67f09SDavid van Moolenbroek	      want_backtrace="$enableval",  want_backtrace="yes")
2457*00b67f09SDavid van Moolenbroekcase $want_backtrace in
2458*00b67f09SDavid van Moolenbroekyes)
2459*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_USEBACKTRACE="#define ISC_PLATFORM_USEBACKTRACE 1"
2460*00b67f09SDavid van Moolenbroek	AC_TRY_LINK([#include <execinfo.h>],
2461*00b67f09SDavid van Moolenbroek	[return (backtrace((void **)0, 0));],
2462*00b67f09SDavid van Moolenbroek	[AC_DEFINE([HAVE_LIBCTRACE], [], [if system have backtrace function])],)
2463*00b67f09SDavid van Moolenbroek	;;
2464*00b67f09SDavid van Moolenbroek*)
2465*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_USEBACKTRACE="#undef ISC_PLATFORM_USEBACKTRACE"
2466*00b67f09SDavid van Moolenbroek	;;
2467*00b67f09SDavid van Moolenbroekesac
2468*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEBACKTRACE)
2469*00b67f09SDavid van Moolenbroek
2470*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(symtable,
2471*00b67f09SDavid van Moolenbroek[  --enable-symtable       use internal symbol table for backtrace
2472*00b67f09SDavid van Moolenbroek			  [[all|minimal(default)|none]]],
2473*00b67f09SDavid van Moolenbroek		want_symtable="$enableval",  want_symtable="minimal")
2474*00b67f09SDavid van Moolenbroekcase $want_symtable in
2475*00b67f09SDavid van Moolenbroekyes|all|minimal)     # "yes" is a hidden value equivalent to "minimal"
2476*00b67f09SDavid van Moolenbroek	if test "$PERL" = ""
2477*00b67f09SDavid van Moolenbroek	then
2478*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([Internal symbol table requires perl but no perl is found.
2479*00b67f09SDavid van MoolenbroekInstall perl or explicitly disable the feature by --disable-symtable.])
2480*00b67f09SDavid van Moolenbroek	fi
2481*00b67f09SDavid van Moolenbroek	if test "$use_libtool" = "yes"; then
2482*00b67f09SDavid van Moolenbroek		AC_MSG_WARN([Internal symbol table does not work with libtool.  Disabling symbol table.])
2483*00b67f09SDavid van Moolenbroek	else
2484*00b67f09SDavid van Moolenbroek		# we generate the internal symbol table only for those systems
2485*00b67f09SDavid van Moolenbroek		# known to work to avoid unexpected build failure.  Also, warn
2486*00b67f09SDavid van Moolenbroek		# about unsupported systems when the feature is enabled
2487*00b67f09SDavid van Moolenbroek		#  manually.
2488*00b67f09SDavid van Moolenbroek		case $host_os in
2489*00b67f09SDavid van Moolenbroek		freebsd*|netbsd*|openbsd*|linux*|solaris*|darwin*)
2490*00b67f09SDavid van Moolenbroek			MKSYMTBL_PROGRAM="$PERL"
2491*00b67f09SDavid van Moolenbroek			if test $want_symtable = all; then
2492*00b67f09SDavid van Moolenbroek				ALWAYS_MAKE_SYMTABLE="yes"
2493*00b67f09SDavid van Moolenbroek			fi
2494*00b67f09SDavid van Moolenbroek			;;
2495*00b67f09SDavid van Moolenbroek		*)
2496*00b67f09SDavid van Moolenbroek			if test $want_symtable = yes -o $want_symtable = all
2497*00b67f09SDavid van Moolenbroek			then
2498*00b67f09SDavid van Moolenbroek				AC_MSG_WARN([this system is not known to generate internal symbol table safely; disabling it])
2499*00b67f09SDavid van Moolenbroek			fi
2500*00b67f09SDavid van Moolenbroek		esac
2501*00b67f09SDavid van Moolenbroek	fi
2502*00b67f09SDavid van Moolenbroek	;;
2503*00b67f09SDavid van Moolenbroek*)
2504*00b67f09SDavid van Moolenbroek	;;
2505*00b67f09SDavid van Moolenbroekesac
2506*00b67f09SDavid van MoolenbroekAC_SUBST(MKSYMTBL_PROGRAM)
2507*00b67f09SDavid van MoolenbroekAC_SUBST(ALWAYS_MAKE_SYMTABLE)
2508*00b67f09SDavid van Moolenbroek
2509*00b67f09SDavid van Moolenbroek#
2510*00b67f09SDavid van Moolenbroek# File name extension for static archive files, for those few places
2511*00b67f09SDavid van Moolenbroek# where they are treated differently from dynamic ones.
2512*00b67f09SDavid van Moolenbroek#
2513*00b67f09SDavid van MoolenbroekSA=a
2514*00b67f09SDavid van Moolenbroek
2515*00b67f09SDavid van MoolenbroekAC_SUBST(O)
2516*00b67f09SDavid van MoolenbroekAC_SUBST(A)
2517*00b67f09SDavid van MoolenbroekAC_SUBST(SA)
2518*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MKDEP_SED)
2519*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MODE_COMPILE)
2520*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MODE_INSTALL)
2521*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_MODE_LINK)
2522*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_ALLOW_UNDEFINED)
2523*00b67f09SDavid van MoolenbroekAC_SUBST(LIBTOOL_IN_MAIN)
2524*00b67f09SDavid van Moolenbroek
2525*00b67f09SDavid van MoolenbroekBIND9_CO_RULE=".c.$O:"
2526*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_CO_RULE)
2527*00b67f09SDavid van Moolenbroek
2528*00b67f09SDavid van Moolenbroek#
2529*00b67f09SDavid van Moolenbroek# Here begins a very long section to determine the system's networking
2530*00b67f09SDavid van Moolenbroek# capabilities.  The order of the tests is significant.
2531*00b67f09SDavid van Moolenbroek#
2532*00b67f09SDavid van Moolenbroek
2533*00b67f09SDavid van Moolenbroek#
2534*00b67f09SDavid van Moolenbroek# IPv6
2535*00b67f09SDavid van Moolenbroek#
2536*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(ipv6,
2537*00b67f09SDavid van Moolenbroek	[  --enable-ipv6           use IPv6 [default=autodetect]])
2538*00b67f09SDavid van Moolenbroek
2539*00b67f09SDavid van Moolenbroekcase "$enable_ipv6" in
2540*00b67f09SDavid van Moolenbroek	yes|''|autodetect)
2541*00b67f09SDavid van Moolenbroek		AC_DEFINE(WANT_IPV6)
2542*00b67f09SDavid van Moolenbroek		;;
2543*00b67f09SDavid van Moolenbroek	no)
2544*00b67f09SDavid van Moolenbroek		;;
2545*00b67f09SDavid van Moolenbroekesac
2546*00b67f09SDavid van Moolenbroek
2547*00b67f09SDavid van Moolenbroek#
2548*00b67f09SDavid van Moolenbroek# We do the IPv6 compilation checking after libtool so that we can put
2549*00b67f09SDavid van Moolenbroek# the right suffix on the files.
2550*00b67f09SDavid van Moolenbroek#
2551*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for IPv6 structures)
2552*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2553*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2554*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2555*00b67f09SDavid van Moolenbroek#include <netinet/in.h>],
2556*00b67f09SDavid van Moolenbroek[struct sockaddr_in6 sin6; return (0);],
2557*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2558*00b67f09SDavid van Moolenbroek	 found_ipv6=yes],
2559*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2560*00b67f09SDavid van Moolenbroek	 found_ipv6=no])
2561*00b67f09SDavid van Moolenbroek
2562*00b67f09SDavid van Moolenbroek#
2563*00b67f09SDavid van Moolenbroek# See whether IPv6 support is provided via a Kame add-on.
2564*00b67f09SDavid van Moolenbroek# This is done before other IPv6 linking tests to LIBS is properly set.
2565*00b67f09SDavid van Moolenbroek#
2566*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for Kame IPv6 support)
2567*00b67f09SDavid van MoolenbroekAC_ARG_WITH(kame,
2568*00b67f09SDavid van Moolenbroek	[  --with-kame[=PATH]	  use Kame IPv6 [default path /usr/local/v6]],
2569*00b67f09SDavid van Moolenbroek	use_kame="$withval", use_kame="no")
2570*00b67f09SDavid van Moolenbroek
2571*00b67f09SDavid van Moolenbroekcase "$use_kame" in
2572*00b67f09SDavid van Moolenbroek	no)
2573*00b67f09SDavid van Moolenbroek		;;
2574*00b67f09SDavid van Moolenbroek	yes)
2575*00b67f09SDavid van Moolenbroek		kame_path=/usr/local/v6
2576*00b67f09SDavid van Moolenbroek		;;
2577*00b67f09SDavid van Moolenbroek	*)
2578*00b67f09SDavid van Moolenbroek		kame_path="$use_kame"
2579*00b67f09SDavid van Moolenbroek		;;
2580*00b67f09SDavid van Moolenbroekesac
2581*00b67f09SDavid van Moolenbroek
2582*00b67f09SDavid van Moolenbroekcase "$use_kame" in
2583*00b67f09SDavid van Moolenbroek	no)
2584*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(no)
2585*00b67f09SDavid van Moolenbroek		;;
2586*00b67f09SDavid van Moolenbroek	*)
2587*00b67f09SDavid van Moolenbroek		if test -f $kame_path/lib/libinet6.a; then
2588*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT($kame_path/lib/libinet6.a)
2589*00b67f09SDavid van Moolenbroek			LIBS="-L$kame_path/lib -linet6 $LIBS"
2590*00b67f09SDavid van Moolenbroek		else
2591*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
2592*00b67f09SDavid van Moolenbroek
2593*00b67f09SDavid van MoolenbroekPlease choose the proper path with the following command:
2594*00b67f09SDavid van Moolenbroek
2595*00b67f09SDavid van Moolenbroek    configure --with-kame=PATH
2596*00b67f09SDavid van Moolenbroek])
2597*00b67f09SDavid van Moolenbroek		fi
2598*00b67f09SDavid van Moolenbroek		;;
2599*00b67f09SDavid van Moolenbroekesac
2600*00b67f09SDavid van Moolenbroek
2601*00b67f09SDavid van Moolenbroek#
2602*00b67f09SDavid van Moolenbroek# Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
2603*00b67f09SDavid van Moolenbroek# Including it on Kame-using platforms is very bad, though, because
2604*00b67f09SDavid van Moolenbroek# Kame uses #error against direct inclusion.   So include it on only
2605*00b67f09SDavid van Moolenbroek# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
2606*00b67f09SDavid van Moolenbroek# This is done before the in6_pktinfo check because that's what
2607*00b67f09SDavid van Moolenbroek# netinet6/in6.h is needed for.
2608*00b67f09SDavid van Moolenbroek#
2609*00b67f09SDavid van Moolenbroekchangequote({, })
2610*00b67f09SDavid van Moolenbroekcase "$host" in
2611*00b67f09SDavid van Moolenbroek*-bsdi4.[01]*)
2612*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
2613*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
2614*00b67f09SDavid van Moolenbroek	isc_netinet6in6_hack="#include <netinet6/in6.h>"
2615*00b67f09SDavid van Moolenbroek	;;
2616*00b67f09SDavid van Moolenbroek*)
2617*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
2618*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
2619*00b67f09SDavid van Moolenbroek	isc_netinet6in6_hack=""
2620*00b67f09SDavid van Moolenbroek	;;
2621*00b67f09SDavid van Moolenbroekesac
2622*00b67f09SDavid van Moolenbroekchangequote([, ])
2623*00b67f09SDavid van Moolenbroek
2624*00b67f09SDavid van Moolenbroek#
2625*00b67f09SDavid van Moolenbroek# This is similar to the netinet6/in6.h issue.
2626*00b67f09SDavid van Moolenbroek#
2627*00b67f09SDavid van Moolenbroekcase "$host" in
2628*00b67f09SDavid van Moolenbroek*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
2629*00b67f09SDavid van Moolenbroek	# UnixWare
2630*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
2631*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
2632*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
2633*00b67f09SDavid van Moolenbroek	isc_netinetin6_hack="#include <netinet/in6.h>"
2634*00b67f09SDavid van Moolenbroek	;;
2635*00b67f09SDavid van Moolenbroek*)
2636*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
2637*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
2638*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
2639*00b67f09SDavid van Moolenbroek	isc_netinetin6_hack=""
2640*00b67f09SDavid van Moolenbroek	;;
2641*00b67f09SDavid van Moolenbroekesac
2642*00b67f09SDavid van Moolenbroek
2643*00b67f09SDavid van Moolenbroek#
2644*00b67f09SDavid van Moolenbroek# Now delve deeper into the suitability of the IPv6 support.
2645*00b67f09SDavid van Moolenbroek#
2646*00b67f09SDavid van Moolenbroekcase "$found_ipv6" in
2647*00b67f09SDavid van Moolenbroek	yes)
2648*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
2649*00b67f09SDavid van Moolenbroek		LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
2650*00b67f09SDavid van Moolenbroek
2651*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(for in6_addr)
2652*00b67f09SDavid van Moolenbroek		AC_TRY_COMPILE([
2653*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2654*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2655*00b67f09SDavid van Moolenbroek#include <netinet/in.h>
2656*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack
2657*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack
2658*00b67f09SDavid van Moolenbroek],
2659*00b67f09SDavid van Moolenbroek[struct in6_addr in6; return (0);],
2660*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(yes)
2661*00b67f09SDavid van Moolenbroek		 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
2662*00b67f09SDavid van Moolenbroek		 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
2663*00b67f09SDavid van Moolenbroek		 isc_in_addr6_hack=""],
2664*00b67f09SDavid van Moolenbroek		[AC_MSG_RESULT(no)
2665*00b67f09SDavid van Moolenbroek		 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
2666*00b67f09SDavid van Moolenbroek		 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
2667*00b67f09SDavid van Moolenbroek		 isc_in_addr6_hack="#define in6_addr in_addr6"])
2668*00b67f09SDavid van Moolenbroek
2669*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(for in6addr_any)
2670*00b67f09SDavid van Moolenbroek		AC_TRY_LINK([
2671*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2672*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2673*00b67f09SDavid van Moolenbroek#include <netinet/in.h>
2674*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack
2675*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack
2676*00b67f09SDavid van Moolenbroek$isc_in_addr6_hack
2677*00b67f09SDavid van Moolenbroek],
2678*00b67f09SDavid van Moolenbroek		[struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
2679*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(yes)
2680*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
2681*00b67f09SDavid van Moolenbroek			 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
2682*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(no)
2683*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
2684*00b67f09SDavid van Moolenbroek			 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
2685*00b67f09SDavid van Moolenbroek
2686*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(for in6addr_loopback)
2687*00b67f09SDavid van Moolenbroek		AC_TRY_LINK([
2688*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2689*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2690*00b67f09SDavid van Moolenbroek#include <netinet/in.h>
2691*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack
2692*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack
2693*00b67f09SDavid van Moolenbroek$isc_in_addr6_hack
2694*00b67f09SDavid van Moolenbroek],
2695*00b67f09SDavid van Moolenbroek		[struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);],
2696*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(yes)
2697*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
2698*00b67f09SDavid van Moolenbroek			 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK"],
2699*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(no)
2700*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#define ISC_PLATFORM_NEEDIN6ADDRLOOPBACK 1"
2701*00b67f09SDavid van Moolenbroek			 LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK="#define LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK 1"])
2702*00b67f09SDavid van Moolenbroek
2703*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
2704*00b67f09SDavid van Moolenbroek		AC_TRY_COMPILE([
2705*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2706*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2707*00b67f09SDavid van Moolenbroek#include <netinet/in.h>
2708*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack
2709*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack
2710*00b67f09SDavid van Moolenbroek],
2711*00b67f09SDavid van Moolenbroek		[struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
2712*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(yes)
2713*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
2714*00b67f09SDavid van Moolenbroek			 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
2715*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(no)
2716*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
2717*00b67f09SDavid van Moolenbroek			 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
2718*00b67f09SDavid van Moolenbroek		LWRES_HAVE_SIN6_SCOPE_ID="$result"
2719*00b67f09SDavid van Moolenbroek
2720*00b67f09SDavid van Moolenbroek		AC_MSG_CHECKING(for in6_pktinfo)
2721*00b67f09SDavid van Moolenbroek		AC_TRY_COMPILE([
2722*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2723*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2724*00b67f09SDavid van Moolenbroek#include <netinet/in.h>
2725*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack
2726*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack
2727*00b67f09SDavid van Moolenbroek],
2728*00b67f09SDavid van Moolenbroek		[struct in6_pktinfo xyzzy; return (0);],
2729*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(yes)
2730*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
2731*00b67f09SDavid van Moolenbroek			[AC_MSG_RESULT(no -- disabling runtime ipv6 support)
2732*00b67f09SDavid van Moolenbroek			 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
2733*00b67f09SDavid van Moolenbroek		;;
2734*00b67f09SDavid van Moolenbroek	no)
2735*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
2736*00b67f09SDavid van Moolenbroek		LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
2737*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
2738*00b67f09SDavid van Moolenbroek		LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
2739*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
2740*00b67f09SDavid van Moolenbroek		LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
2741*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_HAVESCOPEID="#define ISC_PLATFORM_HAVESCOPEID 1"
2742*00b67f09SDavid van Moolenbroek		ISC_IPV6_H="ipv6.h"
2743*00b67f09SDavid van Moolenbroek		ISC_IPV6_O="ipv6.$O"
2744*00b67f09SDavid van Moolenbroek		ISC_ISCIPV6_O="unix/ipv6.$O"
2745*00b67f09SDavid van Moolenbroek		ISC_IPV6_C="ipv6.c"
2746*00b67f09SDavid van Moolenbroek		;;
2747*00b67f09SDavid van Moolenbroekesac
2748*00b67f09SDavid van Moolenbroek
2749*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct sockaddr_storage)
2750*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2751*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2752*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2753*00b67f09SDavid van Moolenbroek$isc_netinetin6_hack
2754*00b67f09SDavid van Moolenbroek$isc_netinet6in6_hack
2755*00b67f09SDavid van Moolenbroek],
2756*00b67f09SDavid van Moolenbroek[struct sockaddr_storage storage; return (0);],
2757*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(yes)
2758*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESOCKADDRSTORAGE="#define ISC_PLATFORM_HAVESOCKADDRSTORAGE 1"],
2759*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(no)
2760*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESOCKADDRSTORAGE="#undef ISC_PLATFORM_HAVESOCKADDRSTORAGE"])
2761*00b67f09SDavid van Moolenbroek
2762*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIPV6)
2763*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_HAVEIPV6)
2764*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
2765*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
2766*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
2767*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
2768*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEINADDR6)
2769*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
2770*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
2771*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
2772*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
2773*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK)
2774*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
2775*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
2776*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESOCKADDRSTORAGE)
2777*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IPV6_H)
2778*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IPV6_O)
2779*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ISCIPV6_O)
2780*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IPV6_C)
2781*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
2782*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESCOPEID)
2783*00b67f09SDavid van Moolenbroek
2784*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for struct if_laddrreq])
2785*00b67f09SDavid van MoolenbroekAC_TRY_LINK([
2786*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2787*00b67f09SDavid van Moolenbroek#include <net/if6.h>
2788*00b67f09SDavid van Moolenbroek],[ struct if_laddrreq a; ],
2789*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2790*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEIF_LADDRREQ="#define ISC_PLATFORM_HAVEIF_LADDRREQ 1"],
2791*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2792*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEIF_LADDRREQ="#undef ISC_PLATFORM_HAVEIF_LADDRREQ"])
2793*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIF_LADDRREQ)
2794*00b67f09SDavid van Moolenbroek
2795*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for struct if_laddrconf])
2796*00b67f09SDavid van MoolenbroekAC_TRY_LINK([
2797*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2798*00b67f09SDavid van Moolenbroek#include <net/if6.h>
2799*00b67f09SDavid van Moolenbroek],[ struct if_laddrconf a; ],
2800*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2801*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEIF_LADDRCONF="#define ISC_PLATFORM_HAVEIF_LADDRCONF 1"],
2802*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2803*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEIF_LADDRCONF="#undef ISC_PLATFORM_HAVEIF_LADDRCONF"])
2804*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIF_LADDRCONF)
2805*00b67f09SDavid van Moolenbroek
2806*00b67f09SDavid van Moolenbroek#
2807*00b67f09SDavid van Moolenbroek# Check for network functions that are often missing.  We do this
2808*00b67f09SDavid van Moolenbroek# after the libtool checking, so we can put the right suffix on
2809*00b67f09SDavid van Moolenbroek# the files.  It also needs to come after checking for a Kame add-on,
2810*00b67f09SDavid van Moolenbroek# which provides some (all?) of the desired functions.
2811*00b67f09SDavid van Moolenbroek#
2812*00b67f09SDavid van Moolenbroek
2813*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for inet_ntop with IPv6 support])
2814*00b67f09SDavid van MoolenbroekAC_TRY_RUN([
2815*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2816*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2817*00b67f09SDavid van Moolenbroek#include <netinet/in.h>
2818*00b67f09SDavid van Moolenbroek#include <arpa/inet.h>
2819*00b67f09SDavid van Moolenbroekmain() {
2820*00b67f09SDavid van Moolenbroekchar a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}],
2821*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2822*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
2823*00b67f09SDavid van Moolenbroek
2824*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2825*00b67f09SDavid van Moolenbroek	ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
2826*00b67f09SDavid van Moolenbroek	ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
2827*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
2828*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(assuming inet_ntop not needed)
2829*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"])
2830*00b67f09SDavid van Moolenbroek
2831*00b67f09SDavid van Moolenbroek
2832*00b67f09SDavid van Moolenbroek# On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
2833*00b67f09SDavid van Moolenbroek# addresses with less than four octets, like "1.2.3".  Also leading
2834*00b67f09SDavid van Moolenbroek# zeros should also be rejected.
2835*00b67f09SDavid van Moolenbroek
2836*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING([for working inet_pton with IPv6 support])
2837*00b67f09SDavid van MoolenbroekAC_TRY_RUN([
2838*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2839*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
2840*00b67f09SDavid van Moolenbroek#include <netinet/in.h>
2841*00b67f09SDavid van Moolenbroek#include <arpa/inet.h>
2842*00b67f09SDavid van Moolenbroekmain() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
2843*00b67f09SDavid van Moolenbroek			     inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
2844*00b67f09SDavid van Moolenbroek			     (inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
2845*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2846*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],
2847*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2848*00b67f09SDavid van Moolenbroek	ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
2849*00b67f09SDavid van Moolenbroek	ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
2850*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"],
2851*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(assuming inet_pton needed)
2852*00b67f09SDavid van Moolenbroek	ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
2853*00b67f09SDavid van Moolenbroek	ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
2854*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"])
2855*00b67f09SDavid van Moolenbroek
2856*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDNTOP)
2857*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDPTON)
2858*00b67f09SDavid van Moolenbroek
2859*00b67f09SDavid van Moolenbroek#
2860*00b67f09SDavid van Moolenbroek# Look for a 4.4BSD-style sa_len member in struct sockaddr.
2861*00b67f09SDavid van Moolenbroek#
2862*00b67f09SDavid van Moolenbroekcase "$host" in
2863*00b67f09SDavid van Moolenbroek	*-dec-osf*)
2864*00b67f09SDavid van Moolenbroek		# Turn on 4.4BSD style sa_len support.
2865*00b67f09SDavid van Moolenbroek		AC_DEFINE(_SOCKADDR_LEN)
2866*00b67f09SDavid van Moolenbroek		;;
2867*00b67f09SDavid van Moolenbroekesac
2868*00b67f09SDavid van Moolenbroek
2869*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for sa_len in struct sockaddr)
2870*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2871*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2872*00b67f09SDavid van Moolenbroek#include <sys/socket.h>],
2873*00b67f09SDavid van Moolenbroek[struct sockaddr sa; sa.sa_len = 0; return (0);],
2874*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2875*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
2876*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
2877*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2878*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
2879*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
2880*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESALEN)
2881*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_HAVESALEN)
2882*00b67f09SDavid van Moolenbroek
2883*00b67f09SDavid van Moolenbroek#
2884*00b67f09SDavid van Moolenbroek# Look for a 4.4BSD or 4.3BSD struct msghdr
2885*00b67f09SDavid van Moolenbroek#
2886*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct msghdr flavor)
2887*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2888*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2889*00b67f09SDavid van Moolenbroek#include <sys/socket.h>],
2890*00b67f09SDavid van Moolenbroek[struct msghdr msg; msg.msg_flags = 0; return (0);],
2891*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(4.4BSD)
2892*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
2893*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(4.3BSD)
2894*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
2895*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)
2896*00b67f09SDavid van Moolenbroek
2897*00b67f09SDavid van Moolenbroek#
2898*00b67f09SDavid van Moolenbroek# Look for in_port_t.
2899*00b67f09SDavid van Moolenbroek#
2900*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for type in_port_t)
2901*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2902*00b67f09SDavid van Moolenbroek#include <sys/types.h>
2903*00b67f09SDavid van Moolenbroek#include <netinet/in.h>],
2904*00b67f09SDavid van Moolenbroek[in_port_t port = 25; return (0);],
2905*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2906*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
2907*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2908*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
2909*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDPORTT)
2910*00b67f09SDavid van Moolenbroek
2911*00b67f09SDavid van Moolenbroek#
2912*00b67f09SDavid van Moolenbroek# Check for addrinfo
2913*00b67f09SDavid van Moolenbroek#
2914*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct addrinfo)
2915*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2916*00b67f09SDavid van Moolenbroek#include <netdb.h>],
2917*00b67f09SDavid van Moolenbroek[struct addrinfo a; return (0);],
2918*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2919*00b67f09SDavid van Moolenbroek	ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
2920*00b67f09SDavid van Moolenbroek	ISC_IRS_NEEDADDRINFO="#undef ISC_IRS_NEEDADDRINFO"
2921*00b67f09SDavid van Moolenbroek	AC_DEFINE(HAVE_ADDRINFO)],
2922*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2923*00b67f09SDavid van Moolenbroek	ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"
2924*00b67f09SDavid van Moolenbroek	ISC_IRS_NEEDADDRINFO="#define ISC_IRS_NEEDADDRINFO 1"])
2925*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_NEEDADDRINFO)
2926*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IRS_NEEDADDRINFO)
2927*00b67f09SDavid van Moolenbroek
2928*00b67f09SDavid van Moolenbroek#
2929*00b67f09SDavid van Moolenbroek# Check for rrsetinfo
2930*00b67f09SDavid van Moolenbroek#
2931*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for struct rrsetinfo)
2932*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2933*00b67f09SDavid van Moolenbroek#include <netdb.h>],
2934*00b67f09SDavid van Moolenbroek[struct rrsetinfo r; return (0);],
2935*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2936*00b67f09SDavid van Moolenbroek	ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"],
2937*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2938*00b67f09SDavid van Moolenbroek	ISC_LWRES_NEEDRRSETINFO="#define ISC_LWRES_NEEDRRSETINFO 1"])
2939*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_NEEDRRSETINFO)
2940*00b67f09SDavid van Moolenbroek
2941*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int sethostent)
2942*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2943*00b67f09SDavid van Moolenbroek#include <netdb.h>],
2944*00b67f09SDavid van Moolenbroek[int i = sethostent(0); return(0);],
2945*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2946*00b67f09SDavid van Moolenbroek	ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
2947*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2948*00b67f09SDavid van Moolenbroek	ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
2949*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_SETHOSTENTINT)
2950*00b67f09SDavid van Moolenbroek
2951*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int endhostent)
2952*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2953*00b67f09SDavid van Moolenbroek#include <netdb.h>],
2954*00b67f09SDavid van Moolenbroek[int i = endhostent(); return(0);],
2955*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2956*00b67f09SDavid van Moolenbroek	ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
2957*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2958*00b67f09SDavid van Moolenbroek	ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
2959*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_ENDHOSTENTINT)
2960*00b67f09SDavid van Moolenbroek
2961*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
2962*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2963*00b67f09SDavid van Moolenbroek#include <netdb.h>
2964*00b67f09SDavid van Moolenbroekstruct netent *getnetbyaddr(in_addr_t, int);],
2965*00b67f09SDavid van Moolenbroek[],
2966*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2967*00b67f09SDavid van Moolenbroek	ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
2968*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2969*00b67f09SDavid van Moolenbroek	ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
2970*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)
2971*00b67f09SDavid van Moolenbroek
2972*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int setnetent)
2973*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2974*00b67f09SDavid van Moolenbroek#include <netdb.h>],
2975*00b67f09SDavid van Moolenbroek[int i = setnetent(0); return(0);],
2976*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2977*00b67f09SDavid van Moolenbroek	ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
2978*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2979*00b67f09SDavid van Moolenbroek	ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
2980*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_SETNETENTINT)
2981*00b67f09SDavid van Moolenbroek
2982*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for int endnetent)
2983*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2984*00b67f09SDavid van Moolenbroek#include <netdb.h>],
2985*00b67f09SDavid van Moolenbroek[int i = endnetent(); return(0);],
2986*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2987*00b67f09SDavid van Moolenbroek	ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
2988*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
2989*00b67f09SDavid van Moolenbroek	ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
2990*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_ENDNETENTINT)
2991*00b67f09SDavid van Moolenbroek
2992*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
2993*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
2994*00b67f09SDavid van Moolenbroek#include <netdb.h>
2995*00b67f09SDavid van Moolenbroekstruct hostent *gethostbyaddr(const void *, size_t, int);],
2996*00b67f09SDavid van Moolenbroek[return(0);],
2997*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
2998*00b67f09SDavid van Moolenbroek	ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
2999*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
3000*00b67f09SDavid van Moolenbroek	ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
3001*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)
3002*00b67f09SDavid van Moolenbroek
3003*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for h_errno in netdb.h)
3004*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
3005*00b67f09SDavid van Moolenbroek#include <netdb.h>],
3006*00b67f09SDavid van Moolenbroek[h_errno = 1; return(0);],
3007*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
3008*00b67f09SDavid van Moolenbroek	ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
3009*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)
3010*00b67f09SDavid van Moolenbroek	ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
3011*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_NEEDHERRNO)
3012*00b67f09SDavid van Moolenbroek
3013*00b67f09SDavid van Moolenbroek#
3014*00b67f09SDavid van Moolenbroek# Sadly, the definitions of system-supplied getnameinfo(3) vary.  Try to catch
3015*00b67f09SDavid van Moolenbroek# known variations here:
3016*00b67f09SDavid van Moolenbroek#
3017*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for getnameinfo prototype definitions)
3018*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
3019*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3020*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
3021*00b67f09SDavid van Moolenbroek#include <netdb.h>
3022*00b67f09SDavid van Moolenbroekint getnameinfo(const struct sockaddr *, socklen_t, char *,
3023*00b67f09SDavid van Moolenbroek		socklen_t, char *, socklen_t, unsigned int);],
3024*00b67f09SDavid van Moolenbroek[ return (0);],
3025*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(socklen_t for buflen; u_int for flags)
3026*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t,
3027*00b67f09SDavid van Moolenbroek		   [Define to the sockaddr length type used by getnameinfo(3).])
3028*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t,
3029*00b67f09SDavid van Moolenbroek		   [Define to the buffer length type used by getnameinfo(3).])
3030*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, unsigned int,
3031*00b67f09SDavid van Moolenbroek		   [Define to the flags type used by getnameinfo(3).])],
3032*00b67f09SDavid van Moolenbroek[AC_TRY_COMPILE([
3033*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3034*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
3035*00b67f09SDavid van Moolenbroek#include <netdb.h>
3036*00b67f09SDavid van Moolenbroekint getnameinfo(const struct sockaddr *, socklen_t, char *,
3037*00b67f09SDavid van Moolenbroek		size_t, char *, size_t, int);],
3038*00b67f09SDavid van Moolenbroek[ return (0);],
3039*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(size_t for buflen; int for flags)
3040*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t)
3041*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
3042*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
3043*00b67f09SDavid van Moolenbroek[AC_TRY_COMPILE([
3044*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3045*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
3046*00b67f09SDavid van Moolenbroek#include <netdb.h>
3047*00b67f09SDavid van Moolenbroekint getnameinfo(const struct sockaddr *, size_t, char *,
3048*00b67f09SDavid van Moolenbroek		size_t, char *, size_t, int);],
3049*00b67f09SDavid van Moolenbroek[ return (0);],
3050*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(size_t for buflen; int for flags)
3051*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, size_t)
3052*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, size_t)
3053*00b67f09SDavid van Moolenbroek	 AC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)],
3054*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(not match any subspecies; assume standard definition)
3055*00b67f09SDavid van MoolenbroekAC_DEFINE(IRS_GETNAMEINFO_SOCKLEN_T, socklen_t)
3056*00b67f09SDavid van MoolenbroekAC_DEFINE(IRS_GETNAMEINFO_BUFLEN_T, socklen_t)
3057*00b67f09SDavid van MoolenbroekAC_DEFINE(IRS_GETNAMEINFO_FLAGS_T, int)])])])
3058*00b67f09SDavid van Moolenbroek
3059*00b67f09SDavid van Moolenbroek#
3060*00b67f09SDavid van Moolenbroek# ...and same for gai_strerror().
3061*00b67f09SDavid van Moolenbroek#
3062*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for gai_strerror prototype definitions)
3063*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
3064*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3065*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
3066*00b67f09SDavid van Moolenbroek#include <netdb.h>
3067*00b67f09SDavid van Moolenbroekchar *gai_strerror(int ecode);],
3068*00b67f09SDavid van Moolenbroek[ return (0); ],
3069*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(returning char *)
3070*00b67f09SDavid van Moolenbroek	 AC_DEFINE([IRS_GAISTRERROR_RETURN_T], [char *],
3071*00b67f09SDavid van Moolenbroek	 [return type of gai_strerror])],
3072*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(not match any subspecies; assume standard definition)
3073*00b67f09SDavid van MoolenbroekAC_DEFINE([IRS_GAISTRERROR_RETURN_T], [const char *])])
3074*00b67f09SDavid van Moolenbroek
3075*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getipnodebyname,
3076*00b67f09SDavid van Moolenbroek	[ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
3077*00b67f09SDavid van Moolenbroek	[ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
3078*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getnameinfo,
3079*00b67f09SDavid van Moolenbroek	[ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
3080*00b67f09SDavid van Moolenbroek	[ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
3081*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getaddrinfo,
3082*00b67f09SDavid van Moolenbroek	[ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
3083*00b67f09SDavid van Moolenbroek	AC_DEFINE(HAVE_GETADDRINFO)],
3084*00b67f09SDavid van Moolenbroek	[ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
3085*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
3086*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETIPNODEPROTO)
3087*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
3088*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)
3089*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_IRS_GETNAMEINFOSOCKLEN)
3090*00b67f09SDavid van Moolenbroek
3091*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(getifaddrs,
3092*00b67f09SDavid van Moolenbroek[  --enable-getifaddrs     enable the use of getifaddrs() [[yes|no]].],
3093*00b67f09SDavid van Moolenbroek    want_getifaddrs="$enableval",  want_getifaddrs="yes")
3094*00b67f09SDavid van Moolenbroek
3095*00b67f09SDavid van Moolenbroek#
3096*00b67f09SDavid van Moolenbroek# This interface iteration code for getifaddrs() will fall back to using
3097*00b67f09SDavid van Moolenbroek# /proc/net/if_inet6 if getifaddrs() in glibc doesn't return any IPv6
3098*00b67f09SDavid van Moolenbroek# addresses.
3099*00b67f09SDavid van Moolenbroek#
3100*00b67f09SDavid van Moolenbroekcase $want_getifaddrs in
3101*00b67f09SDavid van Moolenbroekglibc)
3102*00b67f09SDavid van MoolenbroekAC_MSG_WARN("--enable-getifaddrs=glibc is no longer required")
3103*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
3104*00b67f09SDavid van Moolenbroek;;
3105*00b67f09SDavid van Moolenbroekyes)
3106*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(getifaddrs, AC_DEFINE(HAVE_GETIFADDRS))
3107*00b67f09SDavid van Moolenbroek;;
3108*00b67f09SDavid van Moolenbroekno)
3109*00b67f09SDavid van Moolenbroek;;
3110*00b67f09SDavid van Moolenbroekesac
3111*00b67f09SDavid van Moolenbroek
3112*00b67f09SDavid van Moolenbroek#
3113*00b67f09SDavid van Moolenbroek# Look for a sysctl call to get the list of network interfaces.
3114*00b67f09SDavid van Moolenbroek#
3115*00b67f09SDavid van Moolenbroekcase $ac_cv_header_sys_sysctl_h in
3116*00b67f09SDavid van Moolenbroekyes)
3117*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for interface list sysctl)
3118*00b67f09SDavid van MoolenbroekAC_EGREP_CPP(found_rt_iflist, [
3119*00b67f09SDavid van Moolenbroek#include <sys/param.h>
3120*00b67f09SDavid van Moolenbroek#include <sys/sysctl.h>
3121*00b67f09SDavid van Moolenbroek#include <sys/socket.h>
3122*00b67f09SDavid van Moolenbroek#ifdef NET_RT_IFLIST
3123*00b67f09SDavid van Moolenbroekfound_rt_iflist
3124*00b67f09SDavid van Moolenbroek#endif
3125*00b67f09SDavid van Moolenbroek],
3126*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes)
3127*00b67f09SDavid van Moolenbroek	 AC_DEFINE(HAVE_IFLIST_SYSCTL)],
3128*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no)])
3129*00b67f09SDavid van Moolenbroek;;
3130*00b67f09SDavid van Moolenbroekesac
3131*00b67f09SDavid van Moolenbroek
3132*00b67f09SDavid van Moolenbroek#
3133*00b67f09SDavid van Moolenbroek# Check for some other useful functions that are not ever-present.
3134*00b67f09SDavid van Moolenbroek#
3135*00b67f09SDavid van Moolenbroek
3136*00b67f09SDavid van Moolenbroek# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC
3137*00b67f09SDavid van Moolenbroek# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77
3138*00b67f09SDavid van Moolenbroek# reportedly defines strsep() without declaring it in <string.h> when
3139*00b67f09SDavid van Moolenbroek# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and
3140*00b67f09SDavid van Moolenbroek# AC_CHECK_FUNC() incorrectly succeeds because it declares
3141*00b67f09SDavid van Moolenbroek# the function itself.
3142*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for correctly declared strsep())
3143*00b67f09SDavid van MoolenbroekAC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");],
3144*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
3145*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
3146*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
3147*00b67f09SDavid van Moolenbroek
3148*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(memmove,
3149*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDMEMMOVE="#undef ISC_PLATFORM_NEEDMEMMOVE"],
3150*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDMEMMOVE="#define ISC_PLATFORM_NEEDMEMMOVE 1"])
3151*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDMEMMOVE)
3152*00b67f09SDavid van Moolenbroek
3153*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strtoul,
3154*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRTOUL="#undef ISC_PLATFORM_NEEDSTRTOUL"
3155*00b67f09SDavid van Moolenbroek	 LWRES_PLATFORM_NEEDSTRTOUL="#undef LWRES_PLATFORM_NEEDSTRTOUL"
3156*00b67f09SDavid van Moolenbroek	 GENRANDOMLIB=""],
3157*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRTOUL="#define ISC_PLATFORM_NEEDSTRTOUL 1"
3158*00b67f09SDavid van Moolenbroek	 LWRES_PLATFORM_NEEDSTRTOUL="#define LWRES_PLATFORM_NEEDSTRTOUL 1"
3159*00b67f09SDavid van Moolenbroek	 GENRANDOMLIB='${ISCLIBS}'])
3160*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRTOUL)
3161*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSTRTOUL)
3162*00b67f09SDavid van MoolenbroekAC_SUBST(GENRANDOMLIB)
3163*00b67f09SDavid van Moolenbroek
3164*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strlcpy,
3165*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRLCPY="#undef ISC_PLATFORM_NEEDSTRLCPY"
3166*00b67f09SDavid van Moolenbroek         LWRES_PLATFORM_NEEDSTRLCPY="#undef LWRES_PLATFORM_NEEDSTRLCPY"],
3167*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRLCPY="#define ISC_PLATFORM_NEEDSTRLCPY 1"
3168*00b67f09SDavid van Moolenbroek         LWRES_PLATFORM_NEEDSTRLCPY="#define LWRES_PLATFORM_NEEDSTRLCPY 1"])
3169*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRLCPY)
3170*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSTRLCPY)
3171*00b67f09SDavid van Moolenbroek
3172*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strlcat,
3173*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRLCAT="#undef ISC_PLATFORM_NEEDSTRLCAT"],
3174*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"])
3175*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRLCAT)
3176*00b67f09SDavid van Moolenbroek
3177*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strcasestr,
3178*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRCASESTR="#undef ISC_PLATFORM_NEEDSTRCASESTR"],
3179*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDSTRCASESTR="#define ISC_PLATFORM_NEEDSTRCASESTR 1"])
3180*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSTRCASESTR)
3181*00b67f09SDavid van Moolenbroek
3182*00b67f09SDavid van MoolenbroekAC_SUBST(READLINE_LIB)
3183*00b67f09SDavid van MoolenbroekAC_ARG_WITH(readline,
3184*00b67f09SDavid van Moolenbroek	[  --with-readline[=LIBSPEC]    specify readline library [default -lreadline]],
3185*00b67f09SDavid van Moolenbroek	readline="$withval", readline="-lreadline")
3186*00b67f09SDavid van Moolenbroekcase "$readline" in
3187*00b67f09SDavid van Moolenbroekno)	;;
3188*00b67f09SDavid van Moolenbroek*)
3189*00b67f09SDavid van Moolenbroek	if test "x$readline" = "xyes"
3190*00b67f09SDavid van Moolenbroek	then
3191*00b67f09SDavid van Moolenbroek		readline=-lreadline
3192*00b67f09SDavid van Moolenbroek	fi
3193*00b67f09SDavid van Moolenbroek	saved_LIBS="$LIBS"
3194*00b67f09SDavid van Moolenbroek	LIBS="$readline"
3195*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNCS(readline)
3196*00b67f09SDavid van Moolenbroek	if test "$ac_cv_func_readline" = "yes"
3197*00b67f09SDavid van Moolenbroek	then
3198*00b67f09SDavid van Moolenbroek		READLINE_LIB="$readline"
3199*00b67f09SDavid van Moolenbroek	fi
3200*00b67f09SDavid van Moolenbroek	LIBS="$saved_LIBS"
3201*00b67f09SDavid van Moolenbroek	;;
3202*00b67f09SDavid van Moolenbroekesac
3203*00b67f09SDavid van Moolenbroek
3204*00b67f09SDavid van Moolenbroek
3205*00b67f09SDavid van MoolenbroekISC_PRINT_OBJS=
3206*00b67f09SDavid van MoolenbroekISC_PRINT_SRCS=
3207*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(sprintf)
3208*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
3209*00b67f09SDavid van Moolenbroek#include <stdio.h>
3210*00b67f09SDavid van Moolenbroek],
3211*00b67f09SDavid van Moolenbroek[ char buf[2]; return(*sprintf(buf,"x"));],
3212*00b67f09SDavid van Moolenbroek[
3213*00b67f09SDavid van MoolenbroekISC_PRINT_OBJS="print.$O"
3214*00b67f09SDavid van MoolenbroekISC_PRINT_SRCS="print.c"
3215*00b67f09SDavid van MoolenbroekISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
3216*00b67f09SDavid van MoolenbroekLWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
3217*00b67f09SDavid van Moolenbroek],
3218*00b67f09SDavid van Moolenbroek[ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF"
3219*00b67f09SDavid van Moolenbroek LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"]
3220*00b67f09SDavid van Moolenbroek)
3221*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
3222*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
3223*00b67f09SDavid van Moolenbroek
3224*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(vsnprintf,
3225*00b67f09SDavid van Moolenbroek	[ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"
3226*00b67f09SDavid van Moolenbroek	 LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"],
3227*00b67f09SDavid van Moolenbroek	[ISC_PRINT_OBJS="print.$O"
3228*00b67f09SDavid van Moolenbroek	 ISC_PRINT_SRCS="print.c"
3229*00b67f09SDavid van Moolenbroek	 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
3230*00b67f09SDavid van Moolenbroek	 LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
3231*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
3232*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
3233*00b67f09SDavid van MoolenbroekISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
3234*00b67f09SDavid van MoolenbroekISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
3235*00b67f09SDavid van Moolenbroek
3236*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
3237*00b67f09SDavid van Moolenbroek
3238*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_EXTRA_OBJS)
3239*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_EXTRA_SRCS)
3240*00b67f09SDavid van Moolenbroek
3241*00b67f09SDavid van Moolenbroek#
3242*00b67f09SDavid van Moolenbroek# Use our own SPNEGO implementation?
3243*00b67f09SDavid van Moolenbroek#
3244*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(isc-spnego,
3245*00b67f09SDavid van Moolenbroek	[  --disable-isc-spnego    use SPNEGO from GSSAPI library])
3246*00b67f09SDavid van Moolenbroek
3247*00b67f09SDavid van Moolenbroekif test -n "$USE_GSSAPI"
3248*00b67f09SDavid van Moolenbroekthen
3249*00b67f09SDavid van Moolenbroek	case "$enable_isc_spnego" in
3250*00b67f09SDavid van Moolenbroek		yes|'')
3251*00b67f09SDavid van Moolenbroek			USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO'
3252*00b67f09SDavid van Moolenbroek			DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O"
3253*00b67f09SDavid van Moolenbroek			DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c"
3254*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(using SPNEGO from lib/dns)
3255*00b67f09SDavid van Moolenbroek			;;
3256*00b67f09SDavid van Moolenbroek		no)
3257*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(using SPNEGO from GSSAPI library)
3258*00b67f09SDavid van Moolenbroek			;;
3259*00b67f09SDavid van Moolenbroek	esac
3260*00b67f09SDavid van Moolenbroekfi
3261*00b67f09SDavid van Moolenbroek
3262*00b67f09SDavid van MoolenbroekAC_SUBST(USE_ISC_SPNEGO)
3263*00b67f09SDavid van Moolenbroek
3264*00b67f09SDavid van MoolenbroekAC_SUBST(DST_EXTRA_OBJS)
3265*00b67f09SDavid van MoolenbroekAC_SUBST(DST_EXTRA_SRCS)
3266*00b67f09SDavid van Moolenbroek
3267*00b67f09SDavid van Moolenbroek# Determine the printf format characters to use when printing
3268*00b67f09SDavid van Moolenbroek# values of type isc_int64_t. This will normally be "ll", but where
3269*00b67f09SDavid van Moolenbroek# the compiler treats "long long" as a alias for "long" and printf
3270*00b67f09SDavid van Moolenbroek# doesn't know about "long long" use "l".  Hopefully the sprintf
3271*00b67f09SDavid van Moolenbroek# will produce a inconsistent result in the later case.  If the compiler
3272*00b67f09SDavid van Moolenbroek# fails due to seeing "%lld" we fall back to "l".
3273*00b67f09SDavid van Moolenbroek#
3274*00b67f09SDavid van Moolenbroek# Digital Unix 4.0 (gcc?) (long long) is 64 bits as is its long. It uses
3275*00b67f09SDavid van Moolenbroek# %ld even for (long long)/
3276*00b67f09SDavid van Moolenbroek#
3277*00b67f09SDavid van Moolenbroek# Win32 uses "%I64d", but that's defined elsewhere since we don't use
3278*00b67f09SDavid van Moolenbroek# configure on Win32.
3279*00b67f09SDavid van Moolenbroek#
3280*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(printf format modifier for 64-bit integers)
3281*00b67f09SDavid van MoolenbroekAC_TRY_RUN([
3282*00b67f09SDavid van Moolenbroek#include <stdio.h>
3283*00b67f09SDavid van Moolenbroekmain() {
3284*00b67f09SDavid van Moolenbroek	long long int j = 0;
3285*00b67f09SDavid van Moolenbroek	char buf[100];
3286*00b67f09SDavid van Moolenbroek	buf[0] = 0;
3287*00b67f09SDavid van Moolenbroek	sprintf(buf, "%lld", j);
3288*00b67f09SDavid van Moolenbroek	exit((sizeof(long long int) != sizeof(long int))? 0 :
3289*00b67f09SDavid van Moolenbroek	     (strcmp(buf, "0") != 0));
3290*00b67f09SDavid van Moolenbroek}
3291*00b67f09SDavid van Moolenbroek],
3292*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(ll)
3293*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
3294*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'],
3295*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(l)
3296*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
3297*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "l"'],
3298*00b67f09SDavid van Moolenbroek	[AC_MSG_RESULT(assuming target platform uses ll)
3299*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
3300*00b67f09SDavid van Moolenbroek	LWRES_PLATFORM_QUADFORMAT='#define LWRES_PLATFORM_QUADFORMAT "ll"'])
3301*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_QUADFORMAT)
3302*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_QUADFORMAT)
3303*00b67f09SDavid van Moolenbroek
3304*00b67f09SDavid van Moolenbroek#
3305*00b67f09SDavid van Moolenbroek# Security Stuff
3306*00b67f09SDavid van Moolenbroek#
3307*00b67f09SDavid van Moolenbroek# Note it is very recommended to *not* disable chroot(),
3308*00b67f09SDavid van Moolenbroek# this is only because chroot() was made obsolete by Posix.
3309*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(chroot,
3310*00b67f09SDavid van Moolenbroek	[  --disable-chroot        disable chroot])
3311*00b67f09SDavid van Moolenbroekcase "$enable_chroot" in
3312*00b67f09SDavid van Moolenbroek	yes|'')
3313*00b67f09SDavid van Moolenbroek		AC_CHECK_FUNCS(chroot)
3314*00b67f09SDavid van Moolenbroek		;;
3315*00b67f09SDavid van Moolenbroek	no)
3316*00b67f09SDavid van Moolenbroek		;;
3317*00b67f09SDavid van Moolenbroekesac
3318*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(linux-caps,
3319*00b67f09SDavid van Moolenbroek	[  --disable-linux-caps	  disable linux capabilities])
3320*00b67f09SDavid van Moolenbroekcase "$enable_linux_caps" in
3321*00b67f09SDavid van Moolenbroek	yes|'')
3322*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADERS(linux/types.h)
3323*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADERS([sys/capability.h])
3324*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADERS([linux/capability.h], [], [],
3325*00b67f09SDavid van Moolenbroek				 [#ifdef HAVE_LINUX_TYPES_H
3326*00b67f09SDavid van Moolenbroek				  #include <linux/types.h>
3327*00b67f09SDavid van Moolenbroek				  #endif
3328*00b67f09SDavid van Moolenbroek				 ])
3329*00b67f09SDavid van Moolenbroek		AC_CHECK_LIB(cap, cap_set_proc)
3330*00b67f09SDavid van Moolenbroek		;;
3331*00b67f09SDavid van Moolenbroek	no)
3332*00b67f09SDavid van Moolenbroek		;;
3333*00b67f09SDavid van Moolenbroekesac
3334*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(sys/prctl.h)
3335*00b67f09SDavid van Moolenbroek
3336*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(sys/un.h,
3337*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
3338*00b67f09SDavid van Moolenbroek,
3339*00b67f09SDavid van MoolenbroekISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
3340*00b67f09SDavid van Moolenbroek)
3341*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESYSUNH)
3342*00b67f09SDavid van Moolenbroek
3343*00b67f09SDavid van Moolenbroekcase "$host" in
3344*00b67f09SDavid van Moolenbroek*-solaris*)
3345*00b67f09SDavid van Moolenbroek	AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
3346*00b67f09SDavid van Moolenbroek		  [Define if connect does not honour the permission on the UNIX domain socket.])
3347*00b67f09SDavid van Moolenbroek	;;
3348*00b67f09SDavid van Moolenbroek*-sunos*)
3349*00b67f09SDavid van Moolenbroek	AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
3350*00b67f09SDavid van Moolenbroek		  [Define if connect does not honour the permission on the UNIX domain socket.])
3351*00b67f09SDavid van Moolenbroek	;;
3352*00b67f09SDavid van Moolenbroekesac
3353*00b67f09SDavid van Moolenbroek
3354*00b67f09SDavid van Moolenbroek#
3355*00b67f09SDavid van Moolenbroek# Time Zone Stuff
3356*00b67f09SDavid van Moolenbroek#
3357*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(tzset, AC_DEFINE(HAVE_TZSET))
3358*00b67f09SDavid van Moolenbroek
3359*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for optarg declaration)
3360*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
3361*00b67f09SDavid van Moolenbroek#include <unistd.h>
3362*00b67f09SDavid van Moolenbroek],
3363*00b67f09SDavid van Moolenbroek[optarg = 0;],
3364*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(yes)],
3365*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(no)
3366*00b67f09SDavid van MoolenbroekGEN_NEED_OPTARG="-DNEED_OPTARG=1"
3367*00b67f09SDavid van MoolenbroekAC_DEFINE(NEED_OPTARG, 1, [Defined if extern char *optarg is not declared.])])
3368*00b67f09SDavid van Moolenbroek
3369*00b67f09SDavid van Moolenbroek#
3370*00b67f09SDavid van Moolenbroek# BSD/OS, and perhaps some others, don't define rlim_t.
3371*00b67f09SDavid van Moolenbroek#
3372*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for type rlim_t)
3373*00b67f09SDavid van MoolenbroekAC_TRY_COMPILE([
3374*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3375*00b67f09SDavid van Moolenbroek#include <sys/time.h>
3376*00b67f09SDavid van Moolenbroek#include <sys/resource.h>],
3377*00b67f09SDavid van Moolenbroek[rlim_t rl = 19671212; return (0);],
3378*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(yes)
3379*00b67f09SDavid van Moolenbroek ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"],
3380*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(no)
3381*00b67f09SDavid van Moolenbroek
3382*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(type of rlim_cur)
3383*00b67f09SDavid van MoolenbroekAC_TRY_RUN([
3384*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3385*00b67f09SDavid van Moolenbroek#include <sys/time.h>
3386*00b67f09SDavid van Moolenbroek#include <sys/resource.h>
3387*00b67f09SDavid van Moolenbroekmain() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
3388*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(int)
3389*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
3390*00b67f09SDavid van Moolenbroek[
3391*00b67f09SDavid van MoolenbroekAC_TRY_RUN([
3392*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3393*00b67f09SDavid van Moolenbroek#include <sys/time.h>
3394*00b67f09SDavid van Moolenbroek#include <sys/resource.h>
3395*00b67f09SDavid van Moolenbroekmain() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
3396*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(long int)
3397*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
3398*00b67f09SDavid van Moolenbroek[
3399*00b67f09SDavid van MoolenbroekAC_TRY_RUN([
3400*00b67f09SDavid van Moolenbroek#include <sys/types.h>
3401*00b67f09SDavid van Moolenbroek#include <sys/time.h>
3402*00b67f09SDavid van Moolenbroek#include <sys/resource.h>
3403*00b67f09SDavid van Moolenbroekmain() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
3404*00b67f09SDavid van Moolenbroek[AC_MSG_RESULT(long long int)
3405*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
3406*00b67f09SDavid van Moolenbroek[AC_MSG_ERROR([unable to determine sizeof rlim_cur])
3407*00b67f09SDavid van Moolenbroek],[AC_MSG_ERROR(this cannot happen)])
3408*00b67f09SDavid van Moolenbroek],[AC_MSG_ERROR(this cannot happen)])
3409*00b67f09SDavid van Moolenbroek],[
3410*00b67f09SDavid van MoolenbroekAC_ARG_WITH(rlimtype, , rlimtype="$withval", rlimtype="long long int")
3411*00b67f09SDavid van MoolenbroekISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE $rlimtype"
3412*00b67f09SDavid van MoolenbroekAC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming $rlimtype)])
3413*00b67f09SDavid van Moolenbroek])
3414*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_RLIMITTYPE)
3415*00b67f09SDavid van Moolenbroek
3416*00b67f09SDavid van Moolenbroek#
3417*00b67f09SDavid van Moolenbroek# Older HP-UX doesn't have gettune
3418*00b67f09SDavid van Moolenbroek#
3419*00b67f09SDavid van Moolenbroekcase "$host" in
3420*00b67f09SDavid van Moolenbroek	*-hp-hpux*)
3421*00b67f09SDavid van Moolenbroek		AC_CHECK_HEADERS(sys/dyntune.h)
3422*00b67f09SDavid van Moolenbroek		;;
3423*00b67f09SDavid van Moolenbroek	*)
3424*00b67f09SDavid van Moolenbroek		;;
3425*00b67f09SDavid van Moolenbroekesac
3426*00b67f09SDavid van Moolenbroek
3427*00b67f09SDavid van Moolenbroek
3428*00b67f09SDavid van Moolenbroek#
3429*00b67f09SDavid van Moolenbroek# Compaq TruCluster requires more code for handling cluster IP aliases
3430*00b67f09SDavid van Moolenbroek#
3431*00b67f09SDavid van Moolenbroekcase "$host" in
3432*00b67f09SDavid van Moolenbroek	*-dec-osf*)
3433*00b67f09SDavid van Moolenbroek		AC_CHECK_LIB(clua, clua_getaliasaddress, LIBS="-lclua $LIBS")
3434*00b67f09SDavid van Moolenbroek		AC_CHECK_FUNC(clua_getaliasaddress,
3435*00b67f09SDavid van Moolenbroek				AC_DEFINE(HAVE_TRUCLUSTER, 1,
3436*00b67f09SDavid van Moolenbroek					[Define if running under Compaq TruCluster]))
3437*00b67f09SDavid van Moolenbroek		;;
3438*00b67f09SDavid van Moolenbroek	*)
3439*00b67f09SDavid van Moolenbroek		;;
3440*00b67f09SDavid van Moolenbroekesac
3441*00b67f09SDavid van Moolenbroek
3442*00b67f09SDavid van Moolenbroek#
3443*00b67f09SDavid van Moolenbroek# Some hosts need msg_namelen to match the size of the socket structure.
3444*00b67f09SDavid van Moolenbroek# Some hosts don't set msg_namelen appropriately on return from recvmsg().
3445*00b67f09SDavid van Moolenbroek#
3446*00b67f09SDavid van Moolenbroekcase $host in
3447*00b67f09SDavid van Moolenbroek*os2*|*hp-mpeix*)
3448*00b67f09SDavid van Moolenbroek	AC_DEFINE(BROKEN_RECVMSG, 1,
3449*00b67f09SDavid van Moolenbroek		  [Define if recvmsg() does not meet all of the BSD socket API specifications.])
3450*00b67f09SDavid van Moolenbroek	;;
3451*00b67f09SDavid van Moolenbroekesac
3452*00b67f09SDavid van Moolenbroek
3453*00b67f09SDavid van Moolenbroek#
3454*00b67f09SDavid van Moolenbroek# Microsoft has their own way of handling shared libraries that requires
3455*00b67f09SDavid van Moolenbroek# additional qualifiers on extern variables.  Unix systems don't need it.
3456*00b67f09SDavid van Moolenbroek#
3457*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEDECLSPEC)
3458*00b67f09SDavid van MoolenbroekISC_PLATFORM_USEDECLSPEC="#undef ISC_PLATFORM_USEDECLSPEC"
3459*00b67f09SDavid van MoolenbroekAC_SUBST(LWRES_PLATFORM_USEDECLSPEC)
3460*00b67f09SDavid van MoolenbroekLWRES_PLATFORM_USEDECLSPEC="#undef LWRES_PLATFORM_USEDECLSPEC"
3461*00b67f09SDavid van MoolenbroekAC_SUBST(IRS_PLATFORM_USEDECLSPEC)
3462*00b67f09SDavid van MoolenbroekIRS_PLATFORM_USEDECLSPEC="#undef IRS_PLATFORM_USEDECLSPEC"
3463*00b67f09SDavid van Moolenbroek
3464*00b67f09SDavid van Moolenbroek#
3465*00b67f09SDavid van Moolenbroek# Random remaining OS-specific issues involving compiler warnings.
3466*00b67f09SDavid van Moolenbroek# XXXDCL print messages to indicate some compensation is being done?
3467*00b67f09SDavid van Moolenbroek#
3468*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
3469*00b67f09SDavid van MoolenbroekISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"
3470*00b67f09SDavid van Moolenbroek
3471*00b67f09SDavid van Moolenbroekcase "$host" in
3472*00b67f09SDavid van Moolenbroek	*-aix5.[[123]].*)
3473*00b67f09SDavid van Moolenbroek		hack_shutup_pthreadonceinit=yes
3474*00b67f09SDavid van Moolenbroek		;;
3475*00b67f09SDavid van Moolenbroek	*-bsdi3.1*)
3476*00b67f09SDavid van Moolenbroek		hack_shutup_sputaux=yes
3477*00b67f09SDavid van Moolenbroek		;;
3478*00b67f09SDavid van Moolenbroek	*-bsdi4.0*)
3479*00b67f09SDavid van Moolenbroek		hack_shutup_sigwait=yes
3480*00b67f09SDavid van Moolenbroek		hack_shutup_sputaux=yes
3481*00b67f09SDavid van Moolenbroek		;;
3482*00b67f09SDavid van Moolenbroek	[*-bsdi4.[12]*])
3483*00b67f09SDavid van Moolenbroek		hack_shutup_stdargcast=yes
3484*00b67f09SDavid van Moolenbroek		;;
3485*00b67f09SDavid van Moolenbroek	[*-solaris2.[89]])
3486*00b67f09SDavid van Moolenbroek		hack_shutup_pthreadonceinit=yes
3487*00b67f09SDavid van Moolenbroek		;;
3488*00b67f09SDavid van Moolenbroek	*-solaris2.1[[0-9]])
3489*00b67f09SDavid van Moolenbroek		AC_TRY_COMPILE([ #include <pthread.h> ], [ static pthread_once_t once_test = { PTHREAD_ONCE_INIT }; ], [hack_shutup_pthreadonceinit=yes], )
3490*00b67f09SDavid van Moolenbroek		;;
3491*00b67f09SDavid van Moolenbroekesac
3492*00b67f09SDavid van Moolenbroek
3493*00b67f09SDavid van Moolenbroekcase "$hack_shutup_pthreadonceinit" in
3494*00b67f09SDavid van Moolenbroek	yes)
3495*00b67f09SDavid van Moolenbroek		#
3496*00b67f09SDavid van Moolenbroek		# Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
3497*00b67f09SDavid van Moolenbroek		#
3498*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
3499*00b67f09SDavid van Moolenbroek		;;
3500*00b67f09SDavid van Moolenbroekesac
3501*00b67f09SDavid van Moolenbroek
3502*00b67f09SDavid van Moolenbroekcase "$hack_shutup_sigwait" in
3503*00b67f09SDavid van Moolenbroek	yes)
3504*00b67f09SDavid van Moolenbroek		#
3505*00b67f09SDavid van Moolenbroek		# Shut up a -Wmissing-prototypes warning for sigwait().
3506*00b67f09SDavid van Moolenbroek		#
3507*00b67f09SDavid van Moolenbroek		AC_DEFINE(SHUTUP_SIGWAIT)
3508*00b67f09SDavid van Moolenbroek		;;
3509*00b67f09SDavid van Moolenbroekesac
3510*00b67f09SDavid van Moolenbroek
3511*00b67f09SDavid van Moolenbroekcase "$hack_shutup_sputaux" in
3512*00b67f09SDavid van Moolenbroek	yes)
3513*00b67f09SDavid van Moolenbroek		#
3514*00b67f09SDavid van Moolenbroek		# Shut up a -Wmissing-prototypes warning from <stdio.h>.
3515*00b67f09SDavid van Moolenbroek		#
3516*00b67f09SDavid van Moolenbroek		AC_DEFINE(SHUTUP_SPUTAUX)
3517*00b67f09SDavid van Moolenbroek		;;
3518*00b67f09SDavid van Moolenbroekesac
3519*00b67f09SDavid van Moolenbroek
3520*00b67f09SDavid van Moolenbroekcase "$hack_shutup_stdargcast" in
3521*00b67f09SDavid van Moolenbroek	yes)
3522*00b67f09SDavid van Moolenbroek		#
3523*00b67f09SDavid van Moolenbroek		# Shut up a -Wcast-qual warning from va_start().
3524*00b67f09SDavid van Moolenbroek		#
3525*00b67f09SDavid van Moolenbroek		AC_DEFINE(SHUTUP_STDARG_CAST)
3526*00b67f09SDavid van Moolenbroek		;;
3527*00b67f09SDavid van Moolenbroekesac
3528*00b67f09SDavid van Moolenbroek
3529*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(strings.h,
3530*00b67f09SDavid van Moolenbroek  ISC_PLATFORM_HAVESTRINGSH="#define ISC_PLATFORM_HAVESTRINGSH 1"
3531*00b67f09SDavid van Moolenbroek,
3532*00b67f09SDavid van Moolenbroek  ISC_PLATFORM_HAVESTRINGSH="#undef ISC_PLATFORM_HAVESTRINGSH"
3533*00b67f09SDavid van Moolenbroek)
3534*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVESTRINGSH)
3535*00b67f09SDavid van Moolenbroek
3536*00b67f09SDavid van Moolenbroek#
3537*00b67f09SDavid van Moolenbroek# Check for if_nametoindex() for IPv6 scoped addresses support
3538*00b67f09SDavid van Moolenbroek#
3539*00b67f09SDavid van MoolenbroekAC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
3540*00b67f09SDavid van Moolenbroek		ac_cv_have_if_nametoindex=no)
3541*00b67f09SDavid van Moolenbroekcase $ac_cv_have_if_nametoindex in
3542*00b67f09SDavid van Moolenbroekno)
3543*00b67f09SDavid van Moolenbroek	case "$host" in
3544*00b67f09SDavid van Moolenbroek	*-hp-hpux*)
3545*00b67f09SDavid van Moolenbroek		AC_CHECK_LIB(ipv6, if_nametoindex,
3546*00b67f09SDavid van Moolenbroek				ac_cv_have_if_nametoindex=yes
3547*00b67f09SDavid van Moolenbroek				LIBS="-lipv6 $LIBS",)
3548*00b67f09SDavid van Moolenbroek	;;
3549*00b67f09SDavid van Moolenbroek	esac
3550*00b67f09SDavid van Moolenbroekesac
3551*00b67f09SDavid van Moolenbroekcase $ac_cv_have_if_nametoindex in
3552*00b67f09SDavid van Moolenbroekyes)
3553*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEIFNAMETOINDEX="#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1"
3554*00b67f09SDavid van Moolenbroek        AC_DEFINE(HAVE_IF_NAMETOINDEX, 1,
3555*00b67f09SDavid van Moolenbroek                  [Define to 1 if you have the if_nametoindex function.])
3556*00b67f09SDavid van Moolenbroek
3557*00b67f09SDavid van Moolenbroek	;;
3558*00b67f09SDavid van Moolenbroek*)
3559*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEIFNAMETOINDEX="#undef ISC_PLATFORM_HAVEIFNAMETOINDEX"
3560*00b67f09SDavid van Moolenbroek	;;
3561*00b67f09SDavid van Moolenbroekesac
3562*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEIFNAMETOINDEX)
3563*00b67f09SDavid van Moolenbroek
3564*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(nanosleep usleep)
3565*00b67f09SDavid van Moolenbroek
3566*00b67f09SDavid van Moolenbroek#
3567*00b67f09SDavid van Moolenbroek# Machine architecture dependent features
3568*00b67f09SDavid van Moolenbroek#
3569*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(atomic,
3570*00b67f09SDavid van Moolenbroek	[  --enable-atomic	  enable machine specific atomic operations
3571*00b67f09SDavid van Moolenbroek			  [[default=autodetect]]],
3572*00b67f09SDavid van Moolenbroek			enable_atomic="$enableval",
3573*00b67f09SDavid van Moolenbroek			enable_atomic="autodetect")
3574*00b67f09SDavid van Moolenbroekcase "$enable_atomic" in
3575*00b67f09SDavid van Moolenbroek	yes|''|autodetect)
3576*00b67f09SDavid van Moolenbroek		case "$host" in
3577*00b67f09SDavid van Moolenbroek		powerpc-ibm-aix*)
3578*00b67f09SDavid van Moolenbroek			if test "X$GCC" = "Xyes"; then
3579*00b67f09SDavid van Moolenbroek				AC_MSG_CHECKING([if asm("isc"); works])
3580*00b67f09SDavid van Moolenbroek				AC_TRY_COMPILE(,[
3581*00b67f09SDavid van Moolenbroek				main() { asm("ics"); exit(0); }
3582*00b67f09SDavid van Moolenbroek				],
3583*00b67f09SDavid van Moolenbroek				[AC_MSG_RESULT(yes)
3584*00b67f09SDavid van Moolenbroek				 use_atomic=yes],
3585*00b67f09SDavid van Moolenbroek				[
3586*00b67f09SDavid van Moolenbroek				saved_cflags="$CFLAGS"
3587*00b67f09SDavid van Moolenbroek				CFLAGS="$CFLAGS -Wa,-many"
3588*00b67f09SDavid van Moolenbroek				AC_TRY_RUN([
3589*00b67f09SDavid van Moolenbroek				main() { asm("ics"); exit(0); }
3590*00b67f09SDavid van Moolenbroek				],
3591*00b67f09SDavid van Moolenbroek				[AC_MSG_RESULT([yes, required -Wa,-many])
3592*00b67f09SDavid van Moolenbroek				 use_atomic=yes],
3593*00b67f09SDavid van Moolenbroek				[AC_MSG_RESULT([no, use_atomic disabled])
3594*00b67f09SDavid van Moolenbroek				 CFLAGS="$saved_cflags"
3595*00b67f09SDavid van Moolenbroek				 use_atomic=no],
3596*00b67f09SDavid van Moolenbroek				[AC_MSG_RESULT([cross compile, assume yes])
3597*00b67f09SDavid van Moolenbroek				 CFLAGS="$saved_cflags"
3598*00b67f09SDavid van Moolenbroek				 use_atomic=yes])
3599*00b67f09SDavid van Moolenbroek				]
3600*00b67f09SDavid van Moolenbroek				)
3601*00b67f09SDavid van Moolenbroek			else
3602*00b67f09SDavid van Moolenbroek				use_atomic=yes
3603*00b67f09SDavid van Moolenbroek			fi
3604*00b67f09SDavid van Moolenbroek			;;
3605*00b67f09SDavid van Moolenbroek		*)
3606*00b67f09SDavid van Moolenbroek			use_atomic=yes
3607*00b67f09SDavid van Moolenbroek			;;
3608*00b67f09SDavid van Moolenbroek		esac
3609*00b67f09SDavid van Moolenbroek		;;
3610*00b67f09SDavid van Moolenbroek	no)
3611*00b67f09SDavid van Moolenbroek		use_atomic=no
3612*00b67f09SDavid van Moolenbroek		arch=noatomic
3613*00b67f09SDavid van Moolenbroek		;;
3614*00b67f09SDavid van Moolenbroekesac
3615*00b67f09SDavid van Moolenbroek
3616*00b67f09SDavid van MoolenbroekISC_PLATFORM_USEOSFASM="#undef ISC_PLATFORM_USEOSFASM"
3617*00b67f09SDavid van Moolenbroekif test "$use_atomic" = "yes"; then
3618*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING([architecture type for atomic operations])
3619*00b67f09SDavid van Moolenbroek	have_atomic=yes		# set default
3620*00b67f09SDavid van Moolenbroek	case "$host" in
3621*00b67f09SDavid van Moolenbroek	[i[3456]86-*])
3622*00b67f09SDavid van Moolenbroek		# XXX: some old x86 architectures actually do not support
3623*00b67f09SDavid van Moolenbroek		#      (some of) these operations.  Do we need stricter checks?
3624*00b67f09SDavid van Moolenbroek		AC_CHECK_SIZEOF([void *])
3625*00b67f09SDavid van Moolenbroek		if test $ac_cv_sizeof_void_p = 8; then
3626*00b67f09SDavid van Moolenbroek			arch=x86_64
3627*00b67f09SDavid van Moolenbroek			have_xaddq=yes
3628*00b67f09SDavid van Moolenbroek		else
3629*00b67f09SDavid van Moolenbroek			arch=x86_32
3630*00b67f09SDavid van Moolenbroek		fi
3631*00b67f09SDavid van Moolenbroek	;;
3632*00b67f09SDavid van Moolenbroek	x86_64-*|amd64-*)
3633*00b67f09SDavid van Moolenbroek		AC_CHECK_SIZEOF([void *])
3634*00b67f09SDavid van Moolenbroek		if test $ac_cv_sizeof_void_p = 8; then
3635*00b67f09SDavid van Moolenbroek			arch=x86_64
3636*00b67f09SDavid van Moolenbroek			have_xaddq=yes
3637*00b67f09SDavid van Moolenbroek		else
3638*00b67f09SDavid van Moolenbroek			arch=x86_32
3639*00b67f09SDavid van Moolenbroek		fi
3640*00b67f09SDavid van Moolenbroek	;;
3641*00b67f09SDavid van Moolenbroek	alpha*-*)
3642*00b67f09SDavid van Moolenbroek		arch=alpha
3643*00b67f09SDavid van Moolenbroek	;;
3644*00b67f09SDavid van Moolenbroek	powerpc-*|powerpc64-*)
3645*00b67f09SDavid van Moolenbroek		arch=powerpc
3646*00b67f09SDavid van Moolenbroek	;;
3647*00b67f09SDavid van Moolenbroek	mips-*|mipsel-*|mips64-*|mips64el-*)
3648*00b67f09SDavid van Moolenbroek		arch=mips
3649*00b67f09SDavid van Moolenbroek	;;
3650*00b67f09SDavid van Moolenbroek	ia64-*)
3651*00b67f09SDavid van Moolenbroek		arch=ia64
3652*00b67f09SDavid van Moolenbroek	;;
3653*00b67f09SDavid van Moolenbroek	*)
3654*00b67f09SDavid van Moolenbroek		have_atomic=no
3655*00b67f09SDavid van Moolenbroek		arch=noatomic
3656*00b67f09SDavid van Moolenbroek	;;
3657*00b67f09SDavid van Moolenbroek	esac
3658*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT($arch)
3659*00b67f09SDavid van Moolenbroekfi
3660*00b67f09SDavid van Moolenbroek
3661*00b67f09SDavid van Moolenbroekif test "$have_atomic" = "yes"; then
3662*00b67f09SDavid van Moolenbroek	AC_MSG_CHECKING([compiler support for inline assembly code])
3663*00b67f09SDavid van Moolenbroek
3664*00b67f09SDavid van Moolenbroek	compiler=generic
3665*00b67f09SDavid van Moolenbroek	# Check whether the compiler supports the assembly syntax we provide.
3666*00b67f09SDavid van Moolenbroek	if test "X$GCC" = "Xyes"; then
3667*00b67f09SDavid van Moolenbroek		# GCC's ASM extension always works
3668*00b67f09SDavid van Moolenbroek		compiler=gcc
3669*00b67f09SDavid van Moolenbroek		if test $arch = "x86_64"; then
3670*00b67f09SDavid van Moolenbroek			# We can share the same code for gcc with x86_32
3671*00b67f09SDavid van Moolenbroek			arch=x86_32
3672*00b67f09SDavid van Moolenbroek		fi
3673*00b67f09SDavid van Moolenbroek		if test $arch = "powerpc"; then
3674*00b67f09SDavid van Moolenbroek			#
3675*00b67f09SDavid van Moolenbroek			# The MacOS (and maybe others) uses "r0" for register
3676*00b67f09SDavid van Moolenbroek			# zero. Under linux/ibm it is "0" for register 0.
3677*00b67f09SDavid van Moolenbroek			# Probe to see if we have a MacOS style assembler.
3678*00b67f09SDavid van Moolenbroek			#
3679*00b67f09SDavid van Moolenbroek			AC_MSG_CHECKING([Checking for MacOS style assembler syntax])
3680*00b67f09SDavid van Moolenbroek			AC_TRY_COMPILE(, [
3681*00b67f09SDavid van Moolenbroek			__asm__ volatile ("li r0, 0x0\n"::);
3682*00b67f09SDavid van Moolenbroek			], [
3683*00b67f09SDavid van Moolenbroek			AC_MSG_RESULT(yes)
3684*00b67f09SDavid van Moolenbroek			compiler="mac"
3685*00b67f09SDavid van Moolenbroek			ISC_PLATFORM_USEMACASM="#define ISC_PLATFORM_USEMACASM 1"
3686*00b67f09SDavid van Moolenbroek			], [AC_MSG_RESULT(no)])
3687*00b67f09SDavid van Moolenbroek		fi
3688*00b67f09SDavid van Moolenbroek	else
3689*00b67f09SDavid van Moolenbroek		case "$host" in
3690*00b67f09SDavid van Moolenbroek		alpha*-dec-osf*)
3691*00b67f09SDavid van Moolenbroek			# Tru64 compiler has its own syntax for inline
3692*00b67f09SDavid van Moolenbroek			# assembly.
3693*00b67f09SDavid van Moolenbroek			AC_TRY_COMPILE(, [
3694*00b67f09SDavid van Moolenbroek#ifndef __DECC
3695*00b67f09SDavid van Moolenbroek#error "unexpected compiler"
3696*00b67f09SDavid van Moolenbroek#endif
3697*00b67f09SDavid van Moolenbroek				return (0);],
3698*00b67f09SDavid van Moolenbroek				[compiler=osf],)
3699*00b67f09SDavid van Moolenbroek		;;
3700*00b67f09SDavid van Moolenbroek		powerpc-ibm-aix*)
3701*00b67f09SDavid van Moolenbroek			compiler=aix
3702*00b67f09SDavid van Moolenbroek		;;
3703*00b67f09SDavid van Moolenbroek		esac
3704*00b67f09SDavid van Moolenbroek	fi
3705*00b67f09SDavid van Moolenbroek	case "$compiler" in
3706*00b67f09SDavid van Moolenbroek	gcc)
3707*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_USEGCCASM="#define ISC_PLATFORM_USEGCCASM 1"
3708*00b67f09SDavid van Moolenbroek		;;
3709*00b67f09SDavid van Moolenbroek	osf)
3710*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_USEOSFASM="#define ISC_PLATFORM_USEOSFASM 1"
3711*00b67f09SDavid van Moolenbroek		;;
3712*00b67f09SDavid van Moolenbroek	aix)
3713*00b67f09SDavid van Moolenbroek		;;
3714*00b67f09SDavid van Moolenbroek	mac)
3715*00b67f09SDavid van Moolenbroek		;;
3716*00b67f09SDavid van Moolenbroek	*)
3717*00b67f09SDavid van Moolenbroek		# See if the generic __asm function works.  If not,
3718*00b67f09SDavid van Moolenbroek		# we need to disable the atomic operations.
3719*00b67f09SDavid van Moolenbroek		AC_TRY_LINK(, [
3720*00b67f09SDavid van Moolenbroek					__asm("nop")
3721*00b67f09SDavid van Moolenbroek				],
3722*00b67f09SDavid van Moolenbroek		[compiler="standard"
3723*00b67f09SDavid van Moolenbroek		ISC_PLATFORM_USESTDASM="#define ISC_PLATFORM_USESTDASM 1"],
3724*00b67f09SDavid van Moolenbroek		[compiler="not supported (atomic operations disabled)"
3725*00b67f09SDavid van Moolenbroek		have_atomic=no
3726*00b67f09SDavid van Moolenbroek		arch=noatomic ]);
3727*00b67f09SDavid van Moolenbroek		;;
3728*00b67f09SDavid van Moolenbroek	esac
3729*00b67f09SDavid van Moolenbroek
3730*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT($compiler)
3731*00b67f09SDavid van Moolenbroekfi
3732*00b67f09SDavid van Moolenbroek
3733*00b67f09SDavid van Moolenbroekif test "$have_atomic" = "yes"; then
3734*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEXADD="#define ISC_PLATFORM_HAVEXADD 1"
3735*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVECMPXCHG="#define ISC_PLATFORM_HAVECMPXCHG 1"
3736*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEATOMICSTORE="#define ISC_PLATFORM_HAVEATOMICSTORE 1"
3737*00b67f09SDavid van Moolenbroekelse
3738*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEXADD="#undef ISC_PLATFORM_HAVEXADD"
3739*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVECMPXCHG="#undef ISC_PLATFORM_HAVECMPXCHG"
3740*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEATOMICSTORE="#undef ISC_PLATFORM_HAVEATOMICSTORE"
3741*00b67f09SDavid van Moolenbroekfi
3742*00b67f09SDavid van Moolenbroek
3743*00b67f09SDavid van Moolenbroekif test "$have_xaddq" = "yes"; then
3744*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEXADDQ="#define ISC_PLATFORM_HAVEXADDQ 1"
3745*00b67f09SDavid van Moolenbroekelse
3746*00b67f09SDavid van Moolenbroek	ISC_PLATFORM_HAVEXADDQ="#undef ISC_PLATFORM_HAVEXADDQ"
3747*00b67f09SDavid van Moolenbroekfi
3748*00b67f09SDavid van Moolenbroek
3749*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEXADD)
3750*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEXADDQ)
3751*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVECMPXCHG)
3752*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_HAVEATOMICSTORE)
3753*00b67f09SDavid van Moolenbroek
3754*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEGCCASM)
3755*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEOSFASM)
3756*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USESTDASM)
3757*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_PLATFORM_USEMACASM)
3758*00b67f09SDavid van Moolenbroek
3759*00b67f09SDavid van MoolenbroekISC_ARCH_DIR=$arch
3760*00b67f09SDavid van MoolenbroekAC_SUBST(ISC_ARCH_DIR)
3761*00b67f09SDavid van Moolenbroek
3762*00b67f09SDavid van Moolenbroek#
3763*00b67f09SDavid van Moolenbroek# Activate "rrset-order fixed" or not?
3764*00b67f09SDavid van Moolenbroek#
3765*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(fixed-rrset,
3766*00b67f09SDavid van Moolenbroek	[  --enable-fixed-rrset    enable fixed rrset ordering [[default=no]]],
3767*00b67f09SDavid van Moolenbroek			enable_fixed="$enableval",
3768*00b67f09SDavid van Moolenbroek			enable_fixed="no")
3769*00b67f09SDavid van Moolenbroekcase "$enable_fixed" in
3770*00b67f09SDavid van Moolenbroek	yes)
3771*00b67f09SDavid van Moolenbroek		AC_DEFINE(DNS_RDATASET_FIXED, 1,
3772*00b67f09SDavid van Moolenbroek			  [Define to enable "rrset-order fixed" syntax.])
3773*00b67f09SDavid van Moolenbroek		;;
3774*00b67f09SDavid van Moolenbroek	no)
3775*00b67f09SDavid van Moolenbroek		;;
3776*00b67f09SDavid van Moolenbroek	*)
3777*00b67f09SDavid van Moolenbroek		;;
3778*00b67f09SDavid van Moolenbroekesac
3779*00b67f09SDavid van Moolenbroek
3780*00b67f09SDavid van Moolenbroek#
3781*00b67f09SDavid van Moolenbroek# Enable response policy rewriting using NS IP addresses
3782*00b67f09SDavid van Moolenbroek#
3783*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(rpz-nsip,
3784*00b67f09SDavid van Moolenbroek	[  --disable-rpz-nsip	  disable rpz-nsip rules [[default=enabled]]],
3785*00b67f09SDavid van Moolenbroek			enable_nsip="$enableval",
3786*00b67f09SDavid van Moolenbroek			enable_nsip="yes")
3787*00b67f09SDavid van Moolenbroekcase "$enable_nsip" in
3788*00b67f09SDavid van Moolenbroek	yes)
3789*00b67f09SDavid van Moolenbroek		AC_DEFINE(ENABLE_RPZ_NSIP, 1,
3790*00b67f09SDavid van Moolenbroek			  [Define to enable rpz-nsip rules.])
3791*00b67f09SDavid van Moolenbroek		;;
3792*00b67f09SDavid van Moolenbroek	no)
3793*00b67f09SDavid van Moolenbroek		;;
3794*00b67f09SDavid van Moolenbroek	*)
3795*00b67f09SDavid van Moolenbroek		;;
3796*00b67f09SDavid van Moolenbroekesac
3797*00b67f09SDavid van Moolenbroek
3798*00b67f09SDavid van Moolenbroek#
3799*00b67f09SDavid van Moolenbroek# Enable response policy rewriting using NS name
3800*00b67f09SDavid van Moolenbroek#
3801*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(rpz-nsdname,
3802*00b67f09SDavid van Moolenbroek	[  --disable-rpz-nsdname	  disable rpz-nsdname rules [[default=enabled]]],
3803*00b67f09SDavid van Moolenbroek			enable_nsdname="$enableval",
3804*00b67f09SDavid van Moolenbroek			enable_nsdname="yes")
3805*00b67f09SDavid van Moolenbroekcase "$enable_nsdname" in
3806*00b67f09SDavid van Moolenbroek	yes)
3807*00b67f09SDavid van Moolenbroek		AC_DEFINE(ENABLE_RPZ_NSDNAME, 1,
3808*00b67f09SDavid van Moolenbroek			  [Define to enable rpz-nsdname rules.])
3809*00b67f09SDavid van Moolenbroek		;;
3810*00b67f09SDavid van Moolenbroek	no)
3811*00b67f09SDavid van Moolenbroek		;;
3812*00b67f09SDavid van Moolenbroek	*)
3813*00b67f09SDavid van Moolenbroek		;;
3814*00b67f09SDavid van Moolenbroekesac
3815*00b67f09SDavid van Moolenbroek
3816*00b67f09SDavid van Moolenbroek#
3817*00b67f09SDavid van Moolenbroek# Activate "filter-aaaa-on-v4/v6" or not?
3818*00b67f09SDavid van Moolenbroek#
3819*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(filter-aaaa,
3820*00b67f09SDavid van Moolenbroek	[  --enable-filter-aaaa    enable filtering of AAAA records [[default=no]]],
3821*00b67f09SDavid van Moolenbroek			enable_filter="$enableval",
3822*00b67f09SDavid van Moolenbroek			enable_filter="no")
3823*00b67f09SDavid van Moolenbroekcase "$enable_filter" in
3824*00b67f09SDavid van Moolenbroek	yes)
3825*00b67f09SDavid van Moolenbroek		AC_DEFINE(ALLOW_FILTER_AAAA, 1,
3826*00b67f09SDavid van Moolenbroek			  [Define to enable the "filter-aaaa-on-v4" and "filter-aaaa-on-v6" options.])
3827*00b67f09SDavid van Moolenbroek		;;
3828*00b67f09SDavid van Moolenbroek	no)
3829*00b67f09SDavid van Moolenbroek		;;
3830*00b67f09SDavid van Moolenbroek	*)
3831*00b67f09SDavid van Moolenbroek		;;
3832*00b67f09SDavid van Moolenbroekesac
3833*00b67f09SDavid van Moolenbroek
3834*00b67f09SDavid van Moolenbroek#
3835*00b67f09SDavid van Moolenbroek#  The following sets up how non-blocking i/o is established.
3836*00b67f09SDavid van Moolenbroek#  Sunos, cygwin and solaris 2.x (x<5) require special handling.
3837*00b67f09SDavid van Moolenbroek#
3838*00b67f09SDavid van Moolenbroekcase "$host" in
3839*00b67f09SDavid van Moolenbroek*-sunos*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
3840*00b67f09SDavid van Moolenbroek*-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
3841*00b67f09SDavid van Moolenbroek*-solaris2.[[01234]])
3842*00b67f09SDavid van Moolenbroek	AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
3843*00b67f09SDavid van Moolenbroek	AC_DEFINE(USE_FIONBIO_IOCTL, 1,
3844*00b67f09SDavid van Moolenbroek		  [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
3845*00b67f09SDavid van Moolenbroek	;;
3846*00b67f09SDavid van Moolenbroek*) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
3847*00b67f09SDavid van Moolenbroek	     [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
3848*00b67f09SDavid van Moolenbroek	;;
3849*00b67f09SDavid van Moolenbroekesac
3850*00b67f09SDavid van Moolenbroek#
3851*00b67f09SDavid van Moolenbroek# Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
3852*00b67f09SDavid van Moolenbroek# This prevents the source address being set.
3853*00b67f09SDavid van Moolenbroek#
3854*00b67f09SDavid van Moolenbroekcase "$host" in
3855*00b67f09SDavid van Moolenbroek*-solaris2.[[012345]]|*-solaris2.5.1)
3856*00b67f09SDavid van Moolenbroek	AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
3857*00b67f09SDavid van Moolenbroek		  [Define if you cannot bind() before connect() for TCP sockets.])
3858*00b67f09SDavid van Moolenbroek	;;
3859*00b67f09SDavid van Moolenbroekesac
3860*00b67f09SDavid van Moolenbroek#
3861*00b67f09SDavid van Moolenbroek# The following sections deal with tools used for formatting
3862*00b67f09SDavid van Moolenbroek# the documentation.  They are all optional, unless you are
3863*00b67f09SDavid van Moolenbroek# a developer editing the documentation source.
3864*00b67f09SDavid van Moolenbroek#
3865*00b67f09SDavid van Moolenbroek
3866*00b67f09SDavid van Moolenbroek#
3867*00b67f09SDavid van Moolenbroek# Look for TeX.
3868*00b67f09SDavid van Moolenbroek#
3869*00b67f09SDavid van Moolenbroek
3870*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(LATEX, latex, latex)
3871*00b67f09SDavid van MoolenbroekAC_SUBST(LATEX)
3872*00b67f09SDavid van Moolenbroek
3873*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
3874*00b67f09SDavid van MoolenbroekAC_SUBST(PDFLATEX)
3875*00b67f09SDavid van Moolenbroek
3876*00b67f09SDavid van Moolenbroek#
3877*00b67f09SDavid van Moolenbroek# Look for w3m
3878*00b67f09SDavid van Moolenbroek#
3879*00b67f09SDavid van Moolenbroek
3880*00b67f09SDavid van MoolenbroekAC_PATH_PROGS(W3M, w3m, w3m)
3881*00b67f09SDavid van MoolenbroekAC_SUBST(W3M)
3882*00b67f09SDavid van Moolenbroek
3883*00b67f09SDavid van Moolenbroek#
3884*00b67f09SDavid van Moolenbroek# Look for xsltproc (libxslt)
3885*00b67f09SDavid van Moolenbroek#
3886*00b67f09SDavid van Moolenbroek
3887*00b67f09SDavid van MoolenbroekAC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
3888*00b67f09SDavid van MoolenbroekAC_SUBST(XSLTPROC)
3889*00b67f09SDavid van Moolenbroek
3890*00b67f09SDavid van Moolenbroek#
3891*00b67f09SDavid van Moolenbroek# Look for xmllint (libxml2)
3892*00b67f09SDavid van Moolenbroek#
3893*00b67f09SDavid van Moolenbroek
3894*00b67f09SDavid van MoolenbroekAC_PATH_PROG(XMLLINT, xmllint, xmllint)
3895*00b67f09SDavid van MoolenbroekAC_SUBST(XMLLINT)
3896*00b67f09SDavid van Moolenbroek
3897*00b67f09SDavid van Moolenbroek#
3898*00b67f09SDavid van Moolenbroek# Look for Doxygen
3899*00b67f09SDavid van Moolenbroek#
3900*00b67f09SDavid van Moolenbroek
3901*00b67f09SDavid van MoolenbroekAC_PATH_PROG(DOXYGEN, doxygen, doxygen)
3902*00b67f09SDavid van MoolenbroekAC_SUBST(DOXYGEN)
3903*00b67f09SDavid van Moolenbroek
3904*00b67f09SDavid van Moolenbroek#
3905*00b67f09SDavid van Moolenbroek# Subroutine for searching for an ordinary file (e.g., a stylesheet)
3906*00b67f09SDavid van Moolenbroek# in a number of directories:
3907*00b67f09SDavid van Moolenbroek#
3908*00b67f09SDavid van Moolenbroek#   NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
3909*00b67f09SDavid van Moolenbroek#
3910*00b67f09SDavid van Moolenbroek# If the file FILENAME is found in one of the DIRECTORIES, the shell
3911*00b67f09SDavid van Moolenbroek# variable VARIABLE is defined to its absolute pathname.  Otherwise,
3912*00b67f09SDavid van Moolenbroek# it is set to FILENAME, with no directory prefix (that's not terribly
3913*00b67f09SDavid van Moolenbroek# useful, but looks less confusing in substitutions than leaving it
3914*00b67f09SDavid van Moolenbroek# empty).  The variable VARIABLE will be substituted into output files.
3915*00b67f09SDavid van Moolenbroek#
3916*00b67f09SDavid van Moolenbroek
3917*00b67f09SDavid van MoolenbroekAC_DEFUN(NOM_PATH_FILE, [
3918*00b67f09SDavid van Moolenbroek$1=""
3919*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for $2)
3920*00b67f09SDavid van Moolenbroekfor d in $3
3921*00b67f09SDavid van Moolenbroekdo
3922*00b67f09SDavid van Moolenbroek	f=$d/$2
3923*00b67f09SDavid van Moolenbroek	if test -f $f
3924*00b67f09SDavid van Moolenbroek	then
3925*00b67f09SDavid van Moolenbroek		$1=$f
3926*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT($f)
3927*00b67f09SDavid van Moolenbroek		break
3928*00b67f09SDavid van Moolenbroek	fi
3929*00b67f09SDavid van Moolenbroekdone
3930*00b67f09SDavid van Moolenbroekif test "X[$]$1" = "X"
3931*00b67f09SDavid van Moolenbroekthen
3932*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT("not found");
3933*00b67f09SDavid van Moolenbroek	$1=$2
3934*00b67f09SDavid van Moolenbroekfi
3935*00b67f09SDavid van MoolenbroekAC_SUBST($1)
3936*00b67f09SDavid van Moolenbroek])
3937*00b67f09SDavid van Moolenbroek
3938*00b67f09SDavid van Moolenbroek#
3939*00b67f09SDavid van Moolenbroek# Look for Docbook-XSL stylesheets.  Location probably varies by system.
3940*00b67f09SDavid van Moolenbroek# If it's not explicitly specified, guess where it might be found, based on
3941*00b67f09SDavid van Moolenbroek# where SGML stuff lives on some systems (FreeBSD is the only one we're sure
3942*00b67f09SDavid van Moolenbroek# of at the moment).
3943*00b67f09SDavid van Moolenbroek#
3944*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for Docbook-XSL path)
3945*00b67f09SDavid van MoolenbroekAC_ARG_WITH(docbook-xsl,
3946*00b67f09SDavid van Moolenbroek[  --with-docbook-xsl=PATH specify path for Docbook-XSL stylesheets],
3947*00b67f09SDavid van Moolenbroek   docbook_path="$withval", docbook_path="auto")
3948*00b67f09SDavid van Moolenbroekcase "$docbook_path" in
3949*00b67f09SDavid van Moolenbroekauto)
3950*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(auto)
3951*00b67f09SDavid van Moolenbroek	docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook /opt/local/share/xsl/docbook-xsl"
3952*00b67f09SDavid van Moolenbroek	;;
3953*00b67f09SDavid van Moolenbroek*)
3954*00b67f09SDavid van Moolenbroek	docbook_xsl_trees="$withval"
3955*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT($docbook_xsl_trees)
3956*00b67f09SDavid van Moolenbroek	;;
3957*00b67f09SDavid van Moolenbroekesac
3958*00b67f09SDavid van Moolenbroek
3959*00b67f09SDavid van Moolenbroek#
3960*00b67f09SDavid van Moolenbroek# Look for stylesheets we need.
3961*00b67f09SDavid van Moolenbroek#
3962*00b67f09SDavid van Moolenbroek
3963*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees)
3964*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees)
3965*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees)
3966*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees)
3967*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees)
3968*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees)
3969*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees)
3970*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees)
3971*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees)
3972*00b67f09SDavid van Moolenbroek
3973*00b67f09SDavid van Moolenbroek#
3974*00b67f09SDavid van Moolenbroek# Same dance for db2latex
3975*00b67f09SDavid van Moolenbroek#
3976*00b67f09SDavid van Moolenbroek
3977*00b67f09SDavid van Moolenbroekdb2latex_xsl_trees="/usr/local/share/db2latex/xsl /usr/pkg/share/xsl/db2latex"
3978*00b67f09SDavid van Moolenbroek
3979*00b67f09SDavid van Moolenbroek#
3980*00b67f09SDavid van Moolenbroek# Look for stylesheets we need.
3981*00b67f09SDavid van Moolenbroek#
3982*00b67f09SDavid van Moolenbroek
3983*00b67f09SDavid van MoolenbroekNOM_PATH_FILE(XSLT_DB2LATEX_STYLE, docbook.xsl, $db2latex_xsl_trees)
3984*00b67f09SDavid van Moolenbroek
3985*00b67f09SDavid van Moolenbroek#
3986*00b67f09SDavid van Moolenbroek# Look for "admonition" image directory.  Can't use NOM_PATH_FILE()
3987*00b67f09SDavid van Moolenbroek# because it's a directory, so just do the same things, inline.
3988*00b67f09SDavid van Moolenbroek#
3989*00b67f09SDavid van Moolenbroek
3990*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(for db2latex xsl figures)
3991*00b67f09SDavid van Moolenbroekfor d in $db2latex_xsl_trees
3992*00b67f09SDavid van Moolenbroekdo
3993*00b67f09SDavid van Moolenbroek	if test -d $d/figures
3994*00b67f09SDavid van Moolenbroek	then
3995*00b67f09SDavid van Moolenbroek		XSLT_DB2LATEX_ADMONITIONS=$d/figures
3996*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT($d/figures)
3997*00b67f09SDavid van Moolenbroek		break
3998*00b67f09SDavid van Moolenbroek	fi
3999*00b67f09SDavid van Moolenbroekdone
4000*00b67f09SDavid van Moolenbroekif test "X$XSLT_DB2LATEX_ADMONITIONS" = "X"
4001*00b67f09SDavid van Moolenbroekthen
4002*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(not found)
4003*00b67f09SDavid van Moolenbroek	XSLT_DB2LATEX_ADMONITIONS=db2latex/xsl/figures
4004*00b67f09SDavid van Moolenbroekfi
4005*00b67f09SDavid van MoolenbroekAC_SUBST(XSLT_DB2LATEX_ADMONITIONS)
4006*00b67f09SDavid van Moolenbroek
4007*00b67f09SDavid van Moolenbroek#
4008*00b67f09SDavid van Moolenbroek# IDN support
4009*00b67f09SDavid van Moolenbroek#
4010*00b67f09SDavid van MoolenbroekAC_ARG_WITH(idn,
4011*00b67f09SDavid van Moolenbroek	[  --with-idn[=MPREFIX]      enable IDN support using idnkit [default PREFIX]],
4012*00b67f09SDavid van Moolenbroek	use_idn="$withval", use_idn="no")
4013*00b67f09SDavid van Moolenbroekcase "$use_idn" in
4014*00b67f09SDavid van Moolenbroekyes)
4015*00b67f09SDavid van Moolenbroek	if test X$prefix = XNONE ; then
4016*00b67f09SDavid van Moolenbroek		idn_path=/usr/local
4017*00b67f09SDavid van Moolenbroek	else
4018*00b67f09SDavid van Moolenbroek		idn_path=$prefix
4019*00b67f09SDavid van Moolenbroek	fi
4020*00b67f09SDavid van Moolenbroek	;;
4021*00b67f09SDavid van Moolenbroekno)
4022*00b67f09SDavid van Moolenbroek	;;
4023*00b67f09SDavid van Moolenbroek*)
4024*00b67f09SDavid van Moolenbroek	idn_path="$use_idn"
4025*00b67f09SDavid van Moolenbroek	;;
4026*00b67f09SDavid van Moolenbroekesac
4027*00b67f09SDavid van Moolenbroek
4028*00b67f09SDavid van Moolenbroekiconvinc=
4029*00b67f09SDavid van Moolenbroekiconvlib=
4030*00b67f09SDavid van MoolenbroekAC_ARG_WITH(libiconv,
4031*00b67f09SDavid van Moolenbroek	[  --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]],
4032*00b67f09SDavid van Moolenbroek	use_libiconv="$withval", use_libiconv="no")
4033*00b67f09SDavid van Moolenbroekcase "$use_libiconv" in
4034*00b67f09SDavid van Moolenbroekyes)
4035*00b67f09SDavid van Moolenbroek	if test X$prefix = XNONE ; then
4036*00b67f09SDavid van Moolenbroek		iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
4037*00b67f09SDavid van Moolenbroek	else
4038*00b67f09SDavid van Moolenbroek		iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
4039*00b67f09SDavid van Moolenbroek	fi
4040*00b67f09SDavid van Moolenbroek	;;
4041*00b67f09SDavid van Moolenbroekno)
4042*00b67f09SDavid van Moolenbroek	iconvlib=
4043*00b67f09SDavid van Moolenbroek	;;
4044*00b67f09SDavid van Moolenbroek*)
4045*00b67f09SDavid van Moolenbroek	iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
4046*00b67f09SDavid van Moolenbroek	;;
4047*00b67f09SDavid van Moolenbroekesac
4048*00b67f09SDavid van Moolenbroek
4049*00b67f09SDavid van MoolenbroekAC_ARG_WITH(iconv,
4050*00b67f09SDavid van Moolenbroek	[  --with-iconv[=LIBSPEC]    specify iconv library [default -liconv]],
4051*00b67f09SDavid van Moolenbroek	iconvlib="$withval")
4052*00b67f09SDavid van Moolenbroekcase "$iconvlib" in
4053*00b67f09SDavid van Moolenbroekno)
4054*00b67f09SDavid van Moolenbroek	iconvlib=
4055*00b67f09SDavid van Moolenbroek	;;
4056*00b67f09SDavid van Moolenbroekyes)
4057*00b67f09SDavid van Moolenbroek	iconvlib=-liconv
4058*00b67f09SDavid van Moolenbroek	;;
4059*00b67f09SDavid van Moolenbroekesac
4060*00b67f09SDavid van Moolenbroek
4061*00b67f09SDavid van MoolenbroekAC_ARG_WITH(idnlib,
4062*00b67f09SDavid van Moolenbroek	[  --with-idnlib=ARG       specify libidnkit],
4063*00b67f09SDavid van Moolenbroek	idnlib="$withval", idnlib="no")
4064*00b67f09SDavid van Moolenbroekif test "$idnlib" = yes; then
4065*00b67f09SDavid van Moolenbroek	AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
4066*00b67f09SDavid van Moolenbroekfi
4067*00b67f09SDavid van Moolenbroek
4068*00b67f09SDavid van MoolenbroekIDNLIBS=
4069*00b67f09SDavid van Moolenbroekif test "$use_idn" != no; then
4070*00b67f09SDavid van Moolenbroek	AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
4071*00b67f09SDavid van Moolenbroek	STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
4072*00b67f09SDavid van Moolenbroek	if test "$idnlib" != no; then
4073*00b67f09SDavid van Moolenbroek		IDNLIBS="$idnlib $iconvlib"
4074*00b67f09SDavid van Moolenbroek	else
4075*00b67f09SDavid van Moolenbroek		IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
4076*00b67f09SDavid van Moolenbroek	fi
4077*00b67f09SDavid van Moolenbroekfi
4078*00b67f09SDavid van MoolenbroekAC_SUBST(IDNLIBS)
4079*00b67f09SDavid van Moolenbroek
4080*00b67f09SDavid van Moolenbroek#
4081*00b67f09SDavid van Moolenbroek# Check whether to build Automated Test Framework unit tests
4082*00b67f09SDavid van Moolenbroek#
4083*00b67f09SDavid van MoolenbroekAC_ARG_WITH(atf,
4084*00b67f09SDavid van Moolenbroek	[  --with-atf=ARG          support Automated Test Framework],
4085*00b67f09SDavid van Moolenbroek	atf="$withval", atf="no")
4086*00b67f09SDavid van Moolenbroekif test "$atf" = yes; then
4087*00b67f09SDavid van Moolenbroek	atf=`pwd`/unit/atf
4088*00b67f09SDavid van Moolenbroek	ATFBUILD=atf-src
4089*00b67f09SDavid van Moolenbroek	AC_SUBST(ATFBUILD)
4090*00b67f09SDavid van Moolenbroek	AC_CONFIG_COMMANDS([atf-config],
4091*00b67f09SDavid van Moolenbroek		[(
4092*00b67f09SDavid van Moolenbroek		 mkdir -p unit/atf-src;
4093*00b67f09SDavid van Moolenbroek		 cd unit/atf-src;
4094*00b67f09SDavid van Moolenbroek		 case "$srcdir" in
4095*00b67f09SDavid van Moolenbroek		 /*) ;;
4096*00b67f09SDavid van Moolenbroek		 *) srcdir="../../$srcdir";;
4097*00b67f09SDavid van Moolenbroek		 esac
4098*00b67f09SDavid van Moolenbroek		 ${SHELL} "${srcdir}${srcdir:+/unit/atf-src/}./configure" --enable-tools --disable-shared MISSING=: --prefix $atfdir;
4099*00b67f09SDavid van Moolenbroek		) ],
4100*00b67f09SDavid van Moolenbroek		[atfdir=`pwd`/unit/atf])
4101*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(building ATF from bind9/unit/atf-src)
4102*00b67f09SDavid van Moolenbroekfi
4103*00b67f09SDavid van Moolenbroek
4104*00b67f09SDavid van MoolenbroekATFLIBS=
4105*00b67f09SDavid van Moolenbroekif test "$atf" != no; then
4106*00b67f09SDavid van Moolenbroek	AC_DEFINE(ATF_TEST, 1, [define if ATF unit tests are to be built.])
4107*00b67f09SDavid van Moolenbroek	STD_CINCLUDES="$STD_CINCLUDES -I$atf/include"
4108*00b67f09SDavid van Moolenbroek	ATFBIN="$atf/bin"
4109*00b67f09SDavid van Moolenbroek	ATFLIBS="-L$atf/lib -latf-c"
4110*00b67f09SDavid van Moolenbroek	UNITTESTS=tests
4111*00b67f09SDavid van Moolenbroekfi
4112*00b67f09SDavid van MoolenbroekAC_SUBST(ATFBIN)
4113*00b67f09SDavid van MoolenbroekAC_SUBST(ATFLIBS)
4114*00b67f09SDavid van MoolenbroekAC_SUBST(UNITTESTS)
4115*00b67f09SDavid van Moolenbroek
4116*00b67f09SDavid van MoolenbroekAC_CHECK_HEADERS(locale.h)
4117*00b67f09SDavid van MoolenbroekAC_CHECK_FUNCS(setlocale)
4118*00b67f09SDavid van Moolenbroek
4119*00b67f09SDavid van Moolenbroek#
4120*00b67f09SDavid van Moolenbroek# was --with-tuning specified?
4121*00b67f09SDavid van Moolenbroek#
4122*00b67f09SDavid van MoolenbroekAC_ARG_WITH(tuning,
4123*00b67f09SDavid van Moolenbroek	[  --with-tuning=ARG       Specify server tuning (large or default)],
4124*00b67f09SDavid van Moolenbroek	use_tuning="$withval", use_tuning="no")
4125*00b67f09SDavid van Moolenbroek
4126*00b67f09SDavid van Moolenbroekcase "$use_tuning" in
4127*00b67f09SDavid van Moolenbroek	large)
4128*00b67f09SDavid van Moolenbroek		if ! $use_threads; then
4129*00b67f09SDavid van Moolenbroek			AC_MSG_ERROR([Large-system tuning requires threads.])
4130*00b67f09SDavid van Moolenbroek		fi
4131*00b67f09SDavid van Moolenbroek		AC_DEFINE(TUNE_LARGE, 1, [Define to use large-system tuning.])
4132*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(using large-system tuning)
4133*00b67f09SDavid van Moolenbroek		;;
4134*00b67f09SDavid van Moolenbroek	no|default)
4135*00b67f09SDavid van Moolenbroek		AC_MSG_RESULT(using default tuning)
4136*00b67f09SDavid van Moolenbroek		;;
4137*00b67f09SDavid van Moolenbroek	yes|*)
4138*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([You must specify "large" or "default" for --with-tuning.])
4139*00b67f09SDavid van Moolenbroek		;;
4140*00b67f09SDavid van Moolenbroekesac
4141*00b67f09SDavid van Moolenbroek
4142*00b67f09SDavid van Moolenbroek#
4143*00b67f09SDavid van Moolenbroek# Substitutions
4144*00b67f09SDavid van Moolenbroek#
4145*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_TOP_BUILDDIR)
4146*00b67f09SDavid van MoolenbroekBIND9_TOP_BUILDDIR=`pwd`
4147*00b67f09SDavid van Moolenbroek
4148*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_ISC_BUILDINCLUDE)
4149*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
4150*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
4151*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_DNS_BUILDINCLUDE)
4152*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_LWRES_BUILDINCLUDE)
4153*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_BIND9_BUILDINCLUDE)
4154*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_IRS_BUILDINCLUDE)
4155*00b67f09SDavid van Moolenbroekif test "X$srcdir" != "X"; then
4156*00b67f09SDavid van Moolenbroek	BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
4157*00b67f09SDavid van Moolenbroek	BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
4158*00b67f09SDavid van Moolenbroek	BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
4159*00b67f09SDavid van Moolenbroek	BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
4160*00b67f09SDavid van Moolenbroek	BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
4161*00b67f09SDavid van Moolenbroek	BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
4162*00b67f09SDavid van Moolenbroek	BIND9_IRS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/irs/include"
4163*00b67f09SDavid van Moolenbroekelse
4164*00b67f09SDavid van Moolenbroek	BIND9_ISC_BUILDINCLUDE=""
4165*00b67f09SDavid van Moolenbroek	BIND9_ISCCC_BUILDINCLUDE=""
4166*00b67f09SDavid van Moolenbroek	BIND9_ISCCFG_BUILDINCLUDE=""
4167*00b67f09SDavid van Moolenbroek	BIND9_DNS_BUILDINCLUDE=""
4168*00b67f09SDavid van Moolenbroek	BIND9_LWRES_BUILDINCLUDE=""
4169*00b67f09SDavid van Moolenbroek	BIND9_BIND9_BUILDINCLUDE=""
4170*00b67f09SDavid van Moolenbroek	BIND9_IRS_BUILDINCLUDE=""
4171*00b67f09SDavid van Moolenbroekfi
4172*00b67f09SDavid van Moolenbroek
4173*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(BIND9_MAKE_INCLUDES)
4174*00b67f09SDavid van MoolenbroekBIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
4175*00b67f09SDavid van Moolenbroek
4176*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(BIND9_MAKE_RULES)
4177*00b67f09SDavid van MoolenbroekBIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
4178*00b67f09SDavid van Moolenbroek
4179*00b67f09SDavid van Moolenbroek. "$srcdir/version"
4180*00b67f09SDavid van MoolenbroekBIND9_PRODUCT="PRODUCT=\"${PRODUCT}\""
4181*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_PRODUCT)
4182*00b67f09SDavid van MoolenbroekBIND9_DESCRIPTION="DESCRIPTION=\"${DESCRIPTION}\""
4183*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_DESCRIPTION)
4184*00b67f09SDavid van MoolenbroekBIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}"
4185*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_VERSION)
4186*00b67f09SDavid van MoolenbroekBIND9_MAJOR="MAJOR=${MAJORVER}.${MINORVER}"
4187*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_MAJOR)
4188*00b67f09SDavid van MoolenbroekBIND9_VERSIONSTRING="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}${DESCRIPTION:+ }${DESCRIPTION}"
4189*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_VERSIONSTRING)
4190*00b67f09SDavid van Moolenbroek
4191*00b67f09SDavid van MoolenbroekBIND9_SRCID="SRCID=unset"
4192*00b67f09SDavid van Moolenbroekif test -f "${srcdir}/srcid"; then
4193*00b67f09SDavid van Moolenbroek	. "${srcdir}/srcid"
4194*00b67f09SDavid van Moolenbroek	BIND9_SRCID="SRCID=$SRCID"
4195*00b67f09SDavid van Moolenbroekelif test -d "${srcdir}/.git"; then
4196*00b67f09SDavid van Moolenbroek	BIND9_SRCID="SRCID="`(cd "${srcdir}";git rev-parse --short HEAD)`
4197*00b67f09SDavid van Moolenbroekfi
4198*00b67f09SDavid van Moolenbroek
4199*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_SRCID)
4200*00b67f09SDavid van Moolenbroek
4201*00b67f09SDavid van Moolenbroekif test -z "$ac_configure_args"; then
4202*00b67f09SDavid van Moolenbroek	BIND9_CONFIGARGS="defaults"
4203*00b67f09SDavid van Moolenbroekelse
4204*00b67f09SDavid van Moolenbroek	for a in $ac_configure_args
4205*00b67f09SDavid van Moolenbroek	do
4206*00b67f09SDavid van Moolenbroek		BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a"
4207*00b67f09SDavid van Moolenbroek	done
4208*00b67f09SDavid van Moolenbroekfi
4209*00b67f09SDavid van MoolenbroekBIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`"
4210*00b67f09SDavid van MoolenbroekBIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}"
4211*00b67f09SDavid van MoolenbroekAC_SUBST(BIND9_CONFIGARGS)
4212*00b67f09SDavid van Moolenbroek
4213*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBISC_API)
4214*00b67f09SDavid van MoolenbroekLIBISC_API="$srcdir/lib/isc/api"
4215*00b67f09SDavid van Moolenbroek
4216*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBISCCC_API)
4217*00b67f09SDavid van MoolenbroekLIBISCCC_API="$srcdir/lib/isccc/api"
4218*00b67f09SDavid van Moolenbroek
4219*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBISCCFG_API)
4220*00b67f09SDavid van MoolenbroekLIBISCCFG_API="$srcdir/lib/isccfg/api"
4221*00b67f09SDavid van Moolenbroek
4222*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBDNS_API)
4223*00b67f09SDavid van MoolenbroekLIBDNS_API="$srcdir/lib/dns/api"
4224*00b67f09SDavid van Moolenbroek
4225*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBDNS_MAPAPI)
4226*00b67f09SDavid van MoolenbroekLIBDNS_MAPAPI="$srcdir/lib/dns/mapapi"
4227*00b67f09SDavid van Moolenbroek
4228*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBBIND9_API)
4229*00b67f09SDavid van MoolenbroekLIBBIND9_API="$srcdir/lib/bind9/api"
4230*00b67f09SDavid van Moolenbroek
4231*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBLWRES_API)
4232*00b67f09SDavid van MoolenbroekLIBLWRES_API="$srcdir/lib/lwres/api"
4233*00b67f09SDavid van Moolenbroek
4234*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(LIBIRS_API)
4235*00b67f09SDavid van MoolenbroekLIBIRS_API="$srcdir/lib/irs/api"
4236*00b67f09SDavid van Moolenbroek
4237*00b67f09SDavid van Moolenbroek#
4238*00b67f09SDavid van Moolenbroek# Configure any DLZ drivers.
4239*00b67f09SDavid van Moolenbroek#
4240*00b67f09SDavid van Moolenbroek# If config.dlz.in selects one or more DLZ drivers, it will set
4241*00b67f09SDavid van Moolenbroek# CONTRIB_DLZ to a non-empty value, which will be our clue to
4242*00b67f09SDavid van Moolenbroek# build DLZ drivers in contrib.
4243*00b67f09SDavid van Moolenbroek#
4244*00b67f09SDavid van Moolenbroek# This section has to come after the libtool stuff because it needs to
4245*00b67f09SDavid van Moolenbroek# know how to name the driver object files.
4246*00b67f09SDavid van Moolenbroek#
4247*00b67f09SDavid van Moolenbroek
4248*00b67f09SDavid van MoolenbroekCONTRIB_DLZ=""
4249*00b67f09SDavid van MoolenbroekDLZ_DRIVER_INCLUDES=""
4250*00b67f09SDavid van MoolenbroekDLZ_DRIVER_LIBS=""
4251*00b67f09SDavid van MoolenbroekDLZ_DRIVER_SRCS=""
4252*00b67f09SDavid van MoolenbroekDLZ_DRIVER_OBJS=""
4253*00b67f09SDavid van MoolenbroekDLZ_SYSTEM_TEST=""
4254*00b67f09SDavid van Moolenbroek
4255*00b67f09SDavid van Moolenbroek#
4256*00b67f09SDavid van Moolenbroek# Configure support for building a shared library object
4257*00b67f09SDavid van Moolenbroek#
4258*00b67f09SDavid van Moolenbroek# Even when libtool is available it can't always be relied upon
4259*00b67f09SDavid van Moolenbroek# to build an object that can be dlopen()'ed, but this is necessary
4260*00b67f09SDavid van Moolenbroek# for building the dlzexternal system test, so we'll try it the
4261*00b67f09SDavid van Moolenbroek# old-fashioned way.
4262*00b67f09SDavid van Moolenbroek#
4263*00b67f09SDavid van MoolenbroekSO="so"
4264*00b67f09SDavid van MoolenbroekSO_CFLAGS=""
4265*00b67f09SDavid van MoolenbroekSO_LDFLAGS=""
4266*00b67f09SDavid van MoolenbroekSO_LD=""
4267*00b67f09SDavid van MoolenbroekSO_TARGETS=""
4268*00b67f09SDavid van Moolenbroek
4269*00b67f09SDavid van MoolenbroekAC_ARG_WITH(dlopen,
4270*00b67f09SDavid van Moolenbroek	[  --with-dlopen=ARG       support dynamically loadable DLZ drivers],
4271*00b67f09SDavid van Moolenbroek	dlopen="$withval", dlopen="yes")
4272*00b67f09SDavid van Moolenbroek
4273*00b67f09SDavid van Moolenbroekcase $host in
4274*00b67f09SDavid van Moolenbroek	*-sunos*) dlopen="no"
4275*00b67f09SDavid van Moolenbroek		;;
4276*00b67f09SDavid van Moolenbroekesac
4277*00b67f09SDavid van Moolenbroek
4278*00b67f09SDavid van Moolenbroekif test "$dlopen" = "yes"; then
4279*00b67f09SDavid van Moolenbroek	AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
4280*00b67f09SDavid van Moolenbroek	if test "$have_dl" = "yes"; then
4281*00b67f09SDavid van Moolenbroek		LIBS="-ldl $LIBS"
4282*00b67f09SDavid van Moolenbroek	fi
4283*00b67f09SDavid van Moolenbroek	AC_CHECK_FUNCS(dlopen dlclose dlsym,,dlopen=no)
4284*00b67f09SDavid van Moolenbroekfi
4285*00b67f09SDavid van Moolenbroek
4286*00b67f09SDavid van Moolenbroekif test "$dlopen" = "yes"; then
4287*00b67f09SDavid van Moolenbroek	case $host in
4288*00b67f09SDavid van Moolenbroek		*-linux*|*-gnu*)
4289*00b67f09SDavid van Moolenbroek			SO_CFLAGS="-fPIC"
4290*00b67f09SDavid van Moolenbroek			SO_LDFLAGS=""
4291*00b67f09SDavid van Moolenbroek			if test "$have_dl" = "yes"
4292*00b67f09SDavid van Moolenbroek			then
4293*00b67f09SDavid van Moolenbroek				if test "$use_libtool" = "yes"; then
4294*00b67f09SDavid van Moolenbroek					SO_LDFLAGS="-Xcompiler -shared"
4295*00b67f09SDavid van Moolenbroek					SO_LD="${CC}"
4296*00b67f09SDavid van Moolenbroek				else
4297*00b67f09SDavid van Moolenbroek					SO_LDFLAGS="-shared"
4298*00b67f09SDavid van Moolenbroek					SO_LD="${CC}"
4299*00b67f09SDavid van Moolenbroek				fi
4300*00b67f09SDavid van Moolenbroek			else
4301*00b67f09SDavid van Moolenbroek				SO_LDFLAGS="-shared"
4302*00b67f09SDavid van Moolenbroek				SO_LD="ld"
4303*00b67f09SDavid van Moolenbroek			fi
4304*00b67f09SDavid van Moolenbroek			;;
4305*00b67f09SDavid van Moolenbroek		*-freebsd*|*-openbsd*|*-netbsd*)
4306*00b67f09SDavid van Moolenbroek			SO_CFLAGS="-fpic"
4307*00b67f09SDavid van Moolenbroek			SO_LDFLAGS="-Bshareable -x"
4308*00b67f09SDavid van Moolenbroek			SO_LD="ld"
4309*00b67f09SDavid van Moolenbroek			;;
4310*00b67f09SDavid van Moolenbroek		*-solaris*)
4311*00b67f09SDavid van Moolenbroek			SO_CFLAGS="-KPIC"
4312*00b67f09SDavid van Moolenbroek			SO_LDFLAGS="-G -z text"
4313*00b67f09SDavid van Moolenbroek			SO_LD="ld"
4314*00b67f09SDavid van Moolenbroek			;;
4315*00b67f09SDavid van Moolenbroek		*-hp-hpux*)
4316*00b67f09SDavid van Moolenbroek			SO=sl
4317*00b67f09SDavid van Moolenbroek			SO_CFLAGS="+z"
4318*00b67f09SDavid van Moolenbroek			SO_LDFLAGS="-b +vnocompatwarnings"
4319*00b67f09SDavid van Moolenbroek			SO_LD="ld"
4320*00b67f09SDavid van Moolenbroek			;;
4321*00b67f09SDavid van Moolenbroek		*)
4322*00b67f09SDavid van Moolenbroek			SO_CFLAGS="-fPIC"
4323*00b67f09SDavid van Moolenbroek			;;
4324*00b67f09SDavid van Moolenbroek	esac
4325*00b67f09SDavid van Moolenbroek
4326*00b67f09SDavid van Moolenbroek	if test "X$GCC" = "Xyes"; then
4327*00b67f09SDavid van Moolenbroek		SO_CFLAGS="-fPIC"
4328*00b67f09SDavid van Moolenbroek		if test -z "$SO_LD"
4329*00b67f09SDavid van Moolenbroek		then
4330*00b67f09SDavid van Moolenbroek			if test "$use_libtool" = "yes"; then
4331*00b67f09SDavid van Moolenbroek				SO_LDFLAGS="-Xcompiler -shared"
4332*00b67f09SDavid van Moolenbroek				SO_LD="${CC}"
4333*00b67f09SDavid van Moolenbroek			else
4334*00b67f09SDavid van Moolenbroek				SO_LDFLAGS="-shared"
4335*00b67f09SDavid van Moolenbroek				SO_LD="${CC}"
4336*00b67f09SDavid van Moolenbroek			fi
4337*00b67f09SDavid van Moolenbroek		fi
4338*00b67f09SDavid van Moolenbroek	fi
4339*00b67f09SDavid van Moolenbroek
4340*00b67f09SDavid van Moolenbroek	# If we still don't know how to make shared objects, don't make any.
4341*00b67f09SDavid van Moolenbroek	if test -n "$SO_LD"; then
4342*00b67f09SDavid van Moolenbroek		SO_TARGETS="\${SO_TARGETS}"
4343*00b67f09SDavid van Moolenbroek		AC_DEFINE(ISC_DLZ_DLOPEN, 1,
4344*00b67f09SDavid van Moolenbroek			  [Define to allow building of objects for dlopen().])
4345*00b67f09SDavid van Moolenbroek	fi
4346*00b67f09SDavid van Moolenbroekfi
4347*00b67f09SDavid van Moolenbroek
4348*00b67f09SDavid van MoolenbroekAC_SUBST(SO)
4349*00b67f09SDavid van MoolenbroekAC_SUBST(SO_CFLAGS)
4350*00b67f09SDavid van MoolenbroekAC_SUBST(SO_LDFLAGS)
4351*00b67f09SDavid van MoolenbroekAC_SUBST(SO_LD)
4352*00b67f09SDavid van MoolenbroekAC_SUBST(SO_TARGETS)
4353*00b67f09SDavid van Moolenbroek
4354*00b67f09SDavid van Moolenbroeksinclude(contrib/dlz/config.dlz.in)
4355*00b67f09SDavid van MoolenbroekAC_MSG_CHECKING(contributed DLZ drivers)
4356*00b67f09SDavid van Moolenbroek
4357*00b67f09SDavid van Moolenbroekif test -n "$CONTRIB_DLZ"
4358*00b67f09SDavid van Moolenbroekthen
4359*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(yes)
4360*00b67f09SDavid van Moolenbroek	DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
4361*00b67f09SDavid van Moolenbroek	AC_CONFIG_FILES([$DLZ_DRIVER_RULES])
4362*00b67f09SDavid van Moolenbroekelse
4363*00b67f09SDavid van Moolenbroek	AC_MSG_RESULT(no)
4364*00b67f09SDavid van Moolenbroek	DLZ_DRIVER_RULES=/dev/null
4365*00b67f09SDavid van Moolenbroekfi
4366*00b67f09SDavid van Moolenbroek
4367*00b67f09SDavid van MoolenbroekAC_SUBST(CONTRIB_DLZ)
4368*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_INCLUDES)
4369*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_LIBS)
4370*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_SRCS)
4371*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_DRIVER_OBJS)
4372*00b67f09SDavid van MoolenbroekAC_SUBST(DLZ_SYSTEM_TEST)
4373*00b67f09SDavid van MoolenbroekAC_SUBST_FILE(DLZ_DRIVER_RULES)
4374*00b67f09SDavid van Moolenbroek
4375*00b67f09SDavid van Moolenbroekif test "$cross_compiling" = "yes"; then
4376*00b67f09SDavid van Moolenbroek	if test -z "$BUILD_CC"; then
4377*00b67f09SDavid van Moolenbroek		AC_MSG_ERROR([BUILD_CC not set])
4378*00b67f09SDavid van Moolenbroek	fi
4379*00b67f09SDavid van Moolenbroek	BUILD_CFLAGS="$BUILD_CFLAGS"
4380*00b67f09SDavid van Moolenbroek	BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
4381*00b67f09SDavid van Moolenbroek	BUILD_LDFLAGS="$BUILD_LDFLAGS"
4382*00b67f09SDavid van Moolenbroek	BUILD_LIBS="$BUILD_LIBS"
4383*00b67f09SDavid van Moolenbroekelse
4384*00b67f09SDavid van Moolenbroek	BUILD_CC="$CC"
4385*00b67f09SDavid van Moolenbroek	BUILD_CFLAGS="$CFLAGS"
4386*00b67f09SDavid van Moolenbroek	BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
4387*00b67f09SDavid van Moolenbroek	BUILD_LDFLAGS="$LDFLAGS"
4388*00b67f09SDavid van Moolenbroek	BUILD_LIBS="$LIBS"
4389*00b67f09SDavid van Moolenbroekfi
4390*00b67f09SDavid van Moolenbroek
4391*00b67f09SDavid van MoolenbroekNEWFLAGS=""
4392*00b67f09SDavid van Moolenbroekfor e in $BUILD_LDFLAGS ; do
4393*00b67f09SDavid van Moolenbroek    case $e in
4394*00b67f09SDavid van Moolenbroek	-L*)
4395*00b67f09SDavid van Moolenbroek	    case $host_os in
4396*00b67f09SDavid van Moolenbroek		netbsd*)
4397*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4398*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4399*00b67f09SDavid van Moolenbroek		    ;;
4400*00b67f09SDavid van Moolenbroek		freebsd*)
4401*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4402*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4403*00b67f09SDavid van Moolenbroek		    ;;
4404*00b67f09SDavid van Moolenbroek		solaris*)
4405*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-R%'`
4406*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4407*00b67f09SDavid van Moolenbroek		    ;;
4408*00b67f09SDavid van Moolenbroek		*)
4409*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e"
4410*00b67f09SDavid van Moolenbroek		    ;;
4411*00b67f09SDavid van Moolenbroek		esac
4412*00b67f09SDavid van Moolenbroek	    ;;
4413*00b67f09SDavid van Moolenbroek	*)
4414*00b67f09SDavid van Moolenbroek	    NEWFLAGS="$NEWFLAGS $e"
4415*00b67f09SDavid van Moolenbroek	    ;;
4416*00b67f09SDavid van Moolenbroek    esac
4417*00b67f09SDavid van Moolenbroekdone
4418*00b67f09SDavid van MoolenbroekBUILD_LDFLAGS="$NEWFLAGS"
4419*00b67f09SDavid van Moolenbroek
4420*00b67f09SDavid van MoolenbroekNEWFLAGS=""
4421*00b67f09SDavid van Moolenbroekfor e in $DNS_GSSAPI_LIBS ; do
4422*00b67f09SDavid van Moolenbroek    case $e in
4423*00b67f09SDavid van Moolenbroek	-L*)
4424*00b67f09SDavid van Moolenbroek	    case $host_os in
4425*00b67f09SDavid van Moolenbroek		netbsd*)
4426*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4427*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4428*00b67f09SDavid van Moolenbroek		    ;;
4429*00b67f09SDavid van Moolenbroek		freebsd*)
4430*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4431*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4432*00b67f09SDavid van Moolenbroek		    ;;
4433*00b67f09SDavid van Moolenbroek		solaris*)
4434*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-R%'`
4435*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4436*00b67f09SDavid van Moolenbroek		    ;;
4437*00b67f09SDavid van Moolenbroek		*)
4438*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e"
4439*00b67f09SDavid van Moolenbroek		    ;;
4440*00b67f09SDavid van Moolenbroek		esac
4441*00b67f09SDavid van Moolenbroek	    ;;
4442*00b67f09SDavid van Moolenbroek	*)
4443*00b67f09SDavid van Moolenbroek	    NEWFLAGS="$NEWFLAGS $e"
4444*00b67f09SDavid van Moolenbroek	    ;;
4445*00b67f09SDavid van Moolenbroek    esac
4446*00b67f09SDavid van Moolenbroekdone
4447*00b67f09SDavid van MoolenbroekDNS_GSSAPI_LIBS="$NEWFLAGS"
4448*00b67f09SDavid van Moolenbroek
4449*00b67f09SDavid van MoolenbroekNEWFLAGS=""
4450*00b67f09SDavid van Moolenbroekfor e in $ISC_OPENSSL_LIBS ; do
4451*00b67f09SDavid van Moolenbroek    case $e in
4452*00b67f09SDavid van Moolenbroek	-L*)
4453*00b67f09SDavid van Moolenbroek	    case $host_os in
4454*00b67f09SDavid van Moolenbroek		netbsd*)
4455*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4456*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4457*00b67f09SDavid van Moolenbroek		    ;;
4458*00b67f09SDavid van Moolenbroek		freebsd*)
4459*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4460*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4461*00b67f09SDavid van Moolenbroek		    ;;
4462*00b67f09SDavid van Moolenbroek		solaris*)
4463*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-R%'`
4464*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4465*00b67f09SDavid van Moolenbroek		    ;;
4466*00b67f09SDavid van Moolenbroek		*)
4467*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e"
4468*00b67f09SDavid van Moolenbroek		    ;;
4469*00b67f09SDavid van Moolenbroek		esac
4470*00b67f09SDavid van Moolenbroek	    ;;
4471*00b67f09SDavid van Moolenbroek	*)
4472*00b67f09SDavid van Moolenbroek	    NEWFLAGS="$NEWFLAGS $e"
4473*00b67f09SDavid van Moolenbroek	    ;;
4474*00b67f09SDavid van Moolenbroek    esac
4475*00b67f09SDavid van Moolenbroekdone
4476*00b67f09SDavid van MoolenbroekISC_OPENSSL_LIBS="$NEWFLAGS"
4477*00b67f09SDavid van Moolenbroek
4478*00b67f09SDavid van MoolenbroekNEWFLAGS=""
4479*00b67f09SDavid van Moolenbroekfor e in $DNS_CRYPTO_LIBS ; do
4480*00b67f09SDavid van Moolenbroek    case $e in
4481*00b67f09SDavid van Moolenbroek	-L*)
4482*00b67f09SDavid van Moolenbroek	    case $host_os in
4483*00b67f09SDavid van Moolenbroek		netbsd*)
4484*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4485*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4486*00b67f09SDavid van Moolenbroek		    ;;
4487*00b67f09SDavid van Moolenbroek		freebsd*)
4488*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
4489*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4490*00b67f09SDavid van Moolenbroek		    ;;
4491*00b67f09SDavid van Moolenbroek		solaris*)
4492*00b67f09SDavid van Moolenbroek		    ee=`echo $e | sed -e 's%^-L%-R%'`
4493*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e $ee"
4494*00b67f09SDavid van Moolenbroek		    ;;
4495*00b67f09SDavid van Moolenbroek		*)
4496*00b67f09SDavid van Moolenbroek		    NEWFLAGS="$NEWFLAGS $e"
4497*00b67f09SDavid van Moolenbroek		    ;;
4498*00b67f09SDavid van Moolenbroek		esac
4499*00b67f09SDavid van Moolenbroek	    ;;
4500*00b67f09SDavid van Moolenbroek	*)
4501*00b67f09SDavid van Moolenbroek	    NEWFLAGS="$NEWFLAGS $e"
4502*00b67f09SDavid van Moolenbroek	    ;;
4503*00b67f09SDavid van Moolenbroek    esac
4504*00b67f09SDavid van Moolenbroekdone
4505*00b67f09SDavid van MoolenbroekDNS_CRYPTO_LIBS="$NEWFLAGS"
4506*00b67f09SDavid van Moolenbroek
4507*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_CC)
4508*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_CFLAGS)
4509*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_CPPFLAGS)
4510*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_LDFLAGS)
4511*00b67f09SDavid van MoolenbroekAC_SUBST(BUILD_LIBS)
4512*00b67f09SDavid van Moolenbroek
4513*00b67f09SDavid van Moolenbroek#
4514*00b67f09SDavid van Moolenbroek# Commands to run at the end of config.status.
4515*00b67f09SDavid van Moolenbroek# Don't just put these into configure, it won't work right if somebody
4516*00b67f09SDavid van Moolenbroek# runs config.status directly (which autoconf allows).
4517*00b67f09SDavid van Moolenbroek#
4518*00b67f09SDavid van Moolenbroek
4519*00b67f09SDavid van MoolenbroekAC_CONFIG_COMMANDS(
4520*00b67f09SDavid van Moolenbroek	[chmod],
4521*00b67f09SDavid van Moolenbroek	[chmod a+x isc-config.sh doc/doxygen/doxygen-input-filter])
4522*00b67f09SDavid van Moolenbroek
4523*00b67f09SDavid van Moolenbroek#
4524*00b67f09SDavid van Moolenbroek# Files to configure.  These are listed here because we used to
4525*00b67f09SDavid van Moolenbroek# specify them as arguments to AC_OUTPUT.  It's (now) ok to move these
4526*00b67f09SDavid van Moolenbroek# elsewhere if there's a good reason for doing so.
4527*00b67f09SDavid van Moolenbroek#
4528*00b67f09SDavid van Moolenbroek
4529*00b67f09SDavid van MoolenbroekAC_CONFIG_FILES([
4530*00b67f09SDavid van Moolenbroek  make/Makefile
4531*00b67f09SDavid van Moolenbroek  make/mkdep
4532*00b67f09SDavid van Moolenbroek	Makefile
4533*00b67f09SDavid van Moolenbroek	bin/Makefile
4534*00b67f09SDavid van Moolenbroek	bin/check/Makefile
4535*00b67f09SDavid van Moolenbroek	bin/confgen/Makefile
4536*00b67f09SDavid van Moolenbroek	bin/confgen/unix/Makefile
4537*00b67f09SDavid van Moolenbroek	bin/delv/Makefile
4538*00b67f09SDavid van Moolenbroek	bin/dig/Makefile
4539*00b67f09SDavid van Moolenbroek	bin/dnssec/Makefile
4540*00b67f09SDavid van Moolenbroek	bin/named/Makefile
4541*00b67f09SDavid van Moolenbroek	bin/named/unix/Makefile
4542*00b67f09SDavid van Moolenbroek	bin/nsupdate/Makefile
4543*00b67f09SDavid van Moolenbroek	bin/pkcs11/Makefile
4544*00b67f09SDavid van Moolenbroek	bin/python/Makefile
4545*00b67f09SDavid van Moolenbroek	bin/python/dnssec-checkds.py
4546*00b67f09SDavid van Moolenbroek	bin/python/dnssec-coverage.py
4547*00b67f09SDavid van Moolenbroek	bin/rndc/Makefile
4548*00b67f09SDavid van Moolenbroek	bin/tests/Makefile
4549*00b67f09SDavid van Moolenbroek	bin/tests/atomic/Makefile
4550*00b67f09SDavid van Moolenbroek	bin/tests/db/Makefile
4551*00b67f09SDavid van Moolenbroek	bin/tests/dst/Makefile
4552*00b67f09SDavid van Moolenbroek	bin/tests/dst/Kdh.+002+18602.key
4553*00b67f09SDavid van Moolenbroek	bin/tests/dst/Kdh.+002+18602.private
4554*00b67f09SDavid van Moolenbroek	bin/tests/dst/Kdh.+002+48957.key
4555*00b67f09SDavid van Moolenbroek	bin/tests/dst/Kdh.+002+48957.private
4556*00b67f09SDavid van Moolenbroek	bin/tests/dst/Ktest.+001+00002.key
4557*00b67f09SDavid van Moolenbroek	bin/tests/dst/Ktest.+001+54622.key
4558*00b67f09SDavid van Moolenbroek	bin/tests/dst/Ktest.+001+54622.private
4559*00b67f09SDavid van Moolenbroek	bin/tests/dst/Ktest.+003+23616.key
4560*00b67f09SDavid van Moolenbroek	bin/tests/dst/Ktest.+003+23616.private
4561*00b67f09SDavid van Moolenbroek	bin/tests/dst/Ktest.+003+49667.key
4562*00b67f09SDavid van Moolenbroek	bin/tests/dst/dst_2_data
4563*00b67f09SDavid van Moolenbroek	bin/tests/dst/t2_data_1
4564*00b67f09SDavid van Moolenbroek	bin/tests/dst/t2_data_2
4565*00b67f09SDavid van Moolenbroek	bin/tests/dst/t2_dsasig
4566*00b67f09SDavid van Moolenbroek	bin/tests/dst/t2_rsasig
4567*00b67f09SDavid van Moolenbroek	bin/tests/hashes/Makefile
4568*00b67f09SDavid van Moolenbroek	bin/tests/headerdep_test.sh
4569*00b67f09SDavid van Moolenbroek	bin/tests/master/Makefile
4570*00b67f09SDavid van Moolenbroek	bin/tests/mem/Makefile
4571*00b67f09SDavid van Moolenbroek	bin/tests/names/Makefile
4572*00b67f09SDavid van Moolenbroek	bin/tests/net/Makefile
4573*00b67f09SDavid van Moolenbroek	bin/tests/pkcs11/Makefile
4574*00b67f09SDavid van Moolenbroek	bin/tests/pkcs11/benchmarks/Makefile
4575*00b67f09SDavid van Moolenbroek	bin/tests/rbt/Makefile
4576*00b67f09SDavid van Moolenbroek	bin/tests/resolver/Makefile
4577*00b67f09SDavid van Moolenbroek	bin/tests/sockaddr/Makefile
4578*00b67f09SDavid van Moolenbroek	bin/tests/system/Makefile
4579*00b67f09SDavid van Moolenbroek	bin/tests/system/conf.sh
4580*00b67f09SDavid van Moolenbroek	bin/tests/system/builtin/Makefile
4581*00b67f09SDavid van Moolenbroek	bin/tests/system/dlz/prereq.sh
4582*00b67f09SDavid van Moolenbroek	bin/tests/system/dlzexternal/Makefile
4583*00b67f09SDavid van Moolenbroek	bin/tests/system/dlzexternal/ns1/named.conf
4584*00b67f09SDavid van Moolenbroek	bin/tests/system/dlzredir/prereq.sh
4585*00b67f09SDavid van Moolenbroek	bin/tests/system/filter-aaaa/Makefile
4586*00b67f09SDavid van Moolenbroek	bin/tests/system/geoip/Makefile
4587*00b67f09SDavid van Moolenbroek	bin/tests/system/inline/checkdsa.sh
4588*00b67f09SDavid van Moolenbroek	bin/tests/system/lwresd/Makefile
4589*00b67f09SDavid van Moolenbroek	bin/tests/system/sit/prereq.sh
4590*00b67f09SDavid van Moolenbroek	bin/tests/system/rpz/Makefile
4591*00b67f09SDavid van Moolenbroek	bin/tests/system/rsabigexponent/Makefile
4592*00b67f09SDavid van Moolenbroek	bin/tests/system/tkey/Makefile
4593*00b67f09SDavid van Moolenbroek	bin/tests/system/tsiggss/Makefile
4594*00b67f09SDavid van Moolenbroek	bin/tests/tasks/Makefile
4595*00b67f09SDavid van Moolenbroek	bin/tests/timers/Makefile
4596*00b67f09SDavid van Moolenbroek	bin/tests/virtual-time/Makefile
4597*00b67f09SDavid van Moolenbroek	bin/tests/virtual-time/conf.sh
4598*00b67f09SDavid van Moolenbroek	bin/tools/Makefile
4599*00b67f09SDavid van Moolenbroek	contrib/scripts/check-secure-delegation.pl
4600*00b67f09SDavid van Moolenbroek	contrib/scripts/zone-edit.sh
4601*00b67f09SDavid van Moolenbroek	doc/Makefile
4602*00b67f09SDavid van Moolenbroek	doc/arm/Makefile
4603*00b67f09SDavid van Moolenbroek	doc/doxygen/Doxyfile
4604*00b67f09SDavid van Moolenbroek	doc/doxygen/Makefile
4605*00b67f09SDavid van Moolenbroek	doc/doxygen/doxygen-input-filter
4606*00b67f09SDavid van Moolenbroek	doc/misc/Makefile
4607*00b67f09SDavid van Moolenbroek	doc/xsl/Makefile
4608*00b67f09SDavid van Moolenbroek	doc/xsl/isc-docbook-chunk.xsl
4609*00b67f09SDavid van Moolenbroek	doc/xsl/isc-docbook-html.xsl
4610*00b67f09SDavid van Moolenbroek	doc/xsl/isc-docbook-latex.xsl
4611*00b67f09SDavid van Moolenbroek	doc/xsl/isc-manpage.xsl
4612*00b67f09SDavid van Moolenbroek	doc/xsl/isc-notes-html.xsl
4613*00b67f09SDavid van Moolenbroek	doc/xsl/isc-notes-latex.xsl
4614*00b67f09SDavid van Moolenbroek	isc-config.sh
4615*00b67f09SDavid van Moolenbroek	lib/Makefile
4616*00b67f09SDavid van Moolenbroek	lib/bind9/Makefile
4617*00b67f09SDavid van Moolenbroek	lib/bind9/include/Makefile
4618*00b67f09SDavid van Moolenbroek	lib/bind9/include/bind9/Makefile
4619*00b67f09SDavid van Moolenbroek	lib/dns/Makefile
4620*00b67f09SDavid van Moolenbroek	lib/dns/include/Makefile
4621*00b67f09SDavid van Moolenbroek	lib/dns/include/dns/Makefile
4622*00b67f09SDavid van Moolenbroek	lib/dns/include/dst/Makefile
4623*00b67f09SDavid van Moolenbroek	lib/dns/tests/Makefile
4624*00b67f09SDavid van Moolenbroek	lib/irs/Makefile
4625*00b67f09SDavid van Moolenbroek	lib/irs/include/Makefile
4626*00b67f09SDavid van Moolenbroek	lib/irs/include/irs/Makefile
4627*00b67f09SDavid van Moolenbroek	lib/irs/include/irs/netdb.h
4628*00b67f09SDavid van Moolenbroek	lib/irs/include/irs/platform.h
4629*00b67f09SDavid van Moolenbroek	lib/isc/$arch/Makefile
4630*00b67f09SDavid van Moolenbroek	lib/isc/$arch/include/Makefile
4631*00b67f09SDavid van Moolenbroek	lib/isc/$arch/include/isc/Makefile
4632*00b67f09SDavid van Moolenbroek	lib/isc/$thread_dir/Makefile
4633*00b67f09SDavid van Moolenbroek	lib/isc/$thread_dir/include/Makefile
4634*00b67f09SDavid van Moolenbroek	lib/isc/$thread_dir/include/isc/Makefile
4635*00b67f09SDavid van Moolenbroek	lib/isc/Makefile
4636*00b67f09SDavid van Moolenbroek	lib/isc/include/Makefile
4637*00b67f09SDavid van Moolenbroek	lib/isc/include/isc/Makefile
4638*00b67f09SDavid van Moolenbroek	lib/isc/include/isc/platform.h
4639*00b67f09SDavid van Moolenbroek	lib/isc/include/pk11/Makefile
4640*00b67f09SDavid van Moolenbroek	lib/isc/include/pkcs11/Makefile
4641*00b67f09SDavid van Moolenbroek	lib/isc/tests/Makefile
4642*00b67f09SDavid van Moolenbroek	lib/isc/nls/Makefile
4643*00b67f09SDavid van Moolenbroek	lib/isc/unix/Makefile
4644*00b67f09SDavid van Moolenbroek	lib/isc/unix/include/Makefile
4645*00b67f09SDavid van Moolenbroek	lib/isc/unix/include/isc/Makefile
4646*00b67f09SDavid van Moolenbroek	lib/isc/unix/include/pkcs11/Makefile
4647*00b67f09SDavid van Moolenbroek	lib/isccc/Makefile
4648*00b67f09SDavid van Moolenbroek	lib/isccc/include/Makefile
4649*00b67f09SDavid van Moolenbroek	lib/isccc/include/isccc/Makefile
4650*00b67f09SDavid van Moolenbroek	lib/isccfg/Makefile
4651*00b67f09SDavid van Moolenbroek	lib/isccfg/include/Makefile
4652*00b67f09SDavid van Moolenbroek	lib/isccfg/include/isccfg/Makefile
4653*00b67f09SDavid van Moolenbroek	lib/lwres/Makefile
4654*00b67f09SDavid van Moolenbroek	lib/lwres/include/Makefile
4655*00b67f09SDavid van Moolenbroek	lib/lwres/include/lwres/Makefile
4656*00b67f09SDavid van Moolenbroek	lib/lwres/include/lwres/netdb.h
4657*00b67f09SDavid van Moolenbroek	lib/lwres/include/lwres/platform.h
4658*00b67f09SDavid van Moolenbroek	lib/lwres/man/Makefile
4659*00b67f09SDavid van Moolenbroek	lib/lwres/tests/Makefile
4660*00b67f09SDavid van Moolenbroek	lib/lwres/unix/Makefile
4661*00b67f09SDavid van Moolenbroek	lib/lwres/unix/include/Makefile
4662*00b67f09SDavid van Moolenbroek	lib/lwres/unix/include/lwres/Makefile
4663*00b67f09SDavid van Moolenbroek	lib/tests/Makefile
4664*00b67f09SDavid van Moolenbroek	lib/tests/include/Makefile
4665*00b67f09SDavid van Moolenbroek	lib/tests/include/tests/Makefile
4666*00b67f09SDavid van Moolenbroek	lib/samples/Makefile
4667*00b67f09SDavid van Moolenbroek	lib/samples/Makefile-postinstall
4668*00b67f09SDavid van Moolenbroek	unit/Makefile
4669*00b67f09SDavid van Moolenbroek	unit/unittest.sh
4670*00b67f09SDavid van Moolenbroek])
4671*00b67f09SDavid van Moolenbroek
4672*00b67f09SDavid van Moolenbroek#
4673*00b67f09SDavid van Moolenbroek# Do it
4674*00b67f09SDavid van Moolenbroek#
4675*00b67f09SDavid van Moolenbroek
4676*00b67f09SDavid van MoolenbroekAC_OUTPUT
4677*00b67f09SDavid van Moolenbroek
4678*00b67f09SDavid van Moolenbroek#
4679*00b67f09SDavid van Moolenbroek# Now that the Makefiles exist we can ensure that everything is rebuilt.
4680*00b67f09SDavid van Moolenbroek#
4681*00b67f09SDavid van MoolenbroekAC_ARG_WITH(make-clean,
4682*00b67f09SDavid van Moolenbroek[  --with-make-clean       run "make clean" at end of configure [[yes|no]]],
4683*00b67f09SDavid van Moolenbroek    make_clean="$withval", make_clean="yes")
4684*00b67f09SDavid van Moolenbroekcase "$make_clean" in
4685*00b67f09SDavid van Moolenbroekyes)
4686*00b67f09SDavid van Moolenbroek	make clean
4687*00b67f09SDavid van Moolenbroek	;;
4688*00b67f09SDavid van Moolenbroekesac
4689*00b67f09SDavid van Moolenbroek
4690*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(full-report,
4691*00b67f09SDavid van Moolenbroek	[  --enable-full-report	  report values of all configure options])
4692*00b67f09SDavid van Moolenbroek
4693*00b67f09SDavid van Moolenbroekecho "========================================================================"
4694*00b67f09SDavid van Moolenbroekecho "Configuration summary:"
4695*00b67f09SDavid van Moolenbroekecho "------------------------------------------------------------------------"
4696*00b67f09SDavid van Moolenbroekecho "Optional features enabled:"
4697*00b67f09SDavid van Moolenbroekif $use_threads; then
4698*00b67f09SDavid van Moolenbroek    echo "    Multiprocessing support (--enable-threads)"
4699*00b67f09SDavid van Moolenbroek    if test "$enable_full_report" = "yes" -o "$locktype" = "standard"; then
4700*00b67f09SDavid van Moolenbroek        echo "        Mutex lock type: $locktype"
4701*00b67f09SDavid van Moolenbroek    fi
4702*00b67f09SDavid van Moolenbroekfi
4703*00b67f09SDavid van Moolenbroektest "$use_tuning" = "large" && echo "    Large-system tuning (--with-tuning)"
4704*00b67f09SDavid van Moolenbroektest "$use_geoip" = "no" || echo "    GeoIP access control (--with-geoip)"
4705*00b67f09SDavid van Moolenbroektest "$use_gssapi" = "no" || echo "    GSS-API (--with-gssapi)"
4706*00b67f09SDavid van Moolenbroekif test "$enable_sit" != "no"; then
4707*00b67f09SDavid van Moolenbroek    echo "    Source Identity Token support (--enable-sit)"
4708*00b67f09SDavid van Moolenbroek    if test "$enable_full_report" = "yes" -o "$with_sit_alg" != "aes"; then
4709*00b67f09SDavid van Moolenbroek	echo "        Algorithm: $with_sit_alg"
4710*00b67f09SDavid van Moolenbroek    fi
4711*00b67f09SDavid van Moolenbroekfi
4712*00b67f09SDavid van Moolenbroek
4713*00b67f09SDavid van Moolenbroek# these lines are only printed if run with --enable-full-report
4714*00b67f09SDavid van Moolenbroekif test "$enable_full_report" = "yes"; then
4715*00b67f09SDavid van Moolenbroek    test "$enable_ipv6" = "no" -o "$found_ipv6" = "no" || \
4716*00b67f09SDavid van Moolenbroek	echo "    IPv6 support (--enable-ipv6)"
4717*00b67f09SDavid van Moolenbroek    test "X$CRYPTO" = "X" -o "$want_native_pkcs11" = "yes" || \
4718*00b67f09SDavid van Moolenbroek	    echo "    OpenSSL cryptography/DNSSEC (--with-openssl)"
4719*00b67f09SDavid van Moolenbroek    test "X$PYTHON" = "X" || echo "    Python tools (--with-python)"
4720*00b67f09SDavid van Moolenbroek    test "X$libxml2_libs" = "X" || echo "    XML statistics (--with-libxml2)"
4721*00b67f09SDavid van Moolenbroek    test "X$have_libjson" = "X" || echo "    JSON statistics (--with-libjson)"
4722*00b67f09SDavid van Moolenbroekfi
4723*00b67f09SDavid van Moolenbroek
4724*00b67f09SDavid van Moolenbroekif test "$use_pkcs11" != "no"; then
4725*00b67f09SDavid van Moolenbroek    if test "$want_native_pkcs11" = "yes"; then
4726*00b67f09SDavid van Moolenbroek	echo "    Native PKCS#11/Cryptoki support (--enable-native-pkcs11)"
4727*00b67f09SDavid van Moolenbroek    else
4728*00b67f09SDavid van Moolenbroek	echo "    PKCS#11/Cryptoki support using OpenSSL (--with-pkcs11)"
4729*00b67f09SDavid van Moolenbroek    fi
4730*00b67f09SDavid van Moolenbroek    echo "        Provider library: $PKCS11_PROVIDER"
4731*00b67f09SDavid van Moolenbroekfi
4732*00b67f09SDavid van Moolenbroekif test "$OPENSSL_GOST" = "yes" -o "$PKCS11_GOST" = "yes"; then
4733*00b67f09SDavid van Moolenbroek    echo "    GOST algorithm support (encoding: $gosttype) (--with-gost)"
4734*00b67f09SDavid van Moolenbroekfi
4735*00b67f09SDavid van Moolenbroektest "$OPENSSL_ECDSA" = "yes" -o "$PKCS11_ECDSA" = "yes" && \
4736*00b67f09SDavid van Moolenbroek    echo "    ECDSA algorithm support (--with-ecdsa)"
4737*00b67f09SDavid van Moolenbroektest "$enable_fixed" = "yes" && \
4738*00b67f09SDavid van Moolenbroek    echo "    Allow 'fixed' rrset-order (--enable-fixed-rrset)"
4739*00b67f09SDavid van Moolenbroektest "$enable_filter" = "yes" && \
4740*00b67f09SDavid van Moolenbroek    echo "    AAAA filtering (--enable-filter-aaaa)"
4741*00b67f09SDavid van Moolenbroektest "$enable_seccomp" = yes && \
4742*00b67f09SDavid van Moolenbroek    echo "    Use libseccomp system call filtering (--enable-seccomp)"
4743*00b67f09SDavid van Moolenbroektest "$want_backtrace" = "yes" && \
4744*00b67f09SDavid van Moolenbroek    echo "    Print backtrace on crash (--enable-backtrace)"
4745*00b67f09SDavid van Moolenbroektest "$want_symtable" = "minimal" && \
4746*00b67f09SDavid van Moolenbroek    echo "    Use symbol table for backtrace, named only (--enable-symtable)"
4747*00b67f09SDavid van Moolenbroektest "$want_symtable" = "yes" -o "$want_symtable" = "all" && \
4748*00b67f09SDavid van Moolenbroek    echo "    Use symbol table for backtrace, all binaries (--enable-symtable=all)"
4749*00b67f09SDavid van Moolenbroektest "$use_libtool" = "no" || echo "    Use GNU libtool (--with-libtool)"
4750*00b67f09SDavid van Moolenbroektest "$atf" = "no" || echo "    Automated Testing Framework (--with-atf)"
4751*00b67f09SDavid van Moolenbroek
4752*00b67f09SDavid van Moolenbroekecho "    Dynamically loadable zone (DLZ) drivers:"
4753*00b67f09SDavid van Moolenbroektest "$use_dlz_bdb" = "no" || \
4754*00b67f09SDavid van Moolenbroek    echo "        Berkeley DB (--with-dlz-bdb)"
4755*00b67f09SDavid van Moolenbroektest "$use_dlz_ldap" = "no" || \
4756*00b67f09SDavid van Moolenbroek    echo "        LDAP (--with-dlz-ldap)"
4757*00b67f09SDavid van Moolenbroektest "$use_dlz_mysql" = "no" || \
4758*00b67f09SDavid van Moolenbroek    echo "        MySQL (--with-dlz-mysql)"
4759*00b67f09SDavid van Moolenbroektest "$use_dlz_odbc" = "no" || \
4760*00b67f09SDavid van Moolenbroek    echo "        ODBC (--with-dlz-odbc)"
4761*00b67f09SDavid van Moolenbroektest "$use_dlz_postgres" = "no" || \
4762*00b67f09SDavid van Moolenbroek    echo "        Postgres (--with-dlz-postgres)"
4763*00b67f09SDavid van Moolenbroektest "$use_dlz_filesystem" = "no" || \
4764*00b67f09SDavid van Moolenbroek    echo "        Filesystem (--with-dlz-filesystem)"
4765*00b67f09SDavid van Moolenbroektest "$use_dlz_stub" = "no" || \
4766*00b67f09SDavid van Moolenbroek    echo "        Stub (--with-dlz-stub)"
4767*00b67f09SDavid van Moolenbroektest "$use_dlz_bdb $use_dlz_ldap $use_dlz_mysql $use_dlz_odbc $use_dlz_postgres $use_dlz_filesystem $use_dlz_stub" = "no no no no no no no" && echo "        None"
4768*00b67f09SDavid van Moolenbroekecho
4769*00b67f09SDavid van Moolenbroek
4770*00b67f09SDavid van Moolenbroekecho "Features disabled or unavailable on this platform:"
4771*00b67f09SDavid van Moolenbroek$use_threads || echo "    Multiprocessing support (--enable-threads)"
4772*00b67f09SDavid van Moolenbroektest "$enable_ipv6" = "no" -o "$found_ipv6" = "no" && \
4773*00b67f09SDavid van Moolenbroek	echo "    IPv6 support (--enable-ipv6)"
4774*00b67f09SDavid van Moolenbroektest "$use_tuning" = "large" || echo "    Large-system tuning (--with-tuning)"
4775*00b67f09SDavid van Moolenbroek
4776*00b67f09SDavid van Moolenbroektest "$use_geoip" = "no" && echo "    GeoIP access control (--with-geoip)"
4777*00b67f09SDavid van Moolenbroektest "$use_gssapi" = "no" && echo "    GSS-API (--with-gssapi)"
4778*00b67f09SDavid van Moolenbroektest "$enable_sit" = "no" && echo "    Source Identity Token support (--enable-sit)"
4779*00b67f09SDavid van Moolenbroek
4780*00b67f09SDavid van Moolenbroektest "$enable_fixed" = "yes" || \
4781*00b67f09SDavid van Moolenbroek    echo "    Allow 'fixed' rrset-order (--enable-fixed-rrset)"
4782*00b67f09SDavid van Moolenbroek
4783*00b67f09SDavid van Moolenbroekif test "X$CRYPTO" = "X" -o "$want_native_pkcs11" = "yes"
4784*00b67f09SDavid van Moolenbroekthen
4785*00b67f09SDavid van Moolenbroek    echo "    OpenSSL cryptography/DNSSEC (--with-openssl)"
4786*00b67f09SDavid van Moolenbroekelif test "$use_pkcs11" = "no"; then
4787*00b67f09SDavid van Moolenbroek    echo "    PKCS#11/Cryptoki support (--with-pkcs11)"
4788*00b67f09SDavid van Moolenbroekfi
4789*00b67f09SDavid van Moolenbroektest "$want_native_pkcs11" = "yes" ||
4790*00b67f09SDavid van Moolenbroek    echo "    Native PKCS#11/Cryptoki support (--enable-native-pkcs11)"
4791*00b67f09SDavid van Moolenbroektest "X$CRYPTO" = "X" -o "$OPENSSL_GOST" = "yes" -o "$PKCS11_GOST" = "yes" || \
4792*00b67f09SDavid van Moolenbroek    echo "    GOST algorithm support (--with-gost)"
4793*00b67f09SDavid van Moolenbroektest "X$CRYPTO" = "X" -o "$OPENSSL_ECDSA" = "yes" -o "$PKCS11_ECDSA" = "yes" || \
4794*00b67f09SDavid van Moolenbroek    echo "    ECDSA algorithm support (--with-ecdsa)"
4795*00b67f09SDavid van Moolenbroek
4796*00b67f09SDavid van Moolenbroektest "$enable_seccomp" = yes || \
4797*00b67f09SDavid van Moolenbroek    echo "    Use libseccomp system call filtering (--enable-seccomp)"
4798*00b67f09SDavid van Moolenbroektest "$want_backtrace" = "yes" || \
4799*00b67f09SDavid van Moolenbroek    echo "    Print backtrace on crash (--enable-backtrace)"
4800*00b67f09SDavid van Moolenbroektest "$use_libtool" = "yes" || echo "    Use GNU libtool (--with-libtool)"
4801*00b67f09SDavid van Moolenbroektest "$atf" = "no" && echo "    Automated Testing Framework (--with-atf)"
4802*00b67f09SDavid van Moolenbroek
4803*00b67f09SDavid van Moolenbroektest "X$PYTHON" = "X" && echo "    Python tools (--with-python)"
4804*00b67f09SDavid van Moolenbroektest "X$libxml2_libs" = "X" && echo "    XML statistics (--with-libxml2)"
4805*00b67f09SDavid van Moolenbroektest "X$have_libjson" = "X" && echo "    JSON statistics (--with-libjson)"
4806*00b67f09SDavid van Moolenbroek
4807*00b67f09SDavid van Moolenbroekif test "X$ac_unrecognized_opts" != "X"; then
4808*00b67f09SDavid van Moolenbroek    echo
4809*00b67f09SDavid van Moolenbroek    echo "Unrecognized options:"
4810*00b67f09SDavid van Moolenbroek    echo "    $ac_unrecognized_opts"
4811*00b67f09SDavid van Moolenbroekfi
4812*00b67f09SDavid van Moolenbroekecho "========================================================================"
4813*00b67f09SDavid van Moolenbroek
4814*00b67f09SDavid van Moolenbroekif test "X$CRYPTO" = "X"; then
4815*00b67f09SDavid van Moolenbroekcat << \EOF
4816*00b67f09SDavid van MoolenbroekBIND 9 is being built without cryptography support. This means it will
4817*00b67f09SDavid van Moolenbroeknot have DNSSEC support. Use --with-openssl, or --with-pkcs11 and
4818*00b67f09SDavid van Moolenbroek--enable-native-pkcs11 to enable cryptography.
4819*00b67f09SDavid van MoolenbroekEOF
4820*00b67f09SDavid van Moolenbroekfi
4821*00b67f09SDavid van Moolenbroek
4822*00b67f09SDavid van Moolenbroekif test "X$OPENSSL_WARNING" != "X"; then
4823*00b67f09SDavid van Moolenbroekcat << \EOF
4824*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4825*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4826*00b67f09SDavid van MoolenbroekWARNING                                                                 WARNING
4827*00b67f09SDavid van MoolenbroekWARNING         Your OpenSSL crypto library may be vulnerable to        WARNING
4828*00b67f09SDavid van MoolenbroekWARNING         one or more of the the following known security         WARNING
4829*00b67f09SDavid van MoolenbroekWARNING         flaws:                                                  WARNING
4830*00b67f09SDavid van MoolenbroekWARNING                                                                 WARNING
4831*00b67f09SDavid van MoolenbroekWARNING         CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and         WARNING
4832*00b67f09SDavid van MoolenbroekWARNING         CVE-2006-2940.                                          WARNING
4833*00b67f09SDavid van MoolenbroekWARNING                                                                 WARNING
4834*00b67f09SDavid van MoolenbroekWARNING         It is recommended that you upgrade to OpenSSL           WARNING
4835*00b67f09SDavid van MoolenbroekWARNING         version 0.9.8d/0.9.7l (or greater).                     WARNING
4836*00b67f09SDavid van MoolenbroekWARNING                                                                 WARNING
4837*00b67f09SDavid van MoolenbroekWARNING         You can disable this warning by specifying:             WARNING
4838*00b67f09SDavid van MoolenbroekWARNING                                                                 WARNING
4839*00b67f09SDavid van MoolenbroekWARNING               --disable-openssl-version-check          	        WARNING
4840*00b67f09SDavid van MoolenbroekWARNING                                                                 WARNING
4841*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4842*00b67f09SDavid van MoolenbroekWARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4843*00b67f09SDavid van MoolenbroekEOF
4844*00b67f09SDavid van Moolenbroekfi
4845*00b67f09SDavid van Moolenbroek
4846*00b67f09SDavid van Moolenbroek# Tell Emacs to edit this file in shell mode.
4847*00b67f09SDavid van Moolenbroek# Local Variables:
4848*00b67f09SDavid van Moolenbroek# mode: sh
4849*00b67f09SDavid van Moolenbroek# End:
4850