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