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