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