configure.in 38.1 KB
Newer Older
Brian Wellington's avatar
Brian Wellington committed
1
# Copyright (C) 1998-2001  Internet Software Consortium.
2
#
David Lawrence's avatar
David Lawrence committed
3
4
5
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
6
#
7
8
9
10
11
12
13
14
# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
David Lawrence's avatar
David Lawrence committed
15

16
17
18
19
dnl
AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
esyscmd([sed "s/^/# /" COPYRIGHT])dnl
AC_DIVERT_POP()dnl
David Lawrence's avatar
David Lawrence committed
20

21
AC_REVISION($Revision: 1.236 $)
22

23
AC_INIT(lib/dns/name.c)
Bob Halley's avatar
Bob Halley committed
24
AC_PREREQ(2.13)
Bob Halley's avatar
Bob Halley committed
25
26
27
28
29

AC_CONFIG_HEADER(config.h)

AC_CANONICAL_HOST

30
31
32
33
34
35
36
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AC_PROG_INSTALL

AC_SUBST(STD_CINCLUDES)
AC_SUBST(STD_CDEFINES)
AC_SUBST(STD_CWARNINGS)
37
AC_SUBST(CCOPT)
38

David Lawrence's avatar
David Lawrence committed
39
40
41
42
43
AC_PATH_PROG(AR, ar)
ARFLAGS="cruv"
AC_SUBST(AR)
AC_SUBST(ARFLAGS)

44
45
46
47
48
# The POSIX ln(1) program.  Non-POSIX systems may substitute
# "copy" or something.
LN=ln
AC_SUBST(LN)

49
50
51
52
53
54
55
56
57
58
case "$AR" in
	"")
		AC_MSG_ERROR([
ar program not found.  Please fix your PATH to include the directory in
which ar resides, or set AR in the environment with the full path to ar.
])

		;;
esac

Bob Halley's avatar
Bob Halley committed
59
60
61
#
# Etags.
#
62
AC_PATH_PROGS(ETAGS, etags emacs-etags)
Andreas Gustafsson's avatar
Andreas Gustafsson committed
63

Bob Halley's avatar
Bob Halley committed
64
65
66
67
68
69
70
71
72
73
74
75
76
#
# Some systems, e.g. RH7, have the Exuberant Ctags etags instead of
# GNU emacs etags, and it requires the -L flag.
#
if test "X$ETAGS" != "X"; then
	AC_MSG_CHECKING(for Exuberant Ctags etags)
	if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
		AC_MSG_RESULT(yes)
		ETAGS="$ETAGS -L"
	else
		AC_MSG_RESULT(no)
	fi
fi
77
78
AC_SUBST(ETAGS)

79
80
81
82
83
84
#
# Perl is optional; it is used only by some of the system test scripts.
#
AC_PATH_PROGS(PERL, perl5 perl)
AC_SUBST(PERL)

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#
# Special processing of paths depending on whether --prefix,
# --sysconfdir or --localstatedir arguments were given.  What's
# desired is some compatability with the way previous versions
# of BIND built; they defaulted to /usr/local for most parts of
# the installation, but named.boot/named.conf was in /etc
# and named.pid was in /var/run.
#
# So ... if none of --prefix, --sysconfdir or --localstatedir are
# specified, set things up that way.  If --prefix is given, use
# it for sysconfdir and localstatedir the way configure normally
# would.  To change the prefix for everything but leave named.conf
# in /etc or named.pid in /var/run, then do this the usual configure way:
# ./configure --prefix=/somewhere --sysconfdir=/etc
# ./configure --prefix=/somewhere --localstatedir=/var
#
# To put named.conf and named.pid in /usr/local with everything else,
# set the prefix explicitly to /usr/local even though that's the default:
# ./configure --prefix=/usr/local
#
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
case "$prefix" in
        NONE)
                case "$sysconfdir" in
                        '${prefix}/etc')
                                sysconfdir=/etc
                                ;;
                esac
                case "$localstatedir" in
                        '${prefix}/var')
                                localstatedir=/var
                                ;;
                esac
                ;;
esac

