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