xref: /freebsd/contrib/ntp/configure.ac (revision b2d48be1bc7df45ddd13b143a160d0acb5a383c5)
1dnl NTP top-level configure.ac				-*- Autoconf -*-
2dnl
3m4_include([sntp/m4/version.m4])
4AC_PREREQ([2.61])
5AC_INIT(
6    [ntp],
7    [VERSION_NUMBER],
8    [http://bugs.ntp.org./],
9    [],
10    [http://www.ntp.org./]dnl
11)
12AC_CONFIG_MACRO_DIR([sntp/m4])
13AC_CONFIG_AUX_DIR([sntp/libevent/build-aux])
14
15AC_PRESERVE_HELP_ORDER
16
17# Bump ntp_configure_cache_version for each change to configure.ac or
18# .m4 files which invalidates cached values from previous configure
19# runs.
20#
21# If the change affects cache variables used only by the main NTP
22# configure.ac, then only its version number should be bumped, while
23# the subdir configure.ac version numbers should be unchanged.  The
24# same is true for a test/variable that is used only by one subdir
25# being changed incompatibly; only that subdir's cache version needs
26# bumping.
27#
28# If a change affects variables shared by all NTP configure scripts,
29# please bump the version numbers of each.  If you are not sure, the
30# safe choice is to bump all on any cache-invalidating change.
31#
32# In order to avoid the risk of version stamp collision between -stable
33# and -dev branches, do not simply increment the version, instead use
34# the date YYYYMMDD optionally with -HHMM if there is more than one
35# bump in a day.
36
37ntp_configure_cache_version=20120806
38
39# When the cache version of config.cache and configure do not
40# match, NTP_CACHEVERSION will flush the cache.
41
42NTP_CACHEVERSION([main], [$ntp_configure_cache_version])
43
44AM_INIT_AUTOMAKE([1.10 foreign -Wall -Wno-gnu])
45
46dnl AM_SILENT_RULES req. automake 1.11.  [yes] defaults V=0
47m4_ifdef(
48    [AM_SILENT_RULES],
49    [AM_SILENT_RULES([yes])]
50)
51AC_CANONICAL_BUILD
52AC_CANONICAL_HOST
53dnl the 'build' machine is where we run configure and compile
54dnl the 'host' machine is where the resulting stuff runs.
55AC_DEFINE_UNQUOTED([STR_SYSTEM], ["$host"],
56    [canonical system (cpu-vendor-os) of where we should run])
57AC_CONFIG_HEADERS([config.h])
58dnl AC_ARG_PROGRAM
59
60ntp_atom_ok=${ntp_atom_ok=no}
61ntp_oncore_ok=${ntp_oncore_ok=no}
62ntp_parse_ok=${ntp_parse_ok=no}
63ntp_ripe_ncc_ok=${ntp_parse_ok=no}
64ntp_jupiter_ok=${ntp_jupiter_ok=no}
65
66NTP_PROG_CC
67AC_PROG_CPP
68# Do we need CXX for anything besides google test?
69AC_PROG_CXX
70AC_PROG_YACC
71AC_PROG_CC_C_O
72AX_C99_STRUCT_INIT
73
74NTP_VPATH_HACK		dnl used only by ntpd/Makefile.am
75
76NTP_LOCINFO([sntp])	dnl takes over from NTP_BINDIR, in NTP_LIBNTP
77
78dnl AM_PROG_AR req. automake 1.12
79m4_ifdef(
80    [AM_PROG_AR],
81    [AM_PROG_AR]
82)
83
84# So far, the only shared library we might use is libopts.
85# It's a small library - we might as well use a static version of it.
86AC_DISABLE_SHARED
87AC_PROG_LIBTOOL
88AC_SUBST([LIBTOOL_DEPS])
89
90# NTP has (so far) been relying on leading-edge autogen, which
91# means we need the appropriate corresponding libopts as well.
92# Therefore, by default:
93# - use the version of libopts we ship with
94# - do not install it
95# - build a static copy (AC_DISABLE_SHARED - done earlier)
96case "${enable_local_libopts+set}" in
97 set) ;;
98 *) enable_local_libopts=yes ;;
99esac
100case "${enable_libopts_install+set}" in
101 set) ;;
102 *) enable_libopts_install=no ;;
103esac
104enable_nls=no
105LIBOPTS_CHECK_NOBUILD([sntp/libopts])
106
107NTP_LIBEVENT_CHECK_NOBUILD([2], [sntp/libevent])
108
109NTP_LIBNTP
110
111AC_MSG_CHECKING([for deprecated --with-arlib])
112AC_ARG_WITH([arlib],
113	AS_HELP_STRING([--with-arlib], [- deprecated, arlib not distributed]),
114	[ans=$withval], [ans=no])
115AC_MSG_RESULT([$ans])
116
117case "$ans" in
118 yes)
119    AC_MSG_WARN([Please do not use --with-arlib, arlib is no longer included.  In the future, --with-arlib will not be recognized.])
120    ;;
121esac
122
123dnl  we need to check for cross compile tools for vxWorks here
124AC_PROG_AWK
125AS_UNSET([ac_cv_prog_AWK])
126AC_SUBST([AWK])				dnl scripts/ntpver.in
127AC_PROG_MAKE_SET
128
129AC_SUBST([CFLAGS])
130AC_SUBST([LDFLAGS])
131
132AC_PROG_LN_S
133AC_ISC_POSIX
134
135
136AC_PATH_PROG([PATH_PERL], [perl])
137dnl  Saving cached hardcoded paths rather than searching $PATH during a
138dnl  cached configure run is an optimization not worth the the cost of
139dnl  preventing newly-installed tools from being found.  Short-circuit
140dnl  the caching after the tests so preset overrides still work.
141AS_UNSET([ac_cv_path_PATH_PERL])
142AC_PATH_PROG([PATH_TEST], [test])
143AS_UNSET([ac_cv_path_PATH_TEST])
144test -z "$CONFIG_SHELL" && CONFIG_SHELL=/bin/sh
145AC_SUBST([CONFIG_SHELL])		dnl for scripts #!/path/to/sh
146
147AC_ARG_WITH(
148    [net-snmp-config],
149    [AS_HELP_STRING(
150	[--with-net-snmp-config],
151	[+ =net-snmp-config]
152    )],
153    [ans=$withval],
154    [ans=yes]
155)
156case "$ans" in
157 no)
158    ;;
159 yes)
160    ans=net-snmp-config
161    ;;
162 /*)
163    ;;
164 */*)
165    AC_MSG_ERROR([--with-net-snmp-config takes either a name or an absolute path])
166    ;;
167 *)
168    ;;
169esac
170PROG_NET_SNMP_CONFIG=$ans
171AC_MSG_CHECKING([for net-snmp-config path])
172case "$PROG_NET_SNMP_CONFIG" in
173 no) ;;
174 /*)
175    PATH_NET_SNMP_CONFIG=$PROG_NET_SNMP_CONFIG
176    ;;
177 *)
178    AC_PATH_PROG([PATH_NET_SNMP_CONFIG], [$PROG_NET_SNMP_CONFIG])
179    AS_UNSET([ac_cv_path_PATH_NET_SNMP_CONFIG])
180;;
181esac
182AC_MSG_RESULT([$PATH_NET_SNMP_CONFIG])
183
184case "$PATH_NET_SNMP_CONFIG" in
185 /*)	AC_CACHE_CHECK(
186	    [for net-snmp version],
187	    [ntp_cv_net_snmp_version],
188	    [ntp_cv_net_snmp_version=`$PATH_NET_SNMP_CONFIG --version`]
189	)
190	;;
191esac
192
193case "$host" in
194 *-*-vxworks*)
195    ac_link="$ac_link $VX_KERNEL"
196    ;;
197esac
198
199# HMS: a check for -lnsl used to be here - now being done in NTP_LIBNTP
200AC_SEARCH_LIBS([openlog], [gen syslog])
201# XXX library list will be in ac_cv_search_openlog
202
203# LIBSECCOMP is off by default -- needs testing with all the features
204# Please send bug reports to loganaden@gmail.com
205AC_MSG_CHECKING([if we want to use libseccomp sandboxing (EXPERIMENTAL)])
206AC_ARG_ENABLE(
207    [libseccomp],
208    [AS_HELP_STRING(
209	[--enable-libseccomp],
210	[EXPERIMENTAL: enable support for libseccomp sandboxing (default is no) ]
211    )],
212    [ntp_ok=$enableval],
213    [ntp_ok=no]
214)
215AC_MSG_RESULT([$ntp_ok])
216case "$ntp_ok" in
217 yes)
218    AC_SEARCH_LIBS(
219	[seccomp_init],
220	[seccomp],
221	[AC_DEFINE([LIBSECCOMP], [1],
222	    [Define to any value to include libseccomp sandboxing.])]
223    )
224    AC_TRY_RUN([
225	#include <stdio.h>
226	#include <stdlib.h>
227	#include <errno.h>
228	#include <sys/prctl.h>
229	#include <linux/seccomp.h>
230
231	int main(void)
232	{
233		int ret;
234		ret = prctl(PR_GET_SECCOMP, 0, 0, 0, 0);
235		if (ret < 0) {
236			switch (errno) {
237			case ENOSYS:
238				return 1;
239			case EINVAL:
240				return 1;
241			default:
242				return 1;
243			}
244		}
245		ret =
246		prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0);
247		if (ret < 0) {
248			switch (errno) {
249			case EINVAL:
250				return 1;
251			case EFAULT:
252				return 0;
253			default:
254				return 1;
255		}
256	}
257return 1;
258}
259]
260, AC_DEFINE([KERN_SECCOMP], 1,
261[Define to use libseccomp system call filtering.])
262, []
263)
264    ;;
265esac
266
267NTP_FACILITYNAMES
268
269dnl Digital UNIX V4.0 and Solaris 7 have POSIX.1c functions in -lrt
270dnl Solaris 2.6 only has -lposix4; in Solaris 7, this is a symlink to -lrt,
271dnl so only use one of them.  Linux (glibc-2.1.2 and -2.2.2, at least)
272dnl does Strange Things with extra processes using the Posix-compatibility
273dnl real-time library, so we don't want to use it.
274dnl
275dnl 081118 Harlan got tired of looking for a way to get the sched*()
276dnl functions to link OK with either cc or gcc.
277
278case "$host" in
279 *-*-*linux*) ;;
280 *-*-osf4*) ;;
281 *-*-osf5*) ;;
282 *)
283    # HMS: Make sure we check for -lrt for clock_* before this...
284    case "$ac_cv_search_clock_gettime" in
285     '') AC_MSG_ERROR([Internal Error: Haven't looked for clock_gettime() yet!]) ;;
286    esac
287    AC_SEARCH_LIBS([sched_setscheduler], [rt posix4])
288    ;;
289esac
290
291AC_CHECK_HEADERS([bstring.h])
292AC_CHECK_HEADER(
293    [dns_sd.h],
294    [AC_SEARCH_LIBS(
295	[DNSServiceRegister],
296	[dns_sd],
297	[AC_DEFINE([HAVE_DNSREGISTRATION], [1],
298	    [Use Rendezvous/DNS-SD registration])]
299    )]
300)
301AC_CHECK_HEADERS([fcntl.h fnmatch.h ieeefp.h inttypes.h kvm.h math.h])
302
303AC_CHECK_HEADERS([memory.h netdb.h poll.h])
304AC_CHECK_HEADERS([sgtty.h stdatomic.h stdlib.h string.h termio.h])
305AC_CHECK_HEADERS([termios.h timepps.h timex.h unistd.h])
306
307case "$host" in
308 *-*-aix*)
309    AC_CHECK_HEADERS([utmpx.h])
310    case "$ac_cv_header_utmpx_h" in
311     yes)
312	;;
313     *)
314	AC_CHECK_HEADERS([utmp.h])
315	;;
316    esac
317    ;;
318 *)
319    AC_CHECK_HEADERS([utmp.h utmpx.h])
320    ;;
321esac
322
323#
324# On Suns only (so far) getpass() truncates the typed password to 8
325# characters, but getpassphrase() allows up to 257.  Most systems'
326# getpass() does not truncate, at least not so as to affect ntpq and
327# ntpdc password prompts.
328#
329# So check for getpassphrase(), but only on Sun operating systems.
330#
331case "$host" in
332 *-*-sunos*|*-*-solaris*)
333    AC_CHECK_FUNCS([getpassphrase])
334esac
335
336
337AC_CHECK_HEADERS([net/if6.h])
338AC_CHECK_HEADERS([net/route.h], [], [], [
339    #include <sys/types.h>
340    #include <sys/socket.h>
341    #include <net/if.h>
342])
343
344AC_CHECK_HEADERS([netinfo/ni.h])
345case "$ac_cv_header_netinfo_ni_h" in
346 yes)
347    AC_DEFINE([HAVE_NETINFO], [1], [NetInfo support?])
348esac
349AC_CHECK_HEADERS([sun/audioio.h sys/audioio.h sys/file.h])
350case "$host" in
351 *-*-sunos4*)
352    ;;
353 *)
354    AC_CHECK_HEADERS([sys/ioctl.h])
355    ;;
356esac
357AC_CHECK_HEADERS([sys/ipc.h sys/lock.h sys/mman.h])
358# HMS: Check sys/proc.h and sys/resource.h after some others
359AC_CHECK_HEADERS([sys/modem.h sys/ppsclock.h sys/ppstime.h sched.h])
360case "$ac_cv_header_sched_h" in
361 yes)
362    ;;
363 *)
364    AC_CHECK_HEADERS([sys/sched.h])
365    ;;
366esac
367# HMS: Check sys/shm.h after some others
368AC_CHECK_HEADERS([sys/select.h sys/signal.h sys/sockio.h])
369# HMS: Checked sys/socket.h earlier
370case "$host" in
371 *-*-netbsd*)
372    ;;
373 *)
374    AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h])
375    ;;
376esac
377AC_CHECK_HEADERS([sys/stat.h sys/stream.h stropts.h sys/stropts.h sys/syssgi.h])
378AC_CHECK_HEADERS([sys/systune.h sys/termios.h sys/tpro.h sys/wait.h])
379case "$host" in
380*-convex-*)
381    AC_CHECK_HEADERS([/sys/sync/queue.h /sys/sync/sema.h])
382    ;;
383*-*-bsdi*)
384    AC_CHECK_HEADERS([machine/inline.h sys/pcl720.h sys/i8253.h])
385    ;;
386esac
387
388case "$ac_cv_header_stdatomic_h" in
389 yes)
390	AC_CHECK_FUNCS([atomic_thread_fence])
391	AC_CACHE_CHECK(
392	    [for atomic_thread_fence()],
393	    [ntp_cv_func_atomic_thread_fence],
394	    [AC_COMPILE_IFELSE(
395		[AC_LANG_PROGRAM(
396		    [[
397			#include <stdatomic.h>
398		    ]],
399		    [[
400			atomic_thread_fence(memory_order_seq_cst);
401		    ]]
402		)]
403		[ntp_cv_func_atomic_thread_fence=yes],
404		[ntp_cv_func_atomic_thread_fence=no]
405	    )]
406	)
407    ;;
408esac
409
410case "$host" in
411 *-*-solaris2.6)
412    # Broken...
413    ;;
414 *)
415    AC_CHECK_FUNCS([ntp_adjtime ntp_gettime])
416    ;;
417esac
418
419case "$host" in
420 *-*-*linux*)
421    case "$ac_cv_func_ntp_gettime" in
422     yes)
423	;;
424     *)
425	AC_CHECK_FUNCS([__ntp_gettime])
426	case "$ac_cv_func___ntp_gettime" in
427	 yes)
428	    AC_DEFINE([ntp_gettime], [__ntp_gettime], [deviant])
429		    AC_DEFINE([HAVE_NTP_GETTIME], [1], [via __ntp_gettime])
430	esac
431	;;
432    esac
433    AC_CHECK_FUNCS([adjtimex])
434    case "$ac_cv_func_adjtimex" in
435     yes)
436	AC_DEFINE([ntp_adjtime], [adjtimex], [deviant])
437	AC_DEFINE([HAVE_NTP_ADJTIME], [1], [via adjtimex])
438	have_adjtimex=1
439	;;
440     *)
441	AC_CHECK_FUNCS([__adjtimex])
442	case "$ac_cv_func___adjtimex" in
443	 yes)
444	    AC_DEFINE([ntp_adjtime], [__adjtimex], [deviant])
445	    AC_DEFINE([HAVE_NTP_ADJTIME], [1], [via __adjtimex])
446	    AC_DEFINE([adjtimex], [__adjtimex], [deviant])
447	    AC_DEFINE([HAVE_ADJTIMEX], [1], [via __adjtimex])
448	    have_adjtimex=1
449	esac
450	;;
451    esac
452esac
453case "$have_adjtimex" in
454 '')
455    # nlist stuff is only needed for tickadj.
456    saved_LIBS="$LIBS"
457    LIBS=
458    AC_SEARCH_LIBS([nlist], [elf ld mld])
459    # XXX ac_cv_search_nlist will be 'none required', 'no', or '-l...'
460    AC_SEARCH_LIBS([kvm_open], [kvm])	dnl We already know about -lelf here...
461    # XXX ac_cv_search_kvm_open will be 'none required', 'no', or '-l...'
462    AC_CHECK_HEADERS([nlist.h sys/var.h])
463    case "$ac_cv_header_nlist_h" in
464     yes)
465	AC_DEFINE([NLIST_STRUCT], [1], [nlist stuff])
466	AC_CACHE_CHECK(
467	    [for n_un in struct nlist],
468	    [ntp_cv_struct_nlist_n_un],
469	    [AC_COMPILE_IFELSE(
470		[AC_LANG_PROGRAM(
471		    [[
472			#include <nlist.h>
473		    ]],
474		    [[
475			struct nlist n;
476			n.n_un.n_name = 0;
477		    ]]
478		)]
479		[ntp_cv_struct_nlist_n_un=yes],
480		[ntp_cv_struct_nlist_n_un=no]
481	    )]
482	)
483	case "$ntp_cv_struct_nlist_n_un" in
484	 yes)
485	    AC_DEFINE([NLIST_NAME_UNION], [1],
486		[does struct nlist use a name union?])
487	esac
488    esac
489    AC_SUBST([LDADD_NLIST])
490    LDADD_NLIST="$LIBS"
491    LIBS="$saved_LIBS"
492    AS_UNSET([saved_LIBS])
493esac
494
495AC_CHECK_HEADERS([sys/proc.h], [], [], [
496    #ifdef HAVE_SYS_TYPES_H
497    # include <sys/types.h>
498    #endif
499    #ifdef HAVE_SYS_TIME_H
500    # include <sys/time.h>
501    #endif
502])
503
504AC_CHECK_HEADERS([sys/resource.h], [], [], [
505    #ifdef HAVE_SYS_TIME_H
506    # include <sys/time.h>
507    #endif
508])
509
510AC_CHECK_HEADERS([sys/shm.h], [], [], [
511    #ifdef HAVE_SYS_TYPES_H
512    # include <sys/types.h>
513    #endif
514    #ifdef HAVE_SYS_IPC_H
515    # include <sys/ipc.h>
516    #endif
517])
518
519AC_CHECK_HEADERS([sys/timex.h], [], [], [
520    #ifdef HAVE_SYS_TIME_H
521    # include <sys/time.h>
522    #endif
523])
524
525AC_TYPE_SIGNAL
526AC_TYPE_OFF_T
527AC_STRUCT_TM	dnl defines TM_IN_SYS_TIME used by refclock_parse.c
528
529AC_CACHE_CHECK(
530    [for a fallback value for HZ],
531    [ntp_cv_default_hz],
532    [
533	ntp_cv_default_hz=100
534	case "$host" in
535	 alpha*-dec-osf4*|alpha*-dec-osf5*)
536	    ntp_cv_default_hz=1024
537	    ;;
538	 mips-dec-ultrix4*)
539	    ntp_cv_default_hz=256
540	    ;;
541	esac
542    ]
543)
544AC_DEFINE_UNQUOTED([DEFAULT_HZ], [$ntp_cv_default_hz],
545    [What is the fallback value for HZ?])
546
547AC_CACHE_CHECK(
548    [if we need to override the system's value for HZ],
549    [ntp_cv_override_hz],
550    [
551	ntp_cv_override_hz=no
552	case "$host" in
553	 alpha*-dec-osf4*|alpha*-dec-osf5*)
554	    ntp_cv_override_hz=yes
555	    ;;
556	 mips-dec-ultrix4*)
557	    ntp_cv_override_hz=yes
558	    ;;
559	 *-*-freebsd*)
560	    ntp_cv_override_hz=yes
561	    ;;
562	 *-*-sunos4*)
563	    ntp_cv_override_hz=yes
564	    ;;
565	 *-*-kfreebsd*)
566	    ntp_cv_override_hz=yes
567	    ;;
568	esac
569    ]
570)
571case "$ntp_cv_override_hz" in
572 yes)
573    AC_DEFINE([OVERRIDE_HZ], [1],
574	[Do we need to override the system's idea of HZ?])
575esac
576
577dnl AC_CACHE_CHECK(ut_host in struct utmp, ac_cv_func_ut_host_in_utmp,
578dnl [AC_TRY_LINK([#include <sys/types.h>
579dnl #include <utmp.h>], [struct utmp ut; ut.ut_host;],
580dnl ac_cv_func_ut_host_in_utmp=yes, ac_cv_func_ut_host_in_utmp=no)])
581dnl if test $su_cv_func_ut_host_in_utmp = yes; then
582dnl   AC_DEFINE(HAVE_UT_HOST)
583dnl fi
584
585dnl AC_MSG_CHECKING(if we can get the system boot time)
586dnl AC_CACHE_VAL(su_cv_have_boot_time,
587dnl [AC_EGREP_CPP(yes,
588dnl [#ifdef HAVE_UTMPX_H
589dnl #include <utmpx.h>
590dnl #else
591dnl #include <utmp.h>
592dnl #endif
593dnl #ifdef BOOT_TIME
594dnl yes
595dnl #endif
596dnl ], su_cv_have_boot_time=yes, su_cv_have_boot_time=no)])
597dnl AC_MSG_RESULT($su_cv_have_boot_time)
598
599AC_CACHE_CHECK(
600    [for struct rt_msghdr],
601    [ntp_cv_struct_rt_msghdr],
602    [AC_COMPILE_IFELSE(
603	[AC_LANG_PROGRAM(
604	    [[
605		#include <sys/types.h>
606		#include <sys/socket.h>
607		#include <net/if.h>
608		#include <net/route.h>
609	    ]],
610	    [[
611		struct rt_msghdr p;
612	    ]]
613	)],
614	[ntp_cv_struct_rt_msghdr=yes],
615	[ntp_cv_struct_rt_msghdr=no]
616    )]
617)
618
619AC_CACHE_CHECK(
620    [for struct rtattr],
621    [ntp_cv_rtattr],
622    [AC_COMPILE_IFELSE(
623	[AC_LANG_PROGRAM(
624	    [[
625		#include <stddef.h>
626		#include <sys/socket.h>
627		#include <linux/rtnetlink.h>
628	    ]],
629	    [[
630		struct rtattr p;
631	    ]]
632	)],
633	[ntp_cv_rtattr=yes],
634	[ntp_cv_rtattr=no]
635    )]
636)
637
638case "$ntp_cv_struct_rt_msghdr$ntp_cv_rtattr" in
639 *yes*)
640    AC_DEFINE([HAS_ROUTING_SOCKET], [1],
641	[Do we have a routing socket (rt_msghdr or rtattr)?])
642    case "$ntp_cv_rtattr" in
643     yes)
644	AC_DEFINE([HAVE_RTNETLINK], [1],
645	    [Do we have Linux routing socket?])
646    esac
647esac
648
649AC_CACHE_CHECK(
650    [struct sigaction for sa_sigaction],
651    [ntp_cv_struct_sigaction_has_sa_sigaction],
652    [AC_COMPILE_IFELSE(
653	[AC_LANG_PROGRAM(
654	    [[
655		#include <signal.h>
656	    ]],
657	    [[
658		struct sigaction act;
659		act.sa_sigaction = 0;
660	    ]]
661	)],
662	[ntp_cv_struct_sigaction_has_sa_sigaction=yes],
663	[ntp_cv_struct_sigaction_has_sa_sigaction=no]
664    )]
665)
666case "$ntp_cv_struct_sigaction_has_sa_sigaction" in
667 yes)
668    AC_DEFINE([HAVE_SA_SIGACTION_IN_STRUCT_SIGACTION], [1], [Obvious])
669esac
670
671AC_CACHE_CHECK(
672    [for struct ppsclockev],
673    [ntp_cv_struct_ppsclockev],
674    [AC_COMPILE_IFELSE(
675	[AC_LANG_PROGRAM(
676	    [[
677		#ifdef HAVE_SYS_TYPES_H
678		# include <sys/types.h>
679		#endif
680		#ifdef HAVE_SYS_TERMIOS_H
681		# include <sys/termios.h>
682		#endif
683		#ifdef HAVE_SYS_TIME_H
684		# include <sys/time.h>
685		#endif
686		#ifdef HAVE_SYS_PPSCLOCK_H
687		# include <sys/ppsclock.h>
688		#endif
689	    ]],
690	    [[
691		extern struct ppsclockev *pce;
692		return pce->serial;
693	    ]]
694	)],
695	[ntp_cv_struct_ppsclockev=yes],
696	[ntp_cv_struct_ppsclockev=no]
697    )]
698)
699case "$ntp_cv_struct_ppsclockev" in
700 yes)
701    AC_DEFINE([HAVE_STRUCT_PPSCLOCKEV], [1],
702	[Does a system header define struct ppsclockev?])
703esac
704
705case "$ac_cv_header_machine_soundcard_h$ac_cv_header_sys_soundcard_h" in
706  *yes*)
707    AC_CACHE_CHECK(
708	[for struct snd_size],
709	[ntp_cv_struct_snd_size],
710	[AC_COMPILE_IFELSE(
711	    [AC_LANG_PROGRAM(
712		[[
713		    #ifdef HAVE_MACHINE_SOUNDCARD_H
714		    # include <machine/soundcard.h>
715		    #endif
716		    #ifdef HAVE_SYS_SOUNDCARD_H
717		    # include <sys/soundcard.h>
718		    #endif
719		]],
720		[[
721		    extern struct snd_size *ss;
722		    return ss->rec_size;
723		]]
724	    )],
725	    [ntp_cv_struct_snd_size=yes],
726	    [ntp_cv_struct_snd_size=no]
727        )]
728    )
729    case "$ntp_cv_struct_snd_size" in
730     yes)
731	AC_DEFINE([HAVE_STRUCT_SND_SIZE], [1],
732	    [Do we have struct snd_size?])
733    esac
734esac
735
736AC_CACHE_CHECK(
737    [struct clockinfo for hz],
738    [ntp_cv_struct_clockinfo_has_hz],
739    [AC_COMPILE_IFELSE(
740	[AC_LANG_PROGRAM(
741	    [[
742		#include <sys/time.h>
743	    ]],
744	    [[
745		extern struct clockinfo *pc;
746		return pc->hz;
747	    ]]
748	)],
749	[ntp_cv_struct_clockinfo_has_hz=yes],
750	[ntp_cv_struct_clockinfo_has_hz=no]
751    )]
752)
753case "$ntp_cv_struct_clockinfo_has_hz" in
754 yes)
755    AC_DEFINE([HAVE_HZ_IN_STRUCT_CLOCKINFO], [1], [Obvious])
756esac
757
758AC_CACHE_CHECK(
759    [struct clockinfo for tickadj],
760    [ntp_cv_struct_clockinfo_has_hz],
761    [AC_COMPILE_IFELSE(
762	[AC_LANG_PROGRAM(
763	    [[
764		#include <sys/time.h>
765	    ]],
766	    [[
767		extern struct clockinfo *pc;
768		return pc->tickadj;
769	    ]]
770	)],
771	[ntp_cv_struct_clockinfo_has_hz=yes],
772	[ntp_cv_struct_clockinfo_has_hz=no]
773    )]
774)
775case "$ntp_cv_struct_clockinfo_has_hz" in
776 yes)
777    AC_DEFINE([HAVE_TICKADJ_IN_STRUCT_CLOCKINFO], [1], [Obvious])
778esac
779
780case "$ntp_cv_struct_ntptimeval" in
781 yes)
782    AC_CHECK_MEMBERS(
783	[struct ntptimeval.time.tv_nsec],
784	[],
785	[],
786	[
787	    #ifdef HAVE_SYS_TIME_H
788	    # include <sys/time.h>
789	    #else
790	    # ifdef HAVE_TIME_H
791	    #  include <time.h>
792	    # endif
793	    #endif
794	    #ifdef HAVE_SYS_TIMEX_H
795	    # include <sys/timex.h>
796	    #else
797	    # ifdef HAVE_TIMEX_H
798	    #  include <timex.h>
799	    # endif
800	    #endif
801	]
802    )
803esac
804
805####
806
807AC_CHECK_FUNCS([arc4random_buf])
808
809####
810
811saved_LIBS="$LIBS"
812LIBS="$LIBS $LDADD_LIBNTP"
813AC_CHECK_FUNCS([daemon])
814# XXX if we keep everything in LIBS and also keep separate lists, this simplifies.
815LIBS="$saved_LIBS"
816AS_UNSET([saved_LIBS])
817
818AC_CHECK_FUNCS(
819    [finite],
820    [],
821    [AC_CHECK_FUNCS(
822	[isfinite],
823	[],
824	[
825	    AC_MSG_CHECKING([for isfinite with <math.h>])
826	    _libs=$LIBS
827	    # XXX
828	    LIBS="$LIBS -lm"
829	    AC_LINK_IFELSE(
830		[AC_LANG_PROGRAM(
831		    [[
832			#include <math.h>
833		    ]],
834		    [[
835			float f = 0.0;
836			isfinite(f);
837		    ]]
838		)],
839		[ans=yes],
840		[ans=no]
841	    )
842	    LIBS=$_libs
843	    AC_MSG_RESULT([$ans])
844	    case "$ans" in
845	     yes)
846		AC_DEFINE([HAVE_ISFINITE], [1])
847	    esac
848	]
849    )]
850)
851
852AC_CHECK_FUNCS([fnmatch getbootfile getuid getrusage nanosleep strsignal])
853
854# kvm_open() is only used by tickadj.  Also see above.
855case "$ac_cv_header_kvm_h" in
856 yes)
857    AC_CHECK_FUNCS([kvm_open])
858    ;;
859esac
860
861case "$host" in
862 *-*-sco3.2v5.0.*)
863    # Just stubs.  Sigh.
864    ;;
865 *) AC_CHECK_FUNCS([mkstemp])
866    ;;
867esac
868AC_CHECK_FUNCS([mktime])
869case "$host" in
870 *-*-aix[[4-9]]*)
871    # XXX only verified thru AIX6.
872    # Just a stub.  Sigh.
873    ;;
874 *-*-irix[[45]]*)
875    # Just a stub in "old" Irix.  Sigh.
876    ;;
877# In the belief that the fix for bug 1223 fixes mlockall() under linux...
878# *-*-*linux*)
879#    # there, but more trouble than it is worth for now (resolver problems)
880#    ;;
881 *-*-qnx*)
882    # Apparently there but not working in QNX.  Sigh?
883    ;;
884 *-*-sco3.2v5.0.*)
885    # Just a stub.  Sigh.
886    ;;
887 alpha*-dec-osf4*|alpha*-dec-osf5*)
888    # mlockall is there, as a #define calling memlk via <sys/mman.h>
889    # Not easy to test for - cheat.
890    AC_CHECK_FUNCS([memlk], [ac_cv_func_mlockall=yes])
891    AC_CHECK_FUNCS([mlockall])
892    ;;
893 *) AC_CHECK_FUNCS([mlockall])
894    ;;
895esac
896AC_CHECK_FUNCS([nice plock pututline pututxline readlink rtprio])
897case "$host" in
898 *-*-aix[[4-9]]*)
899    # XXX only verified thru AIX6.
900    # Just a stub in AIX 4.  Sigh.
901    ;;
902 *-*-solaris2.5*)
903    # Just stubs in solaris2.5.  Sigh.
904    ;;
905 *) AC_CHECK_FUNCS([sched_setscheduler])
906    ;;
907esac
908AC_CHECK_FUNCS([setlinebuf setpgid setpriority setsid setvbuf])
909AC_CHECK_FUNCS([strdup strerror setrlimit strchr])
910case "$host" in
911 *-*-aix[[4-9]]*)
912    # XXX only verified thru AIX6.
913    # Just stubs.  Sigh.
914    ;;
915 *-*-netbsd1*)
916    # Just stubs.  Sigh.
917    ;;
918 *-*-netbsdelf1*)
919    # Just stubs.  Sigh.
920    ;;
921 *-*-openbsd*)
922    # Just stubs.  Sigh.
923    ;;
924 *)
925    AC_CHECK_FUNCS([timer_create])
926    ;;
927esac
928
929NTP_RLIMIT_ITEMS
930
931# HMS: Only if we are doing the MLOCKALL stuff...
932AC_MSG_CHECKING([for the default number of 4k stack pages])
933AC_ARG_WITH(
934    [stack-limit],
935    [AS_HELP_STRING(
936	[--with-stack-limit],
937	[? =50 (200 for openbsd) 4k pages]
938    )],
939    [ans=$withval],
940    [ans=yes]
941)
942case "$ans" in
943 yes | no)
944    case "$host" in
945     *-*-openbsd*)
946	ans=200
947	;;
948     *) ans=50
949        ;;
950    esac
951    ;;
952 [[1-9]][[0-9]]*)
953    ;;
954 *) AC_MSG_ERROR(["--with-stack-limit requires an integer argument."])
955    ;;
956esac
957AC_MSG_RESULT([$ans])
958AC_DEFINE_UNQUOTED([DFLT_RLIMIT_STACK], [$ans],
959    [Default number of 4k pages for RLIMIT_STACK])
960
961# HMS: only if we have RLIMIT_MEMLOCK
962AC_MSG_CHECKING([for the default number of megabytes to MEMLOCK])
963AC_ARG_WITH(
964    [memlock],
965    [AS_HELP_STRING(
966	[--with-memlock],
967	[? =32 (megabytes)]
968    )],
969    [ans=$withval],
970    [ans=yes]
971)
972case "$ans" in
973 yes | no)
974    ans=32
975    ;;
976 [[1-9]][[0-9]]*) ;;
977 *) AC_MSG_ERROR(["--with-memlock requires an integer argument."])
978     ;;
979esac
980AC_MSG_RESULT([$ans])
981AC_DEFINE_UNQUOTED([DFLT_RLIMIT_MEMLOCK], [$ans],
982    [Default number of megabytes for RLIMIT_MEMLOCK])
983
984
985# some OSes prefer _exit() in forked children to exit()
986AC_CHECK_FUNCS([_exit])
987ntp_worker_child_exit=exit
988case "$ac_cv_func__exit::$host_os" in
989 yes::netbsd*)
990    ntp_worker_child_exit=_exit
991    ;;
992 yes::openbsd*)
993    ntp_worker_child_exit=_exit
994    ;;
995esac
996AC_DEFINE_UNQUOTED([WORKER_CHILD_EXIT], [$ntp_worker_child_exit],
997		   [routine worker child proc uses to exit.])
998
999AC_CHECK_FUNCS([umask uname updwtmp updwtmpx])
1000
1001###
1002
1003# http://bugs.ntp.org/737
1004case "$ac_cv_func_recvmsg" in
1005 yes)
1006    AC_CACHE_CHECK(
1007	[if we need extra help to define struct iovec],
1008	[ntp_cv_struct_iovec_help],
1009	[
1010	    compiled=no
1011	    for ntp_cv_struct_iovec_help in '0' '1'; do
1012		AC_COMPILE_IFELSE(
1013		    [AC_LANG_PROGRAM(
1014			[[
1015			    #ifdef HAVE_SYS_TYPES_H
1016			    # include <sys/types.h>
1017			    #endif
1018			    #ifdef HAVE_SYS_SOCKET_H
1019			    # include <sys/socket.h>
1020			    #endif
1021			    #if $ntp_cv_struct_iovec_help
1022			    # include <sys/uio.h>
1023			    #endif
1024			]],
1025			[[
1026			    void foo(void) {
1027				ssize_t x;
1028				int s = 0;
1029				struct iovec iov;
1030				struct msghdr mh;
1031				int flags = 0;
1032
1033				mh.msg_iov = &iov;
1034				x = recvmsg(s, &mh, flags);
1035			    }
1036			]]
1037		    )],
1038		    [compiled=yes ; break 1],
1039		    []
1040		)
1041	    done
1042	    case "$compiled" in
1043	     no)
1044		ntp_cv_struct_iovec_help=0
1045	    esac
1046	    AS_UNSET([compiled])
1047	]
1048    )
1049    case "$ntp_cv_struct_iovec_help" in
1050     1)
1051	AC_DEFINE([HAVE_SYS_UIO_H], [1],
1052	    [Use sys/uio.h for struct iovec help])
1053    esac
1054esac
1055
1056AC_CACHE_CHECK(
1057    [number of arguments taken by setpgrp()],
1058    [ntp_cv_func_setpgrp_nargs],
1059    [AC_COMPILE_IFELSE(
1060	[AC_LANG_PROGRAM(
1061	    [[
1062		#ifdef HAVE_SYS_TYPES_H
1063		# include <sys/types.h>
1064		#endif
1065		#ifdef HAVE_UNISTD_H
1066		# include <unistd.h>
1067		#endif
1068	    ]],
1069	    [[
1070		setpgrp(0, 0);
1071	    ]]
1072	)],
1073	[ntp_cv_func_setpgrp_nargs=2],
1074	[ntp_cv_func_setpgrp_nargs=0]
1075    )]
1076)
1077case "$ntp_cv_func_setpgrp_nargs" in
1078 0)
1079    AC_DEFINE([HAVE_SETPGRP_0], [1],
1080	      [define if setpgrp takes 0 arguments])
1081esac
1082
1083AC_CACHE_CHECK(
1084    [if we need to declare 'errno'],
1085    [ntp_cv_decl_errno],
1086    [AC_COMPILE_IFELSE(
1087	[AC_LANG_PROGRAM(
1088	    [[
1089		#ifdef HAVE_ERRNO_H
1090		# include <errno.h>
1091		#endif
1092	    ]],
1093	    [[
1094		errno = 0;
1095	    ]]
1096	)],
1097	[ntp_cv_decl_errno=no],
1098	[ntp_cv_decl_errno=yes]
1099    )]
1100)
1101case "$ntp_cv_decl_errno" in
1102 yes)
1103    AC_DEFINE([DECL_ERRNO], [1], [Declare errno?])
1104esac
1105
1106dnl (prr) aix 4.3 defines h_errno as (*(int *)h_errno_which()) for
1107dnl MT purposes.  This makes the line "extern int h_errno" choke
1108dnl the compiler.  Hopefully adding !defined(h_errno) fixes this
1109dnl without breaking any other platforms.
1110dnl
1111AC_CACHE_CHECK(
1112    [if we may declare 'h_errno'],
1113    [ntp_cv_decl_h_errno],
1114    [AC_COMPILE_IFELSE(
1115	[AC_LANG_PROGRAM(
1116	    [[
1117		#include <sys/types.h>
1118		#ifdef HAVE_NETINET_IN_H
1119		# include <netinet/in.h>
1120		#endif
1121		#ifdef HAVE_ARPA_NAMESER_H
1122		# include <arpa/nameser.h>
1123		#endif
1124		#ifdef HAVE_NETDB_H
1125		# include <netdb.h>
1126		#endif
1127		#ifdef HAVE_RESOLV_H
1128		# include <resolv.h>
1129		#endif
1130	    ]],
1131	    [[
1132		extern int h_errno;
1133	    ]]
1134	)],
1135	[ntp_cv_decl_h_errno=yes],
1136	[ntp_cv_decl_h_errno=no]
1137    )]
1138)
1139case "$ntp_cv_decl_h_errno" in
1140 yes)
1141    AC_DEFINE([DECL_H_ERRNO], [1], [Declare h_errno?])
1142esac
1143
1144AC_CACHE_CHECK(
1145    [if declaring 'syscall()' is ok],
1146    [ntp_cv_decl_syscall],
1147    [AC_COMPILE_IFELSE(
1148	[AC_LANG_PROGRAM(
1149	    [[
1150		#ifdef HAVE_SYS_TYPES_H
1151		# include <sys/types.h>
1152		#endif
1153		#ifdef HAVE_UNISTD_H
1154		# include <unistd.h>
1155		#endif
1156	    ]],
1157	    [[
1158		extern int syscall (int, ...);
1159	    ]]
1160	)]
1161	[ntp_cv_decl_syscall=yes],
1162	[ntp_cv_decl_syscall=no]
1163    )]
1164)
1165case "$ntp_cv_decl_syscall" in
1166 yes)
1167    AC_DEFINE([DECL_SYSCALL], [1], [Declare syscall()?])
1168esac
1169
1170case "$host" in
1171 *-*-aix4.3.*)
1172    AC_DEFINE([DECL_HSTRERROR_0], [1], [Declaration style])		# Needed for XLC under AIX 4.3.2
1173    ;;
1174 *-*-mpeix*)
1175    AC_DEFINE([DECL_ADJTIME_0], [1], [Declaration style])
1176    AC_DEFINE([DECL_INET_NTOA_0], [1], [Declaration style])
1177    AC_DEFINE([DECL_MKTEMP_0], [1], [Declaration style])
1178    AC_DEFINE([DECL_SELECT_0], [1], [Declaration style])
1179    AC_DEFINE([DECL_SETITIMER_0], [1], [Declaration style])
1180    AC_DEFINE([DECL_SYSLOG_0], [1], [Declaration style])
1181    AC_DEFINE([DECL_TIMEOFDAY_0], [1], [Declaration style])
1182    ;;
1183 *-*-osf[[45]]*)
1184    AC_DEFINE([DECL_PLOCK_0], [1], [Declaration style])
1185    AC_DEFINE([DECL_STIME_1], [1], [Declaration style])
1186    ;;
1187 *-*-qnx*)
1188    AC_DEFINE([DECL_ADJTIME_0], [1], [Declaration style])
1189    ;;
1190 *-*-riscos4*)
1191    AC_DEFINE([DECL_ADJTIME_0], [1], [Declaration style])
1192    AC_DEFINE([DECL_BZERO_0], [1], [Declaration style])
1193    AC_DEFINE([DECL_IOCTL_0], [1], [Declaration style])
1194    AC_DEFINE([DECL_IPC_0], [1], [Declaration style])
1195    AC_DEFINE([DECL_MEMMOVE_0], [1], [Declaration style])
1196    AC_DEFINE([DECL_MKTEMP_0], [1], [Declaration style])
1197    AC_DEFINE([DECL_RENAME_0], [1], [Declaration style])
1198    AC_DEFINE([DECL_SELECT_0], [1], [Declaration style])
1199    AC_DEFINE([DECL_SETITIMER_0], [1], [Declaration style])
1200    AC_DEFINE([DECL_SETPRIORITY_0], [1], [Declaration style])
1201    AC_DEFINE([DECL_STDIO_0], [1], [Declaration style])
1202    AC_DEFINE([DECL_STRTOL_0], [1], [Declaration style])
1203    AC_DEFINE([DECL_SYSLOG_0], [1], [Declaration style])
1204    AC_DEFINE([DECL_TIME_0], [1], [Declaration style])
1205    AC_DEFINE([DECL_TIMEOFDAY_0], [1], [Declaration style])
1206    AC_DEFINE([DECL_TOLOWER_0], [1], [Declaration style])
1207    ;;
1208 *-*-solaris2*)
1209    AC_DEFINE([DECL_MKSTEMP_0], [1], [Declaration style])
1210    AC_DEFINE([DECL_SETPRIORITY_1], [1], [Declaration style])
1211    case "$host" in
1212     *-*-solaris2.4)
1213        AC_DEFINE([DECL_TIMEOFDAY_0], [1], [Declaration style])
1214	;;
1215    esac
1216    ;;
1217 *-*-sunos4*)
1218    AC_DEFINE([DECL_ADJTIME_0], [1], [Declaration style])
1219    AC_DEFINE([DECL_BCOPY_0], [1], [Declaration style])
1220    AC_DEFINE([DECL_BZERO_0], [1], [Declaration style])
1221    AC_DEFINE([DECL_IOCTL_0], [1], [Declaration style])
1222    AC_DEFINE([DECL_IPC_0], [1], [Declaration style])
1223    AC_DEFINE([DECL_MEMMOVE_0], [1], [Declaration style])
1224    AC_DEFINE([DECL_MKTEMP_0], [1], [Declaration style])
1225    AC_DEFINE([DECL_MKSTEMP_0], [1], [Declaration style])
1226    AC_DEFINE([DECL_RENAME_0], [1], [Declaration style])
1227    AC_DEFINE([DECL_SELECT_0], [1], [Declaration style])
1228    AC_DEFINE([DECL_SETITIMER_0], [1], [Declaration style])
1229    AC_DEFINE([DECL_SETPRIORITY_0], [1], [Declaration style])
1230    AC_DEFINE([DECL_SIGVEC_0], [1], [Declaration style])
1231    case "`basename $ac_cv_prog_CC`" in
1232     acc*) ;;
1233     *) AC_DEFINE([DECL_STDIO_0], [1], [Declaration style])
1234	;;
1235    esac
1236    AC_DEFINE([DECL_STRTOL_0], [1], [Declaration style])
1237    AC_DEFINE([DECL_SYSLOG_0], [1], [Declaration style])
1238    AC_DEFINE([DECL_TIME_0], [1], [Declaration style])
1239    AC_DEFINE([DECL_TIMEOFDAY_0], [1], [Declaration style])
1240    AC_DEFINE([DECL_TOLOWER_0], [1], [Declaration style])
1241    AC_DEFINE([DECL_TOUPPER_0], [1], [Declaration style])
1242    AC_DEFINE([DECL_STRERROR_0], [1], [Declaration style])
1243    ;;
1244 *-*-ultrix4*)
1245    AC_DEFINE([DECL_ADJTIME_0], [1], [Declaration style])
1246    AC_DEFINE([DECL_BZERO_0], [1], [Declaration style])
1247    AC_DEFINE([DECL_CFSETISPEED_0], [1], [Declaration style])
1248    AC_DEFINE([DECL_IOCTL_0], [1], [Declaration style])
1249    AC_DEFINE([DECL_IPC_0], [1], [Declaration style])
1250    AC_DEFINE([DECL_MKTEMP_0], [1], [Declaration style])
1251    AC_DEFINE([DECL_NLIST_0], [1], [Declaration style])
1252    AC_DEFINE([DECL_PLOCK_0], [1], [Declaration style])
1253    AC_DEFINE([DECL_SELECT_0], [1], [Declaration style])
1254    AC_DEFINE([DECL_SETITIMER_0], [1], [Declaration style])
1255    AC_DEFINE([DECL_SETPRIORITY_0], [1], [Declaration style])
1256    AC_DEFINE([DECL_STIME_0], [1], [Declaration style])
1257    AC_DEFINE([DECL_SYSLOG_0], [1], [Declaration style])
1258    AC_DEFINE([DECL_TIMEOFDAY_0], [1], [Declaration style])
1259    ;;
1260esac
1261
1262case "$host" in
1263 *-*-sco3.2*)
1264    AC_DEFINE([TERMIOS_NEEDS__SVID3], [1],
1265	[Do we need to #define _SVID3 when we #include <termios.h>?])
1266    ;;
1267esac
1268
1269case "$host" in
1270 *-*-hpux[[567]]*)
1271    AC_DEFINE([NEED_RCVBUF_SLOP], [1],
1272	[Do we need extra room for SO_RCVBUF? (HPUX < 8)])
1273esac
1274
1275dnl Using AC_CACHE_CHECK to honor preset ntp_cv_var_open_bcast_socket
1276AC_CACHE_CHECK(
1277    [if we will open the broadcast socket],
1278    [ntp_cv_var_open_bcast_socket],
1279    [
1280	ans=yes
1281	case "$host" in
1282	 *-*-domainos)
1283	    ans=no
1284	esac
1285	ntp_cv_var_open_bcast_socket=$ans
1286    ]
1287)
1288case "$ntp_cv_var_open_bcast_socket" in
1289 yes)
1290    AC_DEFINE([OPEN_BCAST_SOCKET], [1],
1291	[Should we open the broadcast socket?])
1292esac
1293
1294case "$host" in
1295 *-*-hpux*)
1296    AC_DEFINE([NEED_HPUX_FINDCONFIG], [1],
1297	[Do we want the HPUX FindConfig()?])
1298esac
1299
1300dnl using AC_CACHE_CHECK to honor preset $ntp_cv_arg_setpgrp_negpid
1301AC_CACHE_CHECK(
1302    [if process groups are set with -pid],
1303    [ntp_cv_arg_setpgrp_negpid],
1304    [
1305	case "$host" in
1306	 *-*-hpux[[567]]*)
1307	    ans=no
1308	    ;;
1309	 *-*-hpux*)
1310	    ans=yes
1311	    ;;
1312	 *-*-*linux*)
1313	    ans=yes
1314	    ;;
1315	 *-*-sunos3*)
1316	    ans=yes
1317	    ;;
1318	 *-*-ultrix2*)
1319	    ans=yes
1320	    ;;
1321	 *)
1322	    ans=no
1323	    ;;
1324	esac
1325	ntp_cv_arg_setpgrp_negpid=$ans
1326    ]
1327)
1328case "$ntp_cv_arg_setpgrp_negpid" in
1329 yes)
1330    AC_DEFINE([UDP_BACKWARDS_SETOWN], [1],
1331	[Do we set process groups with -pid?])
1332esac
1333
1334AC_CACHE_CHECK(
1335    [if we need a ctty for F_SETOWN],
1336    [ntp_cv_func_ctty_for_f_setown],
1337    [
1338	case "$host" in
1339	 *-*-bsdi[[23]]*)
1340	    ans=yes
1341	    ;;
1342	 *-*-freebsd*)
1343	    ans=yes
1344	    ;;
1345	# NetBSD versions prior to 3.99.8 require a CTTY for F_SETOWN,
1346	# while later versions will fail a ioctl(TIOCSCTTY, 0) call in
1347	# some cases and so should not have USE_FSETOWNCTTY.  "netbsd"
1348	# in $host may be followed by "aout", "ecoff", or "elf".
1349	 *-*-netbsd*[[a-z]]3.[[0-8]]*|*-*-netbsd*[[a-z]][[0-2]].*|*-*-netbsd*[[a-z]]3.99.[[0-7]])
1350	    ans=yes
1351	    ;;
1352	 *-*-netbsd3.[[0-8]]*|*-*-netbsd[[0-2]].*|*-*-netbsd3.99.[[0-7]])
1353	    ans=yes
1354	    ;;
1355	 *-*-openbsd*)
1356	    ans=yes
1357	    ;;
1358	 *-*-osf*)
1359	    ans=yes
1360	    ;;
1361	 *-*-darwin*)
1362	    ans=yes
1363	    ;;
1364	 *)
1365	    ans=no
1366	    ;;
1367	esac
1368	ntp_cv_func_ctty_for_f_setown=$ans
1369    ]
1370)
1371case "$ntp_cv_func_ctty_for_f_setown" in
1372 yes)
1373    AC_DEFINE([USE_FSETOWNCTTY], [1], [Must we have a CTTY for fsetown?])
1374esac
1375
1376AC_CACHE_CHECK(
1377    [if the OS clears cached routes when more specifics become available],
1378    [ntp_cv_os_routeupdates],
1379    [
1380	case "$host" in
1381	 *-*-netbsd*)
1382	    ans=yes
1383	    ;;
1384	 *)
1385	    ans=no
1386	    ;;
1387	esac
1388	ntp_cv_os_routeupdates=$ans
1389    ]
1390)
1391case "$ntp_cv_os_routeupdates" in
1392 yes)
1393    AC_DEFINE([OS_MISSES_SPECIFIC_ROUTE_UPDATES], [1],
1394	[need to recreate sockets on changed routing?])
1395esac
1396
1397AC_CACHE_CHECK(
1398    [if the wildcard socket needs REUSEADDR to bind other addresses],
1399    [ntp_cv_os_wildcardreuse],
1400    [
1401	case "$host" in
1402	 *-*-*linux*)
1403	    ans=yes
1404	    ;;
1405	 *) ans=no
1406	    ;;
1407	esac
1408	ntp_cv_os_wildcardreuse=$ans
1409    ]
1410)
1411case "$ntp_cv_os_wildcardreuse" in
1412 yes)
1413    AC_DEFINE([OS_NEEDS_REUSEADDR_FOR_IFADDRBIND], [1],
1414	[wildcard socket needs REUSEADDR to bind interface addresses])
1415esac
1416
1417case "$host" in
1418 *-*-aix*)
1419    AC_DEFINE([NLIST_EXTRA_INDIRECTION], [1],
1420	[Might nlist() values require an extra level of indirection (AIX)?])
1421esac
1422
1423AC_CACHE_CHECK(
1424    [for a minimum recommended value of tickadj],
1425    [ntp_cv_var_min_rec_tickadj],
1426    [
1427	ans=no
1428	case "$host" in
1429	 *-*-aix*)
1430	    ans=40
1431	    ;;
1432	esac
1433	ntp_cv_var_min_rec_tickadj=$ans
1434    ]
1435)
1436case "$ntp_cv_var_min_rec_tickadj" in
1437 ''|no)
1438    ;;
1439 *)
1440    AC_DEFINE_UNQUOTED([MIN_REC_TICKADJ], [$ntp_cv_var_min_rec_tickadj],
1441	[Should we recommend a minimum value for tickadj?])
1442esac
1443
1444AC_CACHE_CHECK(
1445    [if the TTY code permits PARENB and IGNPAR],
1446    [ntp_cv_no_parenb_ignpar],
1447    [
1448	ans=no
1449	case "$host" in
1450	 i?86-*-*linux*)
1451	    ans=yes
1452	    ;;
1453	 mips-sgi-irix*)
1454	    ans=yes
1455	    ;;
1456	 i?86-*-freebsd[[123]].*)
1457	    ;;
1458	 i?86-*-freebsd*)
1459	    ans=yes
1460	    ;;
1461	 *-*-unicosmp*)
1462	    ans=yes
1463	    ;;
1464	esac
1465	ntp_cv_no_parenb_ignpar=$ans
1466    ]
1467)
1468case "$ntp_cv_no_parenb_ignpar" in
1469 yes)
1470    AC_DEFINE([NO_PARENB_IGNPAR], [1],
1471	[Is there a problem using PARENB and IGNPAR?])
1472esac
1473
1474AC_MSG_CHECKING([if we're including processing time debugging code])
1475AC_ARG_ENABLE(
1476    [debug-timing],
1477    [AS_HELP_STRING(
1478	[--enable-debug-timing],
1479	[- include processing time debugging code (costs performance)]
1480    )],
1481    [ntp_ok=$enableval],
1482    [ntp_ok=no]
1483)
1484case "$ntp_ok" in
1485 yes)
1486    AC_DEFINE([DEBUG_TIMING], [1], [Enable processing time debugging?])
1487esac
1488AC_MSG_RESULT([$ntp_ok])
1489
1490AC_MSG_CHECKING([for a the number of minutes in a DST adjustment])
1491AC_ARG_ENABLE(
1492    [dst-minutes],
1493    [AS_HELP_STRING(
1494	[--enable-dst-minutes],
1495	[=60 minutes per DST adjustment])   dnl @<:@ is [, @:>@ is ]
1496    ],
1497    [ans=$enableval],
1498    [ans=60]
1499)
1500AC_DEFINE_UNQUOTED([DSTMINUTES], [$ans],
1501    [The number of minutes in a DST adjustment])
1502AC_MSG_RESULT([$ans])
1503
1504AC_MSG_CHECKING([if ntpd will retry permanent DNS failures])
1505AC_ARG_ENABLE(
1506    [ignore-dns-errors],
1507    [AS_HELP_STRING(
1508	[--enable-ignore-dns-errors],
1509	[- retry DNS queries on any error]
1510    )],
1511    [ans=$enableval],
1512    [ans=no]
1513)
1514case "$ans" in
1515 yes)
1516    AC_DEFINE([IGNORE_DNS_ERRORS], [1],
1517	[Retry queries on _any_ DNS error?])
1518esac
1519AC_MSG_RESULT([$ans])
1520
1521AC_CACHE_CHECK(
1522    [availability of ntp_{adj,get}time()],
1523    [ntp_cv_var_ntp_syscalls],
1524    [
1525	ntp_cv_var_ntp_syscalls=no
1526	case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex" in
1527	 yesyes*)
1528	    ntp_cv_var_ntp_syscalls=libc
1529	    ;;
1530	 *yes)
1531	    ntp_cv_var_ntp_syscalls=inline
1532	    ;;
1533	 *)
1534	    AC_PREPROC_IFELSE(
1535		[AC_LANG_SOURCE(
1536		    [
1537			#include <sys/syscall.h>
1538			#if !defined(SYS_ntp_gettime) || !defined(SYS_ntp_adjtime)
1539			# error
1540			#endif
1541		    ])],
1542		[ntp_cv_var_ntp_syscalls=kernel]
1543	    )
1544	    ;;
1545	 esac
1546    ]
1547)
1548case "$ntp_cv_var_ntp_syscalls" in
1549 libc)
1550    AC_DEFINE([NTP_SYSCALLS_LIBC], [1],
1551	[Do we have ntp_{adj,get}time in libc?])
1552    ;;
1553 kernel)
1554    AC_DEFINE([NTP_SYSCALLS_STD], [1],
1555	[Do we have ntp_{adj,get}time in the kernel?])
1556    ;;
1557esac
1558
1559AC_CACHE_CHECK(
1560    [if sys/timex.h has STA_FLL],
1561    [ntp_cv_var_sta_fll],
1562    [AC_PREPROC_IFELSE(
1563	[AC_LANG_SOURCE(
1564	    [
1565		#include <sys/timex.h>
1566		#ifndef STA_FLL
1567		# error
1568		#endif
1569	    ])],
1570	[ntp_cv_var_sta_fll=yes],
1571	[ntp_cv_var_sta_fll=no]
1572    )]
1573)
1574
1575AC_CACHE_CHECK(
1576    [if we have kernel PLL support],
1577    [ntp_cv_var_kernel_pll],
1578    [dnl ntp_cv_var_ntp_syscalls is {no,libc,kernel}
1579	case "$ac_cv_header_sys_timex_h$ntp_cv_struct_ntptimeval$ntp_cv_var_sta_fll$ntp_cv_var_ntp_syscalls" in
1580	 *no*)
1581	    ntp_cv_var_kernel_pll=no
1582	    ;;
1583	 *) ntp_cv_var_kernel_pll=yes
1584	    ;;
1585	esac
1586    ]
1587)
1588case "$ntp_cv_var_kernel_pll" in
1589 yes)
1590    AC_DEFINE([KERNEL_PLL], [1],
1591	[Does the kernel support precision time discipline?])
1592esac
1593
1594AC_CACHE_CHECK(
1595    [if SIOCGIFCONF returns buffer size in the buffer],
1596    [ntp_cv_size_returned_in_buffer],
1597    [
1598	ans=no
1599	case "$host" in
1600	 *-fujitsu-uxp*)
1601	    ans=yes
1602	    ;;
1603	 *-ncr-sysv4*)
1604	    ans=yes
1605	    ;;
1606	 *-univel-sysv*)
1607	    ans=yes
1608	    ;;
1609	esac
1610	ntp_cv_size_returned_in_buffer=$ans
1611    ]
1612)
1613case "$ntp_cv_size_returned_in_buffer" in
1614 yes)
1615    AC_DEFINE([SIZE_RETURNED_IN_BUFFER], [1],
1616	[Does SIOCGIFCONF return size in the buffer?])
1617esac
1618
1619# Check for ioctls TIOCGPPSEV
1620AC_MSG_CHECKING([for TTY PPS ioctl TIOCGPPSEV])
1621case "$ac_cv_header_termios_h" in
1622 yes)
1623    AC_PREPROC_IFELSE(
1624	[AC_LANG_SOURCE([
1625	    #include <termios.h>
1626	    #ifndef TIOCGPPSEV
1627	    # error
1628	    #endif
1629	])],
1630	[ntp_ok=yes],
1631	[ntp_ok=no]
1632    )
1633    ;;
1634 *)
1635    ntp_ok=no
1636    ;;
1637esac
1638case "$ntp_ok" in
1639 yes)
1640    AC_DEFINE([HAVE_TIOCGPPSEV], [1],
1641	[Do we have the TIOCGPPSEV ioctl (Solaris)?])
1642esac
1643AC_MSG_RESULT([$ntp_ok])
1644
1645# Check for ioctls TIOCSPPS
1646AC_MSG_CHECKING([for TTY PPS ioctl TIOCSPPS])
1647case "$ac_cv_header_termios_h" in
1648 yes)
1649    AC_PREPROC_IFELSE(
1650	[AC_LANG_SOURCE([
1651	    #include <termios.h>
1652	    #ifndef TIOCSPPS
1653	    # error
1654	    #endif
1655	 ])],
1656	 [ntp_ok=yes],
1657	 [ntp_ok=no]
1658    )
1659    ;;
1660 *)
1661    ntp_ok=no
1662    ;;
1663esac
1664case "$ntp_ok" in
1665 yes)
1666    AC_DEFINE([HAVE_TIOCSPPS], [1],
1667	[Do we have the TIOCSPPS ioctl (Solaris)?])
1668esac
1669AC_MSG_RESULT([$ntp_ok])
1670
1671# Check for ioctls CIOGETEV
1672AC_MSG_CHECKING([for TTY PPS ioctl CIOGETEV])
1673case "$ac_cv_header_sys_ppsclock_h" in
1674 yes)
1675    AC_PREPROC_IFELSE(
1676	[AC_LANG_SOURCE([
1677	    #include <sys/ppsclock.h>
1678	    #ifndef CIOGETEV
1679	    # error
1680	    #endif
1681	])],
1682	[ntp_ok=yes],
1683	[ntp_ok=no]
1684    )
1685    ;;
1686 *)
1687    ntp_ok=no
1688    ;;
1689esac
1690case "$ntp_ok" in
1691 yes)
1692    AC_DEFINE([HAVE_CIOGETEV], [1],
1693	[Do we have the CIOGETEV ioctl (SunOS, Linux)?])
1694esac
1695AC_MSG_RESULT([$ntp_ok])
1696
1697# ATOM/PPSAPI stuff.
1698
1699ntp_atom_ok=yes
1700
1701# Check for header timepps.h, if found then we have PPS API (Draft RFC) stuff.
1702
1703# The PPSAPI headers need "inline" ($ac_cv_c_inline='inline')
1704# The PPSAPI needs struct timespec.
1705# The PPSAPI also needs a timepps header.
1706
1707case "$ac_cv_c_inline$ntp_cv_struct_timespec" in
1708 inlineyes)
1709    case "$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h$host_os" in
1710     *yes* | *sunos* | *solaris* | *sco* | *netbsd* )
1711	AC_DEFINE(HAVE_PPSAPI, 1, [Do we have the PPS API per the Draft RFC?])
1712	ntp_jupiter_ok=yes
1713	ntp_oncore_ok=yes
1714	ntp_parse_ok=yes
1715	ntp_ripe_ncc_ok=yes
1716	;;
1717    esac
1718    ;;
1719esac
1720
1721# Check for ioctls TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG
1722AC_CHECK_HEADER([linux/serial.h])
1723case "$ac_cv_header_sys_ppsclock_h$ac_cv_header_linux_serial_h" in
1724  yesyes)
1725    AC_MSG_CHECKING([ioctl TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG])
1726    AC_PREPROC_IFELSE(
1727	[AC_LANG_SOURCE([
1728	    #include <sys/time.h>
1729	    typedef int u_int;
1730	    #include <sys/ppsclock.h>
1731	    #include <linux/serial.h>
1732
1733	    #ifndef TIOCGSERIAL
1734	    # error
1735	    #endif
1736	    #ifndef TIOCSSERIAL
1737	    # error
1738	    #endif
1739	    #ifndef ASYNC_PPS_CD_POS
1740	    # error
1741	    #endif
1742	    #ifndef ASYNC_PPS_CD_NEG
1743	    # error
1744	    #endif
1745	    #ifndef CIOGETEV
1746	    # error
1747	    #endif
1748	])],
1749	[ntp_ok=yes],
1750	[ntp_ok=no]
1751    )
1752    AC_MSG_RESULT([$ntp_ok])
1753    ;;
1754  *)
1755    ntp_ok=no
1756    ;;
1757esac
1758case "$ntp_ok" in
1759 yes)
1760    AC_DEFINE([HAVE_TIO_SERIAL_STUFF], 1,
1761	[Do we have the TIO serial stuff?])
1762esac
1763
1764# Check for SHMEM_STATUS support
1765AC_MSG_CHECKING([SHMEM_STATUS support])
1766case "$ac_cv_header_sys_mman_h" in
1767 yes)
1768    ntp_ok=yes
1769    ;;
1770 *)
1771    ntp_ok=no
1772    ;;
1773esac
1774case "$ntp_ok" in
1775 yes)
1776    AC_DEFINE([ONCORE_SHMEM_STATUS], [1],
1777	[Do we have support for SHMEM_STATUS?])
1778esac
1779AC_MSG_RESULT([$ntp_ok])
1780
1781ntp_refclock=no
1782
1783# HPUX only, and by explicit request
1784AC_MSG_CHECKING([Datum/Bancomm bc635/VME interface])
1785AC_ARG_ENABLE(
1786    [BANCOMM],
1787    [AS_HELP_STRING(
1788	[--enable-BANCOMM],
1789	[- Datum/Bancomm bc635/VME interface]
1790    )],
1791    [ntp_ok=$enableval],
1792    [ntp_ok=no]
1793)
1794case "$ntp_ok" in
1795 yes)
1796    ntp_refclock=yes
1797    AC_DEFINE([CLOCK_BANC], [1], [Datum/Bancomm bc635/VME interface?])
1798    ;;
1799esac
1800AC_MSG_RESULT([$ntp_ok])
1801case "$ntp_ok$host" in
1802 yes*-*-hpux*) ;;
1803 yes*) AC_MSG_WARN([*** But the expected answer is... no ***]) ;;
1804esac
1805
1806#HPUX only, and only by explicit request
1807AC_MSG_CHECKING([TrueTime GPS receiver/VME interface])
1808AC_ARG_ENABLE(
1809    [GPSVME],
1810    [AS_HELP_STRING(
1811	[--enable-GPSVME],
1812	[- TrueTime GPS receiver/VME interface]
1813    )],
1814    [ntp_ok=$enableval],
1815    [ntp_ok=no]
1816)
1817case "$ntp_ok" in
1818 yes)
1819    ntp_refclock=yes
1820    AC_DEFINE([CLOCK_GPSVME], 1, [TrueTime GPS receiver/VME interface?])
1821    ;;
1822esac
1823AC_MSG_RESULT([$ntp_ok])
1824case "$ntp_ok$host" in
1825 yes*-*-hpux*) ;;
1826 yes*) AC_MSG_WARN([*** But the expected answer is... no ***]) ;;
1827esac
1828
1829AC_MSG_CHECKING([for PCL720 clock support])
1830case "$ac_cv_header_machine_inline_h$ac_cv_header_sys_pcl720_h$ac_cv_header_sys_i8253_h" in
1831 yesyesyes)
1832    AC_DEFINE([CLOCK_PPS720], 1, [PCL 720 clock support])
1833    ans=yes
1834    ;;
1835 *)
1836    ans=no
1837    ;;
1838esac
1839AC_MSG_RESULT([$ans])
1840
1841AC_MSG_CHECKING([for default inclusion of all suitable non-PARSE clocks])
1842AC_ARG_ENABLE(
1843    [all-clocks],
1844    [AS_HELP_STRING(
1845	[--enable-all-clocks],
1846	[+ include all suitable non-PARSE clocks:]
1847    )],
1848    [ntp_eac=$enableval],
1849    [ntp_eac=yes]
1850)
1851AC_MSG_RESULT([$ntp_eac])
1852
1853# HMS: Should we also require ntp_parse_ok?
1854AC_MSG_CHECKING([if we have support for PARSE clocks])
1855case "$ntp_atom_ok$ac_cv_header_termio_h$ac_cv_header_termios_h" in
1856 yes*yes*)
1857    ntp_canparse=yes
1858    ;;
1859 *) ntp_canparse=no
1860    ;;
1861esac
1862AC_MSG_RESULT([$ntp_canparse])
1863
1864AC_MSG_CHECKING([if we have support for audio clocks])
1865case "$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
1866 *yes*)
1867    ntp_canaudio=yes
1868    AC_DEFINE([HAVE_AUDIO], [], [Do we have audio support?])
1869    ;;
1870 *) ntp_canaudio=no ;;
1871esac
1872AC_MSG_RESULT([$ntp_canaudio])
1873
1874AC_MSG_CHECKING([if we have support for the SHM refclock interface])
1875case "$ac_cv_header_sys_ipc_h$ac_cv_header_sys_shm_h" in
1876 yesyes)
1877    ntp_canshm=yes
1878    ;;
1879 *) ntp_canshm=no ;;
1880esac
1881AC_MSG_RESULT([$ntp_canshm])
1882
1883# Test for termios TIOCMBIS modem control (ACTS, Heath, Palisade)
1884AC_CACHE_CHECK(
1885    [for termios modem control],
1886    [ntp_cv_modem_control],
1887    [AC_COMPILE_IFELSE(
1888	[AC_LANG_PROGRAM(
1889	    [[
1890		#ifdef HAVE_UNISTD_H
1891		# include <unistd.h>
1892		#endif
1893		#ifdef HAVE_TERMIOS_H
1894		# include <termios.h>
1895		#endif
1896		#ifdef HAVE_SYS_IOCTL_H
1897		# include <sys/ioctl.h>
1898		#endif
1899	    ]],
1900	    [[
1901		int	dtr = TIOCM_DTR;
1902
1903		ioctl(1, TIOCMBIS, (char *)&dtr);
1904	    ]]
1905	)],
1906	[ntp_cv_modem_control=yes],
1907	[ntp_cv_modem_control=no]
1908    )]
1909)
1910case "$ntp_eac::$ntp_cv_modem_control" in
1911 yes::yes)
1912    ntp_enable_all_modem_control_clocks=yes
1913    ;;
1914 *)
1915    ntp_enable_all_modem_control_clocks=no
1916    ;;
1917esac
1918
1919# Requires modem control
1920AC_MSG_CHECKING([ACTS modem service])
1921AC_ARG_ENABLE(
1922    [ACTS],
1923    [AS_HELP_STRING(
1924	[--enable-ACTS],
1925	[s ACTS modem service]
1926    )],
1927    [ntp_ok=$enableval],
1928    [ntp_ok=$ntp_enable_all_modem_control_clocks]
1929)
1930case "$ntp_ok" in
1931 yes)
1932    ntp_refclock=yes
1933    AC_DEFINE([CLOCK_ACTS], [1], [ACTS modem service])
1934    ;;
1935esac
1936AC_MSG_RESULT([$ntp_ok])
1937
1938AC_MSG_CHECKING([Arbiter 1088A/B GPS receiver])
1939AC_ARG_ENABLE(
1940    [ARBITER],
1941    [AS_HELP_STRING(
1942	[--enable-ARBITER],
1943	[+ Arbiter 1088A/B GPS receiver]
1944    )],
1945    [ntp_ok=$enableval],
1946    [ntp_ok=$ntp_eac]
1947)
1948case "$ntp_ok" in
1949 yes)
1950    ntp_refclock=yes
1951    AC_DEFINE([CLOCK_ARBITER], [1], [Arbiter 1088A/B GPS receiver])
1952    ;;
1953esac
1954AC_MSG_RESULT([$ntp_ok])
1955
1956AC_MSG_CHECKING([Arcron MSF receiver])
1957AC_ARG_ENABLE(
1958    [ARCRON_MSF],
1959    [AS_HELP_STRING(
1960	[--enable-ARCRON-MSF],
1961	[+ Arcron MSF receiver]
1962    )],
1963    [ntp_ok=$enableval],
1964    [ntp_ok=$ntp_eac]
1965)
1966case "$ntp_ok" in
1967 yes)
1968    ntp_refclock=yes
1969    AC_DEFINE([CLOCK_ARCRON_MSF], [1], [ARCRON support?])
1970    ;;
1971esac
1972AC_MSG_RESULT([$ntp_ok])
1973
1974AC_MSG_CHECKING([Austron 2200A/2201A GPS receiver])
1975AC_ARG_ENABLE(
1976    [AS2201],
1977    [AS_HELP_STRING(
1978	[--enable-AS2201],
1979	[+ Austron 2200A/2201A GPS receiver]
1980    )],
1981    [ntp_ok=$enableval],
1982    [ntp_ok=$ntp_eac]
1983)
1984case "$ntp_ok" in
1985 yes)
1986    ntp_refclock=yes
1987    AC_DEFINE([CLOCK_AS2201], [1], [Austron 2200A/2201A GPS receiver?])
1988    ;;
1989esac
1990AC_MSG_RESULT([$ntp_ok])
1991
1992AC_MSG_CHECKING([ATOM PPS interface])
1993AC_ARG_ENABLE(
1994    [ATOM],
1995    [AS_HELP_STRING(
1996	[--enable-ATOM],
1997	[s ATOM PPS interface]
1998    )],
1999    [ntp_ok=$enableval],
2000    [ntp_ok=$ntp_eac]
2001)
2002case "$ntp_atom_ok" in
2003 no) ntp_ok=no ;;
2004esac
2005case "$ntp_ok" in
2006 yes)
2007    ntp_refclock=yes
2008    AC_DEFINE([CLOCK_ATOM], [1], [PPS interface?])
2009    ;;
2010esac
2011AC_MSG_RESULT([$ntp_ok])
2012
2013AC_MSG_CHECKING([Chrono-log K-series WWVB receiver])
2014AC_ARG_ENABLE(
2015    [CHRONOLOG],
2016    [AS_HELP_STRING(
2017	[--enable-CHRONOLOG],
2018	[+ Chrono-log K-series WWVB receiver]
2019    )],
2020    [ntp_ok=$enableval],
2021    [ntp_ok=$ntp_eac]
2022)
2023case "$ntp_ok" in
2024 yes)
2025    ntp_refclock=yes
2026    AC_DEFINE([CLOCK_CHRONOLOG], [1], [Chronolog K-series WWVB receiver?])
2027    ;;
2028esac
2029AC_MSG_RESULT([$ntp_ok])
2030
2031AC_MSG_CHECKING([CHU modem/decoder])
2032AC_ARG_ENABLE(
2033    [CHU],
2034    [AS_HELP_STRING(
2035	[--enable-CHU],
2036	[+ CHU modem/decoder]
2037    )],
2038    [ntp_ok=$enableval],
2039    [ntp_ok=$ntp_eac]
2040)
2041case "$ntp_ok" in
2042 yes)
2043    ntp_refclock=yes
2044    AC_DEFINE([CLOCK_CHU], [1], [CHU modem/decoder])
2045    ;;
2046esac
2047AC_MSG_RESULT([$ntp_ok])
2048ntp_refclock_chu=$ntp_ok
2049
2050AC_MSG_CHECKING([CHU audio/decoder])
2051AC_ARG_ENABLE(
2052    [AUDIO-CHU],
2053    [AS_HELP_STRING(
2054	[--enable-AUDIO-CHU],
2055	[s CHU audio/decoder]
2056    )],
2057    [ntp_ok=$enableval],
2058    [
2059	case "$ntp_eac$ntp_refclock_chu$ntp_canaudio" in
2060	 *no*)	ntp_ok=no  ;;
2061	 *)	ntp_ok=yes ;;
2062	esac
2063    ]
2064)
2065AC_MSG_RESULT([$ntp_ok])
2066# We used to check for sunos/solaris target...
2067case "$ntp_ok$ntp_refclock_chu$ntp_canaudio" in
2068 yes*no*) AC_MSG_WARN([*** But the expected answer is...no ***])
2069esac
2070
2071# Not under HP-UX
2072AC_MSG_CHECKING([Datum Programmable Time System])
2073AC_ARG_ENABLE(
2074    [DATUM],
2075    [AS_HELP_STRING(
2076	[--enable-DATUM],
2077	[s Datum Programmable Time System]
2078    )],
2079    [ntp_ok=$enableval],
2080    [
2081	case "$ac_cv_header_termios_h" in
2082	 yes)
2083	    ntp_ok=$ntp_eac
2084	    ;;
2085	 *) ntp_ok=no
2086	    ;;
2087	esac
2088    ]
2089)
2090case "$ntp_ok" in
2091 yes)
2092    ntp_refclock=yes
2093    AC_DEFINE([CLOCK_DATUM], [1], [Datum Programmable Time System?])
2094    ;;
2095esac
2096AC_MSG_RESULT([$ntp_ok])
2097
2098AC_MSG_CHECKING([Dumb generic hh:mm:ss local clock])
2099AC_ARG_ENABLE(
2100    [DUMBCLOCK],
2101    [AS_HELP_STRING(
2102	[--enable-DUMBCLOCK],
2103	[+ Dumb generic hh:mm:ss local clock]
2104    )],
2105    [ntp_ok=$enableval],
2106    [ntp_ok=$ntp_eac]
2107)
2108case "$ntp_ok" in
2109 yes)
2110    ntp_refclock=yes
2111    AC_DEFINE([CLOCK_DUMBCLOCK], [1], [Dumb generic hh:mm:ss local clock?])
2112    ;;
2113esac
2114AC_MSG_RESULT([$ntp_ok])
2115
2116AC_MSG_CHECKING([Forum Graphic GPS])
2117AC_ARG_ENABLE(
2118    [FG],
2119    [AS_HELP_STRING(
2120	[--enable-FG],
2121	[+ Forum Graphic GPS]
2122    )],
2123    [ntp_ok=$enableval],
2124    [ntp_ok=$ntp_eac]
2125)
2126case "$ntp_ok" in
2127 yes)
2128    ntp_refclock=yes
2129    AC_DEFINE([CLOCK_FG], [1], [Forum Graphic GPS datating station driver?])
2130    ;;
2131esac
2132AC_MSG_RESULT([$ntp_ok])
2133
2134# Requires modem control
2135AC_MSG_CHECKING([Heath GC-1000 WWV/WWVH receiver])
2136AC_ARG_ENABLE(
2137    [HEATH],
2138    [AS_HELP_STRING(
2139	[--enable-HEATH],
2140	[s Heath GC-1000 WWV/WWVH receiver]
2141    )],
2142    [ntp_ok=$enableval],
2143    [ntp_ok=$ntp_enable_all_modem_control_clocks]
2144)
2145case "$ntp_ok" in
2146 yes)
2147    ntp_refclock=yes
2148    AC_DEFINE([CLOCK_HEATH], [1], [Heath GC-1000 WWV/WWVH receiver?])
2149    ;;
2150esac
2151AC_MSG_RESULT([$ntp_ok])
2152
2153AC_MSG_CHECKING([for hopf serial clock device])
2154AC_ARG_ENABLE(
2155    [HOPFSERIAL],
2156    [AS_HELP_STRING(
2157	[--enable-HOPFSERIAL],
2158	[+ hopf serial clock device]
2159    )],
2160    [ntp_ok=$enableval],
2161    [ntp_ok=$ntp_eac]
2162)
2163case "$ntp_ok" in
2164 yes)
2165    ntp_refclock=yes
2166    AC_DEFINE([CLOCK_HOPF_SERIAL], [1], [HOPF serial clock device?])
2167    ;;
2168esac
2169AC_MSG_RESULT([$ntp_ok])
2170
2171AC_MSG_CHECKING([for hopf PCI clock 6039])
2172AC_ARG_ENABLE(
2173    [HOPFPCI],
2174    [AS_HELP_STRING(
2175	[--enable-HOPFPCI],
2176	[+ hopf 6039 PCI board]
2177    )],
2178    [ntp_ok=$enableval],
2179    [ntp_ok=$ntp_eac]
2180)
2181case "$ntp_ok" in
2182 yes)
2183    ntp_refclock=yes
2184    AC_DEFINE([CLOCK_HOPF_PCI], [1], [HOPF PCI clock device?])
2185    ;;
2186esac
2187AC_MSG_RESULT([$ntp_ok])
2188
2189AC_MSG_CHECKING([HP 58503A GPS receiver])
2190AC_ARG_ENABLE(
2191    [HPGPS],
2192    [AS_HELP_STRING(
2193	[--enable-HPGPS],
2194	[+ HP 58503A GPS receiver]
2195    )],
2196    [ntp_ok=$enableval],
2197    [ntp_ok=$ntp_eac]
2198)
2199case "$ntp_ok" in
2200 yes)
2201    ntp_refclock=yes
2202    AC_DEFINE([CLOCK_HPGPS], 1, [HP 58503A GPS receiver?])
2203    ;;
2204esac
2205AC_MSG_RESULT([$ntp_ok])
2206
2207AC_MSG_CHECKING([IRIG audio decoder])
2208AC_ARG_ENABLE(
2209    [IRIG],
2210    [AS_HELP_STRING(
2211	[--enable-IRIG],
2212	[s IRIG audio decoder]
2213    )],
2214    [ntp_ok=$enableval],
2215    [
2216	case "$ntp_eac$ntp_canaudio" in
2217	 *no*)	ntp_ok=no  ;;
2218	 *)	ntp_ok=yes ;;
2219	esac
2220    ]
2221)
2222case "$ntp_ok" in
2223 yes)
2224    ntp_refclock=yes
2225    AC_DEFINE([CLOCK_IRIG], [1], [IRIG audio decoder?])
2226    ;;
2227esac
2228AC_MSG_RESULT([$ntp_ok])
2229case "$ntp_ok$ntp_canaudio" in
2230 yesno) AC_MSG_WARN([*** But the expected answer is... no ***])
2231esac
2232
2233AC_MSG_CHECKING([for JJY receiver])
2234AC_ARG_ENABLE(
2235    [JJY],
2236    [AS_HELP_STRING(
2237	[--enable-JJY],
2238	[+ JJY receiver]
2239    )],
2240    [ntp_ok=$enableval],
2241    [ntp_ok=$ntp_eac]
2242)
2243case "$ntp_ok" in
2244 yes)
2245    ntp_refclock=yes
2246    AC_DEFINE([CLOCK_JJY], [1], [JJY receiver?])
2247    ;;
2248esac
2249AC_MSG_RESULT([$ntp_ok])
2250
2251AC_MSG_CHECKING([Rockwell Jupiter GPS receiver])
2252AC_ARG_ENABLE(
2253    [JUPITER],
2254    [AS_HELP_STRING(
2255	[--enable-JUPITER],
2256	[s Rockwell Jupiter GPS receiver]
2257    )],
2258    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2259case "$ntp_jupiter_ok" in
2260 no) ntp_ok=no ;;
2261esac
2262case "$ntp_ok" in
2263 yes)
2264    ntp_refclock=yes
2265    AC_DEFINE([CLOCK_JUPITER], [1], [Rockwell Jupiter GPS clock?])
2266    ;;
2267esac
2268AC_MSG_RESULT([$ntp_ok])
2269
2270AC_MSG_CHECKING([Leitch CSD 5300 Master Clock System Driver])
2271AC_ARG_ENABLE(
2272    [LEITCH],
2273    [AS_HELP_STRING(
2274	[--enable-LEITCH],
2275	[+ Leitch CSD 5300 Master Clock System Driver]
2276    )],
2277    [ntp_ok=$enableval],
2278    [ntp_ok=$ntp_eac]
2279)
2280case "$ntp_ok" in
2281 yes)
2282    ntp_refclock=yes
2283    AC_DEFINE([CLOCK_LEITCH], [1],
2284	[Leitch CSD 5300 Master Clock System Driver?])
2285    ;;
2286esac
2287AC_MSG_RESULT([$ntp_ok])
2288
2289AC_MSG_CHECKING([local clock reference])
2290AC_ARG_ENABLE(
2291    [LOCAL-CLOCK],
2292    [AS_HELP_STRING(
2293	[--enable-LOCAL-CLOCK],
2294	[+ local clock reference]
2295    )],
2296    [ntp_ok=$enableval],
2297    [ntp_ok=$ntp_eac]
2298)
2299case "$ntp_ok" in
2300 yes)
2301    ntp_refclock=yes
2302    AC_DEFINE([CLOCK_LOCAL], [1], [local clock reference?])
2303    ;;
2304esac
2305AC_MSG_RESULT([$ntp_ok])
2306
2307dnl Bug 340: longstanding unfixed bugs
2308dnl AC_MSG_CHECKING([EES M201 MSF receiver])
2309dnl AC_ARG_ENABLE([MSFEES],
2310dnl     [AS_HELP_STRING([--enable-MSFEES], [+ EES M201 MSF receiver])],
2311dnl     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2312dnl if test "$ntp_ok" = "yes"; then
2313dnl     ntp_refclock=yes
2314dnl     AC_DEFINE([CLOCK_MSFEES], [1], [EES M201 MSF receiver])
2315dnl fi
2316dnl AC_MSG_RESULT([$ntp_ok])
2317
2318# Not Ultrix
2319AC_MSG_CHECKING([Magnavox MX4200 GPS receiver])
2320AC_ARG_ENABLE(
2321    [MX4200],
2322    [AS_HELP_STRING(
2323	[--enable-MX4200 ],
2324	[s Magnavox MX4200 GPS receiver]
2325    )],
2326    [ntp_ok=$enableval],
2327    [
2328	case "$ac_cv_var_ppsclock" in
2329	 yes)
2330	    ntp_ok=$ntp_eac
2331	    ;;
2332	 *)
2333	    ntp_ok=no
2334	    ;;
2335	esac
2336    ]
2337)
2338case "$ntp_ok" in
2339 yes)
2340    ntp_refclock=yes
2341    AC_DEFINE([CLOCK_MX4200], [1], [Magnavox MX4200 GPS receiver])
2342    ;;
2343esac
2344AC_MSG_RESULT([$ntp_ok])
2345case "$ntp_ok$host" in
2346 yes*-*-ultrix*) AC_MSG_WARN([*** But the expected answer is... no ***])
2347esac
2348
2349AC_MSG_CHECKING([for NeoClock4X receiver])
2350AC_ARG_ENABLE(
2351    [NEOCLOCK4X],
2352    [AS_HELP_STRING(
2353	[--enable-NEOCLOCK4X],
2354	[+ NeoClock4X DCF77 / TDF receiver]
2355    )],
2356    [ntp_ok=$enableval],
2357    [ntp_ok=$ntp_eac]
2358)
2359case "$ntp_ok" in
2360 yes)
2361    ntp_refclock=yes
2362    AC_DEFINE([CLOCK_NEOCLOCK4X], [1], [NeoClock4X])
2363    ;;
2364esac
2365AC_MSG_RESULT([$ntp_ok])
2366
2367AC_MSG_CHECKING([NMEA GPS receiver])
2368AC_ARG_ENABLE(
2369    [NMEA],
2370    [AS_HELP_STRING(
2371	[--enable-NMEA],
2372	[+ NMEA GPS receiver]
2373    )],
2374    [ntp_ok=$enableval],
2375    [ntp_ok=$ntp_eac]
2376)
2377case "$ntp_ok" in
2378 yes)
2379    ntp_refclock=yes
2380    AC_DEFINE([CLOCK_NMEA], [1], [NMEA GPS receiver])
2381    ;;
2382esac
2383AC_MSG_RESULT([$ntp_ok])
2384
2385AC_CHECK_FUNCS([strtoll])
2386AC_MSG_CHECKING([for GPSD JSON receiver])
2387AC_ARG_ENABLE(
2388    [GPSD],
2389    [AS_HELP_STRING(
2390	[--enable-GPSD],
2391	[+ GPSD JSON receiver]
2392    )],
2393    [ntp_ok=$enableval],
2394    [case "$ac_cv_func_strtoll" in
2395     yes) ntp_ok=$ntp_eac ;;
2396     *)   ntp_ok="no" ;;
2397    esac]
2398)
2399case "$ntp_ok" in
2400 yes)
2401    ntp_refclock=yes
2402    AC_DEFINE([CLOCK_GPSDJSON], [1], [GPSD JSON receiver])
2403    ;;
2404esac
2405AC_MSG_RESULT([$ntp_ok])
2406
2407AC_MSG_CHECKING([for ONCORE Motorola VP/UT Oncore GPS])
2408AC_ARG_ENABLE(
2409    [ONCORE],
2410    [AS_HELP_STRING(
2411	[--enable-ONCORE],
2412	[s Motorola VP/UT Oncore GPS receiver]
2413    )],
2414    [ntp_ok=$enableval],
2415    [ntp_ok=$ntp_eac]
2416)
2417case "$ntp_oncore_ok" in
2418 no) ntp_ok=no ;;
2419esac
2420case "$ntp_ok" in
2421 yes)
2422    ntp_refclock=yes
2423    AC_DEFINE([CLOCK_ONCORE], 1, [Motorola UT Oncore GPS])
2424    ;;
2425esac
2426AC_MSG_RESULT([$ntp_ok])
2427
2428# Requires modem control
2429AC_MSG_CHECKING([for Palisade clock])
2430AC_ARG_ENABLE(
2431    [PALISADE],
2432    [AS_HELP_STRING(
2433	[--enable-PALISADE],
2434	[s Palisade clock]
2435    )],
2436    [ntp_ok=$enableval],
2437    [ntp_ok=$ntp_enable_all_modem_control_clocks]
2438)
2439case "$ntp_ok" in
2440 yes)
2441    ntp_refclock=yes
2442    AC_DEFINE([CLOCK_PALISADE], [1], [Palisade clock])
2443    ;;
2444esac
2445AC_MSG_RESULT([$ntp_ok])
2446
2447AC_MSG_CHECKING([Conrad parallel port radio clock])
2448AC_ARG_ENABLE(
2449    [PCF],
2450    [AS_HELP_STRING(
2451	[--enable-PCF ],
2452	[+ Conrad parallel port radio clock]
2453    )],
2454    [ntp_ok=$enableval],
2455    [ntp_ok=$ntp_eac]
2456)
2457case "$ntp_ok" in
2458 yes)
2459    ntp_refclock=yes
2460    AC_DEFINE([CLOCK_PCF], [1], [Conrad parallel port radio clock])
2461    ;;
2462esac
2463AC_MSG_RESULT([$ntp_ok])
2464
2465AC_MSG_CHECKING([PST/Traconex 1020 WWV/WWVH receiver])
2466AC_ARG_ENABLE(
2467    [PST],
2468    [AS_HELP_STRING(
2469	[--enable-PST],
2470	[+ PST/Traconex 1020 WWV/WWVH receiver]
2471    )],
2472    [ntp_ok=$enableval],
2473    [ntp_ok=$ntp_eac]
2474)
2475case "$ntp_ok" in
2476 yes)
2477    ntp_refclock=yes
2478    AC_DEFINE([CLOCK_PST], [1], [PST/Traconex 1020 WWV/WWVH receiver])
2479    ;;
2480esac
2481AC_MSG_RESULT([$ntp_ok])
2482
2483AC_MSG_CHECKING([RIPENCC specific Trimble driver])
2484AC_ARG_ENABLE(
2485    [RIPENCC],
2486    [AS_HELP_STRING(
2487	[--enable-RIPENCC],
2488	[- RIPENCC specific Trimble driver]
2489    )],
2490    [ntp_ok=$enableval],
2491    [ntp_ok=no]
2492)
2493# 020629: HMS: s/$ntp_eac -> -/no because of ptr += sprintf(ptr, ...) usage
2494case "$ntp_ripe_ncc_ok" in
2495 no) ntp_ok=no ;;
2496esac
2497case "$ntp_ok" in
2498 yes)
2499    ntp_refclock=yes
2500    AC_DEFINE([CLOCK_RIPENCC], [],[RIPE NCC Trimble clock])
2501    ;;
2502esac
2503AC_MSG_RESULT([$ntp_ok])
2504
2505# Danny Meyer says SHM compiles (with a few warnings) under Win32.
2506# For *IX, we need sys/ipc.h and sys/shm.h.
2507AC_MSG_CHECKING([for SHM clock attached thru shared memory])
2508AC_ARG_ENABLE(
2509    [SHM],
2510    [AS_HELP_STRING(
2511	[--enable-SHM],
2512	[s SHM clock attached thru shared memory]
2513    )],
2514    [ntp_ok=$enableval],
2515    [
2516	case "$ntp_eac$ntp_canshm" in
2517	 *no*)	ntp_ok=no  ;;
2518	 *)	ntp_ok=yes ;;
2519	esac
2520    ]
2521)
2522case "$ntp_ok" in
2523 yes)
2524    ntp_refclock=yes
2525    AC_DEFINE([CLOCK_SHM], [1], [clock thru shared memory])
2526    ;;
2527esac
2528AC_MSG_RESULT([$ntp_ok])
2529
2530AC_MSG_CHECKING([Spectracom 8170/Netclock/2 WWVB receiver])
2531AC_ARG_ENABLE(
2532    [SPECTRACOM],
2533    [AS_HELP_STRING(
2534	[--enable-SPECTRACOM],
2535	[+ Spectracom 8170/Netclock/2 WWVB receiver]
2536    )],
2537    [ntp_ok=$enableval],
2538    [ntp_ok=$ntp_eac]
2539)
2540case "$ntp_ok" in
2541 yes)
2542    ntp_refclock=yes
2543    AC_DEFINE([CLOCK_SPECTRACOM], [1],
2544	[Spectracom 8170/Netclock/2 WWVB receiver])
2545    ;;
2546esac
2547AC_MSG_RESULT([$ntp_ok])
2548
2549AC_MSG_CHECKING([KSI/Odetics TPRO/S GPS receiver/IRIG interface])
2550AC_ARG_ENABLE(
2551    [TPRO],
2552    [AS_HELP_STRING(
2553	[--enable-TPRO],
2554	[s KSI/Odetics TPRO/S GPS receiver/IRIG interface]
2555    )],
2556    [ntp_ok=$enableval],
2557    [
2558	case "$ac_cv_header_sys_tpro_h" in
2559	 yes)
2560	    ntp_ok=$ntp_eac
2561	    ;;
2562	 *)
2563	    ntp_ok=no
2564	    ;;
2565	esac
2566    ]
2567)
2568case "$ntp_ok" in
2569 yes)
2570    ntp_refclock=yes
2571    AC_DEFINE([CLOCK_TPRO], [1],
2572	[KSI/Odetics TPRO/S GPS receiver/IRIG interface])
2573    ;;
2574esac
2575AC_MSG_RESULT([$ntp_ok])
2576case "$ntp_ok$ac_cv_header_sys_tpro" in
2577 yesno) AC_MSG_WARN([*** But the expected answer is... no ***])
2578esac
2579
2580# Not on a vax-dec-bsd
2581AC_MSG_CHECKING([Kinemetrics/TrueTime receivers])
2582AC_ARG_ENABLE(
2583    [TRUETIME],
2584    [AS_HELP_STRING(
2585	[--enable-TRUETIME],
2586	[s Kinemetrics/TrueTime receivers]
2587    )],
2588    [ntp_ok=$enableval],
2589    [
2590	case "$host" in
2591	 vax-dec-bsd)
2592	    ntp_ok=no
2593	    ;;
2594	 *)
2595	    ntp_ok=$ntp_eac
2596	    ;;
2597	esac
2598    ]
2599)
2600case "$ntp_ok" in
2601 yes)
2602    ntp_refclock=yes
2603    AC_DEFINE([CLOCK_TRUETIME], [1], [Kinemetrics/TrueTime receivers])
2604    ;;
2605esac
2606AC_MSG_RESULT([$ntp_ok])
2607case "$ntp_ok$host" in
2608 yesvax-dec-bsd) AC_MSG_WARN([*** But the expected answer is... no ***])
2609esac
2610
2611AC_MSG_CHECKING([TrueTime 560 IRIG-B decoder])
2612AC_ARG_ENABLE(
2613    [TT560],
2614    [AS_HELP_STRING(
2615	[--enable-TT560],
2616	[- TrueTime 560 IRIG-B decoder]
2617    )],
2618    [ntp_ok=$enableval],
2619    [ntp_ok=no]
2620)
2621case "$ntp_ok" in
2622 yes)
2623    ntp_refclock=yes
2624    AC_DEFINE([CLOCK_TT560], [], [TrueTime 560 IRIG-B decoder?])
2625    ;;
2626esac
2627AC_MSG_RESULT([$ntp_ok])
2628
2629AC_MSG_CHECKING([Ultralink M320 WWVB receiver])
2630AC_ARG_ENABLE(
2631    [ULINK],
2632    [AS_HELP_STRING(
2633	[--enable-ULINK],
2634	[+ Ultralink WWVB receiver]
2635    )],
2636    [ntp_ok=$enableval],
2637    [ntp_ok=$ntp_eac]
2638)
2639case "$ntp_ok" in
2640 yes)
2641    ntp_refclock=yes
2642    AC_DEFINE([CLOCK_ULINK], [1], [Ultralink M320 WWVB receiver?])
2643    ;;
2644esac
2645AC_MSG_RESULT([$ntp_ok])
2646
2647AC_MSG_CHECKING([Spectracom TSYNC PCI timing board])
2648AC_ARG_ENABLE(
2649    [TSYNCPCI],
2650    [AS_HELP_STRING(
2651	[--enable-TSYNCPCI],
2652	[s Spectracom TSYNC timing board]
2653    )],
2654    [ntp_ok=$enableval],
2655    [
2656	case "$host" in
2657	 *-*-*linux*)
2658	    ntp_ok=$ntp_eac
2659	    ;;
2660	 *)
2661	    ntp_ok=no
2662	esac
2663    ]
2664)
2665case "$ntp_ok" in
2666 yes)
2667    ntp_refclock=yes
2668    AC_DEFINE([CLOCK_TSYNCPCI], [1], [Spectracom TSYNC timing board])
2669    ;;
2670esac
2671AC_MSG_RESULT([$ntp_ok])
2672
2673AC_MSG_CHECKING([WWV receiver])
2674AC_ARG_ENABLE(
2675    [WWV],
2676    [AS_HELP_STRING(
2677	[--enable-WWV],
2678	[s WWV Audio receiver]
2679    )],
2680    [ntp_ok=$enableval],
2681    [
2682	case "$ntp_eac$ntp_canaudio" in
2683	 *no*)	ntp_ok=no  ;;
2684	 *)	ntp_ok=yes ;;
2685	esac
2686    ]
2687)
2688case "$ntp_ok" in
2689 yes)
2690    ntp_refclock=yes
2691    AC_DEFINE([CLOCK_WWV], [1], [WWV audio driver])
2692    ;;
2693esac
2694AC_MSG_RESULT([$ntp_ok])
2695case "$ntp_ok$ntp_canaudio" in
2696 yesno) AC_MSG_WARN([*** But the expected answer is... no ***])
2697esac
2698
2699AC_MSG_CHECKING([for Zyfer receiver])
2700AC_ARG_ENABLE(
2701    [ZYFER],
2702    [AS_HELP_STRING(
2703	[--enable-ZYFER],
2704	[+ Zyfer GPStarplus receiver]
2705    )],
2706    [ntp_ok=$enableval],
2707    [ntp_ok=$ntp_eac]
2708)
2709case "$ntp_ok" in
2710 yes)
2711    ntp_refclock=yes
2712    AC_DEFINE([CLOCK_ZYFER], [1], [Zyfer GPStarplus])
2713    ;;
2714esac
2715AC_MSG_RESULT([$ntp_ok])
2716
2717AC_MSG_CHECKING([for default inclusion of all suitable PARSE clocks])
2718AC_ARG_ENABLE(
2719    [parse-clocks],
2720    [AS_HELP_STRING(
2721	[--enable-parse-clocks],
2722	[- include all suitable PARSE clocks:]
2723    )],
2724    [ntp_eapc=$enableval],
2725    [
2726	case "$ntp_eac" in
2727	 yes)	ntp_eapc=$ntp_canparse ;;
2728	 *)	ntp_eapc=no ;;
2729	esac
2730	# Delete the next line one of these days
2731	ntp_eapc=no
2732    ]
2733)
2734AC_MSG_RESULT($ntp_eapc)
2735
2736case "$ntp_eac$ntp_eapc$ntp_canparse" in
2737 noyes*)
2738    AC_MSG_ERROR(["--enable-parse-clocks" requires "--enable-all-clocks".])
2739    ;;
2740 yesyesno)
2741    AC_MSG_ERROR([You said "--enable-parse-clocks" but PARSE isn't supported on this platform!])
2742    ;;
2743esac
2744
2745ntp_libparse=no
2746ntp_parseutil=no
2747ntp_rawdcf=no
2748
2749AC_MSG_CHECKING([Diem Computime Radio Clock])
2750AC_ARG_ENABLE(
2751    [COMPUTIME],
2752    [AS_HELP_STRING(
2753	[--enable-COMPUTIME],
2754	[s Diem Computime Radio Clock]
2755    )],
2756    [ntp_ok=$enableval],
2757    [ntp_ok=$ntp_eapc]
2758)
2759case "$ntp_ok" in
2760 yes)
2761    ntp_libparse=yes
2762    ntp_refclock=yes
2763    AC_DEFINE([CLOCK_COMPUTIME], [1], [Diems Computime Radio Clock?])
2764    ;;
2765esac
2766AC_MSG_RESULT([$ntp_ok])
2767case "$ntp_ok$ntp_canparse" in
2768 yesno)
2769    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2770esac
2771
2772AC_MSG_CHECKING([ELV/DCF7000 clock])
2773AC_ARG_ENABLE(
2774    [DCF7000],
2775    [AS_HELP_STRING(
2776	[--enable-DCF7000],
2777	[s ELV/DCF7000 clock]
2778    )],
2779    [ntp_ok=$enableval],
2780    [ntp_ok=$ntp_eapc]
2781)
2782case "$ntp_ok" in
2783 yes)
2784    ntp_libparse=yes
2785    ntp_refclock=yes
2786    AC_DEFINE([CLOCK_DCF7000], [1], [ELV/DCF7000 clock?])
2787    ;;
2788esac
2789AC_MSG_RESULT([$ntp_ok])
2790case "$ntp_ok$ntp_canparse" in
2791 yesno)
2792    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2793esac
2794
2795AC_MSG_CHECKING([HOPF 6021 clock])
2796AC_ARG_ENABLE(
2797    [HOPF6021],
2798    [AS_HELP_STRING(
2799	[--enable-HOPF6021],
2800	[s HOPF 6021 clock]
2801    )],
2802    [ntp_ok=$enableval],
2803    [ntp_ok=$ntp_eapc]
2804)
2805case "$ntp_ok" in
2806 yes)
2807    ntp_libparse=yes
2808    ntp_refclock=yes
2809    AC_DEFINE([CLOCK_HOPF6021], [1], [HOPF 6021 clock?])
2810    ;;
2811esac
2812AC_MSG_RESULT([$ntp_ok])
2813case "$ntp_ok$ntp_canparse" in
2814 yesno)
2815    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2816esac
2817
2818AC_MSG_CHECKING([Meinberg clocks])
2819AC_ARG_ENABLE(
2820    [MEINBERG],
2821    [AS_HELP_STRING(
2822	[--enable-MEINBERG],
2823	[s Meinberg clocks]
2824    )],
2825    [ntp_ok=$enableval],
2826    [ntp_ok=$ntp_eapc]
2827)
2828case "$ntp_ok" in
2829 yes)
2830    ntp_libparse=yes
2831    ntp_refclock=yes
2832    AC_DEFINE([CLOCK_MEINBERG], [1], [Meinberg clocks])
2833    ;;
2834esac
2835AC_MSG_RESULT([$ntp_ok])
2836case "$ntp_ok$ntp_canparse" in
2837 yesno)
2838    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2839esac
2840
2841AC_MSG_CHECKING([DCF77 raw time code])
2842AC_ARG_ENABLE(
2843    [RAWDCF],
2844    [AS_HELP_STRING(
2845	[--enable-RAWDCF],
2846	[s DCF77 raw time code]
2847    )],
2848    [ntp_ok=$enableval],
2849    [ntp_ok=$ntp_eapc]
2850)
2851case "$ntp_ok" in
2852 yes)
2853    ntp_libparse=yes
2854    ntp_parseutil=yes
2855    ntp_refclock=yes
2856    ntp_rawdcf=yes
2857    AC_DEFINE([CLOCK_RAWDCF], [1], [DCF77 raw time code])
2858    ;;
2859esac
2860AC_MSG_RESULT([$ntp_ok])
2861case "$ntp_ok$ntp_canparse" in
2862 yesno)
2863    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2864esac
2865
2866case "$ntp_rawdcf" in
2867 yes)
2868    AC_CACHE_CHECK([if we must enable parity for RAWDCF],
2869	[ntp_cv_rawdcf_parity],
2870	[
2871	    ans=no
2872	    case "$host" in
2873	     *-*-*linux*)
2874		ans=yes
2875		;;
2876	    esac
2877	    ntp_cv_rawdcf_parity=$ans
2878	]
2879    )
2880    case "$ntp_cv_rawdcf_parity" in
2881     yes)
2882	AC_DEFINE([RAWDCF_NO_IGNPAR], [1],
2883	    [Should we not IGNPAR (Linux)?]) ;;
2884    esac
2885esac
2886
2887AC_MSG_CHECKING([RCC 8000 clock])
2888AC_ARG_ENABLE(
2889    [RCC8000],
2890    [AS_HELP_STRING(
2891	[--enable-RCC8000],
2892	[s RCC 8000 clock]
2893    )],
2894    [ntp_ok=$enableval],
2895    [ntp_ok=$ntp_eapc]
2896)
2897case "$ntp_ok" in
2898 yes)
2899    ntp_libparse=yes
2900    ntp_refclock=yes
2901    AC_DEFINE([CLOCK_RCC8000], [1], [RCC 8000 clock])
2902    ;;
2903esac
2904AC_MSG_RESULT([$ntp_ok])
2905case "$ntp_ok$ntp_canparse" in
2906 yesno)
2907    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2908esac
2909
2910AC_MSG_CHECKING([Schmid DCF77 clock])
2911AC_ARG_ENABLE(
2912    [SCHMID],
2913    [AS_HELP_STRING(
2914	[--enable-SCHMID ],
2915	[s Schmid DCF77 clock]
2916    )],
2917    [ntp_ok=$enableval],
2918    [ntp_ok=$ntp_eapc]
2919)
2920case "$ntp_ok" in
2921 yes)
2922    ntp_libparse=yes
2923    ntp_refclock=yes
2924    AC_DEFINE([CLOCK_SCHMID], [1], [Schmid DCF77 clock])
2925    ;;
2926esac
2927AC_MSG_RESULT([$ntp_ok])
2928case "$ntp_ok$ntp_canparse" in
2929 yesno)
2930    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2931esac
2932
2933AC_MSG_CHECKING([Trimble GPS receiver/TAIP protocol])
2934AC_ARG_ENABLE(
2935    [TRIMTAIP],
2936    [AS_HELP_STRING(
2937	[--enable-TRIMTAIP],
2938	[s Trimble GPS receiver/TAIP protocol]
2939    )],
2940    [ntp_ok=$enableval],
2941    [ntp_ok=$ntp_eapc]
2942)
2943case "$ntp_ok" in
2944 yes)
2945    ntp_libparse=yes
2946    ntp_refclock=yes
2947    AC_DEFINE([CLOCK_TRIMTAIP], [1],
2948	[Trimble GPS receiver/TAIP protocol])
2949    ;;
2950esac
2951AC_MSG_RESULT([$ntp_ok])
2952case "$ntp_ok$ntp_canparse" in
2953 yesno)
2954    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2955esac
2956
2957AC_MSG_CHECKING([Trimble GPS receiver/TSIP protocol])
2958AC_ARG_ENABLE(
2959    [TRIMTSIP],
2960    [AS_HELP_STRING(
2961	[--enable-TRIMTSIP],
2962	[s Trimble GPS receiver/TSIP protocol]
2963    )],
2964    [ntp_ok=$enableval],
2965    [ntp_ok=$ntp_eapc]
2966)
2967case "$ntp_ok" in
2968 yes)
2969    ntp_libparse=yes
2970    ntp_refclock=yes
2971    AC_DEFINE([CLOCK_TRIMTSIP], [1],
2972	[Trimble GPS receiver/TSIP protocol])
2973    ;;
2974esac
2975AC_MSG_RESULT([$ntp_ok])
2976case "$ntp_ok$ntp_canparse" in
2977 yesno)
2978    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
2979esac
2980
2981AC_MSG_CHECKING([WHARTON 400A Series clock])
2982AC_ARG_ENABLE(
2983    [WHARTON],
2984    [AS_HELP_STRING(
2985	[--enable-WHARTON],
2986	[s WHARTON 400A Series clock]
2987    )],
2988    [ntp_ok=$enableval],
2989    [ntp_ok=$ntp_eapc]
2990)
2991case "$ntp_ok" in
2992 yes)
2993    ntp_libparse=yes
2994    ntp_refclock=yes
2995    AC_DEFINE([CLOCK_WHARTON_400A], [1], [WHARTON 400A Series clock])
2996    ;;
2997esac
2998AC_MSG_RESULT([$ntp_ok])
2999case "$ntp_ok$ntp_canparse" in
3000 yesno)
3001    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
3002esac
3003
3004AC_MSG_CHECKING([VARITEXT clock])
3005AC_ARG_ENABLE(
3006    [VARITEXT],
3007    [AS_HELP_STRING(
3008	[--enable-VARITEXT],
3009	[s VARITEXT clock]
3010    )],
3011    [ntp_ok=$enableval],
3012    [ntp_ok=$ntp_eapc]
3013)
3014case "$ntp_ok" in
3015 yes)
3016    ntp_libparse=yes
3017    ntp_refclock=yes
3018    AC_DEFINE([CLOCK_VARITEXT], [1], [VARITEXT clock])
3019    ;;
3020esac
3021AC_MSG_RESULT([$ntp_ok])
3022case "$ntp_ok$ntp_canparse" in
3023 yesno)
3024    AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
3025esac
3026
3027AC_MSG_CHECKING(SEL240X clock)
3028AC_ARG_ENABLE(SEL240X,
3029    AC_HELP_STRING([--enable-SEL240X], [s SEL240X clock]),
3030    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3031if test "$ntp_ok" = "yes"; then
3032    ntp_libparse=yes
3033    ntp_refclock=yes
3034    AC_DEFINE(CLOCK_SEL240X, 1, [SEL240X protocol])
3035fi
3036AC_MSG_RESULT($ntp_ok)
3037case "$ntp_ok$ntp_canparse" in
3038 yesno)
3039    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
3040    ;;
3041esac
3042
3043AC_SUBST([LIBPARSE])
3044AC_SUBST([MAKE_LIBPARSE])
3045AC_SUBST([MAKE_LIBPARSE_KERNEL])
3046AC_SUBST([MAKE_CHECK_Y2K])
3047
3048AC_MSG_CHECKING([if we need to make and use the parse libraries])
3049ans=no
3050case "$ntp_libparse" in
3051 yes)
3052    ans=yes
3053    AC_DEFINE([CLOCK_PARSE], [1], [PARSE driver interface])
3054    LIBPARSE=../libparse/libparse.a
3055    MAKE_LIBPARSE=libparse.a
3056    # HMS: check_y2k trips the 34 year problem now...
3057    false && MAKE_CHECK_Y2K=check_y2k
3058esac
3059AC_MSG_RESULT([$ans])
3060
3061NTP_OPENSSL
3062
3063NTP_CRYPTO_RAND
3064
3065# if we are using OpenSSL (--with-crypto), by default Autokey is enabled
3066AC_MSG_CHECKING([if we want to include NTP Autokey protocol support])
3067AC_ARG_ENABLE(
3068    [autokey],
3069    AS_HELP_STRING(
3070	[--enable-autokey],
3071	[+ support NTP Autokey protocol]
3072	),
3073    [ntp_autokey=$enableval],
3074    [ntp_autokey=$ntp_openssl]
3075)
3076case "$ntp_autokey" in
3077 no)
3078    ;;
3079 *)
3080    case "$ntp_openssl" in
3081     no)
3082	AC_MSG_WARN([Disabling Autokey, --enable-autokey requires --with-crypto.])
3083	ntp_autokey=no
3084	;;
3085     *)
3086	AC_DEFINE([AUTOKEY], [1], [Support NTP Autokey protocol?])
3087	ntp_autokey=yes
3088	;;
3089    esac
3090    ;;
3091esac
3092AC_MSG_RESULT([$ntp_autokey])
3093
3094AC_SUBST([MAKE_CHECK_LAYOUT])
3095AC_MSG_CHECKING([if we want to run check-layout])
3096case "$cross_compiling$PATH_PERL" in
3097 no/*)
3098    MAKE_CHECK_LAYOUT=check-layout
3099    ans=yes
3100    ;;
3101 *)
3102    ans=no
3103    ;;
3104esac
3105AC_MSG_RESULT([$ans])
3106
3107AC_SUBST([TESTDCF])
3108AC_SUBST([DCFD])
3109AC_MSG_CHECKING([if we can make dcf parse utilities])
3110ans=no
3111case "$ntp_parseutil" in
3112 yes)
3113    case "$host" in
3114     *-*-sunos4*|*-*-solaris2*|*-*-*linux*|*-*-netbsd*)
3115	ans="dcfd testdcf"
3116	DCFD=dcfd
3117	TESTDCF=testdcf
3118    esac
3119    ;;
3120esac
3121AC_MSG_RESULT([$ans])
3122
3123AC_SUBST([MAKE_PARSEKMODULE])
3124AC_MSG_CHECKING([if we can build kernel streams modules for parse])
3125ans=no
3126case "$ntp_parseutil$ac_cv_header_sys_stropts_h" in
3127 yesyes)
3128    case "$host" in
3129     sparc-*-sunos4*)
3130        case "$ntp_cv_var_kernel_pll" in
3131	yes)
3132	    AC_DEFINE([PPS_SYNC], [1], [PARSE kernel PLL PPS support])
3133	    ;;
3134	esac
3135	ans=parsestreams
3136	MAKE_PARSEKMODULE=parsestreams.loadable_module.o
3137	;;
3138     sparc-*-solaris2*)
3139	ans=parsesolaris
3140	MAKE_PARSEKMODULE=parse
3141	AC_CHECK_HEADERS([strings.h])
3142	;;
3143    esac
3144    ;;
3145esac
3146AC_MSG_RESULT([$ans])
3147
3148AC_MSG_CHECKING([if we need basic refclock support])
3149case "$ntp_refclock" in
3150 yes)
3151    AC_DEFINE([REFCLOCK], [1], [Basic refclock support?])
3152    ;;
3153esac
3154AC_MSG_RESULT($ntp_refclock)
3155
3156dnl Things that can be made in clockstuff
3157AC_SUBST([PROPDELAY], [propdelay])
3158AC_SUBST([CHUTEST]) dnl needs work to compile
3159
3160AC_SUBST([MAKE_ADJTIMED])
3161AC_MSG_CHECKING([if we want HP-UX adjtimed support])
3162case "$host" in
3163 *-*-hpux[[56789]]*)
3164    ans=yes
3165    ;;
3166 *) ans=no
3167    ;;
3168esac
3169case "$ans" in
3170 yes)
3171    MAKE_ADJTIMED=adjtimed
3172    AC_DEFINE([NEED_HPUX_ADJTIME], [1],
3173	[Do we need HPUX adjtime() library support?])
3174    ;;
3175 *) ADJTIMED_DB=
3176    ADJTIMED_DL=
3177    ADJTIMED_DS=
3178    ADJTIMED_MS=
3179    ;;
3180esac
3181AC_MSG_RESULT([$ans])
3182
3183AC_MSG_CHECKING([if we want QNX adjtime support])
3184case "$host" in
3185 *-*-qnx*)
3186    ans=yes
3187    ;;
3188 *) ans=no
3189    ;;
3190esac
3191case "$ans" in
3192 yes)
3193    AC_DEFINE([NEED_QNX_ADJTIME], [1],
3194	[Do we need the qnx adjtime call?])
3195    ;;
3196esac
3197AC_MSG_RESULT([$ans])
3198
3199AC_MSG_CHECKING([if we can read kmem])
3200
3201#  the default is to enable it if the system has the capability
3202
3203case "$ac_cv_func_nlist$ac_cv_func_K_open$ac_cv_func_kvm_open" in
3204 *yes*)
3205    ans=yes
3206    ;;
3207 *) ans=no
3208    ;;
3209esac
3210
3211case "$host" in
3212 *-*-domainos)	# Won't be found...
3213    ans=no
3214    ;;
3215 *-*-hpux*)
3216    #ans=no
3217    ;;
3218 *-*-irix[[456]]*)
3219    ans=no
3220    ;;
3221 *-*-*linux*)
3222    ans=no
3223    ;;
3224 *-*-winnt3.5)
3225    ans=no
3226    ;;
3227 *-*-unicosmp*)
3228    ans=no
3229    ;;
3230esac
3231
3232# --enable-kmem / --disable-kmem controls if present
3233AC_ARG_ENABLE(
3234    [kmem],
3235    [AS_HELP_STRING(
3236	[--enable-kmem],
3237	[s read /dev/kmem for tick and/or tickadj]
3238    )],
3239    [ans=$enableval]
3240)
3241
3242AC_MSG_RESULT([$ans])
3243
3244case "$ans" in
3245 yes)
3246    can_kmem=yes
3247    ;;
3248 *)
3249    can_kmem=no
3250    AC_DEFINE([NOKMEM], [1], [Should we NOT read /dev/kmem?])
3251esac
3252
3253
3254AC_MSG_CHECKING([if adjtime is accurate])
3255
3256# target-dependent defaults
3257
3258case "$host" in
3259 i386-sequent-ptx*)
3260    ans=no
3261    ;;
3262 i386-unknown-osf1*)
3263    ans=yes
3264    ;;
3265 mips-sgi-irix[[456]]*)
3266    ans=yes
3267    ;;
3268 *-fujitsu-uxp*)
3269    ans=yes
3270    ;;
3271 *-ibm-aix[[4-9]]*)
3272    # XXX only verified thru AIX6.
3273    ans=yes
3274    ;;
3275 *-*-*linux*)
3276    ans=yes
3277    ;;
3278 *-*-solaris2.[[01]])
3279    ans=no
3280    ;;
3281 *-*-solaris2*)
3282    ans=yes
3283    ;;
3284 *-*-unicosmp*)
3285    ans=yes
3286    ;;
3287 *) ans=no
3288    ;;
3289esac
3290
3291# --enable-accurate-adjtime / --disable-accurate-adjtime
3292# override the default
3293AC_ARG_ENABLE(
3294    [accurate-adjtime],
3295    [AS_HELP_STRING(
3296	[--enable-accurate-adjtime],
3297	[s the adjtime() call is accurate]
3298    )],
3299    [ans=$enableval]
3300)
3301
3302AC_MSG_RESULT([$ans])
3303
3304case "$ans" in
3305 yes)
3306    AC_DEFINE([ADJTIME_IS_ACCURATE], [1], [Is adjtime() accurate?])
3307    adjtime_is_accurate=yes
3308    ;;
3309 *)
3310    adjtime_is_accurate=no
3311    ;;
3312esac
3313
3314AC_CACHE_CHECK(
3315    [the name of 'tick' in the kernel],
3316    [ntp_cv_nlist_tick],
3317    [
3318	ans=_tick
3319	case "$host" in
3320	 m68*-hp-hpux*) # HP9000/300?
3321	    ans=_old_tick
3322	    ;;
3323	 *-apple-aux[[23]]*)
3324	    ans=tick
3325	    ;;
3326	 *-hp-hpux*)
3327	    ans=old_tick
3328	    ;;
3329	 *-ibm-aix[[3-9]]*)
3330	    # XXX only verified thru AIX6.
3331	    ans=no
3332	    ;;
3333	 *-*-mpeix*)
3334	    ans=no
3335	    ;;
3336	 *-*-ptx*)
3337	    ans=tick
3338	    ;;
3339	 *-*-sco3.2v[[45]]*)
3340	    ans=no
3341	    ;;
3342	 *-*-solaris2*)
3343	    ans=nsec_per_tick
3344	    ;;
3345	 *-*-sysv4*)
3346	    ans=tick
3347	    ;;
3348	esac
3349	ntp_cv_nlist_tick=$ans
3350    ]
3351)
3352case "$ntp_cv_nlist_tick" in
3353 ''|no)
3354    ;;	# HMS: I think we can only get 'no' here...
3355 *)
3356    AC_DEFINE_UNQUOTED([K_TICK_NAME], ["$ntp_cv_nlist_tick"],
3357	[What is the name of TICK in the kernel?])
3358esac
3359
3360AC_CACHE_CHECK(
3361    [for the units of 'tick'],
3362    [ntp_cv_tick_nano],
3363    [
3364	ans=usec
3365	case "$host" in
3366	 *-*-solaris2*)
3367	    ans=nsec
3368	    ;;
3369	esac
3370	ntp_cv_tick_nano=$ans
3371    ]
3372)
3373case "$ntp_cv_tick_nano" in
3374 nsec)
3375    AC_DEFINE([TICK_NANO], [1], [Is K_TICK_NAME in nanoseconds?])
3376esac
3377
3378AC_CACHE_CHECK(
3379    [the name of 'tickadj' in the kernel],
3380    [ntp_cv_nlist_tickadj],
3381    [
3382	ans=_tickadj
3383	case "$host" in
3384	 m68*-hp-hpux*) # HP9000/300?
3385	    ans=_tickadj
3386	    ;;
3387	 *-apple-aux[[23]]*)
3388	    ans=tickadj
3389	    ;;
3390	 *-hp-hpux10*)
3391	    ans=no
3392	    ;;
3393	 *-hp-hpux9*)
3394	    ans=no
3395	    ;;
3396	 *-hp-hpux*)
3397	    ans=tickadj
3398	    ;;
3399	 *-*-aix*)
3400	    ans=tickadj
3401	    ;;
3402	 *-*-mpeix*)
3403	    ans=no
3404	    ;;
3405	 *-*-ptx*)
3406	    ans=tickadj
3407	    ;;
3408	 *-*-sco3.2v4*)
3409	    ans=no
3410	    ;;
3411	 *-*-sco3.2v5.0*)
3412	    ans=clock_drift
3413	    ;;
3414	 *-*-solaris2*)
3415	    ans=no	# hrestime_adj
3416	    ;;
3417	 *-*-sysv4*)
3418	    ans=tickadj
3419	    ;;
3420	esac
3421	ntp_cv_nlist_tickadj=$ans
3422    ]
3423)
3424case "$ntp_cv_nlist_tickadj" in
3425 ''|no)
3426    ;;	# HMS: I think we can only get 'no' here...
3427 *)
3428    AC_DEFINE_UNQUOTED([K_TICKADJ_NAME], ["$ntp_cv_nlist_tickadj"],
3429	[What is the name of TICKADJ in the kernel?])
3430esac
3431
3432AC_CACHE_CHECK(
3433    [for the units of 'tickadj'],
3434    [ntp_cv_tickadj_nano],
3435    [
3436	ans=usec
3437	case "$host" in
3438	 *-*-solaris2*)
3439	    ans=nsec
3440	    ;;
3441	esac
3442	ntp_cv_tickadj_nano=$ans
3443    ]
3444)
3445case "$ntp_cv_tickadj_nano" in
3446 nsec)
3447    AC_DEFINE([TICKADJ_NANO], [1], [Is K_TICKADJ_NAME in nanoseconds?])
3448esac
3449
3450AC_CACHE_CHECK(
3451    [half-heartedly for 'dosynctodr' in the kernel],
3452    [ntp_cv_nlist_dosynctodr],
3453    [
3454	case "$host" in
3455	 *-apple-aux[[23]]*)
3456	    ans=no
3457	    ;;
3458	 *-sni-sysv*)
3459	    ans=dosynctodr
3460	    ;;
3461	 *-stratus-vos)
3462	    ans=no
3463	    ;;
3464	 *-*-aix*)
3465	    ans=dosynctodr
3466	    ;;
3467	 *-*-hpux*)
3468	    ans=no
3469	    ;;
3470	 *-*-mpeix*)
3471	    ans=no
3472	    ;;
3473	 *-*-nextstep*)
3474	    ans=_dosynctodr
3475	    ;;
3476	 *-*-ptx*)
3477	    ans=doresettodr
3478	    ;;
3479	 *-*-sco3.2v4*)
3480	    ans=no
3481	    ;;
3482	 *-*-sco3.2v5*)
3483	    ans=track_rtc
3484	    ;;
3485	 *-*-solaris2*)
3486	    ans=dosynctodr
3487	    ;;
3488	 *-*-sysv4*)
3489	    ans=doresettodr
3490	    ;;
3491	 *)
3492	    ans=_dosynctodr
3493	    ;;
3494	esac
3495	ntp_cv_nlist_dosynctodr=$ans
3496    ]
3497)
3498case "$ntp_cv_nlist_dosynctodr" in
3499 no)
3500    ;;
3501 *)
3502    AC_DEFINE_UNQUOTED([K_DOSYNCTODR_NAME], ["$ntp_cv_nlist_dosynctodr"],
3503	[What is (probably) the name of DOSYNCTODR in the kernel?])
3504    ;;
3505esac
3506
3507AC_CACHE_CHECK(
3508    [half-heartedly for 'noprintf' in the kernel],
3509    [ntp_cv_nlist_noprintf],
3510    [
3511	case "$host" in
3512	 *-apple-aux[[23]]*)
3513	    ans=no
3514	    ;;
3515	 *-sni-sysv*)
3516	    ans=noprintf
3517	    ;;
3518	 *-stratus-vos)
3519	    ans=no
3520	    ;;
3521	 *-*-aix*)
3522	    ans=noprintf
3523	    ;;
3524	 *-*-hpux*)
3525	    ans=no
3526	    ;;
3527	 *-*-mpeix*)
3528	    ans=no
3529	    ;;
3530	 *-*-ptx*)
3531	    ans=noprintf
3532	    ;;
3533	 *-*-nextstep*)
3534	    ans=_noprintf
3535	    ;;
3536	 *-*-solaris2*)
3537	    ans=noprintf
3538	    ;;
3539	 *-*-sysv4*)
3540	    ans=noprintf
3541	    ;;
3542	 *)
3543	    ans=_noprintf
3544	    ;;
3545	esac
3546	ntp_cv_nlist_noprintf=$ans
3547    ]
3548)
3549case "$ntp_cv_nlist_noprintf" in
3550 no)
3551    ;;
3552 *)
3553    AC_DEFINE_UNQUOTED([K_NOPRINTF_NAME], ["$ntp_cv_nlist_noprintf"],
3554	[What is (probably) the name of NOPRINTF in the kernel?])
3555    ;;
3556esac
3557
3558dnl The tick/tickadj sections were written by Skippy, who never learned
3559dnl that it's impolite (horridly gross) to show your guts in public.
3560
3561dnl	tick		tickadj
3562dnl	10000		80	    Unixware
3563dnl	1000000L/hz	tick/16     (Solaris,UXPV,HPUX) && ADJTIME_IS_ACCURATE
3564dnl	10000		150	    sgi IRIX
3565dnl	1000000L/hz	1000	    RS6000 && NOKMEM
3566dnl	1000000L/hz	668	    DOMAINOS && NOKMEM
3567dnl	1000000L/hz	500/HZ	    other && NOKMEM
3568dnl	txc.tick	1	    Linux
3569dnl	(every / 10)	50	    WinNT - tickadj is roughly 500/hz
3570dnl	1000000L/hz	(nlist)     (Solaris && !ADJTIME_IS_ACCURATE),
3571dnl				    (RS6000 && !NOKMEM), SINIX MIPS
3572
3573dnl But we'll only use these "values" if we can't find anything else.
3574
3575AC_MSG_CHECKING([for a default value for 'tick'])
3576
3577# target-dependent default for tick
3578
3579case "$host" in
3580 *-*-pc-cygwin*)
3581    AC_MSG_ERROR([tick needs work for cygwin])
3582    ;;
3583 *-univel-sysv*)
3584    ans=10000
3585    ;;
3586 *-*-irix*)
3587    ans=10000
3588    ;;
3589 *-*-*linux*)
3590    ans=txc.tick
3591    ;;
3592 *-*-mpeix*)
3593    ans=no
3594    ;;
3595 *-*-winnt3.5)
3596    ans='(every / 10)'
3597    ;;
3598 *-*-unicosmp*)
3599    ans=10000
3600    ;;
3601 *)
3602    ans='1000000L/hz'
3603    ;;
3604esac
3605
3606AC_ARG_ENABLE(
3607    [tick],
3608    [AS_HELP_STRING(
3609	[--enable-tick=VALUE],
3610	[s force a value for 'tick']
3611    )],
3612    [ans=$enableval]
3613)
3614
3615AC_MSG_RESULT([$ans])
3616
3617case "$ans" in
3618 ''|no)
3619    ;;	# HMS: I think we can only get 'no' here...
3620 *)
3621    AC_DEFINE_UNQUOTED([PRESET_TICK], [$ans],
3622	[Preset a value for 'tick'?])
3623esac
3624
3625AC_MSG_CHECKING([for a default value for 'tickadj'])
3626
3627# target-specific default
3628ans='500/hz'
3629case "$host" in
3630 *-fujitsu-uxp*)
3631    case "$adjtime_is_accurate" in
3632     yes)
3633	ans='tick/16'
3634    esac
3635    ;;
3636 *-univel-sysv*)
3637    ans=80
3638    ;;
3639 *-*-aix*)
3640    case "$can_kmem" in
3641     no)
3642	ans=1000
3643	;;
3644    esac
3645    ;;
3646 *-*-domainos)	# Skippy: won't be found...
3647    case "$can_kmem" in
3648     no)
3649	ans=668
3650	;;
3651    esac
3652    ;;
3653 *-*-hpux*)
3654    case "$adjtime_is_accurate" in
3655     yes)
3656	ans='tick/16'
3657	;;
3658    esac
3659    ;;
3660 *-*-irix*)
3661    ans=150
3662    ;;
3663 *-*-mpeix*)
3664    ans=no
3665    ;;
3666 *-*-sco3.2v5.0*)
3667    ans=10000L/hz
3668    ;;
3669 *-*-winnt3.5)
3670    ans=50
3671    ;;
3672 *-*-unicosmp*)
3673    ans=150
3674    ;;
3675esac
3676
3677AC_ARG_ENABLE(
3678    [tickadj],
3679    [AS_HELP_STRING(
3680	[--enable-tickadj=VALUE],
3681	[s force a value for 'tickadj']
3682    )],
3683    [ans=$enableval]
3684)
3685
3686AC_MSG_RESULT([$ans])
3687
3688default_tickadj=$ans
3689
3690case "$default_tickadj" in
3691 ''|no)
3692    ;;	# HMS: I think we can only get 'no' here...
3693 *)
3694    AC_DEFINE_UNQUOTED([PRESET_TICKADJ], [$default_tickadj],
3695	[Preset a value for 'tickadj'?]) ;;
3696esac
3697
3698# Newer versions of ReliantUNIX round adjtime() values down to
3699# 1/100s (system tick). Sigh ...
3700# Unfortunately, there is no easy way to know if particular release
3701# has this "feature" or any obvious way to test for it.
3702case "$host" in
3703 mips-sni-sysv4*)
3704    AC_DEFINE([RELIANTUNIX_CLOCK], [1],
3705	[Do we want the ReliantUNIX clock hacks?])
3706esac
3707
3708case "$host" in
3709 *-*-sco3.2v5*)
3710    AC_DEFINE([SCO5_CLOCK], [1], [Do we want the SCO clock hacks?])
3711esac
3712
3713ntp_cv_make_tickadj=yes
3714case "$can_kmem$ac_cv_var_tick$default_tickadj" in
3715 nonono)	# Don't read KMEM, no presets.  Bogus.
3716    AC_MSG_WARN([Can't read kmem, no PRESET_TICK or PRESET_TICKADJ.  No tickadj.])
3717    ntp_cv_make_tickadj=no
3718    ;;
3719 nono*)		# Don't read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
3720    AC_MSG_WARN([Can't read kmem but no PRESET_TICK.  No tickadj.])
3721    ntp_cv_make_tickadj=no
3722    ;;
3723 no*no)		# Don't read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Bogus.
3724    AC_MSG_WARN([Can't read kmem but no PRESET_TICKADJ.  No tickadj.])
3725    ntp_cv_make_tickadj=no
3726    ;;
3727 no*)		# Don't read KMEM, PRESET_TICK and PRESET_TICKADJ.  Cool.
3728    ;;
3729 yesnono)	# Read KMEM, no presets.  Cool.
3730    ;;
3731 yesno*)	# Read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
3732    AC_MSG_WARN([PRESET_TICKADJ is defined but not PRESET_TICK.  Please report this.])
3733    ;;
3734 yes*no)	# Read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Cool.
3735    ;;
3736 yes*)		# READ KMEM, PRESET_TICK and PRESET_TICKADJ.
3737    ;;
3738 *)		# Generally bogus.
3739    AC_MSG_ERROR([This shouldn't happen.])
3740    ;;
3741esac
3742
3743AC_SUBST(MAKE_NTPTIME)
3744AC_CACHE_CHECK([if we want and can make the ntptime utility], ac_cv_make_ntptime,
3745[case "$host" in
3746 *) case "$ntp_cv_struct_ntptimeval$ntp_cv_var_kernel_pll" in
3747     yesyes)
3748	ans=yes
3749	;;
3750     *)
3751	ans=no
3752	;;
3753    esac
3754    ;;
3755esac
3756ac_cv_make_ntptime=$ans])
3757case "$ac_cv_make_ntptime" in
3758 yes)
3759    MAKE_NTPTIME=ntptime
3760    ;;
3761 *)
3762    NTPTIME_DB=
3763    NTPTIME_DL=
3764    NTPTIME_DS=
3765    NTPTIME_MS=
3766    ;;
3767esac
3768
3769AC_SUBST([MAKE_TICKADJ])
3770case "$host" in
3771 mips-sni-sysv4*)
3772    # tickadj is pretty useless on newer versions of ReliantUNIX
3773    # Do not bother
3774    ntp_cv_make_tickadj=no
3775    ;;
3776 *-*-irix*)
3777    ntp_cv_make_tickadj=no
3778    ;;
3779 *-*-solaris2*)
3780    # DLM says tickadj is a no-no starting with solaris2.5
3781    case "$host" in
3782     *-*-solaris2.1[[0-9]]*)
3783	ntp_cv_make_tickadj=no
3784	;;
3785     *-*-solaris2.[[0-4]]*) ;;
3786     *) ntp_cv_make_tickadj=no ;;
3787    esac
3788    ;;
3789 *-*-unicosmp*)
3790    ntp_cv_make_tickadj=no
3791    ;;
3792esac
3793
3794#
3795# Despite all the above, we always make tickadj.  Setting
3796# ntp_cv_make_tickadj before AC_CACHE_CHECK will cause a false
3797# report that the configuration variable was cached.  It may
3798# be better to simply remove the hunk above, I did not want
3799# to remove it if there is hope it will be used again.
3800#
3801AS_UNSET([ntp_cv_make_tickadj])
3802
3803AC_CACHE_CHECK(
3804    [if we want and can make the tickadj utility],
3805    [ntp_cv_make_tickadj],
3806    [ntp_cv_make_tickadj=yes]
3807)
3808case "$ntp_cv_make_tickadj" in
3809 yes)
3810    MAKE_TICKADJ=tickadj
3811    ;;
3812 *)
3813    CALC_TICKADJ_DB=
3814    CALC_TICKADJ_DL=
3815    CALC_TICKADJ_DS=
3816    CALC_TICKADJ_MS=
3817    TICKADJ_DB=
3818    TICKADJ_DL=
3819    TICKADJ_DS=
3820    TICKADJ_MS=
3821    ;;
3822esac
3823
3824AC_SUBST([MAKE_TIMETRIM])
3825AC_CACHE_CHECK(
3826    [if we want and can make the timetrim utility],
3827    [ntp_cv_make_timetrim],
3828    [
3829	case "$host" in
3830	 *-*-irix*)
3831	    ntp_cv_make_timetrim=yes
3832	    ;;
3833	 *-*-unicosmp*)
3834	    ntp_cv_make_timetrim=yes
3835	    ;;
3836	 *)
3837	    ntp_cv_make_timetrim=no
3838	    ;;
3839	esac
3840    ]
3841)
3842case "$ntp_cv_make_timetrim" in
3843 yes)
3844    MAKE_TIMETRIM=timetrim
3845    ;;
3846 *) TIMETRIM_DB=
3847    TIMETRIM_DL=
3848    TIMETRIM_DS=
3849    TIMETRIM_MS=
3850    ;;
3851esac
3852
3853AC_SUBST([MAKE_LIBNTPSIM])
3854AC_SUBST([MAKE_NTPDSIM])
3855
3856AC_MSG_CHECKING([if we want to build the NTPD simulator])
3857AC_ARG_ENABLE(
3858    [simulator],
3859    [AS_HELP_STRING(
3860	[--enable-simulator],
3861	[- build/install the NTPD simulator?]
3862    )],
3863    [ans=$enableval],
3864    [ans=no]
3865)
3866AC_MSG_RESULT([$ans])
3867case "$ans" in
3868 yes)
3869    MAKE_NTPDSIM=ntpdsim
3870    MAKE_LIBNTPSIM=libntpsim.a
3871    ;;
3872 *)
3873    NTPDSIM_DB=
3874    NTPDSIM_DL=
3875    NTPDSIM_DS=
3876    NTPDSIM_MS=
3877    ;;
3878esac
3879
3880case "$build" in
3881 $host)
3882    ;;
3883 *) case "$host" in
3884     *-*-vxworks*)
3885	LDFLAGS="$LDFLAGS -r"
3886	;;
3887    esac
3888    ;;
3889esac
3890
3891NTP_WITHSNTP
3892
3893AC_MSG_CHECKING([if we want to build ntpsnmpd])
3894AC_ARG_WITH(
3895    [ntpsnmpd],
3896    [AS_HELP_STRING(
3897	[--with-ntpsnmpd],
3898	[s Build ntpsnmpd MIB agent?]
3899    )],
3900    [ans=$withval],
3901    [
3902	case "$PATH_NET_SNMP_CONFIG" in
3903	 /*)	ans=yes ;;
3904	 *)	ans=no  ;;
3905	esac
3906    ]
3907)
3908AC_MSG_RESULT([$ans])
3909case "$ans" in
3910 yes)
3911    case "$PATH_NET_SNMP_CONFIG" in
3912     /*)
3913	SNMP_LIBS=`$PATH_NET_SNMP_CONFIG --agent-libs`
3914	# Bug 2815.  This is a bit of a hack, but it works...
3915	case "$ntp_cv_net_snmp_version" in
3916	 5.3*)	SNMP_LIBS=`echo $SNMP_LIBS | $SED -e 's/-lnetsnmpagent/-lnetsnmpagent -lnetsnmpmibs/'`
3917		;;
3918	esac
3919	AC_SUBST([SNMP_LIBS])
3920	# HMS: we really want to separate CPPFLAGS and CFLAGS
3921	foo=`$PATH_NET_SNMP_CONFIG --cflags`
3922	SNMP_CPPFLAGS=
3923	SNMP_CFLAGS=
3924	for i in $foo; do
3925	    case "$i" in
3926	     -D*|-U*|-I*)
3927		SNMP_CPPFLAGS="$SNMP_CPPFLAGS $i"
3928		;;
3929	    *)	SNMP_CFLAGS="$SNMP_CFLAGS $i"
3930		;;
3931	    esac
3932	done
3933	AC_SUBST([SNMP_CPPFLAGS])
3934	AC_SUBST([SNMP_CFLAGS])
3935
3936	save_CFLAGS=$CFLAGS
3937	save_CPPFLAGS=$CPPFLAGS
3938	save_LIBS=$LIBS
3939	CFLAGS=$SNMP_CFLAGS
3940	CPPFLAGS=$SNMP_CPPFLAGS
3941
3942	AC_CHECK_HEADER(
3943	    [net-snmp/net-snmp-config.h],
3944	    [MAKE_NTPSNMPD=ntpsnmpd],
3945	    [AC_MSG_WARN([net-snmp-config present but net-snmp headers are not available!])]
3946	)
3947
3948	# Do this last, as we're messing up LIBS.
3949	# check -lnetsnmp for netsnmp_daemonize
3950	LIBS=`$PATH_NET_SNMP_CONFIG --libs`
3951	AC_CHECK_LIB(
3952	    [netsnmp],
3953	    [netsnmp_daemonize],
3954	    [ans=yes],
3955	    [ans=no]
3956	)
3957	case "$ans" in
3958	 no)
3959	    AC_DEFINE([NEED_NETSNMP_DAEMONIZE], [1],
3960		[We need to provide netsnmp_daemonize()])
3961	esac
3962
3963	CFLAGS=$save_CFLAGS
3964	AS_UNSET([save_CFLAGS])
3965	CPPFLAGS=$save_CPPFLAGS
3966	AS_UNSET([save_CPPFLAGS])
3967	LIBS=$save_LIBS
3968	AS_UNSET([save_LIBS])
3969	;;
3970     *)
3971	AC_MSG_WARN([Cannot build ntpsnmpd - net-snmp-config cannot be found])
3972	;;
3973    esac
3974    ;;
3975esac
3976AC_SUBST([MAKE_NTPSNMPD])
3977
3978case "$MAKE_NTPSNMPD" in
3979 '')
3980    NTPSNMPD_DB=
3981    NTPSNMPD_DL=
3982    NTPSNMPD_DS=
3983    NTPSNMPD_MS=
3984    ;;
3985esac
3986
3987AC_MSG_CHECKING([if we should always slew the time])
3988
3989# target-specific defaults
3990
3991case "$host" in
3992 *-apple-aux[[23]]*)
3993    ans=yes
3994    ;;
3995 *-*-bsdi[[012]]*)
3996    ans=no
3997    ;;
3998 *-*-bsdi*)
3999    ans=yes
4000    ;;
4001 *-*-openvms*)	# HMS: won't be found
4002    ans=yes
4003    ;;
4004 *) ans=no
4005    ;;
4006esac
4007
4008# --enable-slew-always / --disable-slew-always overrides default
4009
4010AC_ARG_ENABLE(
4011    [slew-always],
4012    [AS_HELP_STRING(
4013	[--enable-slew-always],
4014	[s always slew the time]
4015    )],
4016    [ans=$enableval]
4017)
4018
4019AC_MSG_RESULT([$ans])
4020
4021case "$ans" in
4022 yes)
4023    AC_DEFINE([SLEWALWAYS], [1], [Slew always?])
4024esac
4025
4026AC_MSG_CHECKING([if we should step and slew the time])
4027
4028case "$host" in
4029 *-sni-sysv*)
4030    ans=yes
4031    ;;
4032 *-stratus-vos)
4033    ans=no
4034    ;;
4035 *-univel-sysv*)
4036    ans=no
4037    ;;
4038 *-*-ptx*)
4039    ans=yes
4040    ;;
4041 *-*-solaris2.1[[0-9]]*)
4042    ans=no
4043    ;;
4044 *-*-solaris2.[[012]]*)
4045    ans=yes
4046    ;;
4047 *-*-sysv4*)	# HMS: Does this catch Fujitsu UXP?
4048    ans=yes
4049    ;;
4050 *) ans=no
4051    ;;
4052esac
4053
4054AC_ARG_ENABLE(
4055    [step-slew],
4056    [AS_HELP_STRING(
4057	[--enable-step-slew],
4058	[s step and slew the time]
4059    )],
4060    [ans=$enableval]
4061)
4062
4063AC_MSG_RESULT([$ans])
4064
4065case "$ans" in
4066 yes)
4067    AC_DEFINE([STEP_SLEW], [1], [Step, then slew the clock?])
4068esac
4069
4070AC_MSG_CHECKING([if ntpdate should step the time])
4071
4072case "$host" in
4073 *-apple-aux[[23]]*)
4074    ans=yes
4075    ;;
4076 *) ans=no
4077    ;;
4078esac
4079
4080AC_ARG_ENABLE(
4081    [ntpdate-step],
4082    [AS_HELP_STRING(
4083	[--enable-ntpdate-step],
4084	[s if ntpdate should step the time]
4085    )],
4086    [ans=$enableval]
4087)
4088
4089AC_MSG_RESULT([$ans])
4090
4091case "$ans" in
4092 yes)
4093    AC_DEFINE([FORCE_NTPDATE_STEP], [1],
4094	[force ntpdate to step the clock if !defined(STEP_SLEW) ?])
4095esac
4096
4097
4098AC_MSG_CHECKING([if we should sync TODR clock every hour])
4099
4100case "$host" in
4101 *-*-nextstep*)
4102    ans=yes
4103    ;;
4104 *-*-openvms*)	# HMS: won't be found
4105    ans=yes
4106    ;;
4107 *)
4108    ans=no
4109    ;;
4110esac
4111
4112AC_ARG_ENABLE(
4113    [hourly-todr-sync],
4114    [AS_HELP_STRING(
4115	[--enable-hourly-todr-sync],
4116	[s if we should sync TODR hourly]
4117    )],
4118    [ans=$enableval]
4119)
4120
4121AC_MSG_RESULT([$ans])
4122
4123case "$ac_cv_var_sync_todr" in
4124 yes)
4125    AC_DEFINE([DOSYNCTODR], [1], [synch TODR hourly?]) ;;
4126esac
4127
4128
4129AC_MSG_CHECKING([if we should avoid kernel FLL bug])
4130
4131case "$host" in
4132 *-*-solaris2.6)
4133    unamev=`uname -v`
4134    case "$unamev" in
4135     Generic_105181-*)
4136	old_IFS="$IFS"
4137	IFS="-"
4138	set $unamev
4139	IFS="$old_IFS"
4140	if test "$2" -ge 17
4141	then
4142	    # Generic_105181-17 and higher
4143	    ans=no
4144	else
4145	    ans=yes
4146	fi
4147	;;
4148     *)
4149	ans=yes
4150	;;
4151    esac
4152    ;;
4153 *-*-solaris2.7)
4154    unamev=`uname -v`
4155    case "$unamev" in
4156     Generic_106541-*)
4157	old_IFS="$IFS"
4158	IFS="-"
4159	set $unamev
4160	IFS="$old_IFS"
4161	if test "$2" -ge 07
4162	then
4163	    # Generic_106541-07 and higher
4164	    ans=no
4165	else
4166	    ans=yes
4167	fi
4168	;;
4169     *)
4170	ans=yes
4171	;;
4172    esac
4173    ;;
4174 *)
4175    ans=no
4176    ;;
4177esac
4178
4179AC_ARG_ENABLE(
4180    [kernel-fll-bug],
4181    [AS_HELP_STRING(
4182	[--enable-kernel-fll-bug],
4183	[s if we should avoid a kernel FLL bug]
4184    )],
4185    [ans=$enableval]
4186)
4187
4188AC_MSG_RESULT([$ans])
4189
4190case "$ans" in
4191 yes)
4192    AC_DEFINE([KERNEL_FLL_BUG], [1], [Does the kernel have an FLL bug?])
4193esac
4194
4195
4196AC_MSG_CHECKING([if we want new session key behavior])
4197AC_ARG_ENABLE(
4198    [bug1243-fix],
4199    [AS_HELP_STRING(
4200	[--enable-bug1243-fix],
4201	[+ use unmodified autokey session keys]
4202    )],
4203    [ans=$enableval],
4204    [ans=yes]
4205)
4206AC_MSG_RESULT([$ans])
4207case "$ans" in
4208 no)
4209    AC_DEFINE([DISABLE_BUG1243_FIX], [1],
4210	[use old autokey session key behavior?])
4211esac
4212
4213
4214AC_MSG_CHECKING([if we should use the IRIG sawtooth filter])
4215
4216case "$host" in
4217 *-*-solaris2.[[89]])
4218    ans=yes
4219    ;;
4220 *-*-solaris2.1[[0-9]]*)
4221    ans=yes
4222    ;;
4223 *) ans=no
4224    ;;
4225esac
4226
4227AC_ARG_ENABLE(
4228    [irig-sawtooth],
4229    [AS_HELP_STRING(
4230	[--enable-irig-sawtooth],
4231	[s if we should enable the IRIG sawtooth filter]
4232    )],
4233    [ans=$enableval]
4234)
4235
4236AC_MSG_RESULT([$ans])
4237
4238case "$ans" in
4239 yes)
4240    AC_DEFINE([IRIG_SUCKS], [1],
4241	[Should we use the IRIG sawtooth filter?])
4242esac
4243
4244AC_MSG_CHECKING([if we should enable NIST lockclock scheme])
4245AC_ARG_ENABLE(
4246	[nist],
4247	[AS_HELP_STRING(
4248	    [--enable-nist],
4249	    [- if we should enable the NIST lockclock scheme]
4250	)],
4251	[ans=$enableval],
4252	[ans=no]
4253)
4254
4255AC_MSG_RESULT([$ans])
4256
4257case "$ans" in
4258 yes)
4259    AC_DEFINE([LOCKCLOCK], [1],
4260	[Should we align with the NIST lockclock scheme?]) ;;
4261esac
4262
4263AC_MSG_CHECKING([if we want support for Samba's signing daemon])
4264AC_ARG_ENABLE(
4265    [ntp-signd],
4266    [AS_HELP_STRING(
4267	[--enable-ntp-signd],
4268	[- Provide support for Samba's signing daemon, =/var/run/ntp_signd]
4269    )],
4270    [ans=$enableval],
4271    [ans=no]
4272)
4273
4274AC_MSG_RESULT([$ans])
4275
4276case "$ans" in
4277 no)
4278    ntp_signd_path=
4279    ;;
4280 yes)
4281    ntp_signd_path=/var/run/ntp_signd
4282    ;;
4283 *)
4284    ntp_signd_path="$ans"
4285esac
4286
4287case "$ntp_signd_path" in
4288 '')
4289    ;;
4290 *)
4291    AC_DEFINE([HAVE_NTP_SIGND], [1],
4292	[Do we want support for Samba's signing daemon?])
4293    AC_DEFINE_UNQUOTED([NTP_SIGND_PATH], ["$ntp_signd_path"],
4294	[Path to sign daemon rendezvous socket])
4295    ;;
4296esac
4297
4298AC_CHECK_HEADERS([libscf.h])
4299LSCF=
4300case "$ac_cv_header_libscf_h" in
4301 yes)
4302    LSCF='-lscf'
4303esac
4304AC_SUBST([LSCF])
4305
4306NTP_IPV6
4307
4308
4309#
4310# Look for a sysctl call to get the list of network interfaces.
4311#
4312AC_CACHE_CHECK(
4313    [for interface list sysctl],
4314    [ntp_cv_iflist_sysctl],
4315    [AC_PREPROC_IFELSE(
4316	[AC_LANG_SOURCE([
4317	    #include <sys/param.h>
4318	    #include <sys/sysctl.h>
4319	    #include <sys/socket.h>
4320	    #ifndef NET_RT_IFLIST
4321	    # error
4322	    #endif
4323	])],
4324	[ntp_cv_iflist_sysctl=yes],
4325	[ntp_cv_iflist_sysctl=no]
4326    )]
4327)
4328case "$ntp_cv_iflist_sysctl" in
4329 yes)
4330    AC_DEFINE([HAVE_IFLIST_SYSCTL], [1], [have iflist_sysctl?])
4331esac
4332
4333###
4334
4335AC_MSG_CHECKING([if we want the saveconfig mechanism])
4336AC_ARG_ENABLE(
4337    [saveconfig],
4338    [AS_HELP_STRING(
4339	[--enable-saveconfig],
4340	[+ saveconfig mechanism]
4341    )],
4342    [ntp_ok=$enableval],
4343    [ntp_ok=yes]
4344)
4345ntp_saveconfig_enabled=0
4346case "$ntp_ok" in
4347 yes)
4348    ntp_saveconfig_enabled=1
4349    AC_DEFINE([SAVECONFIG], [1], [saveconfig mechanism])
4350    ;;
4351esac
4352AM_CONDITIONAL([SAVECONFIG_ENABLED], [test x$ntp_saveconfig_enabled = x1])
4353AC_MSG_RESULT([$ntp_ok])
4354
4355###
4356
4357AC_MSG_CHECKING([if we want the experimental leap smear code])
4358AC_ARG_ENABLE(
4359    [leap-smear],
4360    [AS_HELP_STRING(
4361	[--enable-leap-smear],
4362	[- experimental leap smear code]
4363    )],
4364    [ntp_ok=$enableval],
4365    [ntp_ok=no]
4366)
4367ntp_leap_smear_enabled=0
4368case "$ntp_ok" in
4369 yes)
4370    ntp_leap_smear_enabled=1
4371    AC_DEFINE([LEAP_SMEAR], [1], [leap smear mechanism])
4372    AC_SUBST([HAVE_LEAPSMEARINTERVAL])
4373    HAVE_LEAPSMEARINTERVAL="leapsmearinterval 0"
4374    ;;
4375esac
4376AC_MSG_RESULT([$ntp_ok])
4377
4378NTP_UNITYBUILD
4379
4380dnl  gtest is needed for our tests subdirs. It would be nice if we could
4381dnl  require a C++ compiler only if we will use gtest, but AC_PROG_CXX
4382dnl  can't be conditionalized.
4383NTP_GOOGLETEST
4384
4385###
4386
4387AC_DEFINE_DIR([NTP_KEYSDIR], [sysconfdir],
4388    [Default location of crypto key info])
4389
4390AC_CONFIG_FILES([Makefile])
4391AC_CONFIG_FILES([adjtimed/Makefile])
4392AC_CONFIG_FILES([clockstuff/Makefile])
4393AC_CONFIG_FILES([include/Makefile])
4394AC_CONFIG_FILES([include/isc/Makefile])
4395AC_CONFIG_FILES([kernel/Makefile])
4396AC_CONFIG_FILES([kernel/sys/Makefile])
4397AC_CONFIG_FILES([libntp/Makefile])
4398AC_CONFIG_FILES([libparse/Makefile])
4399AC_CONFIG_FILES([ntpd/Makefile])
4400AC_CONFIG_FILES([ntpd/complete.conf],	[sed -e '/^rlimit$/d' -e '/^$/d' < ntpd/complete.conf > ntpd/complete.conf.new && mv ntpd/complete.conf.new ntpd/complete.conf])
4401AC_CONFIG_FILES([ntpdate/Makefile])
4402AC_CONFIG_FILES([ntpdc/Makefile])
4403AC_CONFIG_FILES([ntpdc/nl.pl],		[chmod +x ntpdc/nl.pl])
4404AC_CONFIG_FILES([ntpq/Makefile])
4405AC_CONFIG_FILES([ntpsnmpd/Makefile])
4406AC_CONFIG_FILES([parseutil/Makefile])
4407AC_CONFIG_FILES([scripts/Makefile])
4408AC_CONFIG_FILES([scripts/build/Makefile])
4409AC_CONFIG_FILES([scripts/build/mkver],	[chmod +x scripts/build/mkver])
4410AC_CONFIG_FILES([scripts/calc_tickadj/Makefile])
4411AC_CONFIG_FILES([scripts/calc_tickadj/calc_tickadj], [chmod +x scripts/calc_tickadj/calc_tickadj])
4412AC_CONFIG_FILES([scripts/lib/Makefile])
4413AC_CONFIG_FILES([scripts/ntp-wait/Makefile])
4414AC_CONFIG_FILES([scripts/ntp-wait/ntp-wait],	[chmod +x scripts/ntp-wait/ntp-wait])
4415AC_CONFIG_FILES([scripts/ntpsweep/Makefile])
4416AC_CONFIG_FILES([scripts/ntpsweep/ntpsweep],	[chmod +x scripts/ntpsweep/ntpsweep])
4417AC_CONFIG_FILES([scripts/ntptrace/Makefile])
4418AC_CONFIG_FILES([scripts/ntptrace/ntptrace],	[chmod +x scripts/ntptrace/ntptrace])
4419AC_CONFIG_FILES([scripts/ntpver],	[chmod +x scripts/ntpver])
4420AC_CONFIG_FILES([scripts/plot_summary],	[chmod +x scripts/plot_summary])
4421AC_CONFIG_FILES([scripts/summary],	[chmod +x scripts/summary])
4422AC_CONFIG_FILES([scripts/update-leap/Makefile])
4423AC_CONFIG_FILES([scripts/update-leap/update-leap], [chmod +x scripts/update-leap/update-leap])
4424AC_CONFIG_FILES([tests/Makefile])
4425AC_CONFIG_FILES([tests/bug-2803/Makefile])
4426AC_CONFIG_FILES([tests/libntp/Makefile])
4427AC_CONFIG_FILES([tests/ntpd/Makefile])
4428AC_CONFIG_FILES([tests/sandbox/Makefile])
4429AC_CONFIG_FILES([tests/sec-2853/Makefile])
4430AC_CONFIG_FILES([util/Makefile])
4431
4432perllibdir="${datadir}/ntp/lib"
4433AC_DEFINE_DIR([PERLLIBDIR], [perllibdir], [data dir])
4434
4435calc_tickadj_opts="$srcdir/scripts/calc_tickadj/calc_tickadj-opts"
4436AC_SUBST_FILE([calc_tickadj_opts])
4437ntp_wait_opts="$srcdir/scripts/ntp-wait/ntp-wait-opts"
4438AC_SUBST_FILE([ntp_wait_opts])
4439ntpsweep_opts="$srcdir/scripts/ntpsweep/ntpsweep-opts"
4440AC_SUBST_FILE([ntpsweep_opts])
4441ntptrace_opts="$srcdir/scripts/ntptrace/ntptrace-opts"
4442AC_SUBST_FILE([ntptrace_opts])
4443summary_opts="$srcdir/scripts/summary-opts"
4444AC_SUBST_FILE([summary_opts])
4445plot_summary_opts="$srcdir/scripts/plot_summary-opts"
4446AC_SUBST_FILE([plot_summary_opts])
4447
4448AC_CONFIG_SUBDIRS([sntp])
4449
4450AC_OUTPUT
4451