120
121
122
123
124
125
126
127
#
# Make sure INSTALL uses an absolute path, else it will be wrong in all
# Makefiles, since they use make/rules.in and INSTALL will be adjusted by
# configure based on the location of the file where it is substituted.
# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
# subdirectory of install-sh, This relative path will be wrong for all
# directories more than one level down from install-sh.
#
128
129
130
131
case "$INSTALL" in
	/*)
                ;;
        *)
132
133
134
                #
                # Not all systems have dirname.
                #
135
136
137
138
139
140
141
142
143
144
145
                changequote({, })
                ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
                changequote([, ])

                ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
                test "$ac_dir" = "$ac_prog" && ac_dir=.
                test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
                INSTALL="$ac_dir/$ac_prog"
                ;;
esac

146
147
148
149
150
151
152
153
#
# On these hosts, we really want to use cc, not gcc, even if it is
# found.  The gcc that these systems have will not correctly handle
# pthreads.
#
# However, if the user sets $CC to be something, let that override
# our change.
#
154
155
156
157
158
if test "X$CC" = "X" ; then
	case "$host" in
		*-dec-osf*)
			CC="cc"
			;;
159
		*-solaris*)
160
161
162
163
164
165
                        # Use Sun's cc if it is available, but watch
                        # out for /usr/ucb/cc; it will never be the right
                        # compiler to use.
                        #
                        # If setting CC here fails, the AC_PROG_CC done
                        # below might still find gcc.
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
			IFS="${IFS=	}"; ac_save_ifs="$IFS"; IFS=":"
			for ac_dir in $PATH; do
				test -z "$ac_dir" && ac_dir=.
				case "$ac_dir" in
				/usr/ucb)
					# exclude
					;;
				*)
					if test -f "$ac_dir/cc"; then
						CC="$ac_dir/cc"
						break
					fi
					;;
				esac
			done
			IFS="$ac_save_ifs"
182
183
184
185
186
187
188
189
190
191
			;;
		*-hp-hpux*)
			CC="cc"
			;;
		mips-sgi-irix*)
			CC="cc"
			;;
	esac
fi

192
193
194
195
196
197
198
199
200
201
202
AC_PROG_CC
AC_PROG_YACC

AC_HEADER_STDC

AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h sys/sockio.h sys/select.h)

AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
Mark Andrews's avatar
Mark Andrews committed
203
204
205
206
207
208
209
AC_MSG_CHECKING(for long long)
AC_TRY_COMPILE([],[long long i = 0; return (0);],
	[AC_MSG_RESULT(yes)
		ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"],
	[AC_MSG_RESULT(no)
		ISC_PLATFORM_HAVELONGLONG="#undef ISC_PLATFORM_HAVELONGLONG"])
AC_SUBST(ISC_PLATFORM_HAVELONGLONG)
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249

#
# check if we need to #include sys/select.h explicitly
#
case $ac_cv_header_unistd_h in
yes)
AC_MSG_CHECKING(if unistd.h defines fd_set)
AC_TRY_COMPILE([
#include <unistd.h>],
[fd_set read_set; return (0);],
	[AC_MSG_RESULT(yes)
	 ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
	 LWRES_PLATFORM_NEEDSYSSELECTH="#undef LWRES_PLATFORM_NEEDSYSSELECTH"],
	[AC_MSG_RESULT(no)
	case ac_cv_header_sys_select_h in
	yes)
         ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
	 LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
		;;
	no)
		AC_MSG_ERROR([need either working unistd.h or sys/select.h])
		;;
	esac
	])
	;;
no)
	case ac_cv_header_sys_select_h in
	yes)
             ISC_PLATFORM_NEEDSYSSELECTH="#define ISC_PLATFORM_NEEDSYSSELECTH 1"
	     LWRES_PLATFORM_NEEDSYSSELECTH="#define LWRES_PLATFORM_NEEDSYSSELECTH 1"
		;;
	no)
		AC_MSG_ERROR([need either unistd.h or sys/select.h])
		;;
	esac
	;;
esac
AC_SUBST(ISC_PLATFORM_NEEDSYSSELECTH)
AC_SUBST(LWRES_PLATFORM_NEEDSYSSELECTH)

250
251
252
253
254
#
# Find the machine's endian flavor.
#
AC_C_BIGENDIAN

Michael Graff's avatar
Michael Graff committed
255
256
257
#
# was --with-openssl specified?
#
258
AC_MSG_CHECKING(for compatible OpenSSL library)
Michael Graff's avatar
Michael Graff committed
259
AC_ARG_WITH(openssl,
260
[  --with-openssl=PATH  Specify path for system-supplied openssl
Michael Graff's avatar
Michael Graff committed
261
                        (rather than using bind-9 internal openssl)],
262
    use_openssl="$withval", use_openssl="no")
Michael Graff's avatar
Michael Graff committed
263

264
265
#
# If the user didn't specify where openssl is, and we didn't find or it
266
267
268
269
# is incompatible with our code, use our internal one.
#
# XXX This appears to assume that the user specified path is correct,
# and does no checking.
270
#
271

272
273
274
275
276
277
278
279
case "$use_openssl" in
	no)
		DST_PRIVATEOPENSSL='-DDST_USE_PRIVATE_OPENSSL'
		dst_privateopenssl='openssl'
		DST_OPENSSL_INC='-I${srcdir}/../openssl/include'
		DST_OPENSSL_LIB=''
		DST_OPENSSL_OBJS='${OPENSSLOBJS}'
		AC_MSG_RESULT(using private library)
280
281
282
283
		openssl_makefiles="lib/dns/sec/openssl/Makefile \
				   lib/dns/sec/openssl/include/Makefile \
				   lib/dns/sec/openssl/include/openssl/Makefile"

284
285
286
287
288
289
290
291
292
293
294
		;;
	yes)
		AC_MSG_ERROR([--with-openssl must specify a path])
		;;
	*)
		DST_PRIVATEOPENSSL=''
		dst_privateopenssl=''
		DST_OPENSSL_INC="-I$use_openssl/include"
		DNS_OPENSSL_LIBS="-L$use_openssl/lib -lcrypto"
		DST_OPENSSL_LIB=''
		AC_MSG_RESULT(using openssl from $use_openssl/lib and $use_openssl/include)
295
		openssl_makefiles=""
296
297
		;;
esac
298

299
300
AC_SUBST(DST_PRIVATEOPENSSL)
AC_SUBST(dst_privateopenssl)
301
302
303
304
305
306
307
308
309
310
311
AC_SUBST(DST_OPENSSL_INC)
AC_SUBST(DST_OPENSSL_LIB)
AC_SUBST(DST_OPENSSL_OBJS)

#
# This would include the system openssl path (and linker options to use
# it as needed) if it is found.
#

AC_SUBST(DNS_OPENSSL_LIBS)

Brian Wellington's avatar
Brian Wellington committed
312
313
314
#
# was --with-gssapi specified?
#
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
#AC_MSG_CHECKING(for GSSAPI library)
#AC_ARG_WITH(gssapi,
#[  --with-gssapi=PATH   Specify path for system-supplied GSSAPI],
#    use_gssapi="$withval", use_gssapi="no")
#
#case "$use_gssapi" in
#	no)
#		USE_GSSAPI=''
#		DST_GSSAPI_INC=''
#		DNS_GSSAPI_LIBS=''
#		AC_MSG_RESULT(not specified)
#		;;
#	yes)
#		AC_MSG_ERROR([--with-gssapi must specify a path])
#		;;
#	*)
#		USE_GSSAPI='-DGSSAPI'
#		DST_GSSAPI_INC="-I$use_gssapi/include"
#		DNS_GSSAPI_LIBS="-L$use_gssapi/lib -lgssapi_krb5"
#		AC_MSG_RESULT(using gssapi from $use_gssapi/lib and $use_gssapi/include)
#		;;
#esac

USE_GSSAPI=''
DST_GSSAPI_INC=''
DNS_GSSAPI_LIBS=''
Brian Wellington's avatar
Brian Wellington committed
341
342
343
344
345

AC_SUBST(USE_GSSAPI)
AC_SUBST(DST_GSSAPI_INC)
AC_SUBST(DNS_GSSAPI_LIBS)

346
347
348
349
350
351
352
353
354
355
356
357
#
# was --with-randomdev specified?
#
AC_MSG_CHECKING(for random device)
AC_ARG_WITH(randomdev,
[  --with-randomdev=PATH Specify path for random device],
    use_randomdev="$withval", use_randomdev="unspec")

case "$use_randomdev" in
	unspec)
		case "$host" in
			*-openbsd*)
358
				devrandom=/dev/srandom
359
360
				;;
			*)
361
				devrandom=/dev/random
362
363
				;;
		esac
364
		AC_CHECK_FILE($devrandom,
365
366
			      AC_DEFINE_UNQUOTED(PATH_RANDOMDEV,
						 "$devrandom"),)
367
368
369
370
371
		;;
	yes)
		AC_MSG_ERROR([--with-randomdev must specify a path])
		;;
	*)
372
		AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$use_randomdev")
373
374
375
376
		AC_MSG_RESULT(using "$use_randomdev")
		;;
esac

377
378
379
380
381
382
383
#
# Begin pthreads checking.
#
# First, decide whether to use multithreading or not.
#
AC_MSG_CHECKING(whether to look for thread support)
AC_ARG_ENABLE(threads,
384
	[  --disable-threads	disable multithreading])
385
386
387
388
389
390
391
392
393
394
case "$enable_threads" in
	yes|'')
		AC_MSG_RESULT(yes)
		use_threads=true
		;;
	no)
		AC_MSG_RESULT(no)	
		use_threads=false
		;;
	*)
395
	    	AC_MSG_ERROR([--enable-threads takes yes or no])
396
397
398
		;;
esac

399
if $use_threads
400
401
then
	#
Andreas Gustafsson's avatar
Andreas Gustafsson committed
402
	# Search for / configure pthreads in a system-dependent fashion.
403
	#
Andreas Gustafsson's avatar
Andreas Gustafsson committed
404
405
406
407
408
409
410
411
412
413
414
415
416
	case "$host" in
	  *-netbsd*)
		# NetBSD has multiple pthreads implementations.	 The
		# recommended one to use is "unproven-pthreads".  The
		# older "mit-pthreads" may also work on some NetBSD
		# versions.  The PTL2 thread library does not
		# currently work with bind9, but can be chosen with
		# the --with-ptl2 option for those who wish to
		# experiment with it.
		CC="gcc"
		AC_MSG_CHECKING(which NetBSD thread library to use)

		AC_ARG_WITH(ptl2,
417
[  --with-ptl2		on NetBSD, use the ptl2 thread library (experimental)],
Andreas Gustafsson's avatar
Andreas Gustafsson committed
418
		    use_ptl2="$withval", use_ptl2="no")
419

Andreas Gustafsson's avatar
Andreas Gustafsson committed
420
		: ${LOCALBASE:=/usr/pkg}
421

Andreas Gustafsson's avatar
Andreas Gustafsson committed
422
423
424
425
		if test "X$use_ptl2" = "Xyes"
		then
			AC_MSG_RESULT(PTL2)
			AC_MSG_WARN(
426
[linking with PTL2 is highly experimental and not expected to work])
Andreas Gustafsson's avatar
Andreas Gustafsson committed
427
428
429
430
			CC=ptlgcc
		else
			if test ! -d $LOCALBASE/pthreads
			then
431
432
				AC_MSG_RESULT(none)
				use_threads=false
Andreas Gustafsson's avatar
Andreas Gustafsson committed
433
434
			fi

435
436
437
438
439
440
441
442
443
444
			if $use_threads
			then
				AC_MSG_RESULT(mit-pthreads/unproven-pthreads)
				pkg="$LOCALBASE/pthreads"
				lib1="-L$pkg/lib -Wl,-R$pkg/lib"
				lib2="-lpthread -lm -lgcc -lpthread"
				LIBS="$lib1 $lib2 $LIBS"
				CPPFLAGS="$CPPFLAGS -I$pkg/include"
				STD_CINCLUDES="$STD_CINCLUDES -I$pkg/include"
			fi
445
		fi
446
		;;
Andreas Gustafsson's avatar
Andreas Gustafsson committed
447
		*)
448
			AC_CHECK_LIB(pthread, pthread_create,,
449
450
				AC_CHECK_LIB(pthread, __pthread_create,,
				AC_CHECK_LIB(pthread, __pthread_create_system,,
451
452
				AC_CHECK_LIB(c_r, pthread_create,,
				AC_CHECK_LIB(c, pthread_create,,
453
				use_threads=false)))))
454
		;;
Andreas Gustafsson's avatar
Andreas Gustafsson committed
455
	esac
456
fi
Andreas Gustafsson's avatar
Andreas Gustafsson committed
457

458
459
if $use_threads
then
Brian Wellington's avatar
Brian Wellington committed
460
	#
Andreas Gustafsson's avatar
Andreas Gustafsson committed
461
	# We'd like to use sigwait() too
Brian Wellington's avatar
Brian Wellington committed
462
	#
Andreas Gustafsson's avatar
Andreas Gustafsson committed
463
464
465
466
467
468
469
	AC_CHECK_LIB(c, sigwait,
		     AC_DEFINE(HAVE_SIGWAIT),
		     AC_CHECK_LIB(pthread, sigwait,
				  AC_DEFINE(HAVE_SIGWAIT),
				  AC_CHECK_LIB(pthread, _Psigwait,
					       AC_DEFINE(HAVE_SIGWAIT),))
	)
Brian Wellington's avatar
Brian Wellington committed
470

471
472
473
	AC_CHECK_FUNC(pthread_attr_getstacksize,
		      AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)

Andreas Gustafsson's avatar
Andreas Gustafsson committed
474
475
476
	#
	# Additional OS-specific issues related to pthreads and sigwait.
	#
477
	case "$host" in
Andreas Gustafsson's avatar
Andreas Gustafsson committed
478
479
480
481
482
483
484
		#
		# One more place to look for sigwait.
		#
		*-freebsd*)
			AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
			;;
		#
485
		# BSDI 3.0 through 4.0.1 needs pthread_init() to be
Andreas Gustafsson's avatar
Andreas Gustafsson committed
486
487
488
		# called before certain pthreads calls.	 This is deprecated
		# in BSD/OS 4.1.
		#
489
		*-bsdi3.*|*-bsdi4.0*)
Andreas Gustafsson's avatar
Andreas Gustafsson committed
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
			AC_DEFINE(NEED_PTHREAD_INIT)
			;;
		#
		# LinuxThreads requires some changes to the way we
		# deal with signals.
		#
		*-linux*)
			AC_DEFINE(HAVE_LINUXTHREADS)
			;;
		#
		# Ensure the right sigwait() semantics on Solaris and make
		# sure we call pthread_setconcurrency.
		#
		*-solaris*)
			AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
			AC_CHECK_FUNC(pthread_setconcurrency,
				      AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
			;;
		#
		# UnixWare does things its own way.
		#
		*-UnixWare*)
			AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
			;;
514
	esac
Andreas Gustafsson's avatar
Andreas Gustafsson committed
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541

	#
	# Look for sysconf to allow detection of the number of processors.
	#
	AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)

	if test "X$GCC" = "Xyes"; then
		case "$host" in
		*-freebsd*)
			CC="$CC -pthread"
			CCOPT="$CCOPT -pthread"
			STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
			;;
		*-openbsd*)
			CC="$CC -pthread"
			CCOPT="$CCOPT -pthread"
			;;
		*-solaris*)
			LIBS="$LIBS -lthread"
			;;
		*-ibm-aix*)
			STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
			;;
		esac
	else
		case $host in
		*-dec-osf*)
542
543
			CC="$CC -pthread"
			CCOPT="$CCOPT -pthread"
Andreas Gustafsson's avatar
Andreas Gustafsson committed
544
545
546
547
548
549
550
551
552
			;;
		*-solaris*)
			CC="$CC -mt"
			CCOPT="$CCOPT -mt"
			;;
		*-ibm-aix*)
			STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
			;;
		*-UnixWare*)
553
			CC="$CC -Kthread"
Andreas Gustafsson's avatar
Andreas Gustafsson committed
554
555
556
557
			CCOPT="$CCOPT -Kthread"
			;;
		esac
	fi
558
	ALWAYS_DEFINES="-D_REENTRANT"
559
	ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
560
561
	thread_dir=pthreads
else
562
	ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
563
	thread_dir=nothreads
564
	ALWAYS_DEFINES=""
565
fi
566

567
AC_SUBST(ALWAYS_DEFINES)
568
AC_SUBST(ISC_PLATFORM_USETHREADS)
569

570
571
572
ISC_THREAD_DIR=$thread_dir
AC_SUBST(ISC_THREAD_DIR)

573
574
575
576
577
578
#
# flockfile is usually provided by pthreads, but we may want to use it
# even if compiled with --disable-threads.
#
AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)

579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
# 
# Indicate what the final decision was regarding threads.
#
AC_MSG_CHECKING(whether to build with threads)
if $use_threads; then
	AC_MSG_RESULT(yes)
else
	AC_MSG_RESULT(no)
fi

# 
# End of pthreads stuff.
#

#
# Additional compiler settings.
#
MKDEPCC="$CC"
MKDEPCFLAGS="-M"
IRIX_DNSSEC_WARNINGS_HACK=""

if test "X$GCC" = "Xyes"; then
	STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings"
else
	case $host in
	*-dec-osf*)
		CC="$CC -std"
		CCOPT="$CCOPT -std"
		MKDEPCC="$CC"
		;;
	*-hp-hpux*)
		CC="$CC -Ae -z"
		# The version of the C compiler that constantly warns about
                # 'const' as well as alignment issues is unfortunately not
                # able to be discerned via the version of the operating
                # system, nor does cc have a version flag.
		case "`$CC +W 123 2>&1`" in
		*Unknown?option*)
			STD_CWARNINGS="+w1"
			;;
		*)
			# Turn off the pointlessly noisy warnings.
			STD_CWARNINGS="+w1 +W 474,530"
			;;
		esac
		CCOPT="$CCOPT -Ae -z"
		LIBS="-Wl,+vnocompatwarnings $LIBS"
		MKDEPPROG='cc -Ae -E -Wp,-M >/dev/null 2>>$TMP'
		;;
	*-sgi-irix*)
		STD_CWARNINGS="-fullwarn -woff 1209"
		#
		# Silence more than 250 instances of
		#   "prototyped function redeclared without prototype"
		# and 11 instances of
		#   "variable ... was set but never used"
		# from lib/dns/sec/openssl.
		#
		IRIX_DNSSEC_WARNINGS_HACK="-woff 1692,1552"
		;;
	*-solaris*)
		MKDEPCFLAGS="-xM"
		;;
	*-UnixWare*)
		CC="$CC -w"
		YACC="yacc"	# bison calls alloca, avoid on UnixWare
		;;
	esac
fi

AC_SUBST(MKDEPCC)
AC_SUBST(MKDEPCFLAGS)
AC_SUBST(MKDEPPROG)
AC_SUBST(IRIX_DNSSEC_WARNINGS_HACK)

654
655
656
#
# NLS
#
Bob Halley's avatar
Bob Halley committed
657
658
AC_CHECK_FUNC(catgets, AC_DEFINE(HAVE_CATGETS),)

659
660
661
662
663
664
665
666
667
668
#
# -lxnet buys us one big porting headache...  standards, gotta love 'em.
#
# AC_CHECK_LIB(xnet, socket, ,
#    AC_CHECK_LIB(socket, socket)
#    AC_CHECK_LIB(nsl, inet_ntoa)
# )
#
# Use this for now, instead:
#
669
670
671
672
673
674
675
676
case "$host" in
	mips-sgi-irix*)
		;;
	*)
		AC_CHECK_LIB(socket, socket)
		AC_CHECK_LIB(nsl, inet_ntoa)
		;;
esac
Michael Graff's avatar
Michael Graff committed
677

678
679
680
681
682
#
# Purify support
#
AC_MSG_CHECKING(whether to use purify)
AC_ARG_WITH(purify,
683
	[  --with-purify[=PATH]	use Rational purify],
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
	use_purify="$withval", use_purify="no")

case "$use_purify" in
	no)
		;;
	yes)
		AC_PATH_PROG(purify_path, purify, purify)
		;;
	*)
		purify_path="$use_purify"
		;;
esac

case "$use_purify" in
	no)
		AC_MSG_RESULT(no)
		PURIFY=""
		;;
	*)
		if test -f $purify_path || test $purify_path = purify; then
			AC_MSG_RESULT($purify_path)
			PURIFYFLAGS="`echo $PURIFYOPTIONS`"
			PURIFY="$purify_path $PURIFYFLAGS"
		else
			AC_MSG_ERROR([$purify_path not found.

Please choose the proper path with the following command:

    configure --with-purify=PATH
])
		fi
		;;
esac

AC_SUBST(PURIFY)

720
721
722
#
# GNU libtool support
#
Bob Halley's avatar
Bob Halley committed
723
AC_ARG_WITH(libtool,
724
	    [  --with-libtool	use GNU libtool (following indented options supported)],
Bob Halley's avatar
Bob Halley committed
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
	    use_libtool="$withval", use_libtool="no")

case $use_libtool in
	yes)
		AM_PROG_LIBTOOL
		O=lo
		A=la
		;;
	*)
		O=o
		A=a
		LIBTOOL=
		AC_SUBST(LIBTOOL)
		;;
esac
740

Andreas Gustafsson's avatar
Andreas Gustafsson committed
741
#
742
743
# File name extension for static archive files, for those few places
# where they are treated differently from dynamic ones.
Andreas Gustafsson's avatar
Andreas Gustafsson committed
744
#
745
746
SA=a

Bob Halley's avatar
Bob Halley committed
747
748
AC_SUBST(O)
AC_SUBST(A)
749
AC_SUBST(SA)
Bob Halley's avatar
Bob Halley committed
750

751
752
753
754
755
#
# Here begins a very long section to determine the system's networking
# capabilities.  The order of the tests is signficant.
#

756
757
758
#
# IPv6
#
759
760
761
AC_ARG_ENABLE(ipv6,
	[  --enable-ipv6		use IPv6 [default=autodetect]])

762
763
764
765
766
767
768
769
case "$enable_ipv6" in
	yes|''|autodetect)
		AC_DEFINE(WANT_IPV6)
		;;
	no)
		;;
esac

770
771
772
773
#
# We do the IPv6 compilation checking after libtool so that we can put
# the right suffix on the files.
#
774
775
AC_MSG_CHECKING(for IPv6 structures)
AC_TRY_COMPILE([
776
777
778
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>],
779
780
781
782
783
[struct sockaddr_in6 sin6; return (0);],
	[AC_MSG_RESULT(yes)
	 found_ipv6=yes],
	[AC_MSG_RESULT(no)
	 found_ipv6=no])
784

785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
#
# See whether IPv6 support is provided via a Kame add-on.
# This is done before other IPv6 linking tests to LIBS is properly set.
#
AC_MSG_CHECKING(for Kame IPv6 support)
AC_ARG_WITH(kame,
	[  --with-kame[=PATH]	use Kame IPv6 [default path /usr/local/v6]],
	use_kame="$withval", use_kame="no")

case "$use_kame" in
	no)
		;;
	yes)
		kame_path=/usr/local/v6
		;;
	*)
		kame_path="$use_kame"
		;;
esac

case "$use_kame" in
	no)
		AC_MSG_RESULT(no)
		;;
	*)
		if test -f $kame_path/lib/libinet6.a; then
			AC_MSG_RESULT($kame_path/lib/libinet6.a)
			LIBS="-L$kame_path/lib -linet6 $LIBS"
		else
			AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.

Please choose the proper path with the following command:

    configure --with-kame=PATH
])
		fi
		;;
esac

#
# Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
# Including it on Kame-using platforms is very bad, though, because
# Kame uses #error against direct inclusion.   So include it on only
# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
# This is done before the in6_pktinfo check because that's what
# netinet6/in6.h is needed for.
#
changequote({, })
833
834
case "$host" in
*-bsdi4.[01]*)
835
836
	ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
	LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
837
	isc_netinet6in6_hack="#include <netinet6/in6.h>"
838
839
840
841
	;;
*)
	ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
	LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
842
	isc_netinet6in6_hack=""
843
844
845
846
	;;
esac
changequote([, ])

847
848
849
850
851
852
853
#
# This is similar to the netinet6/in6.h issue.
#
case "$host" in
*-UnixWare*)
	ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
	LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
854
        ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1"
855
856
857
858
859
	isc_netinetin6_hack="#include <netinet/in6.h>"
	;;
*)
	ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
	LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
860
        ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
861
862
863
864
	isc_netinetin6_hack=""
	;;
esac

865
866
867
#
# Now delve deeper into the suitability of the IPv6 support.
#
868
869
case "$found_ipv6" in
	yes)
870
871
		ISC_PLATFORM_HAVEIPV6="#define ISC_PLATFORM_HAVEIPV6 1"
		LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
872

873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
		AC_MSG_CHECKING(for in6_addr)
		AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
],
[struct in6_addr in6; return (0);],
		[AC_MSG_RESULT(yes)
		 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
		 LWRES_PLATFORM_HAVEINADDR6="#undef LWRES_PLATFORM_HAVEINADDR6"
		 isc_in_addr6_hack=""],
		[AC_MSG_RESULT(no)
		 ISC_PLATFORM_HAVEINADDR6="#define ISC_PLATFORM_HAVEINADDR6 1"
		 LWRES_PLATFORM_HAVEINADDR6="#define LWRES_PLATFORM_HAVEINADDR6 1"
		 isc_in_addr6_hack="#define in6_addr in_addr6"])

891
		AC_MSG_CHECKING(for in6addr_any)
892
		AC_TRY_LINK([
893
894
#include <sys/types.h>
#include <sys/socket.h>
895
#include <netinet/in.h>
896
897
898
899
$isc_netinetin6_hack
$isc_netinet6in6_hack
$isc_in_addr6_hack
],
900
901
		[struct in6_addr in6; in6 = in6addr_any; return (0);],
			[AC_MSG_RESULT(yes)
David Lawrence's avatar
David Lawrence committed
902
903
			 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
			 LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"],
904
			[AC_MSG_RESULT(no)
David Lawrence's avatar
David Lawrence committed
905
906
			 ISC_PLATFORM_NEEDIN6ADDRANY="#define ISC_PLATFORM_NEEDIN6ADDRANY 1"
			 LWRES_PLATFORM_NEEDIN6ADDRANY="#define LWRES_PLATFORM_NEEDIN6ADDRANY 1"])
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922

		AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
		AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
],
		[struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
			[AC_MSG_RESULT(yes)
			 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
			[AC_MSG_RESULT(no)
			 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
		LWRES_HAVE_SIN6_SCOPE_ID="$result"

Michael Graff's avatar
   
Michael Graff committed
923
		AC_MSG_CHECKING(for in6_pktinfo)
924
		AC_TRY_COMPILE([
Michael Graff's avatar
   
Michael Graff committed
925
926
#include <sys/types.h>
#include <sys/socket.h>
927
#include <netinet/in.h>
928
929
$isc_netinetin6_hack
$isc_netinet6in6_hack
930
],
Michael Graff's avatar
   
Michael Graff committed
931
932
933
934
935
		[struct in6_pktinfo xyzzy; return (0);],
			[AC_MSG_RESULT(yes)
			 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"],
			[AC_MSG_RESULT(no -- disabling runtime ipv6 support)
			 ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"])
936
937
938
		;;
	no)
		ISC_PLATFORM_HAVEIPV6="#undef ISC_PLATFORM_HAVEIPV6"
939
		LWRES_PLATFORM_HAVEIPV6="#undef LWRES_PLATFORM_HAVEIPV6"
940
		ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
David Lawrence's avatar
David Lawrence committed
941
		LWRES_PLATFORM_NEEDIN6ADDRANY="#undef LWRES_PLATFORM_NEEDIN6ADDRANY"
Michael Graff's avatar
   
Michael Graff committed
942
		ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"
943
		LWRES_HAVE_SIN6_SCOPE_ID="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
944
945
946
947
948
949
950
		ISC_IPV6_H="ipv6.h"
		ISC_IPV6_O="ipv6.$O"
		ISC_ISCIPV6_O="unix/ipv6.$O"
		ISC_IPV6_C="ipv6.c"
		;;
esac

951
AC_SUBST(ISC_PLATFORM_HAVEIPV6)
952
AC_SUBST(LWRES_PLATFORM_HAVEIPV6)
953
954
AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)
AC_SUBST(LWRES_PLATFORM_NEEDNETINETIN6H)
955
956
AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)
AC_SUBST(LWRES_PLATFORM_NEEDNETINET6IN6H)
957
958
AC_SUBST(ISC_PLATFORM_HAVEINADDR6)
AC_SUBST(LWRES_PLATFORM_HAVEINADDR6)
959
AC_SUBST(ISC_PLATFORM_NEEDIN6ADDRANY)
David Lawrence's avatar
David Lawrence committed
960
AC_SUBST(LWRES_PLATFORM_NEEDIN6ADDRANY)
Michael Graff's avatar
   
Michael Graff committed
961
AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)
962
AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)
963
964
965
966
AC_SUBST(ISC_IPV6_H)
AC_SUBST(ISC_IPV6_O)
AC_SUBST(ISC_ISCIPV6_O)
AC_SUBST(ISC_IPV6_C)
967
AC_SUBST(LWRES_HAVE_SIN6_SCOPE_ID)
968

969
970
971
#
# Check for network functions that are often missing.  We do this
# after the libtool checking, so we can put the right suffix on
972
973
# the files.  It also needs to come after checking for a Kame add-on,
# which provides some (all?) of the desired functions.
974
#
975
AC_MSG_CHECKING([for inet_ntop])
976
977
978
979
AC_TRY_LINK([
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>],
980
        [inet_ntop(0, 0, 0, 0); return (0);],
981
982
983
984
985
986
987
        [AC_MSG_RESULT(yes)
        ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],

        [AC_MSG_RESULT(no)
        ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
        ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
        ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"])
988
AC_MSG_CHECKING([for inet_pton])
989
990
991
992
AC_TRY_LINK([
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>],
993
        [inet_pton(0, 0, 0); return (0);],
994
995
996
997
998
999
1000
        [AC_MSG_RESULT(yes)
        ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"],

        [AC_MSG_RESULT(no)
        ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O"
        ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c"
        ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"])
1001
AC_MSG_CHECKING([for inet_aton])
1002
1003
1004
1005
AC_TRY_LINK([
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>],
1006
        [struct in_addr in; inet_aton(0, &in); return (0);],
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
        [AC_MSG_RESULT(yes)
        ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"],

        [AC_MSG_RESULT(no)
        ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_aton.$O"
        ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_aton.c"
        ISC_PLATFORM_NEEDATON="#define ISC_PLATFORM_NEEDATON 1"])

AC_SUBST(ISC_PLATFORM_NEEDNTOP)
AC_SUBST(ISC_PLATFORM_NEEDPTON)
AC_SUBST(ISC_PLATFORM_NEEDATON)

1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
#
# Look for a 4.4BSD-style sa_len member in struct sockaddr.
#
case "$host" in
	*-dec-osf*)
		# Turn on 4.4BSD style sa_len support.
		AC_DEFINE(_SOCKADDR_LEN)
		;;
esac

AC_MSG_CHECKING(for sa_len in struct sockaddr)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>],
[struct sockaddr sa; sa.sa_len = 0; return (0);],
	[AC_MSG_RESULT(yes)
	ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
	LWRES_PLATFORM_HAVESALEN="#define LWRES_PLATFORM_HAVESALEN 1"],
	[AC_MSG_RESULT(no)
	ISC_PLATFORM_HAVESALEN="#undef ISC_PLATFORM_HAVESALEN"
	LWRES_PLATFORM_HAVESALEN="#undef LWRES_PLATFORM_HAVESALEN"])
AC_SUBST(ISC_PLATFORM_HAVESALEN)
AC_SUBST(LWRES_PLATFORM_HAVESALEN)

#
# Look for a 4.4BSD or 4.3BSD struct msghdr
#
AC_MSG_CHECKING(for struct msghdr flavor)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>],
[struct msghdr msg; msg.msg_flags = 0; return (0);],
	[AC_MSG_RESULT(4.4BSD)
	ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"],
	[AC_MSG_RESULT(4.3BSD)
	ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])
AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)

#
# Look for in_port_t.
#
AC_MSG_CHECKING(for type in_port_t)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netinet/in.h>],
[in_port_t port = 25; return (0);],
	[AC_MSG_RESULT(yes)
	ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"],
        [AC_MSG_RESULT(no)
	ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])
AC_SUBST(ISC_PLATFORM_NEEDPORTT)

#
# Check for addrinfo
#
AC_MSG_CHECKING(for struct addrinfo)
AC_TRY_COMPILE([
#include <netdb.h>],
[struct addrinfo a; return (0);],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
	AC_DEFINE(HAVE_ADDRINFO)],
	[AC_MSG_RESULT(no)
	ISC_LWRES_NEEDADDRINFO="#define ISC_LWRES_NEEDADDRINFO 1"])
AC_SUBST(ISC_LWRES_NEEDADDRINFO)

AC_MSG_CHECKING(for int sethostent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = sethostent(0); return(0);],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"],
	[AC_MSG_RESULT(no)
	ISC_LWRES_SETHOSTENTINT="#undef ISC_LWRES_SETHOSTENTINT"])
AC_SUBST(ISC_LWRES_SETHOSTENTINT)

AC_MSG_CHECKING(for int endhostent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = endhostent(); return(0);],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"],
	[AC_MSG_RESULT(no)
	ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])
AC_SUBST(ISC_LWRES_ENDHOSTENTINT)

AC_MSG_CHECKING(for getnetbyaddr(in_addr_t, ...))
AC_TRY_COMPILE([
#include <netdb.h>
struct netent *getnetbyaddr(in_addr_t, int);],
[],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"],
	[AC_MSG_RESULT(no)
	ISC_LWRES_GETNETBYADDRINADDR="#undef ISC_LWRES_GETNETBYADDRINADDR"])
AC_SUBST(ISC_LWRES_GETNETBYADDRINADDR)

AC_MSG_CHECKING(for int setnetent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = setnetent(0); return(0);],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"],
	[AC_MSG_RESULT(no)
	ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])
AC_SUBST(ISC_LWRES_SETNETENTINT)

AC_MSG_CHECKING(for int endnetent)
AC_TRY_COMPILE([
#include <netdb.h>],
[int i = endnetent(); return(0);],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"],
	[AC_MSG_RESULT(no)
	ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])
AC_SUBST(ISC_LWRES_ENDNETENTINT)

Brian Wellington's avatar
typo    
Brian Wellington committed
1136
AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
AC_TRY_COMPILE([
#include <netdb.h>
struct hostent *gethostbyaddr(const void *, size_t, int);],
[return(0);],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"],
	[AC_MSG_RESULT(no)
	ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])
AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)

AC_MSG_CHECKING(for h_errno in netdb.h)
AC_TRY_COMPILE([
#include <netdb.h>],
[h_errno = 1; return(0);],
	[AC_MSG_RESULT(yes)
	ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"],
	[AC_MSG_RESULT(no)
	ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])
AC_SUBST(ISC_LWRES_NEEDHERRNO)

AC_CHECK_FUNC(getipnodebyname,
        [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"],
        [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])
AC_CHECK_FUNC(getnameinfo,
        [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"],
        [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])
AC_CHECK_FUNC(getaddrinfo,
        [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO"
	AC_DEFINE(HAVE_GETADDRINFO)],
        [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])
1167
AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
AC_SUBST(ISC_LWRES_GETIPNODEPROTO)
AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)
AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)

#
# Look for a sysctl call to get the list of network interfaces.
#
AC_MSG_CHECKING(for interface list sysctl)
AC_EGREP_CPP(found_rt_iflist, [
#include <sys/param.h>
#include <sys/sysctl.h>
#include <sys/socket.h>
#ifdef NET_RT_IFLIST
found_rt_iflist
#endif
],
	[AC_MSG_RESULT(yes)
	 AC_DEFINE(HAVE_IFLIST_SYSCTL)],
	[AC_MSG_RESULT(no)])

#
1189
# Check for some other useful functions that are not ever-present.
1190
#
Mark Andrews's avatar
Mark Andrews committed
1191
1192
AC_CHECK_FUNC(strsep,
	[ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"],
1193
	[ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])
Mark Andrews's avatar
Mark Andrews committed
1194
AC_CHECK_FUNC(vsnprintf,
1195
	[ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"],
Mark Andrews's avatar
Mark Andrews committed
1196
1197
	[ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS print.$O"
	 ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS print.c"
1198
	 ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"])
Mark Andrews's avatar
Mark Andrews committed
1199
AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
1200
AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
1201

Bob Halley's avatar
Bob Halley committed
1202
1203
AC_SUBST(ISC_EXTRA_OBJS)
AC_SUBST(ISC_EXTRA_SRCS)
1204

1205
1206
1207
1208
1209
1210
1211
1212
#
# Determine the printf format characters to use when printing
# values of type isc_int64_t.  We make the assumption that platforms
# where a "long long" is the same size as a "long" (e.g., Alpha/OSF1)
# want "%ld" and everyone else can use "%lld".  Win32 uses "%I64d",
# but that's defined elsewhere since we don't use configure on Win32.
#
AC_MSG_CHECKING(printf format modifier for 64-bit integers)
1213
AC_TRY_RUN([main() { exit(!(sizeof(long long int) == sizeof(long int))); }],
1214
1215
1216
1217
1218
1219
1220
	[AC_MSG_RESULT(l)
	ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'],
	[AC_MSG_RESULT(ll)
	ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'],
	[AC_MSG_RESULT(default ll)
	ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'])
AC_SUBST(ISC_PLATFORM_QUADFORMAT)
1221

1222
1223
1224
#
# Security Stuff
#
1225
1226
AC_CHECK_FUNC(chroot, AC_DEFINE(HAVE_CHROOT))
AC_CHECK_HEADERS(linux/capability.h)
1227
AC_CHECK_HEADERS(sys/prctl.h)
1228

1229
#
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
# BSD/OS, and perhaps some others, don't define rlim_t.
#
AC_MSG_CHECKING(for type rlim_t)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>],
[rlim_t rl = 19671212; return (0);],
	[AC_MSG_RESULT(yes)
         AC_DEFINE(HAVE_RLIM_T)],
        [AC_MSG_RESULT(no)])
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
AC_MSG_CHECKING(sizeof rlim_cur)
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
[AC_MSG_RESULT(int)
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
[AC_MSG_RESULT(long int)
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
[AC_MSG_RESULT(long long int)
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
[AC_MSG_ERROR([unable to determine sizeof rlim_cur])
],[])
],[])
],[])
AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
Andreas Gustafsson's avatar
spacing    
Andreas Gustafsson committed
1270

1271
1272
#
# Random remaining OS-specific issues involving compiler warnings.
David Lawrence's avatar
David Lawrence committed
1273
# XXXDCL print messages to indicate some compensation is being done?
1274
#
David Lawrence's avatar
David Lawrence committed
1275
1276
1277
AC_SUBST(ISC_PLATFORM_BRACEPTHREADONCEINIT)
ISC_PLATFORM_BRACEPTHREADONCEINIT="#undef ISC_PLATFORM_BRACEPTHREADONCEINIT"

1278
case "$host" in
David Lawrence's avatar
David Lawrence committed
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
	*-bsdi3.1*)
		hack_shutup_sputaux=yes
		;;
	*-bsdi4.0*)
		hack_shutup_sigwait=yes
		hack_shutup_sputaux=yes
		;;
	*-bsdi4.1*)
		hack_shutup_stdargcast=yes
		;;
	*-solaris2.8)
		hack_shutup_pthreadonceinit=yes
		;;
esac

case "$hack_shutup_pthreadonceinit" in
	yes)
		#
		# Shut up PTHREAD_ONCE_INIT unbraced initializer warnings.
		#
		ISC_PLATFORM_BRACEPTHREADONCEINIT="#define ISC_PLATFORM_BRACEPTHREADONCEINIT 1"
		;;
esac

case "$hack_shutup_sigwait" in
	yes)
		#
		# Shut up a -Wmissing-prototypes warning for sigwait().
1307
		#
David Lawrence's avatar
David Lawrence committed
1308
1309
1310
1311
1312
1313
1314
1315
1316
		AC_DEFINE(SHUTUP_SIGWAIT)
		;;
esac

case "$hack_shutup_sputaux" in
	yes)
		#
		# Shut up a -Wmissing-prototypes warning from <stdio.h>.
		#
1317
1318
		AC_DEFINE(SHUTUP_SPUTAUX)
		;;
David Lawrence's avatar
David Lawrence committed
1319
1320
1321
1322
1323
1324
1325
1326
1327
esac

case "$hack_shutup_stdargcast" in
	yes)
		#
		# Shut up a -Wcast-qual warning from va_start().
		#
		AC_DEFINE(SHUTUP_STDARG_CAST)
		;;
1328
1329
esac

1330
1331
1332
1333
1334
1335
1336
1337

#
# Look for jade, preferring openjade if installed.
#

AC_PATH_PROGS(JADE, openjade jade, jade)
AC_SUBST(JADE)

1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
#
# Look for tex & pdftex.
#

AC_PATH_PROGS(TEX, tex)
AC_SUBST(TEX)

AC_PATH_PROGS(PDFTEX, pdftex)
AC_SUBST(PDFTEX)

1348
#
1349
# Look for SGML files.  NetBSD has them under /usr/pkg/share 
1350
1351
1352
1353
1354
# (if installed), FreeBSD has them under /usr/local/share.
#

SGMLDIR=""

1355
AC_MSG_CHECKING(for SGML files)
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
for d in /usr/pkg/share/sgml /usr/local/share/sgml 
do
	if test -f $d/docbook/dsssl/modular/html/docbook.dsl
	then
		SGMLDIR=$d
		AC_MSG_RESULT(in $SGMLDIR)
		break
	fi
done

if test "X$SGMLDIR" = "X"
then
	AC_MSG_RESULT("not found");
	SGMLDIR=/usr/local/share/sgml
fi

AC_SUBST(SGMLDIR)

1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
#
# Look for XML files.
#
XGMLDIR=""

AC_MSG_CHECKING(for XML files)
for d in /usr/pkg/share/xml /usr/local/share/xml
do
	if test -f $d/dtd/docbook/docbookx.dtd
	then
		XMLDIR=$d
		AC_MSG_RESULT(in $XMLDIR)
		break
	fi
done

if test "X$XMLDIR" = "X"
then
	AC_MSG_RESULT("not found");
	XMLDIR=/usr/local/share/xml
fi

AC_SUBST(XMLDIR)

1398
1399
1400
#
# Substitutions
#
1401
1402
1403
AC_SUBST(BIND9_TOP_BUILDDIR)
BIND9_TOP_BUILDDIR=`pwd`

1404
AC_SUBST(BIND9_ISC_BUILDINCLUDE)
1405
AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
1406
AC_SUBST(BIND9_DNS_BUILDINCLUDE)
1407
AC_SUBST(BIND9_OMAPI_BUILDINCLUDE)
Michael Graff's avatar
Michael Graff committed
1408
AC_SUBST(BIND9_LWRES_BUILDINCLUDE)
1409
1410
if test "X$srcdir" != "X"; then
	BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
1411
	BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
1412
	BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
1413
	BIND9_OMAPI_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/omapi/include"
Michael Graff's avatar
Michael Graff committed
1414
	BIND9_LWRES_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/lwres/include"
1415
1416
else
	BIND9_ISC_BUILDINCLUDE=""
1417
	BIND9_ISCCFG_BUILDINCLUDE=""
1418
	BIND9_DNS_BUILDINCLUDE=""
1419
	BIND9_OMAPI_BUILDINCLUDE=""
Michael Graff's avatar
Michael Graff committed
1420
	BIND9_LWRES_BUILDINCLUDE=""
1421
1422
1423
1424
1425
fi

AC_SUBST_FILE(BIND9_INCLUDES)
BIND9_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes

Bob Halley's avatar
Bob Halley committed
1426
AC_SUBST_FILE(BIND9_MAKE_RULES)
1427
BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
Bob Halley's avatar
Bob Halley committed
1428

1429
1430
1431
. $srcdir/version
BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}"
AC_SUBST(BIND9_VERSION)
Bob Halley's avatar
Bob Halley committed
1432

Bob Halley's avatar
Bob Halley committed
1433
1434
1435
AC_SUBST_FILE(LIBISC_API)
LIBISC_API=$srcdir/lib/isc/api

1436
1437
1438
AC_SUBST_FILE(LIBISCCFG_API)
LIBISCCFG_API=$srcdir/lib/isccfg/api

Bob Halley's avatar
Bob Halley committed
1439
1440
1441
AC_SUBST_FILE(LIBDNS_API)
LIBDNS_API=$srcdir/lib/dns/api

Michael Graff's avatar
Michael Graff committed
1442
1443
1444
AC_SUBST_FILE(LIBLWRES_API)
LIBLWRES_API=$srcdir/lib/lwres/api

David Lawrence's avatar
David Lawrence committed
1445
1446
1447
AC_SUBST_FILE(LIBOMAPI_API)
LIBOMAPI_API=$srcdir/lib/omapi/api

Bob Halley's avatar
Bob Halley committed
1448
AC_OUTPUT(
1449
	make/rules
1450
	make/includes
Bob Halley's avatar
Bob Halley committed
1451
	Makefile
1452
	make/Makefile
Bob Halley's avatar
Bob Halley committed
1453
	make/mkdep
Bob Halley's avatar
Bob Halley committed
1454
1455
1456
1457
	lib/Makefile
	lib/isc/Makefile
	lib/isc/include/Makefile
	lib/isc/include/isc/Makefile
1458
	lib/isc/include/isc/platform.h
Bob Halley's avatar
Bob Halley committed
1459
1460
1461
	lib/isc/unix/Makefile
	lib/isc/unix/include/Makefile
	lib/isc/unix/include/isc/Makefile
Bob Halley's avatar
Bob Halley committed
1462
	lib/isc/nls/Makefile
1463
1464
1465
	lib/isc/$thread_dir/Makefile
	lib/isc/$thread_dir/include/Makefile
	lib/isc/$thread_dir/include/isc/Makefile
1466
1467
1468
	lib/isccfg/Makefile
	lib/isccfg/include/Makefile
	lib/isccfg/include/isccfg/Makefile
Bob Halley's avatar
Bob Halley committed
1469
1470
1471
	lib/dns/Makefile
	lib/dns/include/Makefile
	lib/dns/include/dns/Makefile
1472
	lib/dns/sec/Makefile
1473
	$openssl_makefiles
1474
1475
1476
	lib/dns/sec/dst/Makefile
	lib/dns/sec/dst/include/Makefile
	lib/dns/sec/dst/include/dst/Makefile
1477
	lib/dns/config/Makefile
Michael Graff's avatar
Michael Graff committed
1478
1479
1480
	lib/lwres/Makefile
	lib/lwres/include/Makefile
	lib/lwres/include/lwres/Makefile
Mark Andrews's avatar
Mark Andrews committed
1481
	lib/lwres/include/lwres/netdb.h
1482
	lib/lwres/include/lwres/platform.h
1483
	lib/lwres/man/Makefile
David Lawrence's avatar
David Lawrence committed
1484
1485
1486
	lib/omapi/Makefile
	lib/omapi/include/Makefile
	lib/omapi/include/omapi/Makefile
Bob Halley's avatar
Bob Halley committed
1487
1488
1489
	lib/tests/Makefile
	lib/tests/include/Makefile
	lib/tests/include/tests/Makefile
Bob Halley's avatar
Bob Halley committed
1490
	bin/Makefile
1491
	bin/check/Makefile
Michael Graff's avatar
typo    
Michael Graff committed
1492
	bin/named/Makefile
Mark Andrews's avatar
Mark Andrews committed
1493
	bin/named/named.8
Bob Halley's avatar
Bob Halley committed
1494
	bin/named/unix/Makefile
1495
	bin/rndc/Makefile
1496
	bin/dig/Makefile
1497
	bin/nsupdate/Makefile
Bob Halley's avatar
Bob Halley committed
1498
1499
1500
1501
	bin/tests/Makefile
	bin/tests/names/Makefile
	bin/tests/master/Makefile
	bin/tests/rbt/Makefile
1502
1503
1504
	bin/tests/db/Makefile
	bin/tests/tasks/Makefile
	bin/tests/timers/Makefile
1505
	bin/tests/dst/Makefile
1506
	bin/tests/mem/Makefile
1507
	bin/tests/net/Makefile
1508
	bin/tests/sockaddr/Makefile
Michael Sawyer's avatar
Michael Sawyer committed
1509
	bin/tests/system/Makefile
1510
	bin/tests/system/conf.sh
1511
	bin/tests/system/lwresd/Makefile
1512
	bin/tests/system/tkey/Makefile
1513
	bin/tests/headerdep_test.sh
1514
	bin/dnssec/Makefile
1515
	doc/Makefile
1516
	doc/arm/Makefile
1517
	doc/arm/catalog
1518
	doc/arm/nominum-docbook-html.dsl
1519
	doc/arm/nominum-docbook-print.dsl
1520
1521
	doc/arm/validate.sh
	doc/arm/genhtml.sh
1522
1523
	doc/arm/gendvi.sh
	doc/arm/genpdf.sh
Brian Wellington's avatar
Brian Wellington committed
1524
	isc-config.sh
Bob Halley's avatar
Bob Halley committed
1525
)
Brian Wellington's avatar
Brian Wellington committed
1526
chmod a+x isc-config.sh
1527
1528
1529
1530
1531

# Tell Emacs to edit this file in shell mode.
# Local Variables:
# mode: sh
# End: