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