configure.ac revision 182007
1dnl -*-fundamental-*-
2dnl Process this file with autoconf to produce a configure script.
3m4_include([version.m4])
4AC_INIT(ntp, VERSION_NUMBER)
5AM_INIT_AUTOMAKE
6AC_CANONICAL_HOST
7dnl the 'build' machine is where we run configure and compile
8dnl the 'host' machine is where the resulting stuff runs.
9AC_DEFINE_UNQUOTED(STR_SYSTEM, "$host", [canonical system (cpu-vendor-os) of where we should run])
10AM_CONFIG_HEADER(config.h)
11dnl AC_ARG_PROGRAM
12AC_PREREQ(2.53)
13
14ac_cv_var_atom_ok=no
15ac_cv_var_oncore_ok=no
16ac_cv_var_parse_ok=no
17ac_cv_var_ripe_ncc_ok=no
18ac_cv_var_jupiter_ok=no
19
20dnl Grab any initial CFLAGS so we can pick better defaults.
21iCFLAGS="$CFLAGS"
22
23dnl check these early to avoid autoconf warnings
24AC_AIX
25AC_MINIX
26
27dnl  we need to check for cross compile tools for vxWorks here
28AC_PROG_CC
29# Ralf Wildenhues: With per-target flags we need CC_C_O
30AC_PROG_CC_C_O
31AC_PROG_CC_STDC
32AC_PROG_CPP
33
34# HMS: These need to be moved to AM_CPPFLAGS and/or AM_CFLAGS
35case "$host" in
36 *-*-amigaos)
37    CFLAGS="$CFLAGS -Dfork=vfork -DSYS_AMIGA"
38    ;;
39 *-*-hpux10.*)	# at least for hppa2.0-hp-hpux10.20
40    case "$GCC" in
41     yes)
42	;;
43     *) CFLAGS="$CFLAGS -Wp,-H18816"
44	;;
45    esac
46    ;;
47 *-pc-cygwin*)
48    CFLAGS="$CFLAGS -DSYS_CYGWIN32"
49    ;;
50 i386-sequent-sysv4)
51    case "$CC" in
52     cc)
53	CFLAGS="$CFLAGS -Wc,+abi-socket"
54	;;
55    esac
56    ;;
57 *-*-mpeix*)
58    CPPFLAGS="$CPPFLAGS -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB"
59    LDFLAGS="$LDFLAGS -L/SYSLOG/PUB"
60    LIBS="$LIBS -lcurses"
61    ;;
62 *-*-solaris*)
63    # see "man standards".
64    # -D_XOPEN_SOURCE=500 is probably OK for c89 and before
65    # -D_XOPEN_SOURCE=600 seems OK for c99
66    #CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
67    CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
68    libxnet=-lxnet
69    ;;
70esac
71
72AMU_OS_CFLAGS
73
74# NTP has (so far) been relying on leading-edge autogen.
75# Therefore, by default:
76# - use the version we ship with
77# - do not install it
78# - build a static copy (AC_DISABLE_SHARED - done earlier)
79case "${enable_local_libopts+set}" in
80 set) ;;
81 *) enable_local_libopts=yes ;;
82esac
83case "${enable_libopts_install+set}" in
84 set) ;;
85 *) enable_libopts_install=no ;;
86esac
87LIBOPTS_CHECK(libopts)
88
89AC_MSG_CHECKING([[if $CC can handle #warning]])
90AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#warning foo]])],[ac_cv_cpp_warning=yes],[ac_cv_cpp_warning=no])
91AC_MSG_RESULT([$ac_cv_cpp_warning])
92
93case "$ac_cv_cpp_warning" in
94 no)
95    AC_DEFINE([NO_OPTION_NAME_WARNINGS], [1], [Should we avoid #warning on option name collisions?])
96    AC_MSG_RESULT([[Enabling NO_OPTION_NAME_WARNINGS as #warning does not work]])
97    ;;
98esac
99
100AC_MSG_CHECKING(for bin subdirectory)
101AC_ARG_WITH(binsubdir,
102	AC_HELP_STRING([--with-binsubdir], [bin ={bin,sbin}]),
103	use_binsubdir="$withval", use_binsubdir="bin")
104
105case "$use_binsubdir" in
106 bin)
107    ;;
108 sbin)
109    ;;
110 *)
111    AC_MSG_ERROR([<$use_binsubdir> is illegal - must be "bin" or "sbin"])
112    ;;
113esac
114AC_MSG_RESULT($use_binsubdir)
115BINSUBDIR=$use_binsubdir
116AC_SUBST(BINSUBDIR)
117
118AC_MSG_CHECKING(if we want to use arlib)
119AC_ARG_WITH(arlib,
120	AC_HELP_STRING([--with-arlib], [- Compile the async resolver library?]),
121	[ans=$withval], [ans=no])
122AC_MSG_RESULT($ans)
123
124if test -d $srcdir/arlib
125then
126    case "$ans" in
127     yes)
128	ARLIB_DIR=arlib
129	AC_CONFIG_SUBDIRS(arlib)
130	;;
131    esac
132fi
133AC_SUBST(ARLIB_DIR)
134
135AC_ARG_WITH(rpath,
136	AC_HELP_STRING([--without-rpath], [s Disable auto-added -R linker paths]),
137[ans=$withval], [ans=x])
138case "$ans" in
139 no)
140    need_dash_r=
141    ;;
142 yes)
143    need_dash_r=1
144    ;;
145esac
146# HMS: Why isn't this $build?
147# Well, that depends on if we need this for the build toolchain or
148# for info in the host executable...
149# I still have no idea which way this should go, but nobody has complained.
150case "$host" in
151 *-*-netbsd*)
152    case "$need_dash_r" in
153     no) ;;
154     *)  need_dash_r=1
155	 ;;
156    esac
157    ;;
158 *-*-solaris*)
159    case "$need_dash_r" in
160     no) ;;
161     *)  need_dash_r=1
162	 ;;
163    esac
164    ;;
165esac
166
167AC_CACHE_CHECK(if we should use /dev/clockctl, ac_clockctl,
168[AC_ARG_ENABLE(clockctl,
169   AC_HELP_STRING([--enable-clockctl], [s Use /dev/clockctl for non-root clock control]),
170    [ans=$enableval],
171    [case "$host" in
172      *-*-netbsd*)
173	 ans=yes
174	 ;;
175      *) ans=no
176	 ;;
177     esac
178     ])
179ac_clockctl=$ans])
180# End of AC_CACHE_CHECK for clockctl
181AC_CHECK_HEADERS(sys/clockctl.h)
182case "$ac_clockctl$ac_cv_header_sys_clockctl_h" in
183 yesyes)
184    AC_DEFINE(HAVE_DROPROOT, ,[Can we drop root privileges?])
185    ;;
186esac
187
188AC_CACHE_CHECK(if we have linux capabilities (libcap), ac_linuxcaps,
189[AC_ARG_ENABLE(linuxcaps,
190   AC_HELP_STRING([--enable-linuxcaps], [s Use Linux capabilities for non-root clock control]),
191    [ans=$enableval],
192    [ans=no])
193ac_linuxcaps=$ans])
194# End of AC_CACHE_CHECK for linuxcaps
195AC_CHECK_HEADERS(sys/capability.h)
196AC_CHECK_HEADERS(sys/prctl.h)
197case "$ac_linuxcaps$ac_cv_header_sys_capability_h$ac_cv_header_sys_prctl_h" in
198 yesyesyes)
199    AC_DEFINE(HAVE_LINUX_CAPABILITIES, ,[Do we have Linux capabilities?])
200    AC_DEFINE(HAVE_DROPROOT, ,[Can we drop root privileges?])
201    LIBS="$LIBS -lcap"
202    ;;
203esac
204
205case "$build" in
206 $host)
207    ;;
208 *) case "$host" in
209     *-*-vxworks*)
210	# Quick and dirty sanity check
211	case "$VX_KERNEL" in
212	 '') AC_MSG_ERROR(Please follow the directions in html/build/hints/vxworks.html!)
213	    ;;
214	esac
215        CFLAGS="$CFLAGS -DSYS_VXWORKS"
216        ;;
217    esac
218    ;;
219esac
220
221dnl  we need to check for cross compile tools for vxWorks here
222AC_PROG_AWK
223AC_PROG_MAKE_SET
224
225rm -f conftest*
226
227case "$GCC" in
228 yes)
229    CFLAGS="$CFLAGS -Wall"
230    # CFLAGS="$CFLAGS -Wcast-align"
231    CFLAGS="$CFLAGS -Wcast-qual"
232    # CFLAGS="$CFLAGS -Wconversion"
233    # CFLAGS="$CFLAGS -Werror"
234    # CFLAGS="$CFLAGS -Wextra"
235    # CFLAGS="$CFLAGS -Wfloat-equal"
236    CFLAGS="$CFLAGS -Wmissing-prototypes"
237    CFLAGS="$CFLAGS -Wpointer-arith"
238    CFLAGS="$CFLAGS -Wshadow"
239    CFLAGS="$CFLAGS -Wstrict-prototypes"
240    # CFLAGS="$CFLAGS -Wtraditional"
241    # CFLAGS="$CFLAGS -Wwrite-strings"
242
243    ;;
244esac
245
246case "$host" in
247 *-next-nextstep3)
248    CFLAGS="$CFLAGS -posix"
249    ;;
250dnl This is currently commented out by bor. 
251dnl The new versions of ReliantUNIX round adjtime() interval down
252dnl to 1/100s (system tick). This makes tickadj actually useless.
253dnl So, I'd better not use additional flags.
254dnl I leave it here just in case anybody has better idea
255dnl  mips-sni-sysv4* )
256dnl     #
257dnl     # Add flags for 64 bit file access to enable tickadj to access /dev/kmem
258dnl     #
259dnl     if getconf _LFS_CFLAGS > /dev/null 2>&1 ; then
260dnl       CFLAGS="$CFLAGS `getconf _LFS_CFLAGS`"
261dnl     fi
262dnl     ;;
263esac
264
265ac_busted_vpath_in_make=no
266
267case "$build" in
268 *-*-irix6.1*)	# 64 bit only
269    # busted vpath?
270    ;;
271 *-*-irix6*)	# 6.2 (and later?)
272    ac_busted_vpath_in_make=yes
273    ;;
274 *-*-solaris2.5.1)
275    ac_busted_vpath_in_make=yes
276    ;;
277 *-*-unicosmp*)
278    ac_busted_vpath_in_make=yes
279    ;;
280esac
281
282case "$ac_busted_vpath_in_make$srcdir" in
283 no*) ;;
284 yes.) ;;
285 *) case "`${MAKE-make} -v -f /dev/null 2>/dev/null | sed -e 's/GNU Make version \(1-9.]*\).*/\1/' -e q`" in
286     '')
287	AC_MSG_ERROR(building outside of the main directory requires GNU make)
288	;;
289     *) ;;
290    esac
291    ;;
292esac
293
294AC_SUBST(CFLAGS)dnl
295AC_SUBST(LDFLAGS)dnl
296
297# HMS: From bunnylou/cowbird
298case "$host" in
299 alpha-dec-osf4.0)
300    AC_DISABLE_SHARED
301    ;;
302 *) # So far, the only shared library we might use is libopts.
303    # It's a small library - we might as well use a static version of it.
304    AC_DISABLE_SHARED
305    ;;
306esac
307
308AC_PROG_LIBTOOL
309AC_PROG_LN_S
310AC_PROG_GCC_TRADITIONAL
311AC_C_VOLATILE
312AC_ISC_POSIX
313AC_PATH_PROG(PATH_SH, sh)
314AC_PATH_PROG(PATH_PERL, perl)
315
316hs_ULONG_CONST
317
318case "$host" in
319 *-*-vxworks*)
320    ac_link="$ac_link $VX_KERNEL"
321    ;;
322esac
323
324AC_PROG_INSTALL
325
326case "$host" in
327 *-pc-cygwin*)
328    AC_CHECK_LIB(advapi32, main)
329    ;;
330esac
331
332AC_CHECK_FUNC(gethostent, ,
333  AC_CHECK_LIB(nsl, gethostent, , , $libxnet -lsocket))
334AC_CHECK_FUNC(openlog, , 
335  AC_CHECK_LIB(gen, openlog, , 
336  AC_CHECK_LIB(syslog, openlog, , , $libxnet -lsocket)))
337AC_CHECK_LIB(md5, MD5Init, , 
338  AC_CHECK_LIB(md, MD5Init))
339AC_CHECK_FUNCS(MD5Init)
340dnl HMS: What a hack...
341AC_CHECK_HEADERS(readline/history.h readline/readline.h)
342case "$ac_cv_header_readline_history_h$ac_cv_header_readline_readline_h" in
343 *no*) ;;
344 *) save_LIBS=$LIBS
345    LIBS=
346    # Ralf Wildenhues: either unset ... or cache READLINE_LIBS
347    unset ac_cv_lib_readline_readline
348    AC_CHECK_LIB(readline, readline, ,
349     AC_MSG_NOTICE([Trying again with -lcurses])
350     unset ac_cv_lib_readline_readline
351     AC_CHECK_LIB(readline, readline,
352      LIBS="-lreadline -lcurses $LIBS"
353      AC_DEFINE(HAVE_LIBREADLINE)
354      AC_DEFINE(HAVE_LIBCURSES, , [Do we have the curses library?]),
355      AC_CHECK_LIB(edit, readline,
356       LIBS="-ledit -lcurses"
357       AC_DEFINE(HAVE_LIBEDIT, , [Do we have the edit library?])
358       AC_DEFINE(HAVE_LIBCURSES, , [Do we have the curses library?])
359       , , -lcurses)
360      , -lcurses))
361    READLINE_LIBS=$LIBS
362    AC_SUBST(READLINE_LIBS)
363    LIBS=$save_LIBS
364    ;;
365esac
366
367dnl Digital UNIX V4.0 and Solaris 7 have POSIX.1c functions in -lrt
368dnl Solaris 2.6 only has -lposix4; in Solaris 7, this is a symlink to -lrt,
369dnl so only use one of them.  Linux (glibc-2.1.2 and -2.2.2, at least)
370dnl does Strange Things with extra processes using the Posix-compatibility
371dnl real-time library, so we don't want to use it.
372
373case "$host" in
374 *-*-linux*) ;;
375 *)
376    AC_CHECK_LIB(rt, sched_setscheduler, ,
377	AC_CHECK_LIB(posix4, sched_setscheduler))
378    ;;
379esac
380
381AC_CHECK_FUNC(setsockopt, ,
382	[AC_CHECK_LIB(socket, setsockopt)
383	 AC_CHECK_LIB(xnet, setsockopt)])
384
385AC_HEADER_STDC
386AC_CHECK_HEADERS(bstring.h)
387AC_CHECK_HEADER(dns_sd.h,
388	[AC_CHECK_LIB(dns_sd,
389			DNSServiceRegister,
390			[AC_DEFINE(HAVE_DNSREGISTRATION, 1,
391				[Use Rendezvous/DNS-SD registration])])])
392case "$ac_cv_lib_dns_sd_DNSServiceRegister" in
393 yes) LIBS="-ldns_sd $LIBS" ;;
394esac
395AC_CHECK_HEADERS(errno.h fcntl.h ieeefp.h math.h)
396
397# HMS: Lame, but fast.
398if test -f /etc/redhat-release
399then
400    :
401else
402    AC_CHECK_HEADERS(md5.h, [], [],
403[#if HAVE_SYS_TYPES_H
404#include <sys/types.h>
405#endif
406])
407fi
408AC_CHECK_HEADERS(memory.h netdb.h poll.h)
409AC_CHECK_HEADERS(sched.h sgtty.h stdlib.h string.h termio.h)
410AC_CHECK_HEADERS(termios.h timepps.h timex.h unistd.h)
411case "$host" in
412 *-*-aix*)
413    AC_CHECK_HEADERS(utmpx.h)
414    case "$ac_cv_header_utmpx_h" in
415     yes) ;;
416     *) AC_CHECK_HEADERS(utmp.h) ;;
417    esac
418    ;;
419 *) AC_CHECK_HEADERS(utmp.h utmpx.h) ;;
420esac
421AC_CHECK_HEADERS(arpa/nameser.h)
422AC_CHECK_HEADERS(sys/socket.h)
423AC_CHECK_HEADERS(net/if.h, [], [],
424[#if HAVE_SYS_SOCKET_H
425#include <sys/socket.h>
426#endif
427])
428AC_CHECK_HEADERS(net/if6.h)
429AC_CHECK_HEADERS(net/route.h, [], [], [
430#include <sys/types.h>
431#include <sys/socket.h>
432#include <net/if.h>
433])
434AC_CHECK_HEADERS(netinet/in_system.h netinet/in_systm.h)
435AC_CHECK_HEADERS(netinet/in.h)
436AC_CHECK_HEADERS(netinet/ip.h, [], [],
437[#if HAVE_SYS_TYPES_H
438#include <sys/types.h>
439#endif
440#if HAVE_NETINET_IN_H
441#include <netinet/in.h>
442#endif
443#if HAVE_NETINET_IN_SYSTM_H
444#include <netinet/in_systm.h>
445#endif
446])
447AC_CHECK_HEADERS(netinfo/ni.h, [AC_DEFINE(HAVE_NETINFO, 1, [NetInfo support?])])
448AC_CHECK_HEADERS(sun/audioio.h sys/audioio.h)
449dnl AC_CHECK_HEADERS(sys/chudefs.h)
450AC_CHECK_HEADERS(sys/clkdefs.h sys/file.h)
451case "$host" in
452 *-*-sunos4*) ;;
453 *) AC_CHECK_HEADERS(sys/ioctl.h)
454    ;;
455esac
456AC_CHECK_HEADERS(sys/ipc.h)
457AC_CHECK_HEADERS(sys/lock.h sys/mman.h sys/modem.h sys/param.h sys/ppsclock.h)
458# HMS: Check sys/proc.h and sys/resource.h after some others
459AC_CHECK_HEADERS(sys/ppstime.h)
460case "$ac_cv_header_sched_h" in
461 yes) ;;
462 *) AC_CHECK_HEADERS(sys/sched.h) ;;
463esac
464case "$host" in
465 *-*-sco*)
466    AC_CHECK_HEADERS(sys/sio.h)
467    ;;
468esac
469# HMS: Check sys/shm.h after some others
470AC_CHECK_HEADERS(sys/select.h sys/signal.h sys/sockio.h)
471# HMS: Checked sys/socket.h earlier
472case "$host" in
473 *-*-netbsd*) ;;
474 *) AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h)
475    ;;
476esac
477AC_CHECK_HEADERS(sys/stat.h sys/stream.h)
478AC_CHECK_HEADERS(sys/stropts.h sys/sysctl.h sys/syssgi.h sys/systune.h)
479AC_CHECK_HEADERS(sys/termios.h sys/time.h sys/signal.h)
480AC_EGREP_CPP(yes,
481[#if HAVE_SYS_TIME_H
482# include <sys/time.h>
483#endif
484#if HAVE_ERRNO_H
485# include <errno.h>
486#endif
487#include <sys/timepps.h>
488#ifdef PPS_API_VERS_1
489yes
490#endif
491], [AC_CHECK_HEADERS(sys/timepps.h, [], [],
492[#if HAVE_SYS_TIME_H
493# include <sys/time.h>
494#endif
495#if HAVE_ERRNO_H
496# include <errno.h>
497#endif
498])
499])
500AC_CHECK_HEADERS(sys/timers.h sys/tpro.h sys/types.h sys/wait.h)
501AC_HEADER_TIME
502case "$host" in
503*-convex-*)
504  AC_CHECK_HEADERS(/sys/sync/queue.h /sys/sync/sema.h)
505  ;;
506*-*-bsdi*)
507  AC_CHECK_HEADERS(machine/inline.h sys/pcl720.h sys/i8253.h)
508  ;;
509esac
510
511case "$host" in
512 *-*-linux*)
513    AC_CHECK_FUNCS(__adjtimex __ntp_gettime)
514    ;;
515esac
516case "$ac_cv_func___adjtimex" in
517 yes) ;;
518 *)
519    AC_CHECK_LIB(elf, nlist)	dnl Only needed for tickadj...
520    dnl AC_CHECK_LIB(kvm, main, , , -lelf)
521    AC_CHECK_LIB(kvm, main)		dnl We already know about -lelf here...
522    AC_CHECK_LIB(ld, nlist)
523    AC_CHECK_LIB(mld, nlist)
524    AC_CHECK_HEADER(nlist.h,
525    [AC_DEFINE(NLIST_STRUCT, 1, [nlist stuff])
526     AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un,
527      [AC_TRY_COMPILE([#include <nlist.h>],
528       [struct nlist n; n.n_un.n_name = 0;],
529       ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)])
530     if test $ac_cv_struct_nlist_n_un = yes; then
531       AC_DEFINE(NLIST_NAME_UNION, 1, [does struct nlist use a name union?])
532     fi
533    ])dnl
534    ;;
535esac
536
537dnl AC_CHECK_HEADERS(net/if.h, [], [],
538dnl [#if HAVE_SYS_TYPES_H
539dnl # include <sys/types.h>
540dnl #endif
541dnl #if HAVE_SYS_SOCKET_H
542dnl # include <sys/socket.h>
543dnl #endif
544dnl ])
545
546AC_CHECK_HEADERS(sys/proc.h, [], [],
547[#if HAVE_SYS_TYPES_H
548# include <sys/types.h>
549#endif
550#if HAVE_SYS_TIME_H
551# include <sys/time.h>
552#endif
553])
554
555AC_CHECK_HEADERS(sys/resource.h, [], [],
556[#if HAVE_SYS_TIME_H
557# include <sys/time.h>
558#endif
559])
560
561AC_CHECK_HEADERS(sys/shm.h, [], [],
562[#if HAVE_SYS_TYPES_H
563# include <sys/types.h>
564#endif
565#if HAVE_SYS_IPC_H
566# include <sys/ipc.h>
567#endif
568])
569
570AC_CHECK_HEADERS(sys/timex.h, [], [],
571[#if HAVE_SYS_TIME_H
572# include <sys/time.h>
573#endif
574])
575
576AC_CHECK_HEADERS(resolv.h, [], [],
577[#if HAVE_SYS_TYPES_H
578#include <sys/types.h>
579#endif
580#if HAVE_NETINET_IN_H
581#include <netinet/in.h>
582#endif
583#if HAVE_ARPA_NAMESER_H
584#include <arpa/nameser.h>
585#endif
586])
587
588AC_CACHE_CHECK(for basic volatile support, ac_cv_c_volatile,
589[AC_TRY_COMPILE([],[
590volatile int x;],
591	ac_cv_c_volatile=yes,
592	ac_cv_c_volatile=no)
593])
594case "$ac_cv_c_volatile" in
595 yes)
596    ;;
597 *) AC_DEFINE(volatile, , [Does the compiler like "volatile"?])
598    ;;
599esac
600
601# AM_C_PROTOTYPES gives us ansi2knr
602case "$build" in
603 *-*-solaris2*)
604    # Assume that solaris2 is Ansi C...
605    ;;
606 *)
607    AM_C_PROTOTYPES
608    ;;
609esac
610AC_CACHE_CHECK(if C compiler permits function prototypes, ac_cv_have_prototypes,
611[AC_TRY_COMPILE([
612extern int foo (short);
613int foo(short i) { return i; }],[
614int i;], ac_cv_have_prototypes=yes, ac_cv_have_prototypes=no)
615])
616if test "$ac_cv_have_prototypes" = yes; then
617  AC_DEFINE(HAVE_PROTOTYPES, 1, [Are function prototypes OK?])
618fi
619
620AC_C_CONST
621AC_C_BIGENDIAN
622AC_TYPE_SIGNAL
623AC_TYPE_OFF_T
624AC_TYPE_SIZE_T
625AC_CHECK_TYPE(time_t, long)
626AC_CHECK_SIZEOF(time_t)
627AC_CHECK_TYPES(uintptr_t)
628 
629AH_VERBATIM([TYPEDEF_UINTPTR_T],
630[/* Provide a typedef for uintptr_t? */
631#ifndef HAVE_UINTPTR_T
632typedef unsigned int	uintptr_t;
633#define HAVE_UINTPTR_T	1
634#endif])
635
636AC_STRUCT_TM
637
638AC_CACHE_CHECK([for u_int8_t], ac_cv_type_u_int8_t,
639[AC_TRY_COMPILE([#include <sys/types.h>],
640	[u_int8_t len = 42; return 0;],
641	ac_cv_type_u_int8_t=yes,
642	ac_cv_type_u_int8_t=no)
643])
644if test $ac_cv_type_u_int8_t = yes; then
645	AC_DEFINE(HAVE_TYPE_U_INT8_T, 1, [Does u_int8_t exist?])
646fi
647
648AC_CACHE_CHECK([for u_int64_t], ac_cv_type_u_int64_t,
649[AC_TRY_COMPILE([#include <sys/types.h>],
650	[u_int64_t len = 42; return 0;],
651	ac_cv_type_u_int64_t=yes,
652	ac_cv_type_u_int64_t=no)
653])
654if test $ac_cv_type_u_int64_t = yes; then
655	AC_DEFINE(HAVE_TYPE_U_INT64_T, 1, [Does u_int64_t exist?])
656fi
657
658#
659# Look for in_port_t.
660#
661AC_MSG_CHECKING(for in_port_t)
662AC_TRY_COMPILE([
663#include <sys/types.h>
664#include <netinet/in.h>],
665[in_port_t port = 25; return (0);],
666	[AC_MSG_RESULT(yes)
667	],
668        [AC_MSG_RESULT(no)
669	AC_DEFINE(ISC_PLATFORM_NEEDPORTT, 1, [Do we need our own in_port_t?])
670	])
671
672AC_CACHE_CHECK(for a fallback value for HZ, ac_cv_var_default_hz,
673[ac_cv_var_default_hz=100
674case "$host" in
675 alpha*-dec-osf4*|alpha*-dec-osf5*)
676    ac_cv_var_default_hz=1024
677    ;;
678 mips-dec-ultrix4*)
679    ac_cv_var_default_hz=256
680    ;;
681esac])
682AC_DEFINE_UNQUOTED(DEFAULT_HZ, $ac_cv_var_default_hz, [What is the fallback value for HZ?])
683
684AC_CACHE_CHECK(if we need to override the system's value for HZ, ac_cv_var_override_hz,
685[ac_cv_var_override_hz=no
686case "$host" in
687 alpha*-dec-osf4*|alpha*-dec-osf5*)
688    ac_cv_var_override_hz=yes
689    ;;
690 mips-dec-ultrix4*)
691    ac_cv_var_override_hz=yes
692    ;;
693 *-*-freebsd*)
694    ac_cv_var_override_hz=yes
695    ;;
696 *-*-sunos4*)
697    ac_cv_var_override_hz=yes
698    ;;
699esac])
700case "$ac_cv_var_override_hz" in
701 yes)
702    AC_DEFINE(OVERRIDE_HZ, 1, [Do we need to override the system's idea of HZ?])
703    ;;
704esac
705
706dnl AC_CACHE_CHECK(ut_host in struct utmp, ac_cv_func_ut_host_in_utmp,
707dnl [AC_TRY_LINK([#include <sys/types.h>
708dnl #include <utmp.h>], [struct utmp ut; ut.ut_host;],
709dnl ac_cv_func_ut_host_in_utmp=yes, ac_cv_func_ut_host_in_utmp=no)])
710dnl if test $su_cv_func_ut_host_in_utmp = yes; then
711dnl   AC_DEFINE(HAVE_UT_HOST)
712dnl fi
713
714dnl AC_MSG_CHECKING(if we can get the system boot time)
715dnl AC_CACHE_VAL(su_cv_have_boot_time,
716dnl [AC_EGREP_CPP(yes,
717dnl [#ifdef HAVE_UTMPX_H
718dnl #include <utmpx.h>
719dnl #else
720dnl #include <utmp.h>
721dnl #endif
722dnl #ifdef BOOT_TIME
723dnl yes
724dnl #endif
725dnl ], su_cv_have_boot_time=yes, su_cv_have_boot_time=no)])
726dnl AC_MSG_RESULT($su_cv_have_boot_time)
727
728AC_CACHE_CHECK(for struct rt_msghdr, ac_cv_struct_rt_msghdr,
729[AC_TRY_COMPILE([
730#include <sys/types.h>
731#include <sys/socket.h>
732#include <net/if.h>
733#include <net/route.h>],
734[struct rt_msghdr p;],
735	ac_cv_struct_rt_msghdr=yes,
736	ac_cv_struct_rt_msghdr=no)
737])
738if test $ac_cv_struct_rt_msghdr = yes; then
739    AC_DEFINE(HAS_ROUTING_SOCKET, 1, [Do we have a routing socket (struct rt_msghdr)?])
740fi
741
742AC_CACHE_CHECK(
743  struct sigaction for sa_sigaction,
744  ac_cv_struct_sigaction_has_sa_sigaction,
745  [
746    AC_TRY_COMPILE(
747      [#include <signal.h>],
748      [struct sigaction act; act.sa_sigaction = 0;],
749      ac_cv_struct_sigaction_has_sa_sigaction=yes,
750      ac_cv_struct_sigaction_has_sa_sigaction=no
751    )
752  ]
753)
754if test $ac_cv_struct_sigaction_has_sa_sigaction = yes; then
755  AC_DEFINE(HAVE_SA_SIGACTION_IN_STRUCT_SIGACTION, 1, [Obvious...])
756fi
757
758AC_CACHE_CHECK(for struct ppsclockev, ac_cv_struct_ppsclockev,
759[AC_TRY_COMPILE([
760#include <sys/types.h>
761#ifdef HAVE_SYS_TERMIOS_H
762# include <sys/termios.h>
763#endif
764#ifdef HAVE_SYS_TIME_H
765# include <sys/time.h>
766#endif
767#ifdef HAVE_SYS_PPSCLOCK_H
768# include <sys/ppsclock.h>
769#endif],[
770extern struct ppsclockev *pce;
771return pce->serial;],
772	ac_cv_struct_ppsclockev=yes,
773	ac_cv_struct_ppsclockev=no)
774])
775if test $ac_cv_struct_ppsclockev = yes; then
776    AC_DEFINE(HAVE_STRUCT_PPSCLOCKEV, 1, [Does a system header define struct ppsclockev?])
777fi
778
779AC_CACHE_CHECK(struct sockaddr for sa_len, ac_cv_struct_sockaddr_has_sa_len,
780[AC_TRY_COMPILE([
781#include <sys/types.h>
782#include <sys/socket.h>],[
783extern struct sockaddr *ps;
784return ps->sa_len;],
785	ac_cv_struct_sockaddr_has_sa_len=yes,
786	ac_cv_struct_sockaddr_has_sa_len=no)
787])
788if test $ac_cv_struct_sockaddr_has_sa_len = yes; then
789    AC_DEFINE(HAVE_SA_LEN_IN_STRUCT_SOCKADDR, 1, [Should be obvious...])
790fi
791
792AC_CACHE_CHECK(for struct sockaddr_storage, ac_cv_struct_sockaddr_storage,
793[AC_TRY_COMPILE([
794#include <sys/types.h>
795#include <sys/socket.h>
796#include <netinet/in.h>
797],[
798struct sockaddr_storage n;],
799	ac_cv_struct_sockaddr_storage=yes,
800	ac_cv_struct_sockaddr_storage=no)
801])
802if test $ac_cv_struct_sockaddr_storage = yes; then
803    AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Does a system header define struct sockaddr_storage?])
804fi
805
806AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
807		ac_cv_have_ss_family_in_struct_ss, [
808	AC_TRY_COMPILE(
809		[
810#include <sys/types.h>
811#include <sys/socket.h>
812		],
813		[ struct sockaddr_storage s; s.ss_family = 1; ],
814		[ ac_cv_have_ss_family_in_struct_ss="yes" ],
815		[ ac_cv_have_ss_family_in_struct_ss="no" ],
816	)
817])
818if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
819	AC_DEFINE(HAVE_SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have ss_family?])
820else
821    # Hack around a problem...
822    # HMS: This is $host because we need the -D if we are building *for* it.
823    # HMS: 061029: Now that we separate the ss_* checks this is causing
824    # a problem - disable it until we get to the bottom of it.
825    case "$host" in
826     XXX*-*-hpux11.11) CPPFLAGS="$CPPFLAGS -D_NETINET_IN6_H"
827	;;
828    esac
829fi
830
831AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
832		ac_cv_have___ss_family_in_struct_ss, [
833	AC_TRY_COMPILE(
834		[
835#include <sys/types.h>
836#include <sys/socket.h>
837		],
838		[ struct sockaddr_storage s; s.__ss_family = 1; ],
839		[ ac_cv_have___ss_family_in_struct_ss="yes" ],
840		[ ac_cv_have___ss_family_in_struct_ss="no" ]
841	)
842])
843if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
844	AC_DEFINE(HAVE___SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have __ss_family?])
845fi
846
847AH_VERBATIM([X_HAVE_SS_FAMILY_IN_SS],
848[/* Handle ss_family */
849#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
850# define ss_family __ss_family
851#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */])
852
853AC_CACHE_CHECK([for ss_len field in struct sockaddr_storage],
854		ac_cv_have_ss_len_in_struct_ss, [
855	AC_TRY_COMPILE(
856		[
857#include <sys/types.h>
858#include <sys/socket.h>
859		],
860		[ struct sockaddr_storage s; s.ss_len = 1; ],
861		[ ac_cv_have_ss_len_in_struct_ss="yes" ],
862		[ ac_cv_have_ss_len_in_struct_ss="no" ],
863	)
864])
865if test "x$ac_cv_have_ss_len_in_struct_ss" = "xyes" ; then
866	AC_DEFINE(HAVE_SS_LEN_IN_SS, 1, [Does struct sockaddr_storage have ss_len?])
867fi
868
869AC_CACHE_CHECK([for __ss_len field in struct sockaddr_storage],
870		ac_cv_have___ss_len_in_struct_ss, [
871	AC_TRY_COMPILE(
872		[
873#include <sys/types.h>
874#include <sys/socket.h>
875		],
876		[ struct sockaddr_storage s; s.__ss_len = 1; ],
877		[ ac_cv_have___ss_len_in_struct_ss="yes" ],
878		[ ac_cv_have___ss_len_in_struct_ss="no" ]
879	)
880])
881if test "x$ac_cv_have___ss_len_in_struct_ss" = "xyes" ; then
882	AC_DEFINE(HAVE___SS_LEN_IN_SS, 1, [Does struct sockaddr_storage have __ss_len?])
883fi
884
885AH_VERBATIM([X_HAVE_SS_LEN_IN_SS],
886[/* Handle ss_len */
887#if !defined(HAVE_SS_LEN_IN_SS) && defined(HAVE___SS_LEN_IN_SS)
888# define ss_len __ss_len
889#endif /* !defined(HAVE_SS_LEN_IN_SS) && defined(HAVE_SA_LEN_IN_SS) */])
890
891case "$ac_cv_header_machine_soundcard_h$ac_cv_header_sys_soundcard_h" in
892  *yes*)
893    AC_CACHE_CHECK([for struct snd_size], ac_cv_struct_snd_size,
894[AC_TRY_COMPILE([
895#ifdef HAVE_MACHINE_SOUNDCARD_H
896# include <machine/soundcard.h>
897#endif
898#ifdef HAVE_SYS_SOUNDCARD_H
899# include <sys/soundcard.h>
900#endif],[
901extern struct snd_size *ss;
902return ss->rec_size;],
903    ac_cv_struct_snd_size=yes,
904    ac_cv_struct_snd_size=no)
905])
906    case "$ac_cv_struct_snd_size" in
907     yes) AC_DEFINE(HAVE_STRUCT_SND_SIZE, 1,[Do we have struct snd_size?]) ;;
908    esac
909    ;;
910esac
911
912AC_CACHE_CHECK(struct clockinfo for hz, ac_cv_struct_clockinfo_has_hz,
913[AC_TRY_COMPILE([
914#include <sys/time.h>],[
915extern struct clockinfo *pc;
916return pc->hz;],
917	ac_cv_struct_clockinfo_has_hz=yes,
918	ac_cv_struct_clockinfo_has_hz=no)
919])
920if test $ac_cv_struct_clockinfo_has_hz = yes; then
921    AC_DEFINE(HAVE_HZ_IN_STRUCT_CLOCKINFO, 1, [Obvious...])
922fi
923
924AC_CACHE_CHECK(struct clockinfo for tickadj, ac_cv_struct_clockinfo_has_tickadj,
925[AC_TRY_COMPILE([
926#include <sys/time.h>],[
927extern struct clockinfo *pc;
928return pc->tickadj;],
929	ac_cv_struct_clockinfo_has_tickadj=yes,
930	ac_cv_struct_clockinfo_has_tickadj=no)
931])
932if test $ac_cv_struct_clockinfo_has_tickadj = yes; then
933    AC_DEFINE(HAVE_TICKADJ_IN_STRUCT_CLOCKINFO, 1, [Obvious...])
934fi
935
936AC_CACHE_CHECK([for struct timespec], ac_cv_struct_timespec,
937[AC_TRY_COMPILE([
938#include <sys/time.h>
939/* Under SunOS, timespec is in sys/timepps.h, which needs errno.h and FRAC */
940#ifdef HAVE_ERRNO_H
941# include <errno.h>
942#endif
943#ifdef HAVE_SYS_TIMEPPS_H
944# define FRAC 4294967296
945# include <sys/timepps.h>
946#endif],
947[struct timespec n;],
948ac_cv_struct_timespec=yes, ac_cv_struct_timespec=no)])
949if test $ac_cv_struct_timespec = yes; then
950  AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1, [Do we have struct timespec?])
951fi
952
953AC_CACHE_CHECK([for struct ntptimeval], ac_cv_struct_ntptimeval,
954[AC_TRY_COMPILE([
955#include <sys/time.h>
956#include <sys/timex.h>],
957[struct ntptimeval n;],
958ac_cv_struct_ntptimeval=yes, ac_cv_struct_ntptimeval=no)])
959if test $ac_cv_struct_ntptimeval = yes; then
960  AC_DEFINE(HAVE_STRUCT_NTPTIMEVAL, 1, [Do we have struct ntptimeval?])
961fi
962
963AC_CHECK_MEMBERS([struct ntptimeval.time.tv_nsec], , ,
964[#ifdef HAVE_SYS_TIME_H
965#include <sys/time.h>
966#else
967# ifdef HAVE_TIME_H
968# include <time.h>
969# endif
970#endif
971#ifdef HAVE_SYS_TIMEX_H
972#include <sys/timex.h>
973#else
974# ifdef HAVE_TIMEX_H
975# include <timex.h>
976# endif
977#endif])
978
979AC_C_INLINE
980AC_C_CHAR_UNSIGNED		dnl CROSS_COMPILE?
981AC_CHECK_SIZEOF(signed char)
982AC_CHECK_SIZEOF(int)
983AC_CHECK_SIZEOF(long)
984
985AC_CHECK_TYPES([s_char])
986case "$ac_cv_c_char_unsigned$ac_cv_sizeof_signed_char$ac_cv_type_s_char" in
987 *yes)
988    # We have a typedef for s_char.  Might as well believe it...
989    ;;
990 no0no)
991    # We have signed chars, can't say 'signed char', no s_char typedef.
992    AC_DEFINE(NEED_S_CHAR_TYPEDEF, 1, [Do we need an s_char typedef?])
993    ;;
994 no1no)
995    # We have signed chars, can say 'signed char', no s_char typedef.
996    AC_DEFINE(NEED_S_CHAR_TYPEDEF)
997    ;;
998 yes0no)
999    # We have unsigned chars, can't say 'signed char', no s_char typedef.
1000    AC_MSG_ERROR(No way to specify a signed character!)
1001    ;;
1002 yes1no)
1003    # We have unsigned chars, can say 'signed char', no s_char typedef.
1004    AC_DEFINE(NEED_S_CHAR_TYPEDEF)
1005    ;;
1006esac
1007AC_TYPE_UID_T
1008
1009case "$host" in
1010 *-*-aix[[45]]*)
1011	# (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub
1012	# (returning ENOSYS).  I didn't check 4.2.  If, in the future,
1013	# IBM pulls its thumbs out long enough to implement clock_settime,
1014	# this conditional will need to change.  Maybe use AC_TRY_RUN
1015	# instead to try to set the time to itself and check errno.
1016    ;;
1017 *) AC_CHECK_FUNCS(clock_gettime clock_settime)
1018    ;;
1019esac
1020AC_CHECK_FUNCS(daemon)
1021AC_CHECK_FUNCS(finite, ,
1022  [AC_CHECK_FUNCS(isfinite, ,
1023    [AC_MSG_CHECKING(for isfinite with <math.h>)
1024    _libs=$LIBS
1025    LIBS="$LIBS -lm"
1026    AC_TRY_LINK([#include <math.h>], [float f = 0.0; isfinite(f)],
1027      [AC_MSG_RESULT(yes)
1028      AC_DEFINE(HAVE_ISFINITE)],
1029      AC_MSG_RESULT(no))
1030    LIBS=$_libs])])
1031AC_CHECK_FUNCS(getbootfile getclock getdtablesize)
1032
1033AC_ARG_ENABLE(getifaddrs,
1034    AC_HELP_STRING([--enable-getifaddrs],
1035	[s Enable the use of getifaddrs() [[yes|no|glibc]].
1036glibc: Use getifaddrs() in glibc if you know it supports IPv6.]),
1037    want_getifaddrs="$enableval",  want_getifaddrs="yes")
1038
1039case $want_getifaddrs in
1040yes|glibc)
1041#
1042# Do we have getifaddrs() ?
1043#
1044case $host in
1045*-linux*)
1046	# Some recent versions of glibc support getifaddrs() which does not
1047	# provide AF_INET6 addresses while the function provided by the USAGI
1048	# project handles the AF_INET6 case correctly.  We need to avoid
1049	# using the former but prefer the latter unless overridden by
1050	# --enable-getifaddrs=glibc.
1051	if test $want_getifaddrs = glibc
1052	then
1053		AC_CHECK_FUNCS(getifaddrs)
1054	else
1055		save_LIBS="$LIBS"
1056		LIBS="-L/usr/local/v6/lib $LIBS"
1057		AC_CHECK_LIB(inet6, getifaddrs,
1058			LIBS="$LIBS -linet6"
1059			AC_DEFINE(HAVE_GETIFADDRS),
1060			LIBS=${save_LIBS})
1061	fi
1062	;;
1063*)
1064	AC_CHECK_FUNCS(getifaddrs)
1065	;;
1066esac
1067;;
1068no)
1069;;
1070esac
1071
1072AC_MSG_CHECKING([type of socklen arg for getsockname()])
1073AC_CACHE_VAL(ac_cv_func_getsockname_arg2,dnl
1074[AC_CACHE_VAL(ac_cv_func_getsockname_socklen_type,dnl
1075 [for ac_cv_func_getsockname_arg2 in 'struct sockaddr *' 'void *'; do
1076  for ac_cv_func_getsockname_socklen_type in 'socklen_t' 'size_t' 'unsigned int' 'int'; do
1077   AC_TRY_COMPILE(dnl
1078[#ifdef HAVE_SYS_TYPES_H
1079#include <sys/types.h>
1080#endif
1081#ifdef HAVE_SYS_SOCKET_H
1082#include <sys/socket.h>
1083#endif
1084extern getsockname (int, $ac_cv_func_getsockname_arg2, $ac_cv_func_getsockname_socklen_type *);],,dnl
1085    [ac_not_found=no ; break 2], ac_not_found=yes)
1086   done
1087  done
1088 ])dnl AC_CACHE_VAL
1089])dnl AC_CACHE_VAL
1090if test "$ac_not_found" = yes; then
1091 ac_cv_func_getsockname_socklen_type='socklen_t'
1092fi
1093AC_MSG_RESULT([$ac_cv_func_getsockname_socklen_type])
1094AC_DEFINE_UNQUOTED([GETSOCKNAME_SOCKLEN_TYPE],
1095		   $ac_cv_func_getsockname_socklen_type,
1096		   [What is getsockname()'s socklen type?])
1097
1098AC_CHECK_FUNCS(getrusage)
1099AC_CHECK_FUNC(gettimeofday, ,[
1100case "$host" in
1101  *-*-mpeix*) ac_cv_func_gettimeofday=yes
1102    ;;
1103esac])
1104case "$host" in
1105 *-pc-cygwin*)
1106    ;;
1107 *) AC_CHECK_FUNCS(getuid)
1108    ;;
1109esac
1110AC_CHECK_FUNCS(hstrerror)
1111
1112#
1113# Check for if_nametoindex() for IPv6 scoped addresses support
1114#
1115AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
1116		ac_cv_have_if_nametoindex=no)
1117case $ac_cv_have_if_nametoindex in
1118 no)
1119	case "$host" in
1120  	*-hp-hpux*)
1121  		AC_CHECK_LIB(ipv6, if_nametoindex,
1122				ac_cv_have_if_nametoindex=yes
1123				LIBS="-lipv6 $LIBS",)
1124  	;;
1125	esac
1126esac
1127case $ac_cv_have_if_nametoindex in
1128 yes)
1129	AC_DEFINE(ISC_PLATFORM_HAVEIFNAMETOINDEX, 1, [ISC: do we have if_nametoindex()?])
1130	;;
1131esac
1132
1133AC_CHECK_FUNC(inet_ntop, [], [AC_DEFINE(ISC_PLATFORM_NEEDNTOP, 1, [ISC: provide inet_ntop()])])
1134AC_CHECK_FUNC(inet_pton, [], [AC_DEFINE(ISC_PLATFORM_NEEDPTON, 1, [ISC: provide inet_pton()])])
1135AC_CHECK_FUNC(inet_aton, [], [AC_DEFINE(ISC_PLATFORM_NEEDATON, 1, [ISC: provide inet_aton()])])
1136AC_CHECK_FUNCS(K_open kvm_open memcpy memmove memset)
1137case "$host" in
1138 *-*-sco3.2v5.0.*)
1139    # Just stubs.  Idiots.
1140    ;;
1141 *) AC_CHECK_FUNCS(mkstemp)
1142    ;;
1143esac
1144AC_CHECK_FUNCS(mktime)
1145case "$host" in
1146 *-*-aix[[45]]*)
1147    # Just a stub.  Idiots.
1148    ;;
1149 *-*-irix[[45]]*)
1150    # Just a stub in "old" Irix.  Idiots.
1151    ;;
1152 *-*-linux*)
1153    # there, but more trouble than it is worth for now (resolver problems)
1154    ;;
1155 *-*-qnx*)
1156    # Apparently there but not working in QNX.  Idiots?
1157    ;;
1158 *-*-sco3.2v5.0.*)
1159    # Just a stub.  Idiots.
1160    ;;
1161 alpha*-dec-osf4*|alpha*-dec-osf5*)
1162    # mlockall is there, as a #define calling memlk via <sys/mman.h>
1163    # Not easy to test for - cheat.
1164    AC_CHECK_FUNCS(memlk, [ac_cv_func_mlockall='yes'])
1165    AC_CHECK_FUNCS(mlockall)
1166    ;;
1167 *) AC_CHECK_FUNCS(mlockall)
1168    ;;
1169esac
1170AC_CHECK_FUNCS(nice nlist)
1171case "$host" in
1172 *-*-solaris2.6)
1173    # Broken...
1174    ;;
1175 *) AC_CHECK_FUNCS(ntp_adjtime ntp_gettime)
1176    ;;
1177esac
1178AC_CHECK_FUNCS(plock pututline pututxline readlink recvmsg rtprio)
1179case "$host" in
1180 *-*-aix[[45]]*)
1181    # Just a stub in AIX 4.  Idiots.
1182    ;;
1183 *-*-solaris2.5*)
1184    # Just stubs in solaris2.5.  Idiots.
1185    ;;
1186 *) AC_CHECK_FUNCS(sched_setscheduler)
1187    ;;
1188esac
1189AC_CHECK_FUNCS(setlinebuf setpgid setpriority setsid)
1190AC_CHECK_FUNCS(setrlimit)
1191AC_CHECK_FUNCS(settimeofday, ,[
1192case "$host" in
1193  *-*-mpeix*) ac_cv_func_settimeofday=yes
1194    ;;
1195esac])
1196AC_CHECK_FUNCS(setvbuf sigaction)
1197AC_CHECK_FUNCS(sigvec sigset sigsuspend stime strchr sysconf sysctl)
1198AC_CHECK_FUNCS(snprintf strdup strerror strstr)
1199AC_CHECK_FUNCS(timegm)
1200case "$host" in
1201 *-*-aix[[45]]*)
1202    # Just stubs.  Idiots.
1203    ;;
1204 *-*-netbsd1*)
1205    # Just stubs.  Idiots.
1206    ;;
1207 *-*-netbsdelf1*)
1208    # Just stubs.  Idiots.
1209    ;;
1210 *-*-openbsd*)
1211    # Just stubs.  Idiots.
1212    ;;
1213 *) AC_CHECK_FUNCS(timer_create timer_settime)
1214    ;;
1215esac
1216case "$host" in
1217 *-pc-cygwin*)
1218    # I have no idea...
1219    ;;
1220 *) AC_CHECK_FUNCS(umask)
1221    ;;
1222esac
1223AC_CHECK_FUNCS(uname updwtmp updwtmpx vsnprintf vsprintf)
1224
1225###
1226
1227# http://bugs.ntp.isc.org/737
1228case "$ac_cv_func_recvmsg" in
1229 yes)
1230 AC_MSG_CHECKING([if we need extra help to define struct iovec])
1231 AC_CACHE_VAL(ac_cv_struct_iovec_help,dnl
1232 [for ac_cv_struct_iovec_help in '0' '1'; do
1233   AC_TRY_COMPILE(dnl
1234[#ifdef HAVE_SYS_TYPES_H
1235#include <sys/types.h>
1236#endif
1237#ifdef HAVE_SYS_SOCKET_H
1238#include <sys/socket.h>
1239#endif
1240#if $ac_cv_struct_iovec_help
1241#include <sys/uio.h>
1242#endif
1243
1244void foo();
1245void foo() {
1246	ssize_t x;
1247	int s = 0;
1248	struct iovec iov;
1249	struct msghdr mh;
1250	int flags = 0;
1251
1252	mh.msg_iov = &iov;
1253	x = recvmsg(s, &mh, flags);
1254}],,dnl
1255  [ac_worked=yes ; break 1], ac_worked=no)
1256  done
1257])dnl AC_CACHE_VAL
1258    case "$ac_worked$ac_cv_struct_iovec_help" in
1259     yes1)
1260	AC_DEFINE(HAVE_SYS_UIO_H, 1, [Use sys/uio.h for struct iovec help])
1261	ans=yes
1262	;;
1263     *) ans=no
1264    esac
1265    AC_MSG_RESULT([$ans])
1266    ;;
1267esac
1268
1269case "$host" in
1270 *-*-sunos4*)
1271    AC_DEFINE(SPRINTF_CHAR, 1, [*s*printf() functions are char*])
1272    ;;
1273esac
1274
1275AC_CACHE_CHECK(number of arguments to gettimeofday(), ac_cv_func_Xettimeofday_nargs,
1276[AC_TRY_COMPILE([#include <sys/time.h>],[
1277gettimeofday((struct timeval*)0,(struct timezone*)0);
1278settimeofday((struct timeval*)0,(struct timezone*)0);
1279],
1280	ac_cv_func_Xettimeofday_nargs=2, ac_cv_func_Xettimeofday_nargs=1)
1281])
1282if test $ac_cv_func_Xettimeofday_nargs = 1; then
1283	AC_DEFINE(SYSV_TIMEOFDAY, 1, [Does Xettimeofday take 1 arg?])
1284fi
1285
1286AC_CACHE_CHECK(number of arguments taken by setpgrp(), ac_cv_func_setpgrp_nargs,
1287[AC_TRY_COMPILE([
1288#ifdef HAVE_SYS_TYPES_H
1289# include <sys/types.h>
1290#endif
1291#ifdef HAVE_UNISTD_H
1292# include <unistd.h>
1293#endif
1294],[setpgrp(0,0);],
1295        ac_cv_func_setpgrp_nargs=2, ac_cv_func_setpgrp_nargs=0)
1296])
1297if test $ac_cv_func_setpgrp_nargs = 0; then
1298        AC_DEFINE(HAVE_SETPGRP_0, 1, [define if setpgrp takes 0 arguments])
1299fi
1300
1301save_CFLAGS=$CFLAGS
1302CFLAGS="$CFLAGS -I$srcdir/include"
1303
1304AC_CACHE_CHECK(argument pointer type of qsort()'s compare function and base,
1305ac_cv_func_qsort_argtype,
1306[AC_TRY_COMPILE([
1307#include "l_stdlib.h"
1308
1309#ifdef HAVE_PROTOTYPES
1310#define P(x) x
1311#else
1312#define P(x) ()
1313#endif
1314
1315extern void *base;
1316extern sortfunc P((const void *, const void *));
1317int sortfunc(a, b)
1318  const void *a;
1319  const void *b; { return 0; }
1320],[
1321qsort(base, 2, sizeof(char *), sortfunc);
1322],
1323	ac_cv_func_qsort_argtype=void, ac_cv_func_qsort_argtype=char)
1324])
1325case "$ac_cv_func_qsort_argtype" in
1326 void)
1327    AC_DEFINE(QSORT_USES_VOID_P, 1, [Does qsort expect to work on "void *" stuff?])
1328    ;;
1329esac
1330
1331CFLAGS=$save_CFLAGS
1332
1333AC_CACHE_CHECK(if we need to declare 'errno', ac_cv_decl_errno,
1334[AC_TRY_COMPILE([#ifdef HAVE_ERRNO_H
1335#include <errno.h>
1336#endif],
1337  [errno = 0;],
1338  ac_cv_decl_errno=no, ac_cv_decl_errno=yes)])
1339case "$ac_cv_decl_errno" in
1340 yes) AC_DEFINE(DECL_ERRNO, 1, [Declare errno?]) ;;
1341esac
1342
1343dnl FIXME: from ntpd/ntp_intres.c, but there's no info which header produces
1344dnl the clash.  <resolv.h> isn't currently used.
1345dnl
1346dnl (prr) aix 4.3 defines h_errno as (*(int *)h_errno_which()) for
1347dnl MT purposes.  This makes the line "extern int h_errno" choke
1348dnl the compiler.  Hopefully adding !defined(h_errno) fixes this
1349dnl without breaking any other platforms.
1350dnl
1351AC_CACHE_CHECK(if we may declare 'h_errno', ac_cv_decl_h_errno,
1352[AC_TRY_COMPILE([#include <sys/types.h>
1353#ifdef HAVE_NETINET_IN_H
1354#include <netinet/in.h>
1355#endif
1356#ifdef HAVE_ARPA_NAMESER_H
1357#include <arpa/nameser.h>
1358#endif
1359#ifdef HAVE_NETDB_H
1360#include <netdb.h>
1361#endif
1362#ifdef HAVE_RESOLV_H
1363#include <resolv.h>
1364#endif],
1365  [extern int h_errno;],
1366  ac_cv_decl_h_errno=yes, ac_cv_decl_h_errno=no)])
1367case "$ac_cv_decl_h_errno" in
1368 yes) AC_DEFINE(DECL_H_ERRNO, 1, [Declare h_errno?]) ;;
1369esac
1370
1371dnl See if char *sys_errlist[] is OK.
1372AC_CACHE_CHECK([[if declaring 'char *sys_errlist[]' is ok]], ac_cv_decl_sys_errlist,
1373[AC_TRY_COMPILE([#include <stdio.h>
1374#ifdef HAVE_ERRNO_H
1375#include <errno.h>
1376#endif],
1377  [extern char *sys_errlist[];
1378],
1379  ac_cv_decl_sys_errlist=yes, ac_cv_decl_sys_errlist=no)])
1380case "$ac_cv_decl_sys_errlist" in
1381 yes) AC_DEFINE(CHAR_SYS_ERRLIST, 1, [Declare char *sys_errlist array]) ;;
1382esac
1383
1384AC_CACHE_CHECK(if declaring 'syscall()' is ok, ac_cv_decl_syscall,
1385[AC_TRY_COMPILE([
1386#ifdef HAVE_SYS_TYPES_H
1387# include <sys/types.h>
1388#endif
1389#ifdef HAVE_UNISTD_H
1390# include <unistd.h>
1391#endif
1392#ifdef HAVE_PROTOTYPES
1393#define P(x) x
1394#else
1395#define P(x) ()
1396#endif
1397],
1398  [extern int syscall P((int, ...));],
1399  ac_cv_decl_syscall=yes, ac_cv_decl_syscall=no)])
1400case "$ac_cv_decl_syscall" in
1401 yes) AC_DEFINE(DECL_SYSCALL, 1, [Declare syscall()?]) ;;
1402esac
1403
1404case "$host" in
1405 *-*-aix4.3.*)
1406    AC_DEFINE(DECL_HSTRERROR_0, 1, [Declaration style])		# Needed for XLC under AIX 4.3.2
1407    ;;
1408 *-*-mpeix*)
1409    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1410    AC_DEFINE(DECL_INET_NTOA_0, 1, [Declaration style])
1411    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1412    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1413    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1414    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1415    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1416    ;;
1417 *-*-osf[[45]]*)
1418    AC_DEFINE(DECL_PLOCK_0, 1, [Declaration style])
1419    AC_DEFINE(DECL_STIME_1, 1, [Declaration style])
1420    ;;
1421 *-*-qnx*)
1422    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1423    ;;
1424 *-*-riscos4*)
1425    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1426    AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
1427    AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
1428    AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
1429    AC_DEFINE(DECL_MEMMOVE_0, 1, [Declaration style])
1430    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1431    AC_DEFINE(DECL_RENAME_0, 1, [Declaration style])
1432    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1433    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1434    AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
1435    AC_DEFINE(DECL_STDIO_0, 1, [Declaration style])
1436    AC_DEFINE(DECL_STRTOL_0, 1, [Declaration style])
1437    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1438    AC_DEFINE(DECL_TIME_0, 1, [Declaration style])
1439    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1440    AC_DEFINE(DECL_TOLOWER_0, 1, [Declaration style])
1441    ;;
1442 *-*-solaris2*)
1443    AC_DEFINE(DECL_MKSTEMP_0, 1, [Declaration style])
1444    AC_DEFINE(DECL_SETPRIORITY_1, 1, [Declaration style])
1445    case "$host" in
1446     *-*-solaris2.4)
1447        AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1448	;;
1449    esac
1450    ;;
1451 *-*-sunos4*)
1452    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1453    AC_DEFINE(DECL_BCOPY_0, 1, [Declaration style])
1454    AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
1455    AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
1456    AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
1457    AC_DEFINE(DECL_MEMMOVE_0, 1, [Declaration style])
1458    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1459    AC_DEFINE(DECL_MKSTEMP_0, 1, [Declaration style])
1460    AC_DEFINE(DECL_RENAME_0, 1, [Declaration style])
1461    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1462    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1463    AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
1464    AC_DEFINE(DECL_SIGVEC_0, 1, [Declaration style])
1465    case "`basename $ac_cv_prog_CC`" in
1466     acc*) ;;
1467     *) AC_DEFINE(DECL_STDIO_0, 1, [Declaration style])
1468	;;
1469    esac
1470    AC_DEFINE(DECL_STRTOL_0, 1, [Declaration style])
1471    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1472    AC_DEFINE(DECL_TIME_0, 1, [Declaration style])
1473    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1474    AC_DEFINE(DECL_TOLOWER_0, 1, [Declaration style])
1475    AC_DEFINE(DECL_TOUPPER_0, 1, [Declaration style])
1476    AC_DEFINE(DECL_STRERROR_0, 1, [Declaration style])
1477    ;;
1478 *-*-ultrix4*)
1479    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1480    AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
1481    AC_DEFINE(DECL_CFSETISPEED_0, 1, [Declaration style])
1482    AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
1483    AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
1484    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1485    AC_DEFINE(DECL_NLIST_0, 1, [Declaration style])
1486    AC_DEFINE(DECL_PLOCK_0, 1, [Declaration style])
1487    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1488    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1489    AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
1490    AC_DEFINE(DECL_STIME_0, 1, [Declaration style])
1491    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1492    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1493    ;;
1494esac
1495
1496case "$host" in
1497 *-*-sco3.2*)
1498    AC_DEFINE(TERMIOS_NEEDS__SVID3, 1, [Do we need to #define _SVID3 when we #include <termios.h>?])
1499    ;;
1500esac
1501
1502AC_CACHE_CHECK(if we need extra room for SO_RCVBUF, ac_cv_var_rcvbuf_slop,
1503[ans=no
1504case "$host" in
1505 *-*-hpux[[567]]*)
1506    ans=yes
1507    ;;
1508esac
1509ac_cv_var_rcvbuf_slop=$ans])
1510case "$ac_cv_var_rcvbuf_slop" in
1511 yes) AC_DEFINE(NEED_RCVBUF_SLOP, 1, [Do we need extra room for SO_RCVBUF? (HPUX <8)]) ;;
1512esac
1513
1514AC_CACHE_CHECK(if we will open the broadcast socket, ac_cv_var_open_bcast_socket,
1515[ans=yes
1516case "$host" in
1517 *-*-domainos)
1518    ans=no
1519    ;;
1520esac
1521ac_cv_var_open_bcast_socket=$ans])
1522case "$ac_cv_var_open_bcast_socket" in
1523 yes) AC_DEFINE(OPEN_BCAST_SOCKET, 1, [Should we open the broadcast socket?]) ;;
1524esac
1525
1526AC_CACHE_CHECK(if we want the HPUX version of FindConfig(), ac_cv_var_hpux_findconfig,
1527[ans=no
1528case "$host" in
1529 *-*-hpux*)
1530    ans=yes
1531    ;;
1532esac
1533ac_cv_var_hpux_findconfig=$ans])
1534case "$ac_cv_var_hpux_findconfig" in
1535 yes) AC_DEFINE(NEED_HPUX_FINDCONFIG, 1, [Do we want the HPUX FindConfig()?]) ;;
1536esac
1537
1538AC_CACHE_CHECK(if process groups are set with -pid, ac_cv_arg_setpgrp_negpid,
1539[case "$host" in
1540 *-*-hpux[[567]]*)
1541    ans=no
1542    ;;
1543 *-*-hpux*)
1544    ans=yes
1545    ;;
1546 *-*-linux*)
1547    ans=yes
1548    ;;
1549 *-*-sunos3*)
1550    ans=yes
1551    ;;
1552 *-*-ultrix2*)
1553    ans=yes
1554    ;;
1555 *)
1556    ans=no
1557    ;;
1558esac
1559ac_cv_arg_setpgrp_negpid=$ans])
1560case "$ac_cv_arg_setpgrp_negpid" in
1561 yes) AC_DEFINE(UDP_BACKWARDS_SETOWN, 1, [Do we set process groups with -pid?]) ;;
1562esac
1563
1564AC_CACHE_CHECK(if we need a ctty for F_SETOWN, ac_cv_func_ctty_for_f_setown,
1565[[case "$host" in
1566 *-*-bsdi[23]*)
1567    ans=yes
1568    ;;
1569 *-*-freebsd*)
1570    ans=yes
1571    ;;
1572 *-*-netbsd*3.[0-8]*|*-*-netbsd*[0-2].*|*-*-netbsd*3.99.[0-7])
1573    ans=yes
1574    ;;
1575 *-*-openbsd*)
1576    ans=yes
1577    ;;
1578 *-*-osf*)
1579    ans=yes
1580    ;;
1581 *) ans=no
1582    ;;
1583esac
1584ac_cv_func_ctty_for_f_setown=$ans]])
1585case "$ac_cv_func_ctty_for_f_setown" in
1586 yes) AC_DEFINE(USE_FSETOWNCTTY, 1, [Must we have a CTTY for fsetown?]) ;;
1587esac
1588
1589AC_CACHE_CHECK(if the OS misses to clear cached routes when more specific routes become available, ac_cv_os_routeupdates,
1590[[case "$host" in
1591 *-*-netbsd*)
1592    ans=yes
1593    ;;
1594 *) ans=no
1595    ;;
1596esac
1597ac_cv_os_routeupdates=$ans]])
1598case "$ac_cv_os_routeupdates" in
1599 yes) AC_DEFINE(OS_MISSES_SPECIFIC_ROUTE_UPDATES, 1, [need to recreate sockets on changed routing?]) ;;
1600esac
1601
1602AC_CACHE_CHECK(if the OS needs the wildcard socket set to REUSEADDR for binding interface addresses, ac_cv_os_wildcardreuse,
1603[[case "$host" in
1604 *-*-linux*)
1605    ans=yes
1606    ;;
1607 *) ans=no
1608    ;;
1609esac
1610ac_cv_os_wildcardreuse=$ans]])
1611case "$ac_cv_os_wildcardreuse" in
1612 yes) AC_DEFINE(OS_NEEDS_REUSEADDR_FOR_IFADDRBIND, 1, [wildcard socket needs to set REUSEADDR when binding to interface addresses]) ;;
1613esac
1614
1615ntp_warning='GRONK'
1616AC_MSG_CHECKING(if we'll use clock_settime or settimeofday or stime)
1617case "$ac_cv_func_clock_settime$ac_cv_func_settimeofday$ac_cv_func_stime" in
1618 yes*)
1619    ntp_warning=''
1620    ans='clock_settime()'
1621    ;;
1622 noyes*)
1623    ntp_warning='But clock_settime() would be better (if we had it)'
1624    ans='settimeofday()'
1625    ;;
1626 nonoyes)
1627    ntp_warning='Which is the worst of the three'
1628    ans='stime()'
1629    ;;
1630 *) 
1631    case "$build" in
1632     $host) ntp_warning='Which leaves us with nothing to use!'
1633    ans=none
1634    ;;
1635esac
1636esac
1637AC_MSG_RESULT($ans)
1638case "$ntp_warning" in
1639 '') ;;
1640 *) AC_MSG_WARN(*** $ntp_warning ***)
1641    ;;
1642esac
1643
1644AC_CACHE_CHECK(if we have a losing syscall(), ac_cv_var_syscall_bug,
1645[case "$host" in
1646 *-*-solaris2.4*)
1647    ans=yes
1648    ;;
1649 *) ans=no
1650    ;;
1651esac
1652ac_cv_var_syscall_bug=$ans])
1653case "$ac_cv_var_syscall_bug" in
1654 yes) AC_DEFINE(SYSCALL_BUG, 1, [Buggy syscall() (Solaris2.4)?]) ;;
1655esac
1656
1657AC_CACHE_CHECK(for SIGIO, ac_cv_hdr_def_sigio,
1658 AC_EGREP_CPP(yes,
1659  [#include <signal.h>
1660#ifdef SIGIO
1661   yes
1662#endif
1663  ], ac_cv_hdr_def_sigio=yes, ac_cv_hdr_def_sigio=no))
1664
1665dnl Override those system that have a losing SIGIO
1666AC_CACHE_CHECK(if we want to use signalled IO, ac_cv_var_signalled_io,
1667[ans=no
1668case "$ac_cv_hdr_def_sigio" in
1669 yes)
1670    ans=yes
1671    case "$host" in
1672     alpha*-dec-osf4*|alpha*-dec-osf5*)
1673        ans=no
1674        ;;
1675     *-convex-*)
1676        ans=no
1677        ;;
1678     *-dec-*)
1679        ans=no
1680        ;;
1681     *-pc-cygwin*)
1682	ans=no
1683	;;
1684     *-sni-sysv*)
1685        ans=no
1686        ;;
1687     *-univel-sysv*)
1688        ans=no
1689	;;
1690     *-*-irix6*)
1691	ans=no
1692	;;
1693     *-*-freebsd*)
1694	ans=no
1695	;;
1696     *-*-linux*)
1697	ans=no
1698	;;
1699     *-*-unicosmp*)
1700	ans=no
1701	;;
1702    esac
1703    ;;
1704esac
1705ac_cv_var_signalled_io=$ans])
1706case "$ac_cv_var_signalled_io" in
1707 yes) AC_DEFINE(HAVE_SIGNALED_IO, 1, [Can we use SIGIO for tcp and udp IO?]) ;;
1708esac
1709
1710AC_CACHE_CHECK(for SIGPOLL, ac_cv_hdr_def_sigpoll,
1711 AC_EGREP_CPP(yes,
1712 [#include <signal.h>
1713#ifdef SIGPOLL
1714  yes
1715#endif
1716 ], ac_cv_hdr_def_sigpoll=yes, ac_cv_hdr_def_sigpoll=no))
1717
1718AC_CACHE_CHECK(for SIGSYS, ac_cv_hdr_def_sigsys,
1719 AC_EGREP_CPP(yes,
1720 [#include <signal.h>
1721#ifdef SIGSYS
1722  yes
1723#endif
1724 ], ac_cv_hdr_def_sigsys=yes, ac_cv_hdr_def_sigsys=no))
1725
1726AC_CACHE_CHECK(if we can use SIGPOLL for UDP I/O, ac_cv_var_use_udp_sigpoll,
1727[ans=no
1728case "$ac_cv_hdr_def_sigpoll" in
1729 yes)
1730    case "$host" in
1731     mips-sgi-irix*)
1732	ans=no
1733	;;
1734     vax-dec-bsd)
1735        ans=no
1736        ;;
1737     *-pc-cygwin*)
1738	ans=no
1739	;;
1740     *-sni-sysv*)
1741        ans=no
1742        ;;
1743     *-*-aix[[45]]*)
1744        ans=no
1745        ;;
1746     *-*-hpux*)
1747        ans=no
1748        ;;
1749     *-*-linux*)
1750	ans=no
1751	;;
1752     *-*-osf*)
1753        ans=no
1754        ;;
1755     *-*-qnx*)
1756        ans=no
1757        ;;
1758     *-*-sunos*)
1759	ans=no
1760	;;
1761     *-*-ultrix*)
1762        ans=no
1763        ;;
1764     *-*-unicosmp*)
1765        ans=no
1766        ;;
1767     *) ans=yes
1768        ;;
1769    esac
1770    ;;
1771esac
1772ac_cv_var_use_udp_sigpoll=$ans])
1773case "$ac_cv_var_use_udp_sigpoll" in
1774 yes) AC_DEFINE(USE_UDP_SIGPOLL, 1, [Can we use SIGPOLL for UDP?]) ;;
1775esac
1776
1777AC_CACHE_CHECK(if we can use SIGPOLL for TTY I/O, ac_cv_var_use_tty_sigpoll,
1778[ans=no
1779case "$ac_cv_hdr_def_sigpoll" in
1780 yes)
1781    case "$host" in
1782     mips-sgi-irix*)
1783        ans=no
1784        ;;
1785     vax-dec-bsd)
1786        ans=no
1787        ;;
1788     *-pc-cygwin*)
1789	ans=no
1790	;;
1791     *-sni-sysv*)
1792        ans=no
1793        ;;
1794     *-*-aix[[45]]*)
1795	ans=no
1796	;;
1797     *-*-hpux*)
1798        ans=no
1799        ;;
1800     *-*-linux*)
1801	ans=no
1802	;;
1803     *-*-osf*)
1804        ans=no
1805        ;;
1806     *-*-sunos*)
1807	ans=no
1808	;;
1809     *-*-ultrix*)
1810        ans=no
1811        ;;
1812     *-*-qnx*)
1813        ans=no
1814        ;;
1815     *-*-unicosmp*)
1816        ans=no
1817        ;;
1818     *) ans=yes
1819        ;;
1820    esac
1821    ;;
1822esac
1823ac_cv_var_use_tty_sigpoll=$ans])
1824case "$ac_cv_var_use_tty_sigpoll" in
1825 yes) AC_DEFINE(USE_TTY_SIGPOLL, 1, [Can we use SIGPOLL for tty IO?]) ;;
1826esac
1827
1828case "$ac_cv_header_sys_sio_h" in
1829 yes)
1830    AC_CACHE_CHECK(sys/sio.h for TIOCDCDTIMESTAMP, ac_cv_hdr_def_tiocdcdtimestamp,
1831     AC_EGREP_CPP(yes,
1832[#include <sys/sio.h>
1833#ifdef TIOCDCDTIMESTAMP
1834  yes
1835#endif
1836     ], ac_cv_hdr_def_tiocdcdtimestamp=yes, ac_cv_hdr_def_tiocdcdtimestamp=no))
1837    ;;
1838esac
1839
1840case "$ac_cv_hdr_def_tiocdcdtimestamp" in
1841 yes)
1842    ac_cv_var_oncore_ok=yes
1843    ;;
1844esac
1845
1846AC_CACHE_CHECK(if nlist() values might require extra indirection,
1847ac_cv_var_nlist_extra_indirection,
1848[ans=no
1849case "$host" in
1850 *-*-aix*)
1851    ans=yes
1852    ;;
1853esac
1854ac_cv_var_nlist_extra_indirection=$ans])
1855case "$ac_cv_var_nlist_extra_indirection" in
1856 yes) AC_DEFINE(NLIST_EXTRA_INDIRECTION, 1, [Might nlist() values require an extra level of indirection (AIX)?]) ;;
1857esac
1858
1859AC_CACHE_CHECK(for a minimum recommended value of tickadj,
1860ac_cv_var_min_rec_tickadj,
1861[ans=no
1862case "$host" in
1863 *-*-aix*)
1864    ans=40
1865    ;;
1866esac
1867ac_cv_var_min_rec_tickadj=$ans])
1868case "$ac_cv_var_min_rec_tickadj" in
1869 ''|no) ;;
1870 *) AC_DEFINE_UNQUOTED(MIN_REC_TICKADJ, $ac_cv_var_min_rec_tickadj, [Should we recommend a minimum value for tickadj?]) ;;
1871esac
1872
1873AC_CACHE_CHECK(if the TTY code permits PARENB and IGNPAR,
1874ac_cv_var_no_parenb_ignpar,
1875[ans=no
1876case "$host" in
1877 i?86-*-linux*)
1878    ans=yes
1879    ;;
1880 mips-sgi-irix*)
1881    ans=yes
1882    ;;
1883 i?86-*-freebsd[[123]].*)
1884    ;;
1885 i?86-*-freebsd*)
1886    ans=yes
1887    ;;
1888 *-*-unicosmp*)
1889    ans=yes
1890    ;;
1891esac
1892ac_cv_var_no_parenb_ignpar=$ans])
1893case "$ac_cv_var_no_parenb_ignpar" in
1894 yes) AC_DEFINE(NO_PARENB_IGNPAR, 1, [Is there a problem using PARENB and IGNPAR (IRIX)?]) ;;
1895esac
1896
1897AC_MSG_CHECKING(if we're including debugging code)
1898AC_ARG_ENABLE(debugging,
1899   AC_HELP_STRING([--enable-debugging], [+ include debugging code]),
1900    [ntp_ok=$enableval], [ntp_ok=yes])
1901if test "$ntp_ok" = "yes"; then
1902    AC_DEFINE(DEBUG, 1, [Enable debugging?])
1903fi
1904AC_MSG_RESULT($ntp_ok)
1905
1906AC_MSG_CHECKING(if we including processing time debugging code)
1907AC_ARG_ENABLE(debug-timing,
1908   AC_HELP_STRING([--enable-debug-timing], [- include processing time debugging code (costs performance)]),
1909    [ntp_ok=$enableval], [ntp_ok=no])
1910if test "$ntp_ok" = "yes"; then
1911    AC_DEFINE(DEBUG_TIMING, 1, [Enable processing time debugging?])
1912fi
1913AC_MSG_RESULT($ntp_ok)
1914
1915AC_MSG_CHECKING(for a the number of minutes in a DST adjustment)
1916AC_ARG_ENABLE(dst_minutes,
1917   AC_HELP_STRING([--enable-dst-minutes=60], [+ minutes per DST adjustment]),
1918    [ans=$enableval], [ans=60])
1919AC_DEFINE_UNQUOTED(DSTMINUTES, $ans, [The number of minutes in a DST adjustment])
1920AC_MSG_RESULT($ans)
1921
1922AC_CACHE_CHECK(if we have the tty_clk line discipline/streams module,
1923 ac_cv_var_tty_clk,
1924 [case "$ac_cv_header_sys_clkdefs_h$ac_cv_hdr_def_tiocdcdtimestamp" in
1925  *yes*) ac_cv_var_tty_clk=yes ;;
1926 esac])
1927case "$ac_cv_var_tty_clk" in
1928 yes) AC_DEFINE(TTYCLK, 1, [Do we have the tty_clk line discipline/streams module?]) ;;
1929esac
1930
1931AC_CACHE_CHECK(for the ppsclock streams module,
1932 ac_cv_var_ppsclock,
1933 ac_cv_var_ppsclock=$ac_cv_struct_ppsclockev)
1934case "$ac_cv_var_ppsclock" in
1935 yes) AC_DEFINE(PPS, 1, [Do we have the ppsclock streams module?]) ;;
1936esac
1937
1938AC_CACHE_CHECK(for kernel multicast support, ac_cv_var_mcast,
1939  [ac_cv_var_mcast=no
1940  case "$host" in
1941   i386-sequent-sysv4) ;;
1942   *) AC_EGREP_CPP(yes,
1943  [#include <netinet/in.h>
1944#ifdef IP_ADD_MEMBERSHIP
1945   yes
1946#endif
1947  ], ac_cv_var_mcast=yes) ;;
1948  esac])
1949case "$ac_cv_var_mcast" in
1950 yes)
1951    AC_DEFINE(MCAST, 1, [Does the kernel support multicasting IP?])
1952    AC_CACHE_CHECK([[arg type needed for IP*_MULTICAST_LOOP for setsockopt()]],
1953	ac_cv_var_typeof_ip_multicast_loop,
1954	[case "$host" in
1955	 *-*-netbsd*|*-*-linux*)
1956	    ac_cv_var_typeof_ip_multicast_loop=u_int
1957	    ;;
1958	 *-*-winnt*)
1959	    ac_cv_var_typeof_ip_multicast_loop=BOOL
1960	    ;;
1961	 *) ac_cv_var_typeof_ip_multicast_loop=u_char
1962	    ;;
1963	esac])
1964    AC_DEFINE_UNQUOTED(TYPEOF_IP_MULTICAST_LOOP,
1965		   $ac_cv_var_typeof_ip_multicast_loop,
1966		   [What type to use for setsockopt])
1967    ;;
1968esac
1969
1970AC_CACHE_CHECK([[availability of ntp_{adj,get}time()]], ac_cv_var_ntp_syscalls,
1971 [ac_cv_var_ntp_syscalls=no
1972 case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex" in
1973  yesyes*)
1974    ac_cv_var_ntp_syscalls=libc
1975    ;;
1976  *yes)
1977    ac_cv_var_ntp_syscalls=inline
1978    ;;
1979  *) AC_EGREP_CPP(yes,
1980         [#include <sys/syscall.h>
1981#if defined(SYS_ntp_gettime) && defined(SYS_ntp_adjtime)
1982           yes
1983#endif
1984          ], ac_cv_var_ntp_syscalls=kernel)
1985    ;;
1986 esac])
1987case "$ac_cv_var_ntp_syscalls" in
1988 libc)
1989    AC_DEFINE(NTP_SYSCALLS_LIBC, 1, [Do we have ntp_{adj,get}time in libc?])
1990    ;;
1991 kernel)
1992    AC_DEFINE(NTP_SYSCALLS_STD, 1, [Do we have ntp_{adj,get}time in the kernel?])
1993    ;;
1994 *)
1995    ;;
1996esac
1997
1998AC_CACHE_CHECK(if sys/timex.h has STA_FLL, ac_cv_var_sta_fll,
1999[AC_EGREP_CPP(yes,
2000    [#include <sys/timex.h>
2001#ifdef STA_FLL
2002    yes
2003#endif
2004    ], ac_cv_var_sta_fll=yes, ac_cv_var_sta_fll=no)])
2005
2006AC_CACHE_CHECK(if we have kernel PLL support, ac_cv_var_kernel_pll,
2007[dnl ac_cv_var_ntp_syscalls is {no,libc,kernel}
2008case "$ac_cv_header_sys_timex_h$ac_cv_struct_ntptimeval$ac_cv_var_sta_fll$ac_cv_var_ntp_syscalls" in
2009 *no*)
2010    ac_cv_var_kernel_pll=no
2011    ;;
2012 *) ac_cv_var_kernel_pll=yes
2013    ;;
2014esac])
2015case "$ac_cv_var_kernel_pll" in
2016 yes)
2017    AC_DEFINE(KERNEL_PLL, 1, [Does the kernel support precision time discipline?])
2018    ;;
2019esac
2020
2021AC_CACHE_CHECK(if SIOCGIFCONF returns buffer size in the buffer, ac_cv_var_size_returned_in_buffer,
2022  [ans=no
2023  case "$host" in
2024   *-fujitsu-uxp*)
2025      ans=yes
2026      ;;
2027   *-ncr-sysv4*)
2028      ans=yes
2029      ;;
2030   *-univel-sysv*)
2031      ans=yes
2032      ;;
2033  esac
2034  ac_cv_var_size_returned_in_buffer=$ans])
2035case "$ac_cv_var_size_returned_in_buffer" in
2036 yes) AC_DEFINE(SIZE_RETURNED_IN_BUFFER, 1, [Does SIOCGIFCONF return size in the buffer?]) ;;
2037esac
2038
2039dnl AC_CACHE_CHECK(if we want GDT surveying code, ac_cv_var_gdt_surveying,
2040dnl [AC_ARG_ENABLE(gdt-surveying,	[  --enable-gdt-surveying   - include GDT survey code],
2041dnl     [ans=$enableval], [ans=no])
2042dnl ac_cv_var_gdt_surveying=$ans])
2043dnl case "$ac_cv_var_gdt_surveying" in
2044dnl  yes) AC_DEFINE(GDT_SURVEYING, 1, [Include the GDT Surveying code?]) ;;
2045dnl esac
2046
2047# Check for ioctls TIOCGPPSEV
2048AC_MSG_CHECKING(ioctl TIOCGPPSEV)
2049if test "$ac_cv_header_termios_h" = "yes"; then
2050    AC_EGREP_CPP(yes,
2051    [#include <termios.h>
2052#ifdef TIOCGPPSEV
2053         yes
2054#endif
2055	 ], ntp_ok=yes, ntp_ok=no)
2056else
2057ntp_ok=no
2058fi
2059if test "$ntp_ok" = "yes"; then
2060    AC_DEFINE(HAVE_TIOCGPPSEV, 1, [Do we have the TIOCGPPSEV ioctl (Solaris)?])
2061    ac_cv_var_oncore_ok=yes
2062fi
2063AC_MSG_RESULT($ntp_ok)
2064
2065# Check for ioctls TIOCSPPS
2066AC_MSG_CHECKING(ioctl TIOCSPPS)
2067if test "$ac_cv_header_termios_h" = "yes"; then
2068    AC_EGREP_CPP(yes,
2069    [#include <termios.h>
2070#ifdef TIOCSPPS
2071         yes
2072#endif
2073	 ], ntp_ok=yes, ntp_ok=no)
2074else
2075    ntp_ok=no
2076fi
2077
2078if test "$ntp_ok" = "yes"; then
2079    AC_DEFINE(HAVE_TIOCSPPS, 1, [Do we have the TIOCSPPS ioctl (Solaris)?])
2080fi
2081AC_MSG_RESULT($ntp_ok)
2082
2083# Check for ioctls CIOGETEV
2084AC_MSG_CHECKING(ioctl CIOGETEV)
2085if test "$ac_cv_header_sys_ppsclock_h" = "yes"; then
2086    AC_EGREP_CPP(yes,
2087    [#include <sys/ppsclock.h>
2088#ifdef CIOGETEV
2089         yes
2090#endif
2091	 ], ntp_ok=yes, ntp_ok=no)
2092else
2093ntp_ok=no
2094fi
2095if test "$ntp_ok" = "yes"; then
2096    ac_cv_var_oncore_ok=yes
2097    AC_DEFINE(HAVE_CIOGETEV, 1, [Do we have the CIOGETEV ioctl (SunOS, Linux)?])
2098fi
2099AC_MSG_RESULT($ntp_ok)
2100
2101
2102# ATOM/PPSAPI stuff.
2103
2104# ATOM used to require struct timespec, but that's been fixed now.
2105
2106# case "$ac_cv_struct_timespec" in
2107#  'yes')
2108#     ac_cv_var_atom_ok=yes
2109#     ;;
2110# esac
2111ac_cv_var_atom_ok=yes
2112
2113# Check for header timepps.h, if found then we have PPS API (Draft RFC) stuff.
2114
2115# The PPSAPI headers need "inline" ($ac_cv_c_inline='inline')
2116
2117# The PPSAPI needs struct timespec.
2118
2119# The PPSAPI also needs a timepps header.
2120
2121case "$ac_cv_c_inline$ac_cv_struct_timespec" in
2122 inlineyes)
2123    case "$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h$host_os" in
2124     *yes* | *sunos* | *solaris* | *sco* | *netbsd* )
2125	AC_DEFINE(HAVE_PPSAPI, 1, [Do we have the PPS API per the Draft RFC?])
2126	ac_cv_var_jupiter_ok=yes
2127	ac_cv_var_oncore_ok=yes
2128	ac_cv_var_parse_ok=yes
2129	ac_cv_var_ripe_ncc_ok=yes
2130	;;
2131    esac
2132    ;;
2133esac
2134
2135# Check for ioctls TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG
2136AC_CHECK_HEADER(linux/serial.h)
2137AC_MSG_CHECKING(ioctl TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG)
2138case "$ac_cv_header_sys_ppsclock_h$ac_cv_header_linux_serial_h" in
2139  yesyes)
2140    AC_EGREP_CPP(yes,
2141    [#include <sys/time.h>
2142typedef int u_int;
2143
2144#include <sys/ppsclock.h>
2145#include <linux/serial.h>
2146
2147#ifdef TIOCGSERIAL
2148#ifdef TIOCSSERIAL
2149#ifdef ASYNC_PPS_CD_POS
2150#ifdef ASYNC_PPS_CD_NEG
2151#ifdef CIOGETEV
2152         yes
2153#endif
2154#endif
2155#endif
2156#endif
2157#endif
2158	 ], ntp_ok=yes)
2159	;;
2160  *)
2161	ntp_ok=no
2162	;;
2163esac
2164if test "$ntp_ok" = "yes"; then
2165    AC_DEFINE(HAVE_TIO_SERIAL_STUFF, 1, [Do we have the TIO serial stuff?])
2166fi
2167AC_MSG_RESULT($ntp_ok)
2168
2169# Check for SHMEM_STATUS support
2170AC_MSG_CHECKING(SHMEM_STATUS support)
2171case "$ac_cv_header_sys_mman_h" in
2172 yes) ntp_ok=yes ;;
2173 *)   ntp_ok=no  ;;
2174esac
2175if test "$ntp_ok" = "yes"; then
2176    AC_DEFINE(ONCORE_SHMEM_STATUS, 1, [Do we have support for SHMEM_STATUS?])
2177fi
2178AC_MSG_RESULT($ntp_ok)
2179
2180dnl dnl These are for OPT_PROGRAMS in authstuff/
2181dnl AC_SUBST(AUTHCERT)
2182dnl AC_SUBST(AUTHSPEED)
2183dnl AC_SUBST(MD5DRIVER)
2184dnl AC_SUBST(KEYPARITY)
2185dnl AC_SUBST(MAKEIPFP)
2186dnl AC_SUBST(MAKEPC1)
2187dnl AC_SUBST(MAKEPC2)
2188dnl AC_SUBST(MAKESP)
2189dnl AC_SUBST(MKRANDKEYS)
2190dnl AC_SUBST(OMAKEIPFP)
2191dnl AC_SUBST(UNIXCERT)
2192
2193ntp_refclock=no
2194
2195# HPUX only, and by explicit request
2196AC_MSG_CHECKING(Datum/Bancomm bc635/VME interface)
2197AC_ARG_ENABLE(BANCOMM,
2198    AC_HELP_STRING([--enable-BANCOMM], [- Datum/Bancomm bc635/VME interface]),
2199    [ntp_ok=$enableval], [ntp_ok=no])
2200if test "$ntp_ok" = "yes"; then
2201    ntp_refclock=yes
2202    AC_DEFINE(CLOCK_BANC, 1, [Datum/Bancomm bc635/VME interface?])
2203fi
2204AC_MSG_RESULT($ntp_ok)
2205case "$ntp_ok$host" in
2206 yes*-*-hpux*) ;;
2207 yes*) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2208esac
2209
2210#HPUX only, and only by explicit request
2211AC_MSG_CHECKING(TrueTime GPS receiver/VME interface)
2212AC_ARG_ENABLE(GPSVME,
2213    AC_HELP_STRING([--enable-GPSVME], [- TrueTime GPS receiver/VME interface]),
2214    [ntp_ok=$enableval], [ntp_ok=no])
2215if test "$ntp_ok" = "yes"; then
2216    ntp_refclock=yes
2217    AC_DEFINE(CLOCK_GPSVME, 1, [TrueTime GPS receiver/VME interface?])
2218fi
2219AC_MSG_RESULT($ntp_ok)
2220case "$ntp_ok$host" in
2221 yes*-*-hpux*) ;;
2222 yes*) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2223esac
2224
2225AC_MSG_CHECKING(for PCL720 clock support)
2226case "$ac_cv_header_machine_inline_h$ac_cv_header_sys_pcl720_h$ac_cv_header_sys_i8253_h" in
2227 yesyesyes)
2228    AC_DEFINE(CLOCK_PPS720, 1, [PCL 720 clock support])
2229    ans=yes
2230    ;;
2231 *)
2232    ans=no
2233    ;;
2234esac
2235AC_MSG_RESULT($ans)
2236
2237AC_MSG_CHECKING(for default inclusion of all suitable non-PARSE clocks)
2238AC_ARG_ENABLE(all-clocks,
2239    AC_HELP_STRING([--enable-all-clocks], [+ include all suitable non-PARSE clocks:]),
2240    [ntp_eac=$enableval], [ntp_eac=yes])
2241AC_MSG_RESULT($ntp_eac)
2242
2243# HMS: Should we also require ac_cv_var_parse_ok?
2244AC_MSG_CHECKING(if we have support for PARSE clocks)
2245case "$ac_cv_var_atom_ok$ac_cv_header_termio_h$ac_cv_header_termios_h" in
2246 yes*yes*)
2247    ntp_canparse=yes
2248    ;;
2249 *) ntp_canparse=no
2250    ;;
2251esac
2252AC_MSG_RESULT($ntp_canparse)
2253
2254AC_MSG_CHECKING([if we have support for audio clocks])
2255case "$ac_cv_header_sun_audioio_h$ac_cv_header_sys_audioio_h$ac_cv_header_machine_soundcard_h$ac_cv_header_sys_soundcard_h" in
2256 *yes*)
2257    ntp_canaudio=yes
2258    AC_DEFINE(HAVE_AUDIO, , [Do we have audio support?])
2259    ;;
2260 *) ntp_canaudio=no ;;
2261esac
2262AC_MSG_RESULT($ntp_canaudio)
2263
2264AC_MSG_CHECKING([if we have support for the SHM refclock interface])
2265case "$ac_cv_header_sys_ipc_h$ac_cv_header_sys_shm_h" in
2266 yesyes)
2267    ntp_canshm=yes
2268    ;;
2269 *) ntp_canshm=no ;;
2270esac
2271AC_MSG_RESULT($ntp_canshm)
2272
2273# Requires modem control
2274AC_MSG_CHECKING(ACTS modem service)
2275AC_ARG_ENABLE(ACTS,
2276    AC_HELP_STRING([--enable-ACTS], [s ACTS modem service]),
2277    [ntp_ok=$enableval],
2278    [AC_EGREP_CPP(yes,
2279        [#include <termios.h>
2280#ifdef HAVE_SYS_IOCTL_H
2281#include <sys/ioctl.h>
2282#endif
2283#ifdef TIOCMBIS
2284         yes
2285#endif
2286         ], ntp_ok=$ntp_eac, ntp_ok=no)])
2287if test "$ntp_ok" = "yes"; then
2288    ntp_refclock=yes
2289    AC_DEFINE(CLOCK_ACTS, 1, [ACTS modem service])
2290fi
2291AC_MSG_RESULT($ntp_ok)
2292
2293AC_MSG_CHECKING(Arbiter 1088A/B GPS receiver)
2294AC_ARG_ENABLE(ARBITER,
2295    AC_HELP_STRING([--enable-ARBITER], [+ Arbiter 1088A/B GPS receiver]),
2296    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2297if test "$ntp_ok" = "yes"; then
2298    ntp_refclock=yes
2299    AC_DEFINE(CLOCK_ARBITER, 1, [Arbiter 1088A/B GPS receiver])
2300fi
2301AC_MSG_RESULT($ntp_ok)
2302
2303AC_MSG_CHECKING(Arcron MSF receiver)
2304AC_ARG_ENABLE(ARCRON_MSF,
2305    AC_HELP_STRING([--enable-ARCRON-MSF], [+ Arcron MSF receiver]),
2306    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2307if test "$ntp_ok" = "yes"; then
2308    ntp_refclock=yes
2309    AC_DEFINE(CLOCK_ARCRON_MSF, 1, [ARCRON support?])
2310fi
2311AC_MSG_RESULT($ntp_ok)
2312
2313AC_MSG_CHECKING(Austron 2200A/2201A GPS receiver)
2314AC_ARG_ENABLE(AS2201,
2315    AC_HELP_STRING([--enable-AS2201], [+ Austron 2200A/2201A GPS receiver]),
2316    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2317if test "$ntp_ok" = "yes"; then
2318    ntp_refclock=yes
2319    AC_DEFINE(CLOCK_AS2201, 1, [Austron 2200A/2201A GPS receiver?])
2320fi
2321AC_MSG_RESULT($ntp_ok)
2322
2323AC_MSG_CHECKING(ATOM PPS interface)
2324AC_ARG_ENABLE(ATOM,	
2325    AC_HELP_STRING([--enable-ATOM], [s ATOM PPS interface]),
2326    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2327case "$ac_cv_var_atom_ok" in
2328 no) ntp_ok=no ;;
2329esac
2330if test "$ntp_ok" = "yes"; then
2331    ntp_refclock=yes
2332    AC_DEFINE(CLOCK_ATOM, 1, [PPS interface?])
2333fi
2334AC_MSG_RESULT($ntp_ok)
2335
2336AC_MSG_CHECKING(Chrono-log K-series WWVB receiver)
2337AC_ARG_ENABLE(CHRONOLOG,
2338    AC_HELP_STRING([--enable-CHRONOLOG], [+ Chrono-log K-series WWVB receiver]),
2339    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2340if test "$ntp_ok" = "yes"; then
2341    ntp_refclock=yes
2342    AC_DEFINE(CLOCK_CHRONOLOG, 1, [Chronolog K-series WWVB receiver?])
2343fi
2344AC_MSG_RESULT($ntp_ok)
2345
2346AC_MSG_CHECKING(CHU modem/decoder)
2347AC_ARG_ENABLE(CHU,
2348    AC_HELP_STRING([--enable-CHU], [+ CHU modem/decoder]),
2349    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2350if test "$ntp_ok" = "yes"; then
2351    ntp_refclock=yes
2352    AC_DEFINE(CLOCK_CHU, 1, [CHU modem/decoder])
2353fi
2354AC_MSG_RESULT($ntp_ok)
2355ac_refclock_chu=$ntp_ok
2356
2357AC_MSG_CHECKING(CHU audio/decoder)
2358AC_ARG_ENABLE(AUDIO-CHU,
2359    AC_HELP_STRING([--enable-AUDIO-CHU], [s CHU audio/decoder]),
2360    [ntp_ok=$enableval],
2361    [case "$ntp_eac$ac_refclock_chu$ntp_canaudio" in
2362 *no*)	ntp_ok=no  ;;
2363 *)	ntp_ok=yes ;;
2364esac])
2365if test "$ntp_ok" = "yes"; then
2366    AC_DEFINE(AUDIO_CHU, 1, [CHU audio/decoder?])
2367fi
2368AC_MSG_RESULT($ntp_ok)
2369# We used to check for sunos/solaris target...
2370case "$ntp_ok$ac_refclock_chu$ntp_canaudio" in
2371 yes*no*) AC_MSG_WARN(*** But the expected answer is...no ***) ;;
2372esac
2373
2374# Not under HP-UX
2375AC_MSG_CHECKING(Datum Programmable Time System)
2376AC_ARG_ENABLE(DATUM,
2377    AC_HELP_STRING([--enable-DATUM], [s Datum Programmable Time System]),
2378    [ntp_ok=$enableval],
2379    [case "$ac_cv_header_termios_h" in
2380    yes)
2381        ntp_ok=$ntp_eac
2382        ;;
2383    *) ntp_ok=no
2384        ;;
2385    esac])
2386if test "$ntp_ok" = "yes"; then
2387    ntp_refclock=yes
2388    AC_DEFINE(CLOCK_DATUM, 1, [Datum Programmable Time System?])
2389fi
2390AC_MSG_RESULT($ntp_ok)
2391
2392AC_MSG_CHECKING(Dumb generic hh:mm:ss local clock)
2393AC_ARG_ENABLE(DUMBCLOCK,
2394    AC_HELP_STRING([--enable-DUMBCLOCK], [+ Dumb generic hh:mm:ss local clock]),
2395    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2396if test "$ntp_ok" = "yes"; then
2397    ntp_refclock=yes
2398    AC_DEFINE(CLOCK_DUMBCLOCK, 1, [Dumb generic hh:mm:ss local clock?])
2399fi
2400AC_MSG_RESULT($ntp_ok)
2401
2402AC_MSG_CHECKING(Forum Graphic GPS)
2403AC_ARG_ENABLE(FG,
2404    AC_HELP_STRING([--enable-FG], [+ Forum Graphic GPS]),
2405    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2406if test "$ntp_ok" = "yes"; then
2407    ntp_refclock=yes
2408    AC_DEFINE(CLOCK_FG, 1, [Forum Graphic GPS datating station driver?])
2409fi
2410AC_MSG_RESULT($ntp_ok)
2411
2412# Requires modem control
2413AC_MSG_CHECKING(Heath GC-1000 WWV/WWVH receiver)
2414AC_ARG_ENABLE(HEATH,
2415    AC_HELP_STRING([--enable-HEATH], [s Heath GC-1000 WWV/WWVH receiver]),
2416    [ntp_ok=$enableval],
2417    [AC_EGREP_CPP(yes,
2418        [#include <termios.h>
2419#ifdef HAVE_SYS_IOCTL_H
2420#include <sys/ioctl.h>
2421#endif
2422#ifdef TIOCMBIS
2423         yes
2424#endif
2425         ], ntp_ok=$ntp_eac, ntp_ok=no)])
2426if test "$ntp_ok" = "yes"; then
2427    ntp_refclock=yes
2428    AC_DEFINE(CLOCK_HEATH, 1, [Heath GC-1000 WWV/WWVH receiver?])
2429fi
2430AC_MSG_RESULT($ntp_ok)
2431
2432AC_MSG_CHECKING(for hopf serial clock device)
2433AC_ARG_ENABLE(HOPFSERIAL,
2434    AC_HELP_STRING([--enable-HOPFSERIAL], [+ hopf serial clock device]),
2435    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2436if test "$ntp_ok" = "yes"; then
2437    ntp_refclock=yes
2438    AC_DEFINE(CLOCK_HOPF_SERIAL, 1, [HOPF serial clock device?])
2439fi
2440AC_MSG_RESULT($ntp_ok)
2441
2442AC_MSG_CHECKING(for hopf PCI clock 6039)
2443AC_ARG_ENABLE(HOPFPCI,
2444    AC_HELP_STRING([--enable-HOPFPCI], [+ hopf 6039 PCI board]),
2445    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2446if test "$ntp_ok" = "yes"; then
2447    ntp_refclock=yes
2448    AC_DEFINE(CLOCK_HOPF_PCI, 1, [HOPF PCI clock device?])
2449fi
2450AC_MSG_RESULT($ntp_ok)
2451
2452AC_MSG_CHECKING(HP 58503A GPS receiver)
2453AC_ARG_ENABLE(HPGPS,
2454    AC_HELP_STRING([--enable-HPGPS], [+ HP 58503A GPS receiver]),
2455    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2456if test "$ntp_ok" = "yes"; then
2457    ntp_refclock=yes
2458    AC_DEFINE(CLOCK_HPGPS, 1, [HP 58503A GPS receiver?])
2459fi
2460AC_MSG_RESULT($ntp_ok)
2461
2462AC_MSG_CHECKING(IRIG audio decoder)
2463AC_ARG_ENABLE(IRIG,
2464    AC_HELP_STRING([--enable-IRIG], [s IRIG audio decoder]),
2465    [ntp_ok=$enableval],
2466    [case "$ntp_eac$ntp_canaudio" in
2467     *no*)	ntp_ok=no  ;;
2468     *)		ntp_ok=yes ;;
2469    esac])
2470if test "$ntp_ok" = "yes"; then
2471    ntp_refclock=yes
2472    AC_DEFINE(CLOCK_IRIG, 1, [IRIG audio decoder?])
2473fi
2474AC_MSG_RESULT($ntp_ok)
2475case "$ntp_ok$ntp_canaudio" in
2476 yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2477esac
2478
2479AC_MSG_CHECKING(for JJY receiver)
2480AC_ARG_ENABLE(JJY,
2481    AC_HELP_STRING([--enable-JJY], [+ JJY receiver]),
2482    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2483if test "$ntp_ok" = "yes"; then
2484    ntp_refclock=yes
2485    AC_DEFINE(CLOCK_JJY, 1, [JJY receiver?])
2486fi
2487AC_MSG_RESULT($ntp_ok)
2488
2489AC_MSG_CHECKING(Rockwell Jupiter GPS receiver)
2490AC_ARG_ENABLE(JUPITER,
2491    AC_HELP_STRING([--enable-JUPITER], [s Rockwell Jupiter GPS receiver]),
2492    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2493case "$ac_cv_var_jupiter_ok" in
2494 no) ntp_ok=no ;;
2495esac
2496if test "$ntp_ok" = "yes"; then
2497    ntp_refclock=yes
2498    AC_DEFINE(CLOCK_JUPITER, 1, [Rockwell Jupiter GPS clock?])
2499fi
2500AC_MSG_RESULT($ntp_ok)
2501
2502AC_MSG_CHECKING(Leitch CSD 5300 Master Clock System Driver)
2503AC_ARG_ENABLE(LEITCH,
2504    AC_HELP_STRING([--enable-LEITCH], [+ Leitch CSD 5300 Master Clock System Driver]),
2505    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2506if test "$ntp_ok" = "yes"; then
2507    ntp_refclock=yes
2508    AC_DEFINE(CLOCK_LEITCH, 1, [Leitch CSD 5300 Master Clock System Driver?])
2509fi
2510AC_MSG_RESULT($ntp_ok)
2511
2512AC_MSG_CHECKING(local clock reference)
2513AC_ARG_ENABLE(LOCAL-CLOCK,
2514    AC_HELP_STRING([--enable-LOCAL-CLOCK], [+ local clock reference]),
2515    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2516if test "$ntp_ok" = "yes"; then
2517    ntp_refclock=yes
2518    AC_DEFINE(CLOCK_LOCAL, 1, [local clock reference?])
2519fi
2520AC_MSG_RESULT($ntp_ok)
2521
2522dnl Bug 340: longstanding unfixed bugs
2523dnl AC_MSG_CHECKING(EES M201 MSF receiver)
2524dnl AC_ARG_ENABLE(MSFEES,
2525dnl     AC_HELP_STRING([--enable-MSFEES], [+ EES M201 MSF receiver]),
2526dnl     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2527dnl if test "$ntp_ok" = "yes"; then
2528dnl     ntp_refclock=yes
2529dnl     AC_DEFINE(CLOCK_MSFEES, 1, [EES M201 MSF receiver])
2530dnl fi
2531dnl AC_MSG_RESULT($ntp_ok)
2532
2533# Not Ultrix
2534AC_MSG_CHECKING(Magnavox MX4200 GPS receiver)
2535AC_ARG_ENABLE(MX4200,
2536    AC_HELP_STRING([--enable-MX4200 ], [s Magnavox MX4200 GPS receiver]),
2537    [ntp_ok=$enableval],
2538    [case "$ac_cv_var_ppsclock" in
2539     yes) ntp_ok=$ntp_eac
2540        ;;
2541     *) ntp_ok=no
2542        ;;
2543    esac])
2544if test "$ntp_ok" = "yes"; then
2545    ntp_refclock=yes
2546    AC_DEFINE(CLOCK_MX4200, 1, [Magnavox MX4200 GPS receiver])
2547fi
2548AC_MSG_RESULT($ntp_ok)
2549case "$ntp_ok$host" in
2550 yes*-*-ultrix*) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2551esac
2552
2553AC_MSG_CHECKING(for NeoClock4X receiver)
2554AC_ARG_ENABLE(NEOCLOCK4X,
2555    AC_HELP_STRING([--enable-NEOCLOCK4X], [+ NeoClock4X DCF77 / TDF receiver]),
2556    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2557if test "$ntp_ok" = "yes"; then
2558    ntp_refclock=yes
2559    AC_DEFINE(CLOCK_NEOCLOCK4X, 1, [NeoClock4X])
2560fi
2561AC_MSG_RESULT($ntp_ok)
2562
2563AC_MSG_CHECKING(NMEA GPS receiver)
2564AC_ARG_ENABLE(NMEA,
2565    AC_HELP_STRING([--enable-NMEA], [+ NMEA GPS receiver]),
2566    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2567if test "$ntp_ok" = "yes"; then
2568    ntp_refclock=yes
2569    AC_DEFINE(CLOCK_NMEA, 1, [NMEA GPS receiver])
2570fi
2571AC_MSG_RESULT($ntp_ok)
2572
2573AC_MSG_CHECKING(for ONCORE Motorola VP/UT Oncore GPS)
2574AC_ARG_ENABLE(ONCORE,
2575    AC_HELP_STRING([--enable-ONCORE], [s Motorola VP/UT Oncore GPS receiver]),
2576    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2577case "$ac_cv_var_oncore_ok" in
2578 no) ntp_ok=no ;;
2579esac
2580if test "$ntp_ok" = "yes"; then
2581    ntp_refclock=yes
2582    AC_DEFINE(CLOCK_ONCORE, 1, [Motorola UT Oncore GPS])
2583fi
2584AC_MSG_RESULT($ntp_ok)
2585
2586AC_MSG_CHECKING(for Palisade clock)
2587AC_ARG_ENABLE(PALISADE,
2588    AC_HELP_STRING([--enable-PALISADE], [s Palisade clock]),
2589    [ntp_ok=$enableval],
2590    [case "$ac_cv_header_termios_h" in
2591    yes)
2592        ntp_ok=$ntp_eac
2593        ;;
2594    *) ntp_ok=no
2595        ;;
2596    esac])
2597
2598if test "$ntp_ok" = "yes"; then
2599    ntp_refclock=yes
2600    AC_DEFINE(CLOCK_PALISADE, 1, [Palisade clock])
2601fi
2602AC_MSG_RESULT($ntp_ok)
2603
2604AC_MSG_CHECKING(Conrad parallel port radio clock)
2605AC_ARG_ENABLE(PCF,
2606    AC_HELP_STRING([--enable-PCF ], [+ Conrad parallel port radio clock]),
2607    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2608if test "$ntp_ok" = "yes"; then
2609    ntp_refclock=yes
2610    AC_DEFINE(CLOCK_PCF, 1, [Conrad parallel port radio clock])
2611fi
2612AC_MSG_RESULT($ntp_ok)
2613
2614AC_MSG_CHECKING(PST/Traconex 1020 WWV/WWVH receiver)
2615AC_ARG_ENABLE(PST,
2616    AC_HELP_STRING([--enable-PST], [+ PST/Traconex 1020 WWV/WWVH receiver]),
2617    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2618if test "$ntp_ok" = "yes"; then
2619    ntp_refclock=yes
2620    AC_DEFINE(CLOCK_PST, 1, [PST/Traconex 1020 WWV/WWVH receiver])
2621fi
2622AC_MSG_RESULT($ntp_ok)
2623
2624AC_MSG_CHECKING(RIPENCC specific Trimble driver)
2625AC_ARG_ENABLE(RIPENCC,
2626    AC_HELP_STRING([--enable-RIPENCC], [- RIPENCC specific Trimble driver]),
2627    [ntp_ok=$enableval], [ntp_ok=no])
2628# 020629: HMS: s/$ntp_eac -> -/no because of ptr += sprintf(ptr, ...) usage
2629case "$ac_cv_var_ripe_ncc_ok" in
2630 no) ntp_ok=no ;;
2631esac
2632if test "$ntp_ok" = "yes"; then
2633    ntp_refclock=yes
2634    AC_DEFINE(CLOCK_RIPENCC, ,[RIPE NCC Trimble clock])
2635fi
2636AC_MSG_RESULT($ntp_ok)
2637
2638# Danny Meyer says SHM compiles (with a few warnings) under Win32.
2639# For *IX, we need sys/ipc.h and sys/shm.h.
2640AC_MSG_CHECKING(for SHM clock attached thru shared memory)
2641AC_ARG_ENABLE(SHM,
2642    AC_HELP_STRING([--enable-SHM], [s SHM clock attached thru shared memory]),
2643    [ntp_ok=$enableval],
2644    [case "$ntp_eac$ntp_canshm" in
2645 *no*)	ntp_ok=no  ;;
2646 *)	ntp_ok=yes ;;
2647esac])
2648if test "$ntp_ok" = "yes"; then
2649    ntp_refclock=yes
2650    AC_DEFINE(CLOCK_SHM, 1, [clock thru shared memory])
2651fi
2652AC_MSG_RESULT($ntp_ok)
2653
2654AC_MSG_CHECKING(Spectracom 8170/Netclock/2 WWVB receiver)
2655AC_ARG_ENABLE(SPECTRACOM,
2656    AC_HELP_STRING([--enable-SPECTRACOM], [+ Spectracom 8170/Netclock/2 WWVB receiver]),
2657    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2658if test "$ntp_ok" = "yes"; then
2659    ntp_refclock=yes
2660    AC_DEFINE(CLOCK_SPECTRACOM, 1, [Spectracom 8170/Netclock/2 WWVB receiver])
2661fi
2662AC_MSG_RESULT($ntp_ok)
2663
2664AC_MSG_CHECKING(KSI/Odetics TPRO/S GPS receiver/IRIG interface)
2665AC_ARG_ENABLE(TPRO,
2666    AC_HELP_STRING([--enable-TPRO], [s KSI/Odetics TPRO/S GPS receiver/IRIG interface]),
2667    [ntp_ok=$enableval],
2668    [case "$ac_cv_header_sys_tpro_h" in
2669     yes)
2670	ntp_ok=$ntp_eac
2671	;;
2672     *)	ntp_ok=no
2673	;;
2674    esac])
2675if test "$ntp_ok" = "yes"; then
2676    ntp_refclock=yes
2677    AC_DEFINE(CLOCK_TPRO, 1, [KSI/Odetics TPRO/S GPS receiver/IRIG interface])
2678fi
2679AC_MSG_RESULT($ntp_ok)
2680case "$ntp_ok$ac_cv_header_sys_tpro" in
2681 yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2682esac
2683
2684dnl Bug 342: longstanding unfixed bugs
2685dnl AC_MSG_CHECKING(TRAK 8810 GPS receiver)
2686dnl AC_ARG_ENABLE(TRAK,
2687dnl     AC_HELP_STRING([--enable-TRAK], [+ TRAK 8810 GPS receiver]),
2688dnl     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2689dnl if test "$ntp_ok" = "yes"; then
2690dnl     ntp_refclock=yes
2691dnl     AC_DEFINE(CLOCK_TRAK, 1, [TRAK 8810 GPS receiver])
2692dnl fi
2693dnl AC_MSG_RESULT($ntp_ok)
2694
2695# Not on a vax-dec-bsd
2696AC_MSG_CHECKING(Kinemetrics/TrueTime receivers)
2697AC_ARG_ENABLE(TRUETIME,
2698    AC_HELP_STRING([--enable-TRUETIME], [s Kinemetrics/TrueTime receivers]),
2699    [ntp_ok=$enableval],
2700    [case "$host" in
2701     vax-dec-bsd)
2702	ntp_ok=no
2703	;;
2704     *)
2705	ntp_ok=$ntp_eac
2706	;;
2707    esac])
2708if test "$ntp_ok" = "yes"; then
2709    ntp_refclock=yes
2710    AC_DEFINE(CLOCK_TRUETIME, 1, [Kinemetrics/TrueTime receivers])
2711fi
2712AC_MSG_RESULT($ntp_ok)
2713case "$ntp_ok$host" in
2714 yesvax-dec-bsd) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2715esac
2716
2717AC_MSG_CHECKING(TrueTime 560 IRIG-B decoder)
2718AC_ARG_ENABLE(TT560,
2719    AC_HELP_STRING([--enable-TT560], [- TrueTime 560 IRIG-B decoder]),
2720    [ntp_ok=$enableval], [ntp_ok=no])
2721if test "$ntp_ok" = "yes"; then
2722    ntp_refclock=yes
2723    AC_DEFINE(CLOCK_TT560, , [TrueTime 560 IRIG-B decoder?])
2724fi
2725AC_MSG_RESULT($ntp_ok)
2726
2727AC_MSG_CHECKING(Ultralink M320 WWVB receiver)
2728AC_ARG_ENABLE(ULINK,
2729    AC_HELP_STRING([--enable-ULINK], [+ Ultralink WWVB receiver]),
2730    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2731if test "$ntp_ok" = "yes"; then
2732    ntp_refclock=yes
2733    AC_DEFINE(CLOCK_ULINK, 1, [Ultralink M320 WWVB receiver?])
2734fi
2735AC_MSG_RESULT($ntp_ok)
2736
2737AC_MSG_CHECKING(WWV receiver)
2738AC_ARG_ENABLE(WWV,
2739    AC_HELP_STRING([--enable-WWV], [s WWV Audio receiver]),
2740    [ntp_ok=$enableval],
2741    [case "$ntp_eac$ntp_canaudio" in
2742     *no*)	ntp_ok=no  ;;
2743     *)		ntp_ok=yes ;;
2744    esac])
2745if test "$ntp_ok" = "yes"; then
2746    ntp_refclock=yes
2747    AC_DEFINE(CLOCK_WWV, 1, [WWV audio driver])
2748fi
2749AC_MSG_RESULT($ntp_ok)
2750case "$ntp_ok$ntp_canaudio" in
2751 yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2752esac
2753
2754AC_MSG_CHECKING(for Zyfer receiver)
2755AC_ARG_ENABLE(ZYFER,
2756    AC_HELP_STRING([--enable-ZYFER], [+ Zyfer GPStarplus receiver]),
2757    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2758if test "$ntp_ok" = "yes"; then
2759    ntp_refclock=yes
2760    AC_DEFINE(CLOCK_ZYFER, 1, [Zyfer GPStarplus])
2761fi
2762AC_MSG_RESULT($ntp_ok)
2763
2764AC_MSG_CHECKING(for default inclusion of all suitable PARSE clocks)
2765AC_ARG_ENABLE(parse-clocks,
2766   AC_HELP_STRING([--enable-parse-clocks], [- include all suitable PARSE clocks:]),
2767    [ntp_eapc=$enableval],
2768    [case "$ntp_eac" in
2769     yes) ntp_eapc=$ntp_canparse ;;
2770     *) ntp_eapc=no ;;
2771    esac
2772    # Delete the next line one of these days
2773    ntp_eapc=no])
2774AC_MSG_RESULT($ntp_eapc)
2775
2776case "$ntp_eac$ntp_eapc$ntp_canparse" in
2777 noyes*)
2778    AC_MSG_ERROR("--enable-parse-clocks" requires "--enable-all-clocks".)
2779    ;;
2780 yesyesno)
2781    AC_MSG_ERROR(You said "--enable-parse-clocks" but PARSE isn't supported on this platform!)
2782    ;;
2783 *) ;;
2784esac
2785
2786ntp_libparse=no
2787ntp_parseutil=no
2788ntp_rawdcf=no
2789
2790AC_MSG_CHECKING(Diem Computime Radio Clock)
2791AC_ARG_ENABLE(COMPUTIME,
2792    AC_HELP_STRING([--enable-COMPUTIME], [s Diem Computime Radio Clock]),
2793    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2794if test "$ntp_ok" = "yes"; then
2795    ntp_libparse=yes
2796    ntp_refclock=yes
2797    AC_DEFINE(CLOCK_COMPUTIME, 1, [Diems Computime Radio Clock?])
2798fi
2799AC_MSG_RESULT($ntp_ok)
2800case "$ntp_ok$ntp_canparse" in
2801 yesno)
2802    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2803    ;;
2804esac
2805
2806AC_MSG_CHECKING(ELV/DCF7000 clock)
2807AC_ARG_ENABLE(DCF7000,
2808    AC_HELP_STRING([--enable-DCF7000], [s ELV/DCF7000 clock]),
2809    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2810if test "$ntp_ok" = "yes"; then
2811    ntp_libparse=yes
2812    ntp_refclock=yes
2813    AC_DEFINE(CLOCK_DCF7000, 1, [ELV/DCF7000 clock?])
2814fi
2815AC_MSG_RESULT($ntp_ok)
2816case "$ntp_ok$ntp_canparse" in
2817 yesno)
2818    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2819    ;;
2820esac
2821
2822AC_MSG_CHECKING(HOPF 6021 clock)
2823AC_ARG_ENABLE(HOPF6021,
2824    AC_HELP_STRING([--enable-HOPF6021 ], [s HOPF 6021 clock]),
2825    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2826if test "$ntp_ok" = "yes"; then
2827    ntp_libparse=yes
2828    ntp_refclock=yes
2829    AC_DEFINE(CLOCK_HOPF6021, 1, [HOPF 6021 clock?])
2830fi
2831AC_MSG_RESULT($ntp_ok)
2832case "$ntp_ok$ntp_canparse" in
2833 yesno)
2834    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2835    ;;
2836esac
2837
2838AC_MSG_CHECKING(Meinberg clocks)
2839AC_ARG_ENABLE(MEINBERG,
2840    AC_HELP_STRING([--enable-MEINBERG], [s Meinberg clocks]),
2841    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2842if test "$ntp_ok" = "yes"; then
2843    ntp_libparse=yes
2844    ntp_refclock=yes
2845    AC_DEFINE(CLOCK_MEINBERG, 1, [Meinberg clocks])
2846fi
2847AC_MSG_RESULT($ntp_ok)
2848case "$ntp_ok$ntp_canparse" in
2849 yesno)
2850    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2851    ;;
2852esac
2853
2854AC_MSG_CHECKING(DCF77 raw time code)
2855AC_ARG_ENABLE(RAWDCF,
2856    AC_HELP_STRING([--enable-RAWDCF], [s DCF77 raw time code]),
2857    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2858if test "$ntp_ok" = "yes"; then
2859    ntp_libparse=yes
2860    ntp_parseutil=yes
2861    ntp_refclock=yes
2862    ntp_rawdcf=yes
2863    AC_DEFINE(CLOCK_RAWDCF, 1, [DCF77 raw time code])
2864fi
2865AC_MSG_RESULT($ntp_ok)
2866case "$ntp_ok$ntp_canparse" in
2867 yesno)
2868    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2869    ;;
2870esac
2871
2872case "$ntp_rawdcf" in
2873 yes)
2874    AC_CACHE_CHECK(if we must enable parity for RAWDCF,
2875    ac_cv_var_rawdcf_parity,
2876    [ans=no
2877    case "$host" in
2878     *-*-linux*)
2879        ans=yes
2880        ;;
2881    esac
2882    ac_cv_var_rawdcf_parity=$ans])
2883    case "$ac_cv_var_rawdcf_parity" in
2884     yes) AC_DEFINE(RAWDCF_NO_IGNPAR, 1, [Should we not IGNPAR (Linux)?]) ;;
2885    esac
2886    ;;
2887
2888 *) # HMS: Is this a good idea?
2889    ac_cv_var_rawdcf_parity=no
2890    ;;
2891esac
2892
2893AC_MSG_CHECKING(RCC 8000 clock)
2894AC_ARG_ENABLE(RCC8000,
2895    AC_HELP_STRING([--enable-RCC8000], [s RCC 8000 clock]),
2896    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2897if test "$ntp_ok" = "yes"; then
2898    ntp_libparse=yes
2899    ntp_refclock=yes
2900    AC_DEFINE(CLOCK_RCC8000, 1, [RCC 8000 clock])
2901fi
2902AC_MSG_RESULT($ntp_ok)
2903case "$ntp_ok$ntp_canparse" in
2904 yesno)
2905    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2906    ;;
2907esac
2908
2909AC_MSG_CHECKING(Schmid DCF77 clock)
2910AC_ARG_ENABLE(SCHMID,
2911    AC_HELP_STRING([--enable-SCHMID ], [s Schmid DCF77 clock]),
2912    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2913if test "$ntp_ok" = "yes"; then
2914    ntp_libparse=yes
2915    ntp_refclock=yes
2916    AC_DEFINE(CLOCK_SCHMID, 1, [Schmid DCF77 clock])
2917fi
2918AC_MSG_RESULT($ntp_ok)
2919case "$ntp_ok$ntp_canparse" in
2920 yesno)
2921    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2922    ;;
2923esac
2924
2925AC_MSG_CHECKING(Trimble GPS receiver/TAIP protocol)
2926AC_ARG_ENABLE(TRIMTAIP,
2927    AC_HELP_STRING([--enable-TRIMTAIP], [s Trimble GPS receiver/TAIP protocol]),
2928    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2929if test "$ntp_ok" = "yes"; then
2930    ntp_libparse=yes
2931    ntp_refclock=yes
2932    AC_DEFINE(CLOCK_TRIMTAIP, 1, [Trimble GPS receiver/TAIP protocol])
2933fi
2934AC_MSG_RESULT($ntp_ok)
2935case "$ntp_ok$ntp_canparse" in
2936 yesno)
2937    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2938    ;;
2939esac
2940
2941AC_MSG_CHECKING(Trimble GPS receiver/TSIP protocol)
2942AC_ARG_ENABLE(TRIMTSIP,
2943    AC_HELP_STRING([--enable-TRIMTSIP], [s Trimble GPS receiver/TSIP protocol]),
2944    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2945if test "$ntp_ok" = "yes"; then
2946    ntp_libparse=yes
2947    ntp_refclock=yes
2948    AC_DEFINE(CLOCK_TRIMTSIP, 1, [Trimble GPS receiver/TSIP protocol])
2949fi
2950AC_MSG_RESULT($ntp_ok)
2951case "$ntp_ok$ntp_canparse" in
2952 yesno)
2953    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2954    ;;
2955esac
2956
2957AC_MSG_CHECKING(WHARTON 400A Series clock)
2958AC_ARG_ENABLE(WHARTON,
2959    AC_HELP_STRING([--enable-WHARTON], [s WHARTON 400A Series clock]),
2960    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2961if test "$ntp_ok" = "yes"; then
2962    ntp_libparse=yes
2963    ntp_refclock=yes
2964    AC_DEFINE(CLOCK_WHARTON_400A, 1, [WHARTON 400A Series protocol])
2965fi
2966AC_MSG_RESULT($ntp_ok)
2967case "$ntp_ok$ntp_canparse" in
2968 yesno)
2969    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2970    ;;
2971esac
2972
2973AC_MSG_CHECKING(VARITEXT clock)
2974AC_ARG_ENABLE(VARITEXT,
2975    AC_HELP_STRING([--enable-VARITEXT], [s VARITEXT clock]),
2976    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
2977if test "$ntp_ok" = "yes"; then
2978    ntp_libparse=yes
2979    ntp_refclock=yes
2980    AC_DEFINE(CLOCK_VARITEXT, 1, [VARITEXT protocol])
2981fi
2982AC_MSG_RESULT($ntp_ok)
2983case "$ntp_ok$ntp_canparse" in
2984 yesno)
2985    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
2986    ;;
2987esac
2988AC_SUBST(LIBPARSE)
2989AC_SUBST(MAKE_LIBPARSE)
2990AC_SUBST(MAKE_LIBPARSE_KERNEL)
2991AC_SUBST(MAKE_CHECK_Y2K)
2992AC_MSG_CHECKING(if we need to make and use the parse libraries)
2993ans=no
2994case "$ntp_libparse" in
2995 yes)
2996    ans=yes
2997    AC_DEFINE(CLOCK_PARSE, 1, [PARSE driver interface])
2998    LIBPARSE=../libparse/libparse.a
2999    MAKE_LIBPARSE=libparse.a
3000    # HMS: check_y2k trips the 34 year problem now...
3001    false && MAKE_CHECK_Y2K=check_y2k
3002    AC_DEFINE(PPS_SAMPLE, 1, [PPS auxiliary interface for ATOM?])
3003    AC_DEFINE(CLOCK_ATOM)
3004    ;;
3005esac
3006AC_MSG_RESULT($ans)
3007
3008# AC_SUBST(RSAOBJS)
3009# AC_SUBST(RSASRCS)
3010# AC_SUBST(RSADIR)
3011# AC_SUBST(RSAREF)
3012# AC_SUBST(LIBRSAREF)
3013# AC_SUBST(MAKE_LIBRSAREF)
3014
3015AC_SUBST(OPENSSL)
3016AC_SUBST(OPENSSL_INC)
3017AC_SUBST(OPENSSL_LIB)
3018
3019AC_MSG_CHECKING(for openssl library directory)
3020AC_ARG_WITH(openssl-libdir,
3021	AC_HELP_STRING([--with-openssl-libdir], [+ =/something/reasonable]),
3022[ans=$withval],
3023[case "$build" in
3024 $host) ans=yes ;;
3025 *)     ans=no ;;
3026esac])
3027case "$ans" in
3028 no) ;;
3029 yes) # Look in:
3030    ans="/usr/lib /usr/lib/openssl /usr/sfw/lib /usr/local/lib /usr/local/ssl/lib"
3031    ;;
3032 *) # Look where they said
3033    ;;
3034esac
3035case "$ans" in
3036 no) ;;
3037 *) # Look for libcrypto.a and libssl.a:
3038    for i in $ans no
3039    do
3040	case "$host" in
3041	 *-*-darwin*)
3042	    test -f $i/libcrypto.dylib -a -f $i/libssl.dylib && break
3043	    ;;
3044	 *)
3045	    test -f $i/libcrypto.so -a -f $i/libssl.so && break
3046	    test -f $i/libcrypto.a -a -f $i/libssl.a && break
3047	    ;;
3048	esac
3049    done
3050    case "$i" in
3051     no)
3052	ans=no
3053	OPENSSL_LIB=
3054	;;
3055     *) ans=$i
3056	OPENSSL_LIB=$ans
3057	;;
3058    esac
3059    ;;
3060esac
3061AC_MSG_RESULT($ans)
3062
3063AC_MSG_CHECKING(for openssl include directory)
3064AC_ARG_WITH(openssl-incdir,
3065	AC_HELP_STRING([--with-openssl-incdir], [+ =/something/reasonable]),
3066[ans=$withval],
3067[case "$build" in
3068 $host) ans=yes ;;
3069 *)     ans=no ;;
3070esac])
3071case "$ans" in
3072 no) ;;
3073 yes) # look in:
3074    ans="/usr/include /usr/sfw/include /usr/local/include /usr/local/ssl/include"
3075    ;;
3076 *) # Look where they said
3077    ;;
3078esac
3079case "$ans" in
3080 no) ;;
3081 *) # look for openssl/opensslconf.h:
3082    for i in $ans no
3083    do
3084	test -f $i/openssl/opensslconf.h && break
3085    done
3086    case "$i" in
3087     no)
3088	ans=no
3089	OPENSSL_INC=
3090	;;
3091     *) ans=$i
3092	OPENSSL_INC=$ans
3093	;;
3094    esac
3095    ;;
3096esac
3097AC_MSG_RESULT($ans)
3098
3099AC_ARG_WITH(crypto,
3100	AC_HELP_STRING([--with-crypto], [+ =openssl]),
3101[ans=$withval], [ans=yes])
3102case "$ans" in
3103 no) ;;
3104 yes|openssl)
3105    if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INC"
3106    then
3107	ans=no
3108    else
3109	# We have OpenSSL inc/lib - use them.
3110	ans=openssl
3111	CPPFLAGS="$CPPFLAGS -I$OPENSSL_INC"
3112	LDFLAGS="$LDFLAGS -L$OPENSSL_LIB"
3113	case "$need_dash_r" in
3114	 1) LDFLAGS="$LDFLAGS -R$OPENSSL_LIB"
3115	    ;;
3116	esac
3117	AC_SUBST(LCRYPTO, [-lcrypto])
3118	AC_DEFINE(OPENSSL, , [Use OpenSSL?])
3119	AC_CHECK_FUNCS(EVP_md2 EVP_mdc2)
3120    fi
3121    ;;
3122esac
3123AC_MSG_CHECKING(for the level of crypto support)
3124AC_MSG_RESULT($ans)
3125
3126AC_MSG_CHECKING(if we want to compile with ElectricFence)
3127AC_ARG_WITH(electricfence,
3128	AC_HELP_STRING([--with-electricfence], [- compile with ElectricFence malloc debugger]),
3129[ans=$withval], [ans=no])
3130case "$ans" in
3131 no) ;;
3132 *)
3133    LIBS="$LIBS \${top_builddir}/ElectricFence/libefence.a"
3134    EF_PROGS="eftest tstheap"
3135    AC_SUBST(EF_PROGS)
3136    EF_LIBS=libefence.a
3137    AC_SUBST(EF_LIBS)
3138    ans=yes
3139    ;;
3140esac
3141AC_MSG_RESULT($ans)
3142
3143AC_SUBST(MAKE_CHECK_LAYOUT)
3144AC_MSG_CHECKING(if we want to run check-layout)
3145case "$cross_compiling$PATH_PERL" in
3146 no/*)
3147    MAKE_CHECK_LAYOUT=check-layout
3148    ans=yes
3149    ;;
3150 *)
3151    ans=no
3152    ;;
3153esac
3154AC_MSG_RESULT($ans)
3155
3156AC_SUBST(TESTDCF)
3157AC_SUBST(DCFD)
3158
3159AC_MSG_CHECKING(if we can make dcf parse utilities)
3160ans=no
3161if test "$ntp_parseutil" = "yes"; then
3162    case "$host" in
3163     *-*-sunos4*|*-*-solaris2*|*-*-linux*|*-*-netbsd*)
3164	ans="dcfd testdcf"
3165	DCFD=dcfd
3166        TESTDCF=testdcf
3167	;;
3168    esac
3169fi
3170AC_MSG_RESULT($ans)
3171
3172AC_SUBST(MAKE_PARSEKMODULE)
3173AC_MSG_CHECKING(if we can build kernel streams modules for parse)
3174ans=no
3175case "$ntp_parseutil$ac_cv_header_sys_stropts_h" in
3176 yesyes)
3177    case "$host" in
3178     sparc-*-sunos4*)
3179        case "$ac_cv_var_kernel_pll" in
3180	yes)
3181	    AC_DEFINE(PPS_SYNC, 1, [PARSE kernel PLL PPS support])
3182	    ;;
3183	esac
3184	ans=parsestreams
3185	MAKE_PARSEKMODULE=parsestreams.loadable_module.o
3186	;;
3187     sparc-*-solaris2*)
3188	ans=parsesolaris
3189	MAKE_PARSEKMODULE=parse
3190	;;
3191    esac
3192    ;;
3193esac
3194AC_MSG_RESULT($ans)
3195
3196AC_MSG_CHECKING(if we need basic refclock support)
3197if test "$ntp_refclock" = "yes"; then
3198    AC_DEFINE(REFCLOCK, 1, [Basic refclock support?])
3199fi
3200AC_MSG_RESULT($ntp_refclock)
3201
3202dnl Things that can be made in clockstuff/
3203AC_SUBST(PROPDELAY)	dnl Set to "propdelay"
3204AC_SUBST(CHUTEST)	dnl Set to "chutest"
3205AC_SUBST(CLKTEST)	dnl Set to "clktest"
3206
3207AC_SUBST(MAKE_ADJTIMED)
3208AC_MSG_CHECKING(if we want HP-UX adjtimed support)
3209case "$host" in
3210 *-*-hpux[[56789]]*)
3211    ans=yes
3212    ;;
3213 *) ans=no
3214    ;;
3215esac
3216if test "$ans" = "yes"; then
3217    MAKE_ADJTIMED=adjtimed
3218    AC_DEFINE(NEED_HPUX_ADJTIME, 1, [Do we need HPUX adjtime() library support?])
3219fi
3220AC_MSG_RESULT($ans)
3221
3222AC_MSG_CHECKING(if we want QNX adjtime support)
3223case "$host" in
3224 *-*-qnx*)
3225    ans=yes
3226    ;;
3227 *) ans=no
3228    ;;
3229esac
3230if test "$ans" = "yes"; then
3231    AC_DEFINE(NEED_QNX_ADJTIME, 1, [Do we need the qnx adjtime call?])
3232fi
3233AC_MSG_RESULT($ans)
3234
3235AC_CACHE_CHECK(if we can read kmem, ac_cv_var_can_kmem,
3236[AC_ARG_ENABLE(kmem,
3237   AC_HELP_STRING([--enable-kmem], [s read /dev/kmem for tick and/or tickadj]),
3238    [ans=$enableval],
3239    [case "$ac_cv_func_nlist$ac_cv_func_K_open$ac_cv_func_kvm_open" in
3240     *yes*)
3241	ans=yes
3242	;;
3243     *) ans=no
3244	;;
3245    esac
3246    case "$host" in
3247     *-*-aix*)
3248	#ans=no
3249	;;
3250     *-*-domainos)	# Won't be found...
3251	ans=no
3252	;;
3253     *-*-hpux*)
3254	#ans=no
3255	;;
3256     *-*-irix[[456]]*)
3257	ans=no
3258	;;
3259     *-*-linux*)
3260	ans=no
3261	;;
3262     *-*-winnt3.5)
3263	ans=no
3264	;;
3265     *-*-unicosmp*)
3266	ans=no
3267	;;
3268    esac
3269    ])
3270ac_cv_var_can_kmem=$ans])
3271
3272case "$ac_cv_var_can_kmem" in
3273 *yes*) ;;
3274 *) AC_DEFINE(NOKMEM, 1, [Should we NOT read /dev/kmem?]) ;;
3275esac
3276
3277AC_CACHE_CHECK(if adjtime is accurate, ac_cv_var_adjtime_is_accurate,
3278[AC_ARG_ENABLE(accurate-adjtime,
3279   AC_HELP_STRING([--enable-accurate-adjtime], [s the adjtime() call is accurate]),
3280    [ans=$enableval],
3281    [case "$host" in
3282      i386-sequent-ptx*)
3283	 ans=no
3284	 ;;
3285      i386-unknown-osf1*)
3286	 ans=yes
3287	 ;;
3288      mips-sgi-irix[[456]]*)
3289	 ans=yes
3290	 ;;
3291      *-fujitsu-uxp*)
3292	 ans=yes
3293	 ;;
3294      *-ibm-aix[[45]]*)
3295	 ans=yes
3296	 ;;
3297      *-*-linux*)
3298	 ans=yes
3299	 ;;
3300      *-*-solaris2.[[01]])
3301	 ans=no
3302	 ;;
3303      *-*-solaris2*)
3304         ans=yes
3305         ;;
3306      *-*-unicosmp*)
3307         ans=yes
3308         ;;
3309      *) ans=no
3310	 ;;
3311     esac
3312     ])
3313ac_cv_var_adjtime_is_accurate=$ans])
3314case "$ac_cv_var_adjtime_is_accurate" in
3315 yes) AC_DEFINE(ADJTIME_IS_ACCURATE, 1, [Is adjtime() accurate?]) ;;
3316esac
3317
3318AC_CACHE_CHECK([the name of 'tick' in the kernel],
3319ac_cv_var_nlist_tick,
3320[ans=_tick
3321case "$host" in
3322 m68*-hp-hpux*) # HP9000/300?
3323    ans=_old_tick
3324    ;;
3325 *-apple-aux[[23]]*)
3326    ans=tick
3327    ;;
3328 *-hp-hpux*)
3329    ans=old_tick
3330    ;;
3331 *-ibm-aix[[345]]*)
3332    ans=no
3333    ;;
3334 *-*-mpeix*)
3335    ans=no
3336    ;;
3337 *-*-ptx*)
3338    ans=tick
3339    ;;
3340 *-*-sco3.2v[[45]]*)
3341    ans=no
3342    ;;
3343 *-*-solaris2*)
3344    ans=nsec_per_tick
3345    ;;
3346 *-*-sysv4*)
3347    ans=tick
3348    ;;
3349esac
3350ac_cv_var_nlist_tick=$ans])
3351case "$ac_cv_var_nlist_tick" in
3352 ''|no) ;;	# HMS: I think we can only get 'no' here...
3353 *) AC_DEFINE_UNQUOTED(K_TICK_NAME, "$ac_cv_var_nlist_tick", [What is the name of TICK in the kernel?]) ;;
3354esac
3355#
3356AC_CACHE_CHECK([for the units of 'tick'],
3357ac_cv_var_tick_nano,
3358[ans=usec
3359case "$host" in
3360 *-*-solaris2*)
3361    ans=nsec
3362    ;;
3363esac
3364ac_cv_var_tick_nano=$ans])
3365case "$ac_cv_var_tick_nano" in
3366 nsec)
3367    AC_DEFINE(TICK_NANO, 1, [Is K_TICK_NAME in nanoseconds?])
3368    ;;
3369esac
3370#
3371AC_CACHE_CHECK([the name of 'tickadj' in the kernel],
3372ac_cv_var_nlist_tickadj,
3373[ans=_tickadj
3374case "$host" in
3375 m68*-hp-hpux*) # HP9000/300?
3376    ans=_tickadj
3377    ;;
3378 *-apple-aux[[23]]*)
3379    ans=tickadj
3380    ;;
3381 *-hp-hpux10*)
3382    ans=no
3383    ;;
3384 *-hp-hpux9*)
3385    ans=no
3386    ;;
3387 *-hp-hpux*)
3388    ans=tickadj
3389    ;;
3390 *-*-aix*)
3391    ans=tickadj
3392    ;;
3393 *-*-mpeix*)
3394    ans=no
3395    ;;
3396 *-*-ptx*)
3397    ans=tickadj
3398    ;;
3399 *-*-sco3.2v4*)
3400    ans=no
3401    ;;
3402 *-*-sco3.2v5.0*)
3403    ans=clock_drift
3404    ;;
3405 *-*-solaris2*)
3406    ans=no	# hrestime_adj
3407    ;;
3408 *-*-sysv4*)
3409    ans=tickadj
3410    ;;
3411esac
3412ac_cv_var_nlist_tickadj=$ans])
3413case "$ac_cv_var_nlist_tickadj" in
3414 ''|no) ;;	# HMS: I think we can only get 'no' here...
3415 *) AC_DEFINE_UNQUOTED(K_TICKADJ_NAME, "$ac_cv_var_nlist_tickadj", [What is the name of TICKADJ in the kernel?]) ;;
3416esac
3417#
3418AC_CACHE_CHECK([for the units of 'tickadj'],
3419ac_cv_var_tickadj_nano,
3420[ans=usec
3421case "$host" in
3422 *-*-solaris2*)
3423    ans=nsec
3424    ;;
3425esac
3426ac_cv_var_tickadj_nano=$ans])
3427case "$ac_cv_var_tickadj_nano" in
3428 nsec)
3429    AC_DEFINE(TICKADJ_NANO, 1, [Is K_TICKADJ_NAME in nanoseconds?])
3430    ;;
3431esac
3432#
3433AC_CACHE_CHECK([half-heartedly for 'dosynctodr' in the kernel],
3434ac_cv_var_nlist_dosynctodr,
3435[case "$host" in
3436 *-apple-aux[[23]]*)
3437    ans=no
3438    ;;
3439 *-sni-sysv*)
3440    ans=dosynctodr
3441    ;;
3442 *-*-aix*)
3443    ans=dosynctodr
3444    ;;
3445 *-*-hpux*)
3446    ans=no
3447    ;;
3448 *-*-mpeix*)
3449    ans=no
3450    ;;
3451 *-*-nextstep*)
3452    ans=_dosynctodr
3453    ;;
3454 *-*-ptx*)
3455    ans=doresettodr
3456    ;;
3457 *-*-sco3.2v4*)
3458    ans=no
3459    ;;
3460 *-*-sco3.2v5*)
3461    ans=track_rtc
3462    ;;
3463 *-*-solaris2*)
3464    ans=dosynctodr
3465    ;;
3466 *-*-sysv4*)
3467    ans=doresettodr
3468    ;;
3469 *)
3470    ans=_dosynctodr
3471    ;;
3472esac
3473ac_cv_var_nlist_dosynctodr=$ans])
3474case "$ac_cv_var_nlist_dosynctodr" in
3475 no) ;;
3476 *)  AC_DEFINE_UNQUOTED(K_DOSYNCTODR_NAME, "$ac_cv_var_nlist_dosynctodr", [What is (probably) the name of DOSYNCTODR in the kernel?])
3477     ;;
3478esac
3479#
3480AC_CACHE_CHECK([half-heartedly for 'noprintf' in the kernel],
3481ac_cv_var_nlist_noprintf,
3482[case "$host" in
3483 *-apple-aux[[23]]*)
3484    ans=no
3485    ;;
3486 *-sni-sysv*)
3487    ans=noprintf
3488    ;;
3489 *-*-aix*)
3490    ans=noprintf
3491    ;;
3492 *-*-hpux*)
3493    ans=no
3494    ;;
3495 *-*-mpeix*)
3496    ans=no
3497    ;;
3498 *-*-ptx*)
3499    ans=noprintf
3500    ;;
3501 *-*-nextstep*)
3502    ans=_noprintf
3503    ;;
3504 *-*-solaris2*)
3505    ans=noprintf
3506    ;;
3507 *-*-sysv4*)
3508    ans=noprintf
3509    ;;
3510 *)
3511    ans=_noprintf
3512    ;;
3513esac
3514ac_cv_var_nlist_noprintf=$ans])
3515case "$ac_cv_var_nlist_noprintf" in
3516 no) ;;
3517 *)  AC_DEFINE_UNQUOTED(K_NOPRINTF_NAME, "$ac_cv_var_nlist_noprintf", [What is (probably) the name of NOPRINTF in the kernel?])
3518     ;;
3519esac
3520
3521dnl The tick/tickadj sections were written by Skippy, who never learned
3522dnl that it's impolite (horridly gross) to show your guts in public.
3523
3524dnl	tick		tickadj	
3525dnl	10000		80	    Unixware
3526dnl	1000000L/hz	tick/16     (Solaris,UXPV,HPUX) && ADJTIME_IS_ACCURATE
3527dnl	10000		150	    sgi IRIX
3528dnl	1000000L/hz	1000	    RS6000 && NOKMEM
3529dnl	1000000L/hz	668	    DOMAINOS && NOKMEM
3530dnl	1000000L/hz	500/HZ	    other && NOKMEM
3531dnl	txc.tick	1	    Linux
3532dnl	(every / 10)	50	    WinNT - tickadj is roughly 500/hz
3533dnl	1000000L/hz	(nlist)     (Solaris && !ADJTIME_IS_ACCURATE),
3534dnl				    (RS6000 && !NOKMEM), SINIX MIPS
3535
3536dnl But we'll only use these "values" if we can't find anything else.
3537
3538AC_CACHE_CHECK(for a default value for 'tick', ac_cv_var_tick,
3539[AC_ARG_ENABLE(tick,
3540  AC_HELP_STRING([--enable-tick=VALUE], [s force a value for 'tick']),
3541    [ans=$enableval],
3542    [ans=no
3543     case "$host" in
3544      XXX-*-pc-cygwin*)
3545	 ;;
3546      *-univel-sysv*)
3547	 ans=10000
3548	 ;;
3549      *-*-irix*)
3550	 ans=10000
3551	 ;;
3552      *-*-linux*)
3553	 ans=txc.tick
3554	 ;;
3555      *-*-mpeix*)
3556	 ans=no
3557	 ;;
3558      *-*-winnt3.5)
3559	 ans='(every / 10)'
3560	 ;;
3561      *-*-unicosmp*)
3562	 ans=10000
3563	 ;;
3564      *)
3565	 ans='1000000L/hz'
3566	 ;;
3567     esac])
3568ac_cv_var_tick=$ans])
3569case "$ac_cv_var_tick" in
3570 ''|no) ;;	# HMS: I think we can only get 'no' here...
3571 *) AC_DEFINE_UNQUOTED(PRESET_TICK, $ac_cv_var_tick, [Preset a value for 'tick'?]) ;;
3572esac
3573
3574AC_CACHE_CHECK(for a default value for 'tickadj', ac_cv_var_tickadj,
3575[AC_ARG_ENABLE(tickadj,
3576  AC_HELP_STRING([--enable-tickadj=VALUE], [s force a value for 'tickadj']),
3577  [ans=$enableval],
3578  [ans='500/hz'
3579  case "$host" in
3580   *-fujitsu-uxp*)
3581      case "$ac_cv_var_adjtime_is_accurate" in
3582       yes) ans='tick/16' ;;
3583      esac
3584      ;;
3585   XXX-*-pc-cygwin*)
3586      ans=no
3587      ;;
3588   *-univel-sysv*)
3589      ans=80
3590      ;;
3591   *-*-aix*)
3592      case "$ac_cv_var_can_kmem" in
3593       no) ans=1000 ;;
3594      esac
3595      ;;
3596   *-*-domainos)	# Skippy: won't be found...
3597      case "$ac_cv_var_can_kmem" in
3598       no) ans=668 ;;
3599      esac
3600      ;;
3601   *-*-hpux*)
3602      case "$ac_cv_var_adjtime_is_accurate" in
3603       yes) ans='tick/16' ;;
3604      esac
3605      ;;
3606   *-*-irix*)
3607      ans=150
3608      ;;
3609   *-*-mpeix*)
3610      ans=no
3611      ;;
3612   *-*-sco3.2v5.0*)
3613      ans=10000L/hz
3614      ;;
3615   *-*-solaris2*)
3616      case "$ac_cv_var_adjtime_is_accurate" in
3617       yes)
3618          #ans='tick/16'
3619	  ;;
3620      esac
3621      ;;
3622   *-*-winnt3.5)
3623      ans=50
3624      ;;
3625   *-*-unicosmp*)
3626      ans=150
3627      ;;
3628  esac])
3629ac_cv_var_tickadj=$ans])
3630case "$ac_cv_var_tickadj" in
3631 ''|no) ;;	# HMS: I think we can only get 'no' here...
3632 *) AC_DEFINE_UNQUOTED(PRESET_TICKADJ, $ac_cv_var_tickadj, [Preset a value for 'tickadj'?]) ;;
3633esac
3634
3635# Newer versions of ReliantUNIX round adjtime() values down to
3636# 1/100s (system tick). Sigh ...
3637# Unfortunately, there is no easy way to know if particular release
3638# has this "feature" or any obvious way to test for it.
3639case "$host" in
3640 mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX_CLOCK, 1, [Do we want the ReliantUNIX clock hacks?]) ;;
3641esac
3642
3643case "$host" in
3644 *-*-sco3.2v5*) AC_DEFINE(SCO5_CLOCK, 1, [Do we want the SCO clock hacks?]) ;;
3645esac
3646
3647ac_cv_make_tickadj=yes
3648case "$ac_cv_var_can_kmem$ac_cv_var_tick$ac_cv_var_tickadj" in
3649 nonono)	# Don't read KMEM, no presets.  Bogus.
3650    AC_MSG_WARN(Can't read kmem, no PRESET_TICK or PRESET_TICKADJ.  No tickadj.)
3651    ac_cv_make_tickadj=no
3652    ;;
3653 nono*)		# Don't read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
3654    AC_MSG_WARN(Can't read kmem but no PRESET_TICK.  No tickadj.)
3655    ac_cv_make_tickadj=no
3656    ;;
3657 no*no)		# Don't read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Bogus.
3658    AC_MSG_WARN(Can't read kmem but no PRESET_TICKADJ.  No tickadj.)
3659    ac_cv_make_tickadj=no
3660    ;;
3661 no*)		# Don't read KMEM, PRESET_TICK and PRESET_TICKADJ.  Cool.
3662    ;;
3663 yesnono)	# Read KMEM, no presets.  Cool.
3664    ;;
3665 yesno*)	# Read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
3666    AC_MSG_WARN(PRESET_TICKADJ is defined but not PRESET_TICK.  Please report this.)
3667    ;;
3668 yes*no)	# Read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Cool.
3669    ;;
3670 yes*)		# READ KMEM, PRESET_TICK and PRESET_TICKADJ.
3671    ;;
3672 *)		# Generally bogus.
3673    AC_MSG_ERROR(This shouldn't happen.)
3674    ;;
3675esac
3676
3677AC_SUBST(MAKE_NTPTIME)
3678AC_CACHE_CHECK(if we want and can make the ntptime utility, ac_cv_make_ntptime,
3679[case "$host" in
3680 *) case "$ac_cv_struct_ntptimeval$ac_cv_var_kernel_pll" in
3681     yesyes)
3682	ans=yes
3683	;;
3684     *)
3685	ans=no
3686	;;
3687    esac
3688    ;;
3689esac
3690ac_cv_make_ntptime=$ans])
3691case "$ac_cv_make_ntptime" in
3692 yes)
3693    MAKE_NTPTIME=ntptime
3694    ;;
3695esac
3696
3697AC_SUBST(MAKE_TICKADJ)
3698case "$host" in
3699 mips-sni-sysv4*)
3700    # tickadj is pretty useless on newer versions of ReliantUNIX
3701    # Do not bother
3702    ac_cv_make_tickadj=no
3703    ;;
3704 *-*-irix*)
3705    ac_cv_make_tickadj=no
3706    ;;
3707 *-*-solaris2*)
3708    # DLM says tickadj is a no-no starting with solaris2.5
3709    case "$host" in
3710     *-*-solaris2.1[[0-9]]*)
3711	ac_cv_make_tickadj=no
3712	;;
3713     *-*-solaris2.[[0-4]]*) ;;
3714     *) ac_cv_make_tickadj=no ;;
3715    esac
3716    ;;
3717 *-*-unicosmp*)
3718    ac_cv_make_tickadj=no
3719    ;;
3720esac
3721AC_CACHE_CHECK(if we want and can make the tickadj utility, ac_cv_make_tickadj,
3722ac_cv_make_tickadj=yes)
3723case "$ac_cv_make_tickadj" in
3724 yes)
3725    MAKE_TICKADJ=tickadj
3726    ;;
3727esac
3728
3729AC_SUBST(MAKE_TIMETRIM)
3730AC_CACHE_CHECK(if we want and can make the timetrim utility, ac_cv_make_timetrim,
3731[case "$host" in
3732 *-*-irix*)
3733    ac_cv_make_timetrim=yes
3734    ;;
3735 *-*-unicosmp*)
3736    ac_cv_make_timetrim=yes
3737    ;;
3738 *)
3739    ac_cv_make_timetrim=no
3740    ;;
3741esac])
3742case "$ac_cv_make_timetrim" in
3743 yes)
3744    MAKE_TIMETRIM=timetrim
3745    ;;
3746esac
3747
3748AC_SUBST(MAKE_LIBNTPSIM)
3749AC_SUBST(MAKE_NTPDSIM)
3750AC_CACHE_CHECK([if we want to build the NTPD simulator], ac_cv_var_ntpd_sim,
3751[AC_ARG_ENABLE(simulator,
3752    AC_HELP_STRING([--enable-simulator], [- build/install the NTPD simulator?]),
3753    [ans=$enableval], [ans=no])
3754ac_cv_var_ntpd_sim=$ans])
3755case "$ac_cv_var_ntpd_sim" in
3756 yes)
3757    MAKE_NTPDSIM=ntpdsim
3758    MAKE_LIBNTPSIM=libntpsim.a
3759    ;;
3760esac
3761
3762case "$build" in
3763 $host)
3764    ;;
3765 *) case "$host" in
3766     *-*-vxworks*)
3767        LDFLAGS="$LDFLAGS -r"
3768        ;;
3769    esac
3770    ;;
3771esac
3772
3773AC_CACHE_CHECK(if we should always slew the time, ac_cv_var_slew_always,
3774[AC_ARG_ENABLE(slew-always,
3775   AC_HELP_STRING([--enable-slew-always], [s always slew the time]),
3776    [ans=$enableval],
3777    [case "$host" in
3778      *-apple-aux[[23]]*)
3779	 ans=yes
3780	 ;;
3781      *-*-bsdi[[012]]*)
3782	 ans=no
3783	 ;;
3784      *-*-bsdi*)
3785	 ans=yes
3786	 ;;
3787      *-*-openvms*)	# HMS: won't be found
3788	 ans=yes
3789	 ;;
3790      *) ans=no
3791	 ;;
3792     esac
3793     ])
3794ac_cv_var_slew_always=$ans])
3795case "$ac_cv_var_slew_always" in
3796 yes) AC_DEFINE(SLEWALWAYS, 1, [Slew always?]) ;;
3797esac
3798
3799AC_CACHE_CHECK(if we should step and slew the time, ac_cv_var_step_slew,
3800[AC_ARG_ENABLE(step-slew,
3801   AC_HELP_STRING([--enable-step-slew], [s step and slew the time]),
3802    [ans=$enableval],
3803    [case "$host" in
3804      *-sni-sysv*)
3805	 ans=yes
3806	 ;;
3807      *-univel-sysv*)
3808	 ans=no
3809	 ;;
3810      *-*-ptx*)
3811	 ans=yes
3812	 ;;
3813      *-*-solaris2.1[[0-9]]*)
3814	 ans=no
3815	 ;;
3816      *-*-solaris2.[[012]]*)
3817	 ans=yes
3818	 ;;
3819      *-*-sysv4*)	# HMS: Does this catch Fujitsu UXP?
3820	 ans=yes
3821	 ;;
3822      *) ans=no
3823	 ;;
3824     esac
3825     ])
3826ac_cv_var_step_slew=$ans])
3827case "$ac_cv_var_step_slew" in
3828 yes) AC_DEFINE(STEP_SLEW, 1, [Step, then slew the clock?]) ;;
3829esac
3830
3831AC_CACHE_CHECK(if ntpdate should step the time, ac_cv_var_ntpdate_step,
3832[AC_ARG_ENABLE(ntpdate-step,
3833   AC_HELP_STRING([--enable-ntpdate-step], [s if ntpdate should step the time]),
3834    [ans=$enableval],
3835    [case "$host" in
3836      *-apple-aux[[23]]*)
3837	 ans=yes
3838	 ;;
3839      *) ans=no
3840	 ;;
3841     esac
3842     ])
3843ac_cv_var_ntpdate_step=$ans])
3844case "$ac_cv_var_ntpdate_step" in
3845 yes) AC_DEFINE(FORCE_NTPDATE_STEP, 1, [force ntpdate to step the clock if !defined(STEP_SLEW) ?]) ;;
3846esac
3847
3848AC_CACHE_CHECK(if we should sync TODR clock every hour, ac_cv_var_sync_todr,
3849[AC_ARG_ENABLE(hourly-todr-sync,
3850   AC_HELP_STRING([--enable-hourly-todr-sync],
3851		  [s if we should sync TODR hourly]),
3852    [ans=$enableval],
3853    [case "$host" in
3854      *-*-nextstep*)
3855	 ans=yes
3856	 ;;
3857      *-*-openvms*)	# HMS: won't be found
3858	 ans=yes
3859	 ;;
3860      *) ans=no
3861	 ;;
3862     esac])
3863ac_cv_var_sync_todr=$ans])
3864case "$ac_cv_var_sync_todr" in
3865 yes) AC_DEFINE(DOSYNCTODR, 1, [synch TODR hourly?]) ;;
3866esac
3867
3868AC_CACHE_CHECK(if we should avoid kernel FLL bug, ac_cv_var_kernel_fll_bug,
3869[AC_ARG_ENABLE(kernel-fll-bug,
3870   AC_HELP_STRING([--enable-kernel-fll-bug],
3871		  [s if we should avoid a kernel FLL bug]),
3872    [ans=$enableval],
3873    [case "$host" in
3874     *-*-solaris2.6)
3875	 unamev=`uname -v`
3876	 case "$unamev" in
3877	  Generic_105181-*)
3878	     old_IFS="$IFS"
3879	     IFS="-"
3880	     set $unamev
3881	     IFS="$old_IFS"
3882	     if test "$2" -ge 17
3883	     then
3884	        # Generic_105181-17 and higher
3885	        ans=no
3886	     else
3887	        ans=yes
3888	     fi
3889	     ;;
3890	  *) ans=yes
3891	     ;;
3892	 esac
3893	 ;;
3894     *-*-solaris2.7)
3895	 unamev=`uname -v`
3896	 case "$unamev" in
3897	  Generic_106541-*)
3898	     old_IFS="$IFS"
3899	     IFS="-"
3900	     set $unamev
3901	     IFS="$old_IFS"
3902	     if test "$2" -ge 07
3903	     then
3904	        # Generic_106541-07 and higher
3905	        ans=no
3906	     else
3907	        ans=yes
3908	     fi
3909	     ;;
3910	  *) ans=yes
3911	     ;;
3912	 esac
3913	 ;;
3914     *) ans=no
3915	 ;;
3916    esac
3917    ])
3918ac_cv_var_kernel_fll_bug=$ans])
3919case "$ac_cv_var_kernel_fll_bug" in
3920 yes) AC_DEFINE(KERNEL_FLL_BUG, 1, [Does the kernel have an FLL bug?]) ;;
3921esac
3922
3923AC_CACHE_CHECK(if we should use the IRIG sawtooth filter, ac_cv_var_irig_sucks,
3924[AC_ARG_ENABLE(irig-sawtooth, 
3925	AC_HELP_STRING([--enable-irig-sawtooth],
3926		       [s if we should enable the IRIG sawtooth filter]),
3927    [ans=$enableval],
3928    [case "$host" in
3929     *-*-solaris2.[[89]])
3930	ans=yes
3931	;;
3932     *-*-solaris2.1[[0-9]]*)
3933	ans=yes
3934	;;
3935     *) ans=no
3936	;;
3937    esac
3938    ])
3939ac_cv_var_irig_sucks=$ans])
3940case "$ac_cv_var_irig_sucks" in
3941 yes) AC_DEFINE(IRIG_SUCKS, 1, [Should we use the IRIG sawtooth filter?]) ;;
3942esac
3943
3944AC_CACHE_CHECK(if we should enable NIST lockclock scheme, ac_cv_var_nist_lockclock,
3945[AC_ARG_ENABLE(nist, 
3946	AC_HELP_STRING([--enable-nist],
3947		       [- if we should enable the NIST lockclock scheme]),
3948    [ans=$enableval],[ans=no])
3949ac_cv_var_nist_lockclock=$ans])
3950case "$ac_cv_var_nist_lockclock" in
3951 yes) AC_DEFINE(LOCKCLOCK, 1, [Should we align with the NIST lockclock scheme?]) ;;
3952esac
3953
3954#
3955# ISC stuff
3956#
3957
3958if test $ac_cv_struct_sockaddr_has_sa_len = yes; then
3959    AC_DEFINE(ISC_PLATFORM_HAVESALEN, ,[ISC: struct sockaddr as sa_len?])
3960fi
3961
3962AC_ARG_ENABLE(ipv6, AC_HELP_STRING([--enable-ipv6], [s use IPv6?]))
3963
3964case "$enable_ipv6" in
3965 yes|''|autodetect)
3966    case "$host" in
3967     powerpc-ibm-aix4*) ;;
3968     *)
3969	AC_DEFINE(WANT_IPV6, ,[ISC: Want IPv6?])
3970	;;
3971    esac
3972    ;;
3973 no)
3974    ;;
3975esac
3976
3977AC_MSG_CHECKING(for IPv6 structures)
3978AC_TRY_COMPILE([
3979#include <sys/types.h>
3980#include <sys/socket.h>
3981#include <netinet/in.h>],
3982[struct sockaddr_in6 sin6; return (0);],
3983	[AC_MSG_RESULT(yes)
3984	 found_ipv6=yes],
3985	[AC_MSG_RESULT(no)
3986	 found_ipv6=no])
3987
3988#
3989# See whether IPv6 support is provided via a Kame add-on.
3990# This is done before other IPv6 linking tests so LIBS is properly set.
3991#
3992AC_MSG_CHECKING(for Kame IPv6 support)
3993AC_ARG_WITH(kame,
3994	AC_HELP_STRING([--with-kame], [- =/usr/local/v6]),
3995	use_kame="$withval", use_kame="no")
3996
3997case "$use_kame" in
3998	no)
3999		;;
4000	yes)
4001		kame_path=/usr/local/v6
4002		;;
4003	*)
4004		kame_path="$use_kame"
4005		;;
4006esac
4007
4008case "$use_kame" in
4009	no)
4010		AC_MSG_RESULT(no)
4011		;;
4012	*)
4013		if test -f $kame_path/lib/libinet6.a; then
4014			AC_MSG_RESULT($kame_path/lib/libinet6.a)
4015			LIBS="-L$kame_path/lib -linet6 $LIBS"
4016		else
4017			AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
4018
4019Please choose the proper path with the following command:
4020
4021    configure --with-kame=PATH
4022])
4023		fi
4024		;;
4025esac
4026
4027#
4028# Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
4029# Including it on Kame-using platforms is very bad, though, because
4030# Kame uses #error against direct inclusion.   So include it on only
4031# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
4032# This is done before the in6_pktinfo check because that's what
4033# netinet6/in6.h is needed for.
4034#
4035case "$host" in
4036*-bsdi4.[[01]]*)
4037	ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
4038	LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
4039	isc_netinet6in6_hack="#include <netinet6/in6.h>"
4040	;;
4041*)
4042	ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
4043	LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
4044	isc_netinet6in6_hack=""
4045	;;
4046esac
4047
4048#
4049# This is similar to the netinet6/in6.h issue.
4050#
4051case "$host" in
4052*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
4053        # UnixWare
4054	# ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
4055	# LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
4056	AC_DEFINE(ISC_PLATFORM_FIXIN6ISADDR, 1,[Do we need to fix in6isaddr?])
4057	isc_netinetin6_hack="#include <netinet/in6.h>"
4058	;;
4059*)
4060	# ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
4061	# LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
4062        # ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
4063	isc_netinetin6_hack=""
4064	;;
4065esac
4066
4067
4068AC_MSG_CHECKING([for struct if_laddrconf])
4069AC_TRY_LINK([
4070#include <sys/types.h>
4071#include <net/if6.h>
4072],[ struct if_laddrconf a; ],
4073	[AC_MSG_RESULT(yes)
4074	 AC_DEFINE(ISC_PLATFORM_HAVEIF_LADDRCONF, ,
4075		[ISC: have struct if_laddrconf?])],
4076	[AC_MSG_RESULT(no)])
4077
4078AC_MSG_CHECKING([for struct if_laddrreq])
4079AC_TRY_LINK([
4080#include <sys/types.h>
4081#include <net/if6.h>
4082],[ struct if_laddrreq a; ],
4083	[AC_MSG_RESULT(yes)
4084	 AC_DEFINE(ISC_PLATFORM_HAVEIF_LADDRREQ, ,
4085		[ISC: have struct if_laddrreq?])],
4086	[AC_MSG_RESULT(no)])
4087
4088case "$found_ipv6" in
4089 yes)
4090    AC_DEFINE(ISC_PLATFORM_HAVEIPV6, ,[ISC: Have IPv6?])
4091
4092    AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id], , ,
4093[
4094#include <sys/types.h>
4095#include <sys/socket.h>
4096#include <netinet/in.h>
4097$isc_netinetin6_hack
4098$isc_netinet6in6_hack
4099])
4100
4101    AC_MSG_CHECKING(for in6_pktinfo)
4102    AC_TRY_COMPILE([
4103#include <sys/types.h>
4104#include <sys/socket.h>
4105#include <netinet/in.h>
4106$isc_netinetin6_hack
4107$isc_netinet6in6_hack
4108],
4109	[struct in6_pktinfo xyzzy; return (0);],
4110	[AC_MSG_RESULT(yes)
4111	 AC_DEFINE(ISC_PLATFORM_HAVEIN6PKTINFO, ,
4112		[ISC: Have struct in6_pktinfo?])],
4113	[AC_MSG_RESULT(no -- disabling runtime ipv6 support)])
4114
4115    # HMS: Use HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID instead?
4116    AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
4117    AC_TRY_COMPILE([
4118#include <sys/types.h>
4119#include <sys/socket.h>
4120#include <netinet/in.h>
4121$isc_netinetin6_hack
4122$isc_netinet6in6_hack
4123],
4124	[struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
4125	[AC_MSG_RESULT(yes)
4126	 AC_DEFINE(ISC_PLATFORM_HAVESCOPEID, ,
4127		[ISC: Have sin6_scope_id?])],
4128	 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
4129	[AC_MSG_RESULT(no)
4130	 ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
4131	 result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
4132    LWRES_HAVE_SIN6_SCOPE_ID="$result"
4133
4134    ;;
4135esac
4136
4137# We need this check run all the time...
4138AC_MSG_CHECKING(for in6addr_any)
4139AC_TRY_LINK([
4140#include <sys/types.h>
4141#include <sys/socket.h>
4142#include <netinet/in.h>
4143$isc_netinetin6_hack
4144$isc_netinet6in6_hack
4145$isc_in_addr6_hack
4146],
4147	[[struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);]],
4148	[AC_MSG_RESULT(yes)],
4149	[AC_MSG_RESULT(no)
4150	 AC_DEFINE(ISC_PLATFORM_NEEDIN6ADDRANY, ,
4151		[ISC: Need in6addr_any?])]
4152)
4153
4154#
4155# Look for a sysctl call to get the list of network interfaces.
4156#
4157AC_MSG_CHECKING(for interface list sysctl)
4158AC_EGREP_CPP(found_rt_iflist, [
4159#include <sys/param.h>
4160#include <sys/sysctl.h>
4161#include <sys/socket.h>
4162#ifdef NET_RT_IFLIST  
4163found_rt_iflist
4164#endif
4165],
4166        [AC_MSG_RESULT(yes)
4167         AC_DEFINE(HAVE_IFLIST_SYSCTL,1,[ISC: Use iflist_sysctl?])],
4168        [AC_MSG_RESULT(no)])
4169
4170###
4171
4172AC_DEFINE_DIR(NTP_KEYSDIR, sysconfdir, [Default location of crypto key info])
4173
4174AC_CONFIG_FILES(Makefile)
4175AC_CONFIG_FILES(ElectricFence/Makefile)
4176AC_CONFIG_FILES(adjtimed/Makefile)
4177AC_CONFIG_FILES(clockstuff/Makefile)
4178AC_CONFIG_FILES(include/Makefile)
4179AC_CONFIG_FILES(include/isc/Makefile)
4180AC_CONFIG_FILES(kernel/Makefile)
4181AC_CONFIG_FILES(kernel/sys/Makefile)
4182AC_CONFIG_FILES(libntp/Makefile)
4183AC_CONFIG_FILES(libparse/Makefile)
4184AC_CONFIG_FILES(ntpd/Makefile)
4185AC_CONFIG_FILES(ntpdate/Makefile)
4186AC_CONFIG_FILES(ntpdc/Makefile)
4187AC_CONFIG_FILES(ntpdc/nl.pl,		[chmod +x ntpdc/nl.pl])
4188AC_CONFIG_FILES(ntpq/Makefile)
4189AC_CONFIG_FILES(parseutil/Makefile)
4190AC_CONFIG_FILES(scripts/Makefile)
4191AC_CONFIG_FILES(scripts/calc_tickadj,	[chmod +x scripts/calc_tickadj])
4192AC_CONFIG_FILES(scripts/checktime,	[chmod +x scripts/checktime])
4193AC_CONFIG_FILES(scripts/freq_adj,	[chmod +x scripts/freq_adj])
4194AC_CONFIG_FILES(scripts/html2man,	[chmod +x scripts/html2man])
4195AC_CONFIG_FILES(scripts/mkver,		[chmod +x scripts/mkver])
4196AC_CONFIG_FILES(scripts/ntp-wait,	[chmod +x scripts/ntp-wait])
4197AC_CONFIG_FILES(scripts/ntpsweep,	[chmod +x scripts/ntpsweep])
4198AC_CONFIG_FILES(scripts/ntptrace,	[chmod +x scripts/ntptrace])
4199AC_CONFIG_FILES(scripts/ntpver,		[chmod +x scripts/ntpver])
4200AC_CONFIG_FILES(scripts/plot_summary,	[chmod +x scripts/plot_summary])
4201AC_CONFIG_FILES(scripts/summary,	[chmod +x scripts/summary])
4202AC_CONFIG_FILES(util/Makefile)
4203
4204AC_CONFIG_SUBDIRS(sntp)
4205
4206AC_OUTPUT
4207