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