Sync usage with man page.
[netbsd-mini2440.git] / external / bsd / ntp / dist / configure.ac
blob636b195b44fd80f96c1ed540658b672785d2bc56
1 dnl -*-fundamental-*-
2 dnl Process this file with autoconf to produce a configure script.
3 m4_include([version.m4])
4 AC_PREREQ(2.61)
5 AC_INIT([ntp], [VERSION_NUMBER])
6 AC_CONFIG_MACRO_DIR([m4])
7 AC_CONFIG_AUX_DIR([.])
9 # Increment ntp_configure_cache_version by one for each change to
10 # configure.ac or .m4 files which invalidates cached values from
11 # previous versions.
13 # If the change affects cache variables used only by the main NTP
14 # configure.ac, then only its version number should be bumped, while
15 # the subdir configure.ac version numbers should be unchanged.  The
16 # same is true for a test/variable that is used only by one subdir
17 # being changed incompatibly; only that subdir's cache version needs
18 # bumping.
20 # If a change affects variables shared by all NTP configure scripts,
21 # please bump the version numbers of all three.  If you are not sure,
22 # the safe choice is to bump all three on any cache-invalidating change.
24 # In order to avoid the risk of version stamp collision between -stable
25 # and -dev branches, do not simply increment the version, instead use
26 # the date YYYYMMDD optionally with -HHMM if there is more than one
27 # bump in a day.
29 ntp_configure_cache_version=20091117
31 # When the cache version of config.cache and configure do not
32 # match, NTP_CACHEVERSION will flush the cache.
34 NTP_CACHEVERSION([main], [$ntp_configure_cache_version])
36 AM_INIT_AUTOMAKE
37 AC_CANONICAL_BUILD
38 AC_CANONICAL_HOST
39 dnl the 'build' machine is where we run configure and compile
40 dnl the 'host' machine is where the resulting stuff runs.
41 AC_DEFINE_UNQUOTED(STR_SYSTEM, "$host", [canonical system (cpu-vendor-os) of where we should run])
42 AM_CONFIG_HEADER([config.h])
43 dnl AC_ARG_PROGRAM
45 ac_cv_var_atom_ok=no
46 ac_cv_var_oncore_ok=no
47 ac_cv_var_parse_ok=no
48 ac_cv_var_ripe_ncc_ok=no
49 ac_cv_var_jupiter_ok=no
51 dnl Grab any initial CFLAGS so we can pick better defaults.
52 iCFLAGS="$CFLAGS"
54 dnl check these early to avoid autoconf warnings
55 AC_AIX
56 AC_MINIX
58 # So far, the only shared library we might use is libopts.
59 # It's a small library - we might as well use a static version of it.
60 AC_DISABLE_SHARED
62 dnl  we need to check for cross compile tools for vxWorks here
63 AC_PROG_CC
64 # Ralf Wildenhues: With per-target flags we need CC_C_O
65 # AM_PROG_CC_C_O supersets AC_PROG_CC_C_O
66 AM_PROG_CC_C_O
67 AC_PROG_CPP
68 AC_PROG_YACC
70 # AC_PROG_CC_STDC has two functions.  It attempts to find a compiler
71 # capable of C99, or failing that, for C89.  CC is set afterward with
72 # the selected invocation, such as "gcc --std=gnu99".  Also, the
73 # ac_cv_prog_cc_stdc variable is no if the compiler selected for CC
74 # does not accept C89.
76 AC_PROG_CC_STDC
78 case "$ac_cv_prog_cc_stdc" in
79  no)
80     AC_MSG_WARN([ANSI C89/ISO C90 is the minimum to compile NTP ]
81                 [version 4.2.5 and higher.])
82 esac
84 # HMS: These need to be moved to AM_CPPFLAGS and/or AM_CFLAGS
85 case "$host" in
86  *-*-amigaos)
87     CFLAGS="$CFLAGS -Dfork=vfork -DSYS_AMIGA"
88     ;;
89  *-*-hpux10.*)  # at least for hppa2.0-hp-hpux10.20
90     case "$GCC" in
91      yes)
92         ;;
93      *) CFLAGS="$CFLAGS -Wp,-H18816"
94         ;;
95     esac
96     ;;
97  *-pc-cygwin*)
98     CFLAGS="$CFLAGS -DSYS_CYGWIN32"
99     ;;
100  i386-sequent-sysv4)
101     case "$CC" in
102      cc)
103         CFLAGS="$CFLAGS -Wc,+abi-socket"
104         ;;
105     esac
106     ;;
107  *-*-mpeix*)
108     CPPFLAGS="$CPPFLAGS -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB"
109     LDFLAGS="$LDFLAGS -L/SYSLOG/PUB"
110     LIBS="$LIBS -lcurses"
111     ;;
112  *-*-solaris*)
113     # see "man standards".
114     # -D_XOPEN_SOURCE=500 is probably OK for c89 and before
115     # -D_XOPEN_SOURCE=600 seems OK for c99
116     #CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
117     CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
118     libxnet=-lxnet
119     ;;
120 esac
122 AMU_OS_CFLAGS
123 NTP_DIR_SEP
124 NTP_VPATH_HACK
126 # NTP has (so far) been relying on leading-edge autogen.
127 # Therefore, by default:
128 # - use the version we ship with
129 # - do not install it
130 # - build a static copy (AC_DISABLE_SHARED - done earlier)
131 case "${enable_local_libopts+set}" in
132  set) ;;
133  *) enable_local_libopts=yes ;;
134 esac
135 case "${enable_libopts_install+set}" in
136  set) ;;
137  *) enable_libopts_install=no ;;
138 esac
139 LIBOPTS_CHECK(libopts)
141 AC_FUNC_FORK
143 AC_CACHE_CHECK(
144     [if $CC can handle @%:@warning],
145     ac_cv_cpp_warning,
146     [
147         AC_COMPILE_IFELSE(
148             AC_LANG_PROGRAM([], [#warning foo]),
149             [ac_cv_cpp_warning=yes],
150             [ac_cv_cpp_warning=no],
151         )
152     ]
155 case "$ac_cv_cpp_warning" in
156  no)
157     AC_DEFINE([NO_OPTION_NAME_WARNINGS], [1], [Should we avoid @%:@warning on option name collisions?])
158 esac
160 case "$GCC" in
161  yes)
162     SAVED_CFLAGS_AC="$CFLAGS"
163     CFLAGS="$CFLAGS -Wstrict-overflow"
164     AC_CACHE_CHECK(
165         [if $CC can handle -Wstrict-overflow], 
166         ac_cv_gcc_Wstrict_overflow, 
167         [
168             AC_COMPILE_IFELSE(
169                 [AC_LANG_PROGRAM([], [])],
170                 [ac_cv_gcc_Wstrict_overflow=yes],
171                 [ac_cv_gcc_Wstrict_overflow=no]
172             )
173         ]
174     )
175     CFLAGS="$SAVED_CFLAGS_AC"
176     $as_unset SAVED_CFLAGS_AC
177     #
178     # $ac_cv_gcc_Wstrict_overflow is tested later to add the 
179     # flag to CFLAGS.
180     #
181 esac
184 case "$GCC" in
185  yes)
186     SAVED_CFLAGS_AC="$CFLAGS"
187     CFLAGS="$CFLAGS -Winit-self"
188     AC_CACHE_CHECK(
189         [if $CC can handle -Winit-self], 
190         ac_cv_gcc_Winit_self, 
191         [
192             AC_COMPILE_IFELSE(
193                 [AC_LANG_PROGRAM([], [])],
194                 [ac_cv_gcc_Winit_self=yes],
195                 [ac_cv_gcc_Winit_self=no]
196             )
197         ]
198     )
199     CFLAGS="$SAVED_CFLAGS_AC"
200     $as_unset SAVED_CFLAGS_AC
201     #
202     # $ac_cv_gcc_Winit_self is tested later to add the 
203     # flag to CFLAGS.
204     #
205 esac
207 # Expose a cross-compilation indicator to makefiles
208 AM_CONDITIONAL(NTP_CROSSCOMPILE, test $build != $host)
210 AC_MSG_CHECKING([for bin subdirectory])
211 AC_ARG_WITH(binsubdir,
212         AC_HELP_STRING([--with-binsubdir], [bin ={bin,sbin}]),
213         use_binsubdir="$withval", use_binsubdir="bin")
215 case "$use_binsubdir" in
216  bin)
217     ;;
218  sbin)
219     ;;
220  *)
221     AC_MSG_ERROR([<$use_binsubdir> is illegal - must be "bin" or "sbin"])
222     ;;
223 esac
224 AC_MSG_RESULT($use_binsubdir)
225 BINSUBDIR=$use_binsubdir
226 AC_SUBST(BINSUBDIR)
228 AC_MSG_CHECKING([if we want to use arlib])
229 AC_ARG_WITH(arlib,
230         AC_HELP_STRING([--with-arlib], [- Compile the async resolver library?]),
231         [ans=$withval], [ans=no])
232 AC_MSG_RESULT([$ans])
234 if test -d $srcdir/arlib
235 then
236     case "$ans" in
237      yes)
238         ARLIB_DIR=arlib
239         AC_CONFIG_SUBDIRS(arlib)
240         ;;
241     esac
243 AC_SUBST(ARLIB_DIR)
245 AC_ARG_WITH(rpath,
246         AC_HELP_STRING([--without-rpath], [s Disable auto-added -R linker paths]),
247 [ans=$withval], [ans=x])
248 case "$ans" in
249  no)
250     need_dash_r=
251     ;;
252  yes)
253     need_dash_r=1
254     ;;
255 esac
256 # HMS: Why isn't this $build?
257 # Well, that depends on if we need this for the build toolchain or
258 # for info in the host executable...
259 # I still have no idea which way this should go, but nobody has complained.
260 case "$host" in
261  *-*-netbsd*)
262     case "$need_dash_r" in
263      no) ;;
264      *)  need_dash_r=1
265          ;;
266     esac
267     ;;
268  *-*-solaris*)
269     case "$need_dash_r" in
270      no) ;;
271      *)  need_dash_r=1
272          ;;
273     esac
274     ;;
275 esac
277 case "$build" in
278  $host)
279     ;;
280  *) case "$host" in
281      *-*-vxworks*)
282         # Quick and dirty sanity check
283         case "$VX_KERNEL" in
284          '') AC_MSG_ERROR(Please follow the directions in html/build/hints/vxworks.html!)
285             ;;
286         esac
287         CFLAGS="$CFLAGS -DSYS_VXWORKS"
288         ;;
289     esac
290     ;;
291 esac
293 dnl  we need to check for cross compile tools for vxWorks here
294 AC_PROG_AWK
295 AC_PROG_MAKE_SET
297 rm -f conftest*
299 case "$GCC" in
300  yes)
301     CFLAGS="$CFLAGS -Wall"
302     # CFLAGS="$CFLAGS -Wcast-align"
303     CFLAGS="$CFLAGS -Wcast-qual"
304     # CFLAGS="$CFLAGS -Wconversion"
305     # CFLAGS="$CFLAGS -Werror"
306     # CFLAGS="$CFLAGS -Wextra"
307     # CFLAGS="$CFLAGS -Wfloat-equal"
308     CFLAGS="$CFLAGS -Wmissing-prototypes"
309     CFLAGS="$CFLAGS -Wpointer-arith"
310     CFLAGS="$CFLAGS -Wshadow"
311     # CFLAGS="$CFLAGS -Wtraditional"
312     # CFLAGS="$CFLAGS -Wwrite-strings"
313     case "$ac_cv_gcc_Winit_self" in
314      yes)
315         CFLAGS="$CFLAGS -Winit-self"
316     esac
317     case "$ac_cv_gcc_Wstrict_overflow" in
318      yes)
319         CFLAGS="$CFLAGS -Wstrict-overflow"
320     esac
321     # if building with OpenSSL, -Wno-strict-prototypes is added later
322 esac
324 case "$host" in
325  *-next-nextstep3)
326     CFLAGS="$CFLAGS -posix"
327     ;;
328 dnl This is currently commented out by bor. 
329 dnl The new versions of ReliantUNIX round adjtime() interval down
330 dnl to 1/100s (system tick). This makes tickadj actually useless.
331 dnl So, I'd better not use additional flags.
332 dnl I leave it here just in case anybody has better idea
333 dnl  mips-sni-sysv4* )
334 dnl     #
335 dnl     # Add flags for 64 bit file access to enable tickadj to access /dev/kmem
336 dnl     #
337 dnl     if getconf _LFS_CFLAGS > /dev/null 2>&1 ; then
338 dnl       CFLAGS="$CFLAGS `getconf _LFS_CFLAGS`"
339 dnl     fi
340 dnl     ;;
341 esac
343 ac_busted_vpath_in_make=no
345 case "$build" in
346  *-*-irix6.1*)  # 64 bit only
347     # busted vpath?
348     ;;
349  *-*-irix6*)    # 6.2 (and later?)
350     ac_busted_vpath_in_make=yes
351     ;;
352  *-*-solaris2.5.1)
353     ac_busted_vpath_in_make=yes
354     ;;
355  *-*-unicosmp*)
356     ac_busted_vpath_in_make=yes
357     ;;
358 esac
360 case "$ac_busted_vpath_in_make$srcdir" in
361  no*) ;;
362  yes.) ;;
363  *) case "`${MAKE-make} -v -f /dev/null 2>/dev/null | sed -e 's/GNU Make version \(1-9.]*\).*/\1/' -e q`" in
364      '')
365         AC_MSG_ERROR([building outside of the main directory requires GNU make])
366         ;;
367      *) ;;
368     esac
369     ;;
370 esac
372 AC_SUBST(CFLAGS)dnl
373 AC_SUBST(LDFLAGS)dnl
375 m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
376 m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
378 AC_PROG_LIBTOOL
380 AC_PROG_LN_S
381 AC_PROG_GCC_TRADITIONAL
382 AC_C_VOLATILE
383 AC_ISC_POSIX
384 AC_PATH_PROG(PATH_SH, sh)
385 AC_PATH_PROG(PATH_PERL, perl)
387 AC_ARG_WITH(net-snmp-config,
388         AC_HELP_STRING([--with-net-snmp-config], [+ =net-snmp-config]),
389 [ans=$withval], [ans=yes])
390 case "$ans" in
391  no) ;;
392  yes)
393     ans=net-snmp-config
394     ;;
395  /*) ;;
396  */*)
397     AC_MSG_ERROR([--with-net-snmp-config takes either a name or an absolute path])
398     ;;
399  *)
400     ;;
401 esac
402 PROG_NET_SNMP_CONFIG=$ans
403 AC_MSG_CHECKING([for net-snmp-config path])
404 case "$PROG_NET_SNMP_CONFIG" in
405  no) ;;
406  /*)
407     PATH_NET_SNMP_CONFIG=$PROG_NET_SNMP_CONFIG
408     ;;
409  *) AC_PATH_PROG([PATH_NET_SNMP_CONFIG], [$PROG_NET_SNMP_CONFIG])
410     ;;
411 esac
412 AC_MSG_RESULT([$PATH_NET_SNMP_CONFIG])
414 case "$host" in
415  *-*-vxworks*)
416     ac_link="$ac_link $VX_KERNEL"
417     ;;
418 esac
420 AC_PROG_INSTALL
422 case "$host" in
423  *-pc-cygwin*)
424     AC_CHECK_LIB(advapi32, main)
425     ;;
426 esac
428 AC_CHECK_FUNC([gethostent], ,
429   AC_SEARCH_LIBS([gethostent], [nsl], , , [$libxnet -lsocket]))
430 AC_CHECK_FUNC([openlog], , 
431   AC_SEARCH_LIBS([openlog], [gen], , 
432   AC_SEARCH_LIBS([openlog], [syslog], , , [$libxnet -lsocket])))
433 AC_SEARCH_LIBS([MD5Init], [md5 md])
434 AC_CHECK_FUNCS(MD5Init)
436 NTP_LINEEDITLIBS
438 dnl Digital UNIX V4.0 and Solaris 7 have POSIX.1c functions in -lrt
439 dnl Solaris 2.6 only has -lposix4; in Solaris 7, this is a symlink to -lrt,
440 dnl so only use one of them.  Linux (glibc-2.1.2 and -2.2.2, at least)
441 dnl does Strange Things with extra processes using the Posix-compatibility
442 dnl real-time library, so we don't want to use it.
444 dnl 081118 Harlan got tired of looking for a way to get the sched*()
445 dnl functions to link OK with either cc or gcc.
447 case "$host" in
448  *-*-*linux*) ;;
449  *-*-osf4*) ;;
450  *-*-osf5*) ;;
451  *)
452     AC_CHECK_LIB(rt, sched_setscheduler, ,
453         AC_CHECK_LIB(posix4, sched_setscheduler))
454     ;;
455 esac
457 AC_SEARCH_LIBS([setsockopt], [socket xnet])
458 AC_SEARCH_LIBS([res_init], [resolv], , , [-lsocket -lnsl])
459 AC_CHECK_FUNCS(res_init __res_init)
461 AC_HEADER_STDC
462 AC_CHECK_HEADERS(bstring.h)
463 AC_CHECK_HEADER(dns_sd.h,
464         [AC_CHECK_LIB(dns_sd,
465                         DNSServiceRegister,
466                         [AC_DEFINE(HAVE_DNSREGISTRATION, 1,
467                                 [Use Rendezvous/DNS-SD registration])])])
468 case "$ac_cv_lib_dns_sd_DNSServiceRegister" in
469  yes) LIBS="-ldns_sd $LIBS" ;;
470 esac
471 AC_CHECK_HEADERS(errno.h fcntl.h ieeefp.h kvm.h math.h)
473 AC_CHECK_HEADERS(md5.h, [], [],
474 [#if HAVE_SYS_TYPES_H
475 #include <sys/types.h>
476 #endif
478 AC_CHECK_HEADERS(memory.h netdb.h poll.h)
479 AC_CHECK_HEADERS(sched.h sgtty.h stdlib.h string.h termio.h)
480 AC_CHECK_HEADERS(termios.h timepps.h timex.h unistd.h)
482 case "$host" in
483  *-*-aix*)
484     AC_CHECK_HEADERS(utmpx.h)
485     case "$ac_cv_header_utmpx_h" in
486      yes) ;;
487      *) AC_CHECK_HEADERS(utmp.h) ;;
488     esac
489     ;;
490  *) AC_CHECK_HEADERS(utmp.h utmpx.h) ;;
491 esac
494 # On Suns only (so far) getpass() truncates the typed password to 8
495 # characters, but getpassphrase() allows up to 257.  Most systems'
496 # getpass() does not truncate, at least not so as to affect ntpq and
497 # ntpdc password prompts.
499 # So check for getpassphrase(), but only on Sun operating systems.
502 case "$host" in
503  *-*-sunos*|*-*-solaris*)
504     AC_CHECK_FUNCS(getpassphrase)
505 esac
507 AC_CHECK_HEADERS(arpa/nameser.h)
508 AC_CHECK_HEADERS(sys/socket.h)
509 AC_CHECK_HEADERS(net/if.h, [], [],
510 [#if HAVE_SYS_SOCKET_H
511 #include <sys/socket.h>
512 #endif
514 AC_CHECK_HEADERS(net/if6.h)
515 AC_CHECK_HEADERS(net/route.h, [], [], [
516 #include <sys/types.h>
517 #include <sys/socket.h>
518 #include <net/if.h>
520 AC_CHECK_HEADERS(netinet/in_system.h netinet/in_systm.h)
521 AC_CHECK_HEADERS(netinet/in.h)
522 AC_CHECK_HEADERS(netinet/ip.h, [], [],
523 [#if HAVE_SYS_TYPES_H
524 #include <sys/types.h>
525 #endif
526 #if HAVE_NETINET_IN_H
527 #include <netinet/in.h>
528 #endif
529 #if HAVE_NETINET_IN_SYSTM_H
530 #include <netinet/in_systm.h>
531 #endif
534 # Check for IPTOS_PREC
535 AC_CACHE_CHECK(
536     [IPPROTO_IP IP_TOS IPTOS_LOWDELAY],
537     ac_cv_ip_tos,
538     [
539         AC_EGREP_CPP(
540             [yes],
541             [
542                 #if HAVE_SYS_TYPES_H
543                 #include <sys/types.h>
544                 #endif
545                 #if HAVE_NETINET_IP_H
546                 #include <netinet/in.h>
547                 #include <netinet/ip.h>
548                 #endif
549                 #if defined(IPPROTO_IP) && defined(IP_TOS) && defined(IPTOS_LOWDELAY)
550                   yes
551                 #endif
552             ],
553             [ac_cv_ip_tos=yes],
554             [ac_cv_ip_tos=no]
555         )
556     ]
559 case "$ac_cv_ip_tos" in
560  yes)
561     AC_DEFINE(HAVE_IPTOS_SUPPORT, 1, [Do we have IPTOS support?])
562 esac
564 AC_CHECK_HEADERS(netinfo/ni.h, [AC_DEFINE(HAVE_NETINFO, 1, [NetInfo support?])])
565 AC_CHECK_HEADERS(sun/audioio.h sys/audioio.h)
566 dnl AC_CHECK_HEADERS(sys/chudefs.h)
567 AC_CHECK_HEADERS(sys/clkdefs.h sys/file.h)
568 case "$host" in
569  *-*-sunos4*) ;;
570  *) AC_CHECK_HEADERS(sys/ioctl.h)
571     ;;
572 esac
573 AC_CHECK_HEADERS(sys/ipc.h)
574 AC_CHECK_HEADERS(sys/lock.h sys/mman.h sys/modem.h sys/param.h sys/ppsclock.h)
575 # HMS: Check sys/proc.h and sys/resource.h after some others
576 AC_CHECK_HEADERS(sys/ppstime.h)
577 case "$ac_cv_header_sched_h" in
578  yes) ;;
579  *) AC_CHECK_HEADERS(sys/sched.h) ;;
580 esac
581 case "$host" in
582  *-*-sco*)
583     AC_CHECK_HEADERS(sys/sio.h)
584     ;;
585 esac
586 # HMS: Check sys/shm.h after some others
587 AC_CHECK_HEADERS(sys/select.h sys/signal.h sys/sockio.h)
588 # HMS: Checked sys/socket.h earlier
589 case "$host" in
590  *-*-netbsd*) ;;
591  *) AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h)
592     ;;
593 esac
594 AC_CHECK_HEADERS(sys/stat.h sys/stream.h)
595 AC_CHECK_HEADERS(sys/stropts.h sys/sysctl.h sys/syssgi.h sys/systune.h)
596 AC_CHECK_HEADERS(sys/termios.h sys/time.h sys/signal.h)
597 AC_EGREP_CPP(yes,
598 [#if HAVE_SYS_TIME_H
599 # include <sys/time.h>
600 #endif
601 #if HAVE_ERRNO_H
602 # include <errno.h>
603 #endif
604 #include <sys/timepps.h>
605 #ifdef PPS_API_VERS_1
607 #endif
608 ], [AC_CHECK_HEADERS(sys/timepps.h, [], [],
609 [#if HAVE_SYS_TIME_H
610 # include <sys/time.h>
611 #endif
612 #if HAVE_ERRNO_H
613 # include <errno.h>
614 #endif
617 AC_CHECK_HEADERS(sys/timers.h sys/tpro.h sys/types.h sys/wait.h)
618 AC_HEADER_TIME
619 case "$host" in
620 *-convex-*)
621   AC_CHECK_HEADERS(/sys/sync/queue.h /sys/sync/sema.h)
622   ;;
623 *-*-bsdi*)
624   AC_CHECK_HEADERS(machine/inline.h sys/pcl720.h sys/i8253.h)
625   ;;
626 esac
628 case "$host" in
629  *-*-*linux*)
630     AC_CHECK_FUNCS(__adjtimex __ntp_gettime)
631     ;;
632 esac
633 case "$ac_cv_func___adjtimex" in
634  yes) ;;
635  *)
636     AC_CHECK_LIB(elf, nlist)    dnl Only needed for tickadj...
637     dnl AC_CHECK_LIB(kvm, main, , , -lelf)
638     AC_CHECK_LIB(kvm, main)             dnl We already know about -lelf here...
639     AC_CHECK_LIB(ld, nlist)
640     AC_CHECK_LIB(mld, nlist)
641     AC_CHECK_HEADER(nlist.h,
642     [AC_DEFINE(NLIST_STRUCT, 1, [nlist stuff])
643      AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un,
644       [AC_TRY_COMPILE([#include <nlist.h>],
645        [struct nlist n; n.n_un.n_name = 0;],
646        ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)])
647      if test $ac_cv_struct_nlist_n_un = yes; then
648        AC_DEFINE(NLIST_NAME_UNION, 1, [does struct nlist use a name union?])
649      fi
650     ])dnl
651     ;;
652 esac
654 dnl AC_CHECK_HEADERS(net/if.h, [], [],
655 dnl [#if HAVE_SYS_TYPES_H
656 dnl # include <sys/types.h>
657 dnl #endif
658 dnl #if HAVE_SYS_SOCKET_H
659 dnl # include <sys/socket.h>
660 dnl #endif
661 dnl ])
663 AC_CHECK_HEADERS(sys/proc.h, [], [],
664 [#if HAVE_SYS_TYPES_H
665 # include <sys/types.h>
666 #endif
667 #if HAVE_SYS_TIME_H
668 # include <sys/time.h>
669 #endif
672 AC_CHECK_HEADERS(sys/resource.h, [], [],
673 [#if HAVE_SYS_TIME_H
674 # include <sys/time.h>
675 #endif
678 AC_CHECK_HEADERS(sys/shm.h, [], [],
679 [#if HAVE_SYS_TYPES_H
680 # include <sys/types.h>
681 #endif
682 #if HAVE_SYS_IPC_H
683 # include <sys/ipc.h>
684 #endif
687 AC_CHECK_HEADERS(sys/timex.h, [], [],
688 [#if HAVE_SYS_TIME_H
689 # include <sys/time.h>
690 #endif
693 AC_CHECK_HEADERS(resolv.h, [], [],
694 [#if HAVE_SYS_TYPES_H
695 #include <sys/types.h>
696 #endif
697 #if HAVE_NETINET_IN_H
698 #include <netinet/in.h>
699 #endif
700 #if HAVE_ARPA_NAMESER_H
701 #include <arpa/nameser.h>
702 #endif
705 AC_CACHE_CHECK([for basic volatile support], ac_cv_c_volatile,
706 [AC_TRY_COMPILE([],[
707 volatile int x;],
708         ac_cv_c_volatile=yes,
709         ac_cv_c_volatile=no)
711 case "$ac_cv_c_volatile" in
712  yes)
713     ;;
714  *) AC_DEFINE(volatile, , [Does the compiler like "volatile"?])
715     ;;
716 esac
718 AC_C_CONST
719 AC_C_BIGENDIAN
720 AC_TYPE_SIGNAL
721 AC_TYPE_OFF_T
722 AC_TYPE_SIZE_T
723 AC_CHECK_TYPE(time_t, long)
724 AC_CHECK_SIZEOF(time_t)
725 AC_CHECK_TYPES(uintptr_t)
727 AH_VERBATIM([TYPEDEF_UINTPTR_T],
728 [/* Provide a typedef for uintptr_t? */
729 #ifndef HAVE_UINTPTR_T
730 typedef unsigned int    uintptr_t;
731 #define HAVE_UINTPTR_T  1
732 #endif])
734 AC_STRUCT_TM
736 AC_CACHE_CHECK([for u_int8_t], ac_cv_type_u_int8_t,
737 [AC_TRY_COMPILE([#include <sys/types.h>],
738         [u_int8_t len = 42; return 0;],
739         ac_cv_type_u_int8_t=yes,
740         ac_cv_type_u_int8_t=no)
742 if test $ac_cv_type_u_int8_t = yes; then
743         AC_DEFINE(HAVE_TYPE_U_INT8_T, 1, [Does u_int8_t exist?])
746 AC_CACHE_CHECK([for u_int64_t], ac_cv_type_u_int64_t,
747 [AC_TRY_COMPILE([#include <sys/types.h>],
748         [u_int64_t len = 42; return 0;],
749         ac_cv_type_u_int64_t=yes,
750         ac_cv_type_u_int64_t=no)
752 if test $ac_cv_type_u_int64_t = yes; then
753         AC_DEFINE(HAVE_TYPE_U_INT64_T, 1, [Does u_int64_t exist?])
756 AC_CACHE_CHECK([for a fallback value for HZ], ac_cv_var_default_hz,
757 [ac_cv_var_default_hz=100
758 case "$host" in
759  alpha*-dec-osf4*|alpha*-dec-osf5*)
760     ac_cv_var_default_hz=1024
761     ;;
762  mips-dec-ultrix4*)
763     ac_cv_var_default_hz=256
764     ;;
765 esac])
766 AC_DEFINE_UNQUOTED(DEFAULT_HZ, $ac_cv_var_default_hz, [What is the fallback value for HZ?])
768 AC_CACHE_CHECK([if we need to override the system's value for HZ], ac_cv_var_override_hz,
769 [ac_cv_var_override_hz=no
770 case "$host" in
771  alpha*-dec-osf4*|alpha*-dec-osf5*)
772     ac_cv_var_override_hz=yes
773     ;;
774  mips-dec-ultrix4*)
775     ac_cv_var_override_hz=yes
776     ;;
777  *-*-freebsd*)
778     ac_cv_var_override_hz=yes
779     ;;
780  *-*-sunos4*)
781     ac_cv_var_override_hz=yes
782     ;;
783 esac])
784 case "$ac_cv_var_override_hz" in
785  yes)
786     AC_DEFINE(OVERRIDE_HZ, 1, [Do we need to override the system's idea of HZ?])
787     ;;
788 esac
790 dnl AC_CACHE_CHECK(ut_host in struct utmp, ac_cv_func_ut_host_in_utmp,
791 dnl [AC_TRY_LINK([#include <sys/types.h>
792 dnl #include <utmp.h>], [struct utmp ut; ut.ut_host;],
793 dnl ac_cv_func_ut_host_in_utmp=yes, ac_cv_func_ut_host_in_utmp=no)])
794 dnl if test $su_cv_func_ut_host_in_utmp = yes; then
795 dnl   AC_DEFINE(HAVE_UT_HOST)
796 dnl fi
798 dnl AC_MSG_CHECKING(if we can get the system boot time)
799 dnl AC_CACHE_VAL(su_cv_have_boot_time,
800 dnl [AC_EGREP_CPP(yes,
801 dnl [#ifdef HAVE_UTMPX_H
802 dnl #include <utmpx.h>
803 dnl #else
804 dnl #include <utmp.h>
805 dnl #endif
806 dnl #ifdef BOOT_TIME
807 dnl yes
808 dnl #endif
809 dnl ], su_cv_have_boot_time=yes, su_cv_have_boot_time=no)])
810 dnl AC_MSG_RESULT($su_cv_have_boot_time)
812 AC_CACHE_CHECK([for struct rt_msghdr], ac_cv_struct_rt_msghdr,
813 [AC_TRY_COMPILE([
814 #include <sys/types.h>
815 #include <sys/socket.h>
816 #include <net/if.h>
817 #include <net/route.h>],
818 [struct rt_msghdr p;],
819         ac_cv_struct_rt_msghdr=yes,
820         ac_cv_struct_rt_msghdr=no)
823 AC_CACHE_CHECK([for struct rtattr], ac_cv_struct_rtattr,
824 [AC_TRY_COMPILE([
825 #include <linux/rtnetlink.h>],
826 [struct rtattr p;],
827         ac_cv_struct_rtattr=yes,
828         ac_cv_struct_rtattr=no)
831 if test $ac_cv_struct_rt_msghdr = yes -o $ac_cv_struct_rtattr = yes; then
832     AC_DEFINE(HAS_ROUTING_SOCKET, 1, [Do we have a routing socket (struct rt_msghdr)?])
833     if test $ac_cv_struct_rtattr = yes; then
834         AC_DEFINE(HAVE_RTNETLINK, 1, [Do we have Linux routing socket?])
835     fi
838 AC_CACHE_CHECK(
839   [struct sigaction for sa_sigaction],
840   ac_cv_struct_sigaction_has_sa_sigaction,
841   [
842     AC_TRY_COMPILE(
843       [#include <signal.h>],
844       [struct sigaction act; act.sa_sigaction = 0;],
845       ac_cv_struct_sigaction_has_sa_sigaction=yes,
846       ac_cv_struct_sigaction_has_sa_sigaction=no
847     )
848   ]
850 if test $ac_cv_struct_sigaction_has_sa_sigaction = yes; then
851   AC_DEFINE(HAVE_SA_SIGACTION_IN_STRUCT_SIGACTION, 1, [Obvious...])
854 AC_CACHE_CHECK([for struct ppsclockev], ac_cv_struct_ppsclockev,
855 [AC_TRY_COMPILE([
856 #include <sys/types.h>
857 #ifdef HAVE_SYS_TERMIOS_H
858 # include <sys/termios.h>
859 #endif
860 #ifdef HAVE_SYS_TIME_H
861 # include <sys/time.h>
862 #endif
863 #ifdef HAVE_SYS_PPSCLOCK_H
864 # include <sys/ppsclock.h>
865 #endif],[
866 extern struct ppsclockev *pce;
867 return pce->serial;],
868         ac_cv_struct_ppsclockev=yes,
869         ac_cv_struct_ppsclockev=no)
871 if test $ac_cv_struct_ppsclockev = yes; then
872     AC_DEFINE(HAVE_STRUCT_PPSCLOCKEV, 1, [Does a system header define struct ppsclockev?])
875 AC_CACHE_CHECK(
876     [for struct sockaddr_storage],
877     ntp_cv_sockaddr_storage,
878     [
879         AC_TRY_COMPILE(
880             [
881                 #ifdef HAVE_SYS_TYPES_H
882                 # include <sys/types.h>
883                 #endif
884                 #ifdef HAVE_SYS_SOCKET_H
885                 # include <sys/socket.h>
886                 #endif
887                 #ifdef HAVE_NETINET_IN_H
888                 # include <netinet/in.h>
889                 #endif
890             ],
891             [
892                 struct sockaddr_storage n;
893             ],
894             [ntp_cv_sockaddr_storage="yes"],
895             [ntp_cv_sockaddr_storage="no"]
896         )
897     ]
899 case "$ntp_cv_sockaddr_storage" in
900  yes)
901     AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Does a system header define struct sockaddr_storage?])
902 esac
904 AC_CACHE_CHECK(
905     [for sockaddr_storage.ss_family],
906     ntp_cv_have_ss_family,
907     [
908         AC_TRY_COMPILE(
909             [
910                 #ifdef HAVE_SYS_TYPES_H
911                 # include <sys/types.h>
912                 #endif
913                 #ifdef HAVE_SYS_SOCKET_H
914                 # include <sys/socket.h>
915                 #endif
916                 #ifdef HAVE_NETINET_IN_H
917                 # include <netinet/in.h>
918                 #endif
919             ],
920             [
921                 struct sockaddr_storage s;
922                 s.ss_family = 1;
923             ],
924             [ntp_cv_have_ss_family="yes"],
925             [ntp_cv_have_ss_family="no"]
926         )
927     ]
930 case "$ntp_cv_have_ss_family" in
931  no)
932     AC_CACHE_CHECK(
933         [for sockaddr_storage.__ss_family],
934         ntp_cv_have___ss_family,
935         [
936             AC_TRY_COMPILE(
937                 [
938                     #ifdef HAVE_SYS_TYPES_H
939                     # include <sys/types.h>
940                     #endif
941                     #ifdef HAVE_SYS_SOCKET_H
942                     # include <sys/socket.h>
943                     #endif
944                     #ifdef HAVE_NETINET_IN_H
945                     # include <netinet/in.h>
946                     #endif
947                 ],
948                 [
949                     struct sockaddr_storage s;
950                     s.__ss_family = 1;
951                 ],
952                 [ntp_cv_have___ss_family="yes"],
953                 [ntp_cv_have___ss_family="no"]
954             )
955         ]
956     )
957     case "$ntp_cv_have___ss_family" in
958      yes)
959         AC_DEFINE(HAVE___SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have __ss_family?])
960     esac
961 esac
963 AH_VERBATIM(
964     [HAVE___SS_FAMILY_IN_SS_VERBATIM],
965     [
966         /* Handle sockaddr_storage.__ss_family */
967         #ifdef HAVE___SS_FAMILY_IN_SS
968         # define ss_family __ss_family
969         #endif /* HAVE___SS_FAMILY_IN_SS */
970     ]
973 AC_CACHE_CHECK(
974     [for sockaddr_storage.ss_len],
975     ntp_cv_have_ss_len,
976     [
977         AC_TRY_COMPILE(
978             [
979                 #ifdef HAVE_SYS_TYPES_H
980                 # include <sys/types.h>
981                 #endif
982                 #ifdef HAVE_SYS_SOCKET_H
983                 # include <sys/socket.h>
984                 #endif
985                 #ifdef HAVE_NETINET_IN_H
986                 # include <netinet/in.h>
987                 #endif
988             ],
989             [
990                 struct sockaddr_storage s;
991                 s.ss_len = 1;
992             ],
993             [ntp_cv_have_ss_len="yes"],
994             [ntp_cv_have_ss_len="no"]
995         )
996     ]
999 case "$ntp_cv_have_ss_len" in
1000  no)
1001     AC_CACHE_CHECK(
1002         [for sockaddr_storage.__ss_len],
1003         ntp_cv_have___ss_len,
1004         [
1005             AC_TRY_COMPILE(
1006                 [
1007                     #ifdef HAVE_SYS_TYPES_H
1008                     # include <sys/types.h>
1009                     #endif
1010                     #ifdef HAVE_SYS_SOCKET_H
1011                     # include <sys/socket.h>
1012                     #endif
1013                     #ifdef HAVE_NETINET_IN_H
1014                     # include <netinet/in.h>
1015                     #endif
1016                 ],
1017                 [
1018                     struct sockaddr_storage s;
1019                     s.__ss_len = 1;
1020                 ],
1021                 [ntp_cv_have___ss_len="yes"],
1022                 [ntp_cv_have___ss_len="no"]
1023             )
1024         ]
1025     )
1026     case "$ntp_cv_have___ss_len" in
1027      yes)
1028         AC_DEFINE(HAVE___SS_LEN_IN_SS, 1, [Does struct sockaddr_storage have __ss_len?])
1029     esac
1030 esac
1032 AH_VERBATIM(
1033     [HAVE___SS_LEN_IN_SS_VERBATIM],
1034     [
1035         /* Handle sockaddr_storage.__ss_len */
1036         #ifdef HAVE___SS_LEN_IN_SS
1037         # define ss_len __ss_len
1038         #endif /* HAVE___SS_LEN_IN_SS */
1039     ]
1043 # Look for in_port_t.
1045 AC_CACHE_CHECK(
1046     [for in_port_t],
1047     isc_cv_have_in_port_t,
1048     [
1049         AC_TRY_COMPILE(
1050             [
1051                 #include <sys/types.h>
1052                 #include <netinet/in.h>
1053             ],
1054             [
1055                 in_port_t port = 25; 
1056                 return (0);
1057             ],
1058             [isc_cv_have_in_port_t=yes],
1059             [isc_cv_have_in_port_t=no]
1060         )
1061     ]
1063 case "$isc_cv_have_in_port_t" in
1064  no)
1065         AC_DEFINE(ISC_PLATFORM_NEEDPORTT, 1, [Declare in_port_t?])
1066 esac
1068 case "$ac_cv_header_machine_soundcard_h$ac_cv_header_sys_soundcard_h" in
1069   *yes*)
1070     AC_CACHE_CHECK([for struct snd_size], ac_cv_struct_snd_size,
1071 [AC_TRY_COMPILE([
1072 #ifdef HAVE_MACHINE_SOUNDCARD_H
1073 # include <machine/soundcard.h>
1074 #endif
1075 #ifdef HAVE_SYS_SOUNDCARD_H
1076 # include <sys/soundcard.h>
1077 #endif],[
1078 extern struct snd_size *ss;
1079 return ss->rec_size;],
1080     ac_cv_struct_snd_size=yes,
1081     ac_cv_struct_snd_size=no)
1083     case "$ac_cv_struct_snd_size" in
1084      yes) AC_DEFINE(HAVE_STRUCT_SND_SIZE, 1,[Do we have struct snd_size?]) ;;
1085     esac
1086     ;;
1087 esac
1089 AC_CACHE_CHECK([struct clockinfo for hz], ac_cv_struct_clockinfo_has_hz,
1090 [AC_TRY_COMPILE([
1091 #include <sys/time.h>],[
1092 extern struct clockinfo *pc;
1093 return pc->hz;],
1094         ac_cv_struct_clockinfo_has_hz=yes,
1095         ac_cv_struct_clockinfo_has_hz=no)
1097 if test $ac_cv_struct_clockinfo_has_hz = yes; then
1098     AC_DEFINE(HAVE_HZ_IN_STRUCT_CLOCKINFO, 1, [Obvious...])
1101 AC_CACHE_CHECK([struct clockinfo for tickadj], ac_cv_struct_clockinfo_has_tickadj,
1102 [AC_TRY_COMPILE([
1103 #include <sys/time.h>],[
1104 extern struct clockinfo *pc;
1105 return pc->tickadj;],
1106         ac_cv_struct_clockinfo_has_tickadj=yes,
1107         ac_cv_struct_clockinfo_has_tickadj=no)
1109 if test $ac_cv_struct_clockinfo_has_tickadj = yes; then
1110     AC_DEFINE(HAVE_TICKADJ_IN_STRUCT_CLOCKINFO, 1, [Obvious...])
1113 AC_CACHE_CHECK([for struct timespec], ac_cv_struct_timespec,
1114 [AC_TRY_COMPILE([
1115 #include <sys/time.h>
1116 /* Under SunOS, timespec is in sys/timepps.h, which needs errno.h and FRAC */
1117 #ifdef HAVE_ERRNO_H
1118 # include <errno.h>
1119 #endif
1120 #ifdef HAVE_SYS_TIMEPPS_H
1121 # define FRAC 4294967296
1122 # include <sys/timepps.h>
1123 #endif],
1124 [struct timespec n;],
1125 ac_cv_struct_timespec=yes, ac_cv_struct_timespec=no)])
1126 if test $ac_cv_struct_timespec = yes; then
1127   AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1, [Do we have struct timespec?])
1130 AC_CACHE_CHECK([for struct ntptimeval], ac_cv_struct_ntptimeval,
1131 [AC_TRY_COMPILE([
1132 #include <sys/time.h>
1133 #include <sys/timex.h>],
1134 [struct ntptimeval n;],
1135 ac_cv_struct_ntptimeval=yes, ac_cv_struct_ntptimeval=no)])
1136 if test $ac_cv_struct_ntptimeval = yes; then
1137   AC_DEFINE(HAVE_STRUCT_NTPTIMEVAL, 1, [Do we have struct ntptimeval?])
1140 AC_CHECK_MEMBERS([struct ntptimeval.time.tv_nsec], , ,
1141 [#ifdef HAVE_SYS_TIME_H
1142 #include <sys/time.h>
1143 #else
1144 # ifdef HAVE_TIME_H
1145 # include <time.h>
1146 # endif
1147 #endif
1148 #ifdef HAVE_SYS_TIMEX_H
1149 #include <sys/timex.h>
1150 #else
1151 # ifdef HAVE_TIMEX_H
1152 # include <timex.h>
1153 # endif
1154 #endif])
1156 AC_C_INLINE
1158 case "$ac_cv_c_inline" in
1159  '')
1160     ;;
1161  *)
1162     AC_DEFINE(HAVE_INLINE,1,[inline keyword or macro available])
1163     AC_SUBST(HAVE_INLINE)
1164 esac
1166 AC_C_CHAR_UNSIGNED              dnl CROSS_COMPILE?
1167 AC_CHECK_SIZEOF(signed char)
1168 AC_CHECK_SIZEOF(int)
1169 AC_CHECK_SIZEOF(long)
1171 AC_CHECK_TYPES([s_char])
1172 case "$ac_cv_c_char_unsigned$ac_cv_sizeof_signed_char$ac_cv_type_s_char" in
1173  *yes)
1174     # We have a typedef for s_char.  Might as well believe it...
1175     ;;
1176  no0no)
1177     # We have signed chars, can't say 'signed char', no s_char typedef.
1178     AC_DEFINE(NEED_S_CHAR_TYPEDEF, 1, [Do we need an s_char typedef?])
1179     ;;
1180  no1no)
1181     # We have signed chars, can say 'signed char', no s_char typedef.
1182     AC_DEFINE(NEED_S_CHAR_TYPEDEF)
1183     ;;
1184  yes0no)
1185     # We have unsigned chars, can't say 'signed char', no s_char typedef.
1186     AC_MSG_ERROR(No way to specify a signed character!)
1187     ;;
1188  yes1no)
1189     # We have unsigned chars, can say 'signed char', no s_char typedef.
1190     AC_DEFINE(NEED_S_CHAR_TYPEDEF)
1191     ;;
1192 esac
1193 AC_TYPE_UID_T
1195 case "$host" in
1196  *-*-aix[[456]]*)
1197         # (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub
1198         # (returning ENOSYS).  I didn't check 4.2.  If, in the future,
1199         # IBM pulls its thumbs out long enough to implement clock_settime,
1200         # this conditional will need to change.  Maybe use AC_TRY_RUN
1201         # instead to try to set the time to itself and check errno.
1202     ;;
1203  *)
1204     AC_SEARCH_LIBS([clock_gettime], [rt])
1205     AC_CHECK_FUNCS([clock_gettime clock_settime])
1206     ;;
1207 esac
1208 AC_CHECK_FUNCS(daemon)
1209 AC_CHECK_FUNCS(finite, ,
1210   [AC_CHECK_FUNCS(isfinite, ,
1211     [AC_MSG_CHECKING([for isfinite with <math.h>])
1212     _libs=$LIBS
1213     LIBS="$LIBS -lm"
1214     AC_TRY_LINK([#include <math.h>], [float f = 0.0; isfinite(f)],
1215       [AC_MSG_RESULT(yes)
1216       AC_DEFINE(HAVE_ISFINITE)],
1217       AC_MSG_RESULT(no))
1218     LIBS=$_libs])])
1219 AC_CHECK_FUNCS(getbootfile getclock getdtablesize)
1221 AC_ARG_ENABLE(getifaddrs,
1222     AC_HELP_STRING([--enable-getifaddrs],
1223         [s Enable the use of getifaddrs() [[yes|no|glibc]].
1224 glibc: Use getifaddrs() in glibc if you know it supports IPv6.]),
1225     want_getifaddrs="$enableval",  want_getifaddrs="yes")
1227 case $want_getifaddrs in
1228 yes|glibc)
1230 # Do we have getifaddrs() ?
1232 case $host in
1233 *-*linux*)
1234         # Some recent versions of glibc support getifaddrs() which does not
1235         # provide AF_INET6 addresses while the function provided by the USAGI
1236         # project handles the AF_INET6 case correctly.  We need to avoid
1237         # using the former but prefer the latter unless overridden by
1238         # --enable-getifaddrs=glibc.
1239         if test $want_getifaddrs = glibc
1240         then
1241                 AC_CHECK_FUNCS(getifaddrs)
1242         else
1243                 save_LIBS="$LIBS"
1244                 LIBS="-L/usr/local/v6/lib $LIBS"
1245                 AC_CHECK_LIB(inet6, getifaddrs,
1246                         LIBS="$LIBS -linet6"
1247                         AC_DEFINE(HAVE_GETIFADDRS),
1248                         LIBS=${save_LIBS})
1249         fi
1250         ;;
1252         AC_CHECK_FUNCS(getifaddrs)
1253         ;;
1254 esac
1258 esac
1260 AC_MSG_CHECKING([type of socklen arg for getsockname()])
1261 AC_CACHE_VAL(ac_cv_func_getsockname_arg2,dnl
1262 [AC_CACHE_VAL(ac_cv_func_getsockname_socklen_type,dnl
1263  [for ac_cv_func_getsockname_arg2 in 'struct sockaddr *' 'void *'; do
1264   for ac_cv_func_getsockname_socklen_type in 'socklen_t' 'size_t' 'unsigned int' 'int'; do
1265    AC_TRY_COMPILE(dnl
1266 [#ifdef HAVE_SYS_TYPES_H
1267 #include <sys/types.h>
1268 #endif
1269 #ifdef HAVE_SYS_SOCKET_H
1270 #include <sys/socket.h>
1271 #endif
1272 extern getsockname (int, $ac_cv_func_getsockname_arg2, $ac_cv_func_getsockname_socklen_type *);],,dnl
1273     [ac_not_found=no ; break 2], ac_not_found=yes)
1274    done
1275   done
1276  ])dnl AC_CACHE_VAL
1277 ])dnl AC_CACHE_VAL
1278 if test "$ac_not_found" = yes; then
1279  ac_cv_func_getsockname_socklen_type='socklen_t'
1281 AC_MSG_RESULT([$ac_cv_func_getsockname_socklen_type])
1282 AC_DEFINE_UNQUOTED([GETSOCKNAME_SOCKLEN_TYPE],
1283                    $ac_cv_func_getsockname_socklen_type,
1284                    [What is getsockname()'s socklen type?])
1286 AC_CHECK_FUNCS(getrusage)
1287 AC_CHECK_FUNC(gettimeofday, ,[
1288 case "$host" in
1289   *-*-mpeix*) ac_cv_func_gettimeofday=yes
1290     ;;
1291 esac])
1292 case "$host" in
1293  *-pc-cygwin*)
1294     ;;
1295  *) AC_CHECK_FUNCS(getuid)
1296     ;;
1297 esac
1298 AC_CHECK_FUNCS(hstrerror)
1301 # Check for if_nametoindex() for IPv6 scoped addresses support
1303 AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
1304                 ac_cv_have_if_nametoindex=no)
1305 case $ac_cv_have_if_nametoindex in
1306  no)
1307         case "$host" in
1308         *-hp-hpux*)
1309                 AC_CHECK_LIB(ipv6, if_nametoindex,
1310                                 ac_cv_have_if_nametoindex=yes
1311                                 LIBS="-lipv6 $LIBS",)
1312         ;;
1313         esac
1314 esac
1315 case $ac_cv_have_if_nametoindex in
1316  yes)
1317         AC_DEFINE(ISC_PLATFORM_HAVEIFNAMETOINDEX, 1, [ISC: do we have if_nametoindex()?])
1318         ;;
1319 esac
1321 AC_SEARCH_LIBS([inet_ntop], [resolv], , , [-lsocket -lnsl])
1322 AC_CHECK_FUNC(inet_ntop, [], [AC_DEFINE(ISC_PLATFORM_NEEDNTOP, 1, [ISC: provide inet_ntop()])])
1323 AC_CHECK_FUNC(inet_pton, [], [AC_DEFINE(ISC_PLATFORM_NEEDPTON, 1, [ISC: provide inet_pton()])])
1324 case "$ac_cv_header_kvm_h" in
1325  yes)
1326     AC_CHECK_FUNCS(kvm_open)
1327     ;;
1328 esac
1329 AC_CHECK_FUNCS(memcpy memmove memset)
1330 case "$host" in
1331  *-*-sco3.2v5.0.*)
1332     # Just stubs.  Idiots.
1333     ;;
1334  *) AC_CHECK_FUNCS(mkstemp)
1335     ;;
1336 esac
1337 AC_CHECK_FUNCS(mktime)
1338 case "$host" in
1339  *-*-aix[[456]]*)
1340     # Just a stub.  Idiots.
1341     ;;
1342  *-*-irix[[45]]*)
1343     # Just a stub in "old" Irix.  Idiots.
1344     ;;
1345  *-*-*linux*)
1346     # there, but more trouble than it is worth for now (resolver problems)
1347     ;;
1348  *-*-qnx*)
1349     # Apparently there but not working in QNX.  Idiots?
1350     ;;
1351  *-*-sco3.2v5.0.*)
1352     # Just a stub.  Idiots.
1353     ;;
1354  alpha*-dec-osf4*|alpha*-dec-osf5*)
1355     # mlockall is there, as a #define calling memlk via <sys/mman.h>
1356     # Not easy to test for - cheat.
1357     AC_CHECK_FUNCS(memlk, [ac_cv_func_mlockall='yes'])
1358     AC_CHECK_FUNCS(mlockall)
1359     ;;
1360  *) AC_CHECK_FUNCS(mlockall)
1361     ;;
1362 esac
1363 AC_CHECK_FUNCS(nice nlist)
1364 case "$host" in
1365  *-*-solaris2.6)
1366     # Broken...
1367     ;;
1368  *) AC_CHECK_FUNCS(ntp_adjtime ntp_gettime)
1369     ;;
1370 esac
1371 AC_CHECK_FUNCS(plock pututline pututxline readlink recvmsg rtprio)
1372 case "$host" in
1373  *-*-aix[[456]]*)
1374     # Just a stub in AIX 4.  Idiots.
1375     ;;
1376  *-*-solaris2.5*)
1377     # Just stubs in solaris2.5.  Idiots.
1378     ;;
1379  *) AC_CHECK_FUNCS(sched_setscheduler)
1380     ;;
1381 esac
1382 AC_CHECK_FUNCS(setlinebuf setpgid setpriority setsid)
1383 AC_CHECK_FUNCS(setrlimit)
1384 AC_CHECK_FUNCS(settimeofday, ,[
1385 case "$host" in
1386   *-*-mpeix*) ac_cv_func_settimeofday=yes
1387     ;;
1388 esac])
1389 AC_CHECK_FUNCS(setvbuf sigaction)
1390 AC_CHECK_FUNCS(sigvec sigset sigsuspend stime strchr sysconf sysctl)
1391 AC_CHECK_FUNCS(snprintf strdup strerror strstr)
1392 AC_CHECK_FUNCS(timegm)
1393 case "$host" in
1394  *-*-aix[[456]]*)
1395     # Just stubs.  Idiots.
1396     ;;
1397  *-*-netbsd1*)
1398     # Just stubs.  Idiots.
1399     ;;
1400  *-*-netbsdelf1*)
1401     # Just stubs.  Idiots.
1402     ;;
1403  *-*-openbsd*)
1404     # Just stubs.  Idiots.
1405     ;;
1406  *) AC_CHECK_FUNCS(timer_create timer_settime)
1407     ;;
1408 esac
1409 case "$host" in
1410  *-pc-cygwin*)
1411     # I have no idea...
1412     ;;
1413  *) AC_CHECK_FUNCS(umask)
1414     ;;
1415 esac
1416 AC_CHECK_FUNCS(uname updwtmp updwtmpx vsnprintf vsprintf)
1420 # http://bugs.ntp.org/737
1421 case "$ac_cv_func_recvmsg" in
1422  yes)
1423  AC_MSG_CHECKING([if we need extra help to define struct iovec])
1424  AC_CACHE_VAL(ac_cv_struct_iovec_help,dnl
1425  [for ac_cv_struct_iovec_help in '0' '1'; do
1426    AC_TRY_COMPILE(dnl
1427 [#ifdef HAVE_SYS_TYPES_H
1428 #include <sys/types.h>
1429 #endif
1430 #ifdef HAVE_SYS_SOCKET_H
1431 #include <sys/socket.h>
1432 #endif
1433 #if $ac_cv_struct_iovec_help
1434 #include <sys/uio.h>
1435 #endif
1437 void foo();
1438 void foo() {
1439         ssize_t x;
1440         int s = 0;
1441         struct iovec iov;
1442         struct msghdr mh;
1443         int flags = 0;
1445         mh.msg_iov = &iov;
1446         x = recvmsg(s, &mh, flags);
1447 }],,dnl
1448   [ac_worked=yes ; break 1], ac_worked=no)
1449   done
1450 ])dnl AC_CACHE_VAL
1451     case "$ac_worked$ac_cv_struct_iovec_help" in
1452      yes1)
1453         AC_DEFINE(HAVE_SYS_UIO_H, 1, [Use sys/uio.h for struct iovec help])
1454         ans=yes
1455         ;;
1456      *) ans=no
1457     esac
1458     AC_MSG_RESULT([$ans])
1459     ;;
1460 esac
1462 case "$host" in
1463  *-*-sunos4*)
1464     AC_DEFINE(SPRINTF_CHAR, 1, [*s*printf() functions are char*])
1465     ;;
1466 esac
1468 AC_CACHE_CHECK([number of arguments to gettimeofday()], ac_cv_func_Xettimeofday_nargs,
1469 [AC_TRY_COMPILE([#include <sys/time.h>],[
1470 gettimeofday((struct timeval*)0,(struct timezone*)0);
1471 settimeofday((struct timeval*)0,(struct timezone*)0);
1473         ac_cv_func_Xettimeofday_nargs=2, ac_cv_func_Xettimeofday_nargs=1)
1475 if test $ac_cv_func_Xettimeofday_nargs = 1; then
1476         AC_DEFINE(SYSV_TIMEOFDAY, 1, [Does Xettimeofday take 1 arg?])
1479 AC_CACHE_CHECK([number of arguments taken by setpgrp()], ac_cv_func_setpgrp_nargs,
1480 [AC_TRY_COMPILE([
1481 #ifdef HAVE_SYS_TYPES_H
1482 # include <sys/types.h>
1483 #endif
1484 #ifdef HAVE_UNISTD_H
1485 # include <unistd.h>
1486 #endif
1487 ],[setpgrp(0,0);],
1488         ac_cv_func_setpgrp_nargs=2, ac_cv_func_setpgrp_nargs=0)
1490 if test $ac_cv_func_setpgrp_nargs = 0; then
1491         AC_DEFINE(HAVE_SETPGRP_0, 1, [define if setpgrp takes 0 arguments])
1494 save_CFLAGS=$CFLAGS
1495 CFLAGS="$CFLAGS -I$srcdir/include"
1497 AC_CACHE_CHECK([argument pointer type of qsort()'s compare function and base],
1498 ac_cv_func_qsort_argtype,
1499 [AC_TRY_COMPILE([
1500 #include "l_stdlib.h"
1502 extern void *base;
1503 extern sortfunc (const void *, const void *);
1504 int sortfunc(a, b)
1505   const void *a;
1506   const void *b; { return 0; }
1508 qsort(base, 2, sizeof(char *), sortfunc);
1510         ac_cv_func_qsort_argtype=void, ac_cv_func_qsort_argtype=char)
1512 case "$ac_cv_func_qsort_argtype" in
1513  void)
1514     AC_DEFINE(QSORT_USES_VOID_P, 1, [Does qsort expect to work on "void *" stuff?])
1515     ;;
1516 esac
1518 CFLAGS=$save_CFLAGS
1520 AC_CACHE_CHECK([if we need to declare 'errno'], ac_cv_decl_errno,
1521 [AC_TRY_COMPILE([#ifdef HAVE_ERRNO_H
1522 #include <errno.h>
1523 #endif],
1524   [errno = 0;],
1525   ac_cv_decl_errno=no, ac_cv_decl_errno=yes)])
1526 case "$ac_cv_decl_errno" in
1527  yes) AC_DEFINE(DECL_ERRNO, 1, [Declare errno?]) ;;
1528 esac
1530 dnl FIXME: from ntpd/ntp_intres.c, but there's no info which header produces
1531 dnl the clash.  <resolv.h> isn't currently used.
1533 dnl (prr) aix 4.3 defines h_errno as (*(int *)h_errno_which()) for
1534 dnl MT purposes.  This makes the line "extern int h_errno" choke
1535 dnl the compiler.  Hopefully adding !defined(h_errno) fixes this
1536 dnl without breaking any other platforms.
1538 AC_CACHE_CHECK([if we may declare 'h_errno'], ac_cv_decl_h_errno,
1539 [AC_TRY_COMPILE([#include <sys/types.h>
1540 #ifdef HAVE_NETINET_IN_H
1541 #include <netinet/in.h>
1542 #endif
1543 #ifdef HAVE_ARPA_NAMESER_H
1544 #include <arpa/nameser.h>
1545 #endif
1546 #ifdef HAVE_NETDB_H
1547 #include <netdb.h>
1548 #endif
1549 #ifdef HAVE_RESOLV_H
1550 #include <resolv.h>
1551 #endif],
1552   [extern int h_errno;],
1553   ac_cv_decl_h_errno=yes, ac_cv_decl_h_errno=no)])
1554 case "$ac_cv_decl_h_errno" in
1555  yes) AC_DEFINE(DECL_H_ERRNO, 1, [Declare h_errno?]) ;;
1556 esac
1558 dnl See if char *sys_errlist[] is OK.
1559 AC_CACHE_CHECK([[if declaring 'char *sys_errlist[]' is ok]], ac_cv_decl_sys_errlist,
1560 [AC_TRY_COMPILE([#include <stdio.h>
1561 #ifdef HAVE_ERRNO_H
1562 #include <errno.h>
1563 #endif],
1564   [extern char *sys_errlist[];
1566   ac_cv_decl_sys_errlist=yes, ac_cv_decl_sys_errlist=no)])
1567 case "$ac_cv_decl_sys_errlist" in
1568  yes) AC_DEFINE(CHAR_SYS_ERRLIST, 1, [Declare char *sys_errlist array]) ;;
1569 esac
1571 AC_CACHE_CHECK([if declaring 'syscall()' is ok], ac_cv_decl_syscall,
1572 [AC_TRY_COMPILE([
1573 #ifdef HAVE_SYS_TYPES_H
1574 # include <sys/types.h>
1575 #endif
1576 #ifdef HAVE_UNISTD_H
1577 # include <unistd.h>
1578 #endif
1580   [extern int syscall (int, ...);],
1581   ac_cv_decl_syscall=yes, ac_cv_decl_syscall=no)])
1582 case "$ac_cv_decl_syscall" in
1583  yes) AC_DEFINE(DECL_SYSCALL, 1, [Declare syscall()?]) ;;
1584 esac
1586 case "$host" in
1587  *-*-aix4.3.*)
1588     AC_DEFINE(DECL_HSTRERROR_0, 1, [Declaration style])         # Needed for XLC under AIX 4.3.2
1589     ;;
1590  *-*-mpeix*)
1591     AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1592     AC_DEFINE(DECL_INET_NTOA_0, 1, [Declaration style])
1593     AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1594     AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1595     AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1596     AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1597     AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1598     ;;
1599  *-*-osf[[45]]*)
1600     AC_DEFINE(DECL_PLOCK_0, 1, [Declaration style])
1601     AC_DEFINE(DECL_STIME_1, 1, [Declaration style])
1602     ;;
1603  *-*-qnx*)
1604     AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1605     ;;
1606  *-*-riscos4*)
1607     AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1608     AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
1609     AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
1610     AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
1611     AC_DEFINE(DECL_MEMMOVE_0, 1, [Declaration style])
1612     AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1613     AC_DEFINE(DECL_RENAME_0, 1, [Declaration style])
1614     AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1615     AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1616     AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
1617     AC_DEFINE(DECL_STDIO_0, 1, [Declaration style])
1618     AC_DEFINE(DECL_STRTOL_0, 1, [Declaration style])
1619     AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1620     AC_DEFINE(DECL_TIME_0, 1, [Declaration style])
1621     AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1622     AC_DEFINE(DECL_TOLOWER_0, 1, [Declaration style])
1623     ;;
1624  *-*-solaris2*)
1625     AC_DEFINE(DECL_MKSTEMP_0, 1, [Declaration style])
1626     AC_DEFINE(DECL_SETPRIORITY_1, 1, [Declaration style])
1627     case "$host" in
1628      *-*-solaris2.4)
1629         AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1630         ;;
1631     esac
1632     ;;
1633  *-*-sunos4*)
1634     AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1635     AC_DEFINE(DECL_BCOPY_0, 1, [Declaration style])
1636     AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
1637     AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
1638     AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
1639     AC_DEFINE(DECL_MEMMOVE_0, 1, [Declaration style])
1640     AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1641     AC_DEFINE(DECL_MKSTEMP_0, 1, [Declaration style])
1642     AC_DEFINE(DECL_RENAME_0, 1, [Declaration style])
1643     AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1644     AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1645     AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
1646     AC_DEFINE(DECL_SIGVEC_0, 1, [Declaration style])
1647     case "`basename $ac_cv_prog_CC`" in
1648      acc*) ;;
1649      *) AC_DEFINE(DECL_STDIO_0, 1, [Declaration style])
1650         ;;
1651     esac
1652     AC_DEFINE(DECL_STRTOL_0, 1, [Declaration style])
1653     AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1654     AC_DEFINE(DECL_TIME_0, 1, [Declaration style])
1655     AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1656     AC_DEFINE(DECL_TOLOWER_0, 1, [Declaration style])
1657     AC_DEFINE(DECL_TOUPPER_0, 1, [Declaration style])
1658     AC_DEFINE(DECL_STRERROR_0, 1, [Declaration style])
1659     ;;
1660  *-*-ultrix4*)
1661     AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
1662     AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
1663     AC_DEFINE(DECL_CFSETISPEED_0, 1, [Declaration style])
1664     AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
1665     AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
1666     AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
1667     AC_DEFINE(DECL_NLIST_0, 1, [Declaration style])
1668     AC_DEFINE(DECL_PLOCK_0, 1, [Declaration style])
1669     AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
1670     AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
1671     AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
1672     AC_DEFINE(DECL_STIME_0, 1, [Declaration style])
1673     AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
1674     AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
1675     ;;
1676 esac
1678 case "$host" in
1679  *-*-sco3.2*)
1680     AC_DEFINE(TERMIOS_NEEDS__SVID3, 1, [Do we need to #define _SVID3 when we #include <termios.h>?])
1681     ;;
1682 esac
1684 AC_CACHE_CHECK([if we need extra room for SO_RCVBUF], ac_cv_var_rcvbuf_slop,
1685 [ans=no
1686 case "$host" in
1687  *-*-hpux[[567]]*)
1688     ans=yes
1689     ;;
1690 esac
1691 ac_cv_var_rcvbuf_slop=$ans])
1692 case "$ac_cv_var_rcvbuf_slop" in
1693  yes) AC_DEFINE(NEED_RCVBUF_SLOP, 1, [Do we need extra room for SO_RCVBUF? (HPUX <8)]) ;;
1694 esac
1696 AC_CACHE_CHECK([if we will open the broadcast socket], ac_cv_var_open_bcast_socket,
1697 [ans=yes
1698 case "$host" in
1699  *-*-domainos)
1700     ans=no
1701     ;;
1702 esac
1703 ac_cv_var_open_bcast_socket=$ans])
1704 case "$ac_cv_var_open_bcast_socket" in
1705  yes) AC_DEFINE(OPEN_BCAST_SOCKET, 1, [Should we open the broadcast socket?]) ;;
1706 esac
1708 AC_CACHE_CHECK([if we want the HPUX version of FindConfig()], ac_cv_var_hpux_findconfig,
1709 [ans=no
1710 case "$host" in
1711  *-*-hpux*)
1712     ans=yes
1713     ;;
1714 esac
1715 ac_cv_var_hpux_findconfig=$ans])
1716 case "$ac_cv_var_hpux_findconfig" in
1717  yes) AC_DEFINE(NEED_HPUX_FINDCONFIG, 1, [Do we want the HPUX FindConfig()?]) ;;
1718 esac
1720 AC_CACHE_CHECK([if process groups are set with -pid], ac_cv_arg_setpgrp_negpid,
1721 [case "$host" in
1722  *-*-hpux[[567]]*)
1723     ans=no
1724     ;;
1725  *-*-hpux*)
1726     ans=yes
1727     ;;
1728  *-*-*linux*)
1729     ans=yes
1730     ;;
1731  *-*-sunos3*)
1732     ans=yes
1733     ;;
1734  *-*-ultrix2*)
1735     ans=yes
1736     ;;
1737  *)
1738     ans=no
1739     ;;
1740 esac
1741 ac_cv_arg_setpgrp_negpid=$ans])
1742 case "$ac_cv_arg_setpgrp_negpid" in
1743  yes) AC_DEFINE(UDP_BACKWARDS_SETOWN, 1, [Do we set process groups with -pid?]) ;;
1744 esac
1746 AC_CACHE_CHECK(
1747     [if we need a ctty for F_SETOWN],
1748     ntp_cv_func_ctty_for_f_setown,
1749     [
1750         case "$host" in
1751          *-*-bsdi[23]*)
1752             ans=yes
1753             ;;
1754          *-*-freebsd*)
1755             ans=yes
1756             ;;
1757         # NetBSD versions prior to 3.99.8 require a CTTY for F_SETOWN,
1758         # while later versions will fail a ioctl(TIOCSCTTY, 0) call in
1759         # some cases and so should not have USE_FSETOWNCTTY.  "netbsd"
1760         # in $host may be followed by "aout", "ecoff", or "elf".
1761          *-*-netbsd*[a-z]3.[0-8]*|*-*-netbsd*[a-z][0-2].*|*-*-netbsd*[a-z]3.99.[0-7])
1762             ans=yes
1763             ;;
1764          *-*-netbsd3.[0-8]*|*-*-netbsd[0-2].*|*-*-netbsd3.99.[0-7])
1765             ans=yes
1766             ;;
1767          *-*-openbsd*)
1768             ans=yes
1769             ;;
1770          *-*-osf*)
1771             ans=yes
1772             ;;
1773          *-*-darwin*)
1774             ans=yes
1775             ;;
1776          *) 
1777             ans=no
1778         esac
1779         ntp_cv_func_ctty_for_f_setown=$ans
1780     ]
1782 case "$ntp_cv_func_ctty_for_f_setown" in
1783  yes)
1784     AC_DEFINE(USE_FSETOWNCTTY, 1, [Must we have a CTTY for fsetown?])
1785 esac
1787 AC_CACHE_CHECK([if the OS fails to clear cached routes when more specific routes become available], ac_cv_os_routeupdates,
1788 [[case "$host" in
1789  *-*-netbsd*)
1790     ans=yes
1791     ;;
1792  *) ans=no
1793     ;;
1794 esac
1795 ac_cv_os_routeupdates=$ans]])
1796 case "$ac_cv_os_routeupdates" in
1797  yes) AC_DEFINE(OS_MISSES_SPECIFIC_ROUTE_UPDATES, 1, [need to recreate sockets on changed routing?]) ;;
1798 esac
1800 AC_CACHE_CHECK([if the OS needs the wildcard socket set to REUSEADDR for binding interface addresses], ac_cv_os_wildcardreuse,
1801 [[case "$host" in
1802  *-*-*linux*)
1803     ans=yes
1804     ;;
1805  *) ans=no
1806     ;;
1807 esac
1808 ac_cv_os_wildcardreuse=$ans]])
1809 case "$ac_cv_os_wildcardreuse" in
1810  yes) AC_DEFINE(OS_NEEDS_REUSEADDR_FOR_IFADDRBIND, 1, [wildcard socket needs to set REUSEADDR when binding to interface addresses]) ;;
1811 esac
1813 ntp_warning='GRONK'
1814 AC_MSG_CHECKING([if we'll use clock_settime or settimeofday or stime])
1815 case "$ac_cv_func_clock_settime$ac_cv_func_settimeofday$ac_cv_func_stime" in
1816  yes*)
1817     ntp_warning=''
1818     ans='clock_settime()'
1819     ;;
1820  noyes*)
1821     ntp_warning='But clock_settime() would be better (if we had it)'
1822     ans='settimeofday()'
1823     ;;
1824  nonoyes)
1825     ntp_warning='Which is the worst of the three'
1826     ans='stime()'
1827     ;;
1828  *) 
1829     case "$build" in
1830      $host) ntp_warning='Which leaves us with nothing to use!'
1831     ans=none
1832     ;;
1833 esac
1834 esac
1835 AC_MSG_RESULT([$ans])
1836 case "$ntp_warning" in
1837  '') ;;
1838  *) AC_MSG_WARN([*** $ntp_warning ***])
1839     ;;
1840 esac
1842 AC_CACHE_CHECK([if we have a losing syscall()], ac_cv_var_syscall_bug,
1843 [case "$host" in
1844  *-*-solaris2.4*)
1845     ans=yes
1846     ;;
1847  *) ans=no
1848     ;;
1849 esac
1850 ac_cv_var_syscall_bug=$ans])
1851 case "$ac_cv_var_syscall_bug" in
1852  yes) AC_DEFINE(SYSCALL_BUG, 1, [Buggy syscall() (Solaris2.4)?]) ;;
1853 esac
1855 AC_CACHE_CHECK([for SIGIO], ac_cv_hdr_def_sigio,
1856  AC_EGREP_CPP(yes,
1857   [#include <signal.h>
1858 #ifdef SIGIO
1859    yes
1860 #endif
1861   ], ac_cv_hdr_def_sigio=yes, ac_cv_hdr_def_sigio=no))
1863 dnl Override those system that have a losing SIGIO
1864 AC_CACHE_CHECK([if we want to use signalled IO], ac_cv_var_signalled_io,
1865 [ans=no
1866 case "$ac_cv_hdr_def_sigio" in
1867  yes)
1868     ans=yes
1869     case "$host" in
1870      alpha*-dec-osf4*|alpha*-dec-osf5*)
1871         ans=no
1872         ;;
1873      *-convex-*)
1874         ans=no
1875         ;;
1876      *-dec-*)
1877         ans=no
1878         ;;
1879      *-pc-cygwin*)
1880         ans=no
1881         ;;
1882      *-sni-sysv*)
1883         ans=no
1884         ;;
1885      *-univel-sysv*)
1886         ans=no
1887         ;;
1888      *-*-irix6*)
1889         ans=no
1890         ;;
1891      *-*-freebsd*)
1892         ans=no
1893         ;;
1894      *-*-*linux*)
1895         ans=no
1896         ;;
1897      *-*-unicosmp*)
1898         ans=no
1899         ;;
1900     esac
1901     ;;
1902 esac
1903 ac_cv_var_signalled_io=$ans])
1904 case "$ac_cv_var_signalled_io" in
1905  yes) AC_DEFINE(HAVE_SIGNALED_IO, 1, [Can we use SIGIO for tcp and udp IO?]) ;;
1906 esac
1908 AC_CACHE_CHECK([for SIGPOLL], ac_cv_hdr_def_sigpoll,
1909  AC_EGREP_CPP(yes,
1910  [#include <signal.h>
1911 #ifdef SIGPOLL
1912   yes
1913 #endif
1914  ], ac_cv_hdr_def_sigpoll=yes, ac_cv_hdr_def_sigpoll=no))
1916 AC_CACHE_CHECK([for SIGSYS], ac_cv_hdr_def_sigsys,
1917  AC_EGREP_CPP(yes,
1918  [#include <signal.h>
1919 #ifdef SIGSYS
1920   yes
1921 #endif
1922  ], ac_cv_hdr_def_sigsys=yes, ac_cv_hdr_def_sigsys=no))
1924 AC_CACHE_CHECK([if we can use SIGPOLL for UDP I/O], ac_cv_var_use_udp_sigpoll,
1925 [ans=no
1926 case "$ac_cv_hdr_def_sigpoll" in
1927  yes)
1928     case "$host" in
1929      mips-sgi-irix*)
1930         ans=no
1931         ;;
1932      vax-dec-bsd)
1933         ans=no
1934         ;;
1935      *-pc-cygwin*)
1936         ans=no
1937         ;;
1938      *-sni-sysv*)
1939         ans=no
1940         ;;
1941      *-*-aix[[456]]*)
1942         ans=no
1943         ;;
1944      *-*-hpux*)
1945         ans=no
1946         ;;
1947      *-*-*linux*)
1948         ans=no
1949         ;;
1950      *-*-osf*)
1951         ans=no
1952         ;;
1953      *-*-qnx*)
1954         ans=no
1955         ;;
1956      *-*-sunos*)
1957         ans=no
1958         ;;
1959      *-*-solaris*)
1960         ans=no
1961         ;;
1962      *-*-ultrix*)
1963         ans=no
1964         ;;
1965      *-*-unicosmp*)
1966         ans=no
1967         ;;
1968      *) ans=yes
1969         ;;
1970     esac
1971     ;;
1972 esac
1973 ac_cv_var_use_udp_sigpoll=$ans])
1974 case "$ac_cv_var_use_udp_sigpoll" in
1975  yes) AC_DEFINE(USE_UDP_SIGPOLL, 1, [Can we use SIGPOLL for UDP?]) ;;
1976 esac
1978 AC_CACHE_CHECK([if we can use SIGPOLL for TTY I/O], ac_cv_var_use_tty_sigpoll,
1979 [ans=no
1980 case "$ac_cv_hdr_def_sigpoll" in
1981  yes)
1982     case "$host" in
1983      mips-sgi-irix*)
1984         ans=no
1985         ;;
1986      vax-dec-bsd)
1987         ans=no
1988         ;;
1989      *-pc-cygwin*)
1990         ans=no
1991         ;;
1992      *-sni-sysv*)
1993         ans=no
1994         ;;
1995      *-*-aix[[456]]*)
1996         ans=no
1997         ;;
1998      *-*-hpux*)
1999         ans=no
2000         ;;
2001      *-*-*linux*)
2002         ans=no
2003         ;;
2004      *-*-osf*)
2005         ans=no
2006         ;;
2007      *-*-sunos*)
2008         ans=no
2009         ;;
2010      *-*-ultrix*)
2011         ans=no
2012         ;;
2013      *-*-qnx*)
2014         ans=no
2015         ;;
2016      *-*-unicosmp*)
2017         ans=no
2018         ;;
2019      *) ans=yes
2020         ;;
2021     esac
2022     ;;
2023 esac
2024 ac_cv_var_use_tty_sigpoll=$ans])
2025 case "$ac_cv_var_use_tty_sigpoll" in
2026  yes) AC_DEFINE(USE_TTY_SIGPOLL, 1, [Can we use SIGPOLL for tty IO?]) ;;
2027 esac
2029 case "$ac_cv_header_sys_sio_h" in
2030  yes)
2031     AC_CACHE_CHECK([sys/sio.h for TIOCDCDTIMESTAMP], ac_cv_hdr_def_tiocdcdtimestamp,
2032      AC_EGREP_CPP(yes,
2033 [#include <sys/sio.h>
2034 #ifdef TIOCDCDTIMESTAMP
2035   yes
2036 #endif
2037      ], ac_cv_hdr_def_tiocdcdtimestamp=yes, ac_cv_hdr_def_tiocdcdtimestamp=no))
2038     ;;
2039 esac
2041 case "$ac_cv_hdr_def_tiocdcdtimestamp" in
2042  yes)
2043     ac_cv_var_oncore_ok=yes
2044     ;;
2045 esac
2047 AC_CACHE_CHECK([if nlist() values might require extra indirection],
2048 ac_cv_var_nlist_extra_indirection,
2049 [ans=no
2050 case "$host" in
2051  *-*-aix*)
2052     ans=yes
2053     ;;
2054 esac
2055 ac_cv_var_nlist_extra_indirection=$ans])
2056 case "$ac_cv_var_nlist_extra_indirection" in
2057  yes) AC_DEFINE(NLIST_EXTRA_INDIRECTION, 1, [Might nlist() values require an extra level of indirection (AIX)?]) ;;
2058 esac
2060 AC_CACHE_CHECK([for a minimum recommended value of tickadj],
2061 ac_cv_var_min_rec_tickadj,
2062 [ans=no
2063 case "$host" in
2064  *-*-aix*)
2065     ans=40
2066     ;;
2067 esac
2068 ac_cv_var_min_rec_tickadj=$ans])
2069 case "$ac_cv_var_min_rec_tickadj" in
2070  ''|no) ;;
2071  *) AC_DEFINE_UNQUOTED(MIN_REC_TICKADJ, $ac_cv_var_min_rec_tickadj, [Should we recommend a minimum value for tickadj?]) ;;
2072 esac
2074 AC_CACHE_CHECK([if the TTY code permits PARENB and IGNPAR],
2075 ac_cv_var_no_parenb_ignpar,
2076 [ans=no
2077 case "$host" in
2078  i?86-*-*linux*)
2079     ans=yes
2080     ;;
2081  mips-sgi-irix*)
2082     ans=yes
2083     ;;
2084  i?86-*-freebsd[[123]].*)
2085     ;;
2086  i?86-*-freebsd*)
2087     ans=yes
2088     ;;
2089  *-*-unicosmp*)
2090     ans=yes
2091     ;;
2092 esac
2093 ac_cv_var_no_parenb_ignpar=$ans])
2094 case "$ac_cv_var_no_parenb_ignpar" in
2095  yes) AC_DEFINE(NO_PARENB_IGNPAR, 1, [Is there a problem using PARENB and IGNPAR (IRIX)?]) ;;
2096 esac
2098 AC_MSG_CHECKING([if we're including ntpd debugging code])
2099 AC_ARG_ENABLE(debugging,
2100    AC_HELP_STRING([--enable-debugging], [+ include ntpd debugging code]),
2101     [ntp_ok=$enableval], [ntp_ok=yes])
2102 if test "$ntp_ok" = "yes"; then
2103     AC_DEFINE(DEBUG, 1, [Enable ntpd debugging code?])
2105 AC_MSG_RESULT($ntp_ok)
2107 AC_MSG_CHECKING([if we including processing time debugging code])
2108 AC_ARG_ENABLE(debug-timing,
2109    AC_HELP_STRING([--enable-debug-timing], [- include processing time debugging code (costs performance)]),
2110     [ntp_ok=$enableval], [ntp_ok=no])
2111 if test "$ntp_ok" = "yes"; then
2112     AC_DEFINE(DEBUG_TIMING, 1, [Enable processing time debugging?])
2114 AC_MSG_RESULT($ntp_ok)
2116 AC_MSG_CHECKING([[for a the number of minutes in a DST adjustment]])
2117 AC_ARG_ENABLE(
2118     [dst_minutes],
2119     AS_HELP_STRING(
2120         [--enable-dst-minutes],
2121         [n minutes per DST adjustment @<:@60@:>@]       dnl @<:@ is [
2122     ),
2123     [ans=$enableval],
2124     [ans=60]
2126 AC_DEFINE_UNQUOTED(DSTMINUTES, $ans, [The number of minutes in a DST adjustment])
2127 AC_MSG_RESULT([$ans])
2129 AC_MSG_CHECKING([[if ntpd will retry permanent DNS failures]])
2130 AC_ARG_ENABLE(
2131     [ignore-dns-errors],
2132     AS_HELP_STRING(
2133         [--enable-ignore-dns-errors], 
2134         [- retry DNS queries on any error]
2135     ),
2136     [ans=$enableval],
2137     [ans=no]
2139 case "$ans" in
2140  yes)
2141     AC_DEFINE(IGNORE_DNS_ERRORS, 1, [[Retry queries on _any_ DNS error?]])
2142 esac
2143 AC_MSG_RESULT([$ans])
2145 AC_MSG_CHECKING([if ntpd will use the deferred DNS lookup path])
2146 AC_ARG_ENABLE(
2147     [force-defer-DNS],
2148     AS_HELP_STRING(
2149         [--enable-force-defer-DNS],
2150         [- force all DNS lookups to take the deferred path]
2151     ),
2152     [ans=$enableval],
2153     [ans=no]
2155 case "$ans" in
2156  yes)
2157     AC_DEFINE(FORCE_DEFER_DNS, 1, [Force deferred DNS lookups?])
2158 esac
2159 AC_MSG_RESULT([$ans])
2161 AC_CACHE_CHECK([if we have the tty_clk line discipline/streams module],
2162  ac_cv_var_tty_clk,
2163  [case "$ac_cv_header_sys_clkdefs_h$ac_cv_hdr_def_tiocdcdtimestamp" in
2164   *yes*) ac_cv_var_tty_clk=yes ;;
2165   *)     ac_cv_var_tty_clk=no ;;
2166  esac])
2167 case "$ac_cv_var_tty_clk" in
2168  yes) AC_DEFINE(TTYCLK, 1, [Do we have the tty_clk line discipline/streams module?]) ;;
2169 esac
2171 AC_CACHE_CHECK([for the ppsclock streams module],
2172  ac_cv_var_ppsclock,
2173  ac_cv_var_ppsclock=$ac_cv_struct_ppsclockev)
2174 case "$ac_cv_var_ppsclock" in
2175  yes) AC_DEFINE(PPS, 1, [Do we have the ppsclock streams module?]) ;;
2176 esac
2178 AC_CACHE_CHECK([for kernel multicast support], ac_cv_var_mcast,
2179   [ac_cv_var_mcast=no
2180   case "$host" in
2181    i386-sequent-sysv4) ;;
2182    *) AC_EGREP_CPP(yes,
2183   [#include <netinet/in.h>
2184 #ifdef IP_ADD_MEMBERSHIP
2185    yes
2186 #endif
2187   ], ac_cv_var_mcast=yes) ;;
2188   esac])
2189 case "$ac_cv_var_mcast" in
2190  yes)
2191     AC_DEFINE(MCAST, 1, [Does the kernel support multicasting IP?])
2192     AC_CACHE_CHECK([[arg type needed for IP*_MULTICAST_LOOP for setsockopt()]],
2193         ac_cv_var_typeof_ip_multicast_loop,
2194         [case "$host" in
2195          *-*-netbsd*|*-*-*linux*)
2196             ac_cv_var_typeof_ip_multicast_loop=u_int
2197             ;;
2198          *-*-winnt*)
2199             ac_cv_var_typeof_ip_multicast_loop=BOOL
2200             ;;
2201          *) ac_cv_var_typeof_ip_multicast_loop=u_char
2202             ;;
2203         esac])
2204     AC_DEFINE_UNQUOTED(TYPEOF_IP_MULTICAST_LOOP,
2205                    $ac_cv_var_typeof_ip_multicast_loop,
2206                    [What type to use for setsockopt])
2207     ;;
2208 esac
2210 AC_CACHE_CHECK([[availability of ntp_{adj,get}time()]], ac_cv_var_ntp_syscalls,
2211  [ac_cv_var_ntp_syscalls=no
2212  case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex" in
2213   yesyes*)
2214     ac_cv_var_ntp_syscalls=libc
2215     ;;
2216   *yes)
2217     ac_cv_var_ntp_syscalls=inline
2218     ;;
2219   *) AC_EGREP_CPP(yes,
2220          [#include <sys/syscall.h>
2221 #if defined(SYS_ntp_gettime) && defined(SYS_ntp_adjtime)
2222            yes
2223 #endif
2224           ], ac_cv_var_ntp_syscalls=kernel)
2225     ;;
2226  esac])
2227 case "$ac_cv_var_ntp_syscalls" in
2228  libc)
2229     AC_DEFINE(NTP_SYSCALLS_LIBC, 1, [Do we have ntp_{adj,get}time in libc?])
2230     ;;
2231  kernel)
2232     AC_DEFINE(NTP_SYSCALLS_STD, 1, [Do we have ntp_{adj,get}time in the kernel?])
2233     ;;
2234  *)
2235     ;;
2236 esac
2238 AC_CACHE_CHECK(if sys/timex.h has STA_FLL, ac_cv_var_sta_fll,
2239 [AC_EGREP_CPP(yes,
2240     [#include <sys/timex.h>
2241 #ifdef STA_FLL
2242     yes
2243 #endif
2244     ], ac_cv_var_sta_fll=yes, ac_cv_var_sta_fll=no)])
2246 AC_CACHE_CHECK(if we have kernel PLL support, ac_cv_var_kernel_pll,
2247 [dnl ac_cv_var_ntp_syscalls is {no,libc,kernel}
2248 case "$ac_cv_header_sys_timex_h$ac_cv_struct_ntptimeval$ac_cv_var_sta_fll$ac_cv_var_ntp_syscalls" in
2249  *no*)
2250     ac_cv_var_kernel_pll=no
2251     ;;
2252  *) ac_cv_var_kernel_pll=yes
2253     ;;
2254 esac])
2255 case "$ac_cv_var_kernel_pll" in
2256  yes)
2257     AC_DEFINE(KERNEL_PLL, 1, [Does the kernel support precision time discipline?])
2258     ;;
2259 esac
2261 AC_CACHE_CHECK(if SIOCGIFCONF returns buffer size in the buffer, ac_cv_var_size_returned_in_buffer,
2262   [ans=no
2263   case "$host" in
2264    *-fujitsu-uxp*)
2265       ans=yes
2266       ;;
2267    *-ncr-sysv4*)
2268       ans=yes
2269       ;;
2270    *-univel-sysv*)
2271       ans=yes
2272       ;;
2273   esac
2274   ac_cv_var_size_returned_in_buffer=$ans])
2275 case "$ac_cv_var_size_returned_in_buffer" in
2276  yes) AC_DEFINE(SIZE_RETURNED_IN_BUFFER, 1, [Does SIOCGIFCONF return size in the buffer?]) ;;
2277 esac
2279 dnl    vvvvv-- this is wrong, if you re-enable the switch do not cache the result
2280 dnl AC_CACHE_CHECK(if we want GDT surveying code, ac_cv_var_gdt_surveying,
2281 dnl [AC_ARG_ENABLE(gdt-surveying,       [  --enable-gdt-surveying   - include GDT survey code],
2282 dnl     [ans=$enableval], [ans=no])
2283 dnl ac_cv_var_gdt_surveying=$ans])
2284 dnl case "$ac_cv_var_gdt_surveying" in
2285 dnl  yes) AC_DEFINE(GDT_SURVEYING, 1, [Include the GDT Surveying code?]) ;;
2286 dnl esac
2288 # Check for ioctls TIOCGPPSEV
2289 AC_MSG_CHECKING(ioctl TIOCGPPSEV)
2290 if test "$ac_cv_header_termios_h" = "yes"; then
2291     AC_EGREP_CPP(yes,
2292     [#include <termios.h>
2293 #ifdef TIOCGPPSEV
2294          yes
2295 #endif
2296          ], ntp_ok=yes, ntp_ok=no)
2297 else
2298 ntp_ok=no
2300 if test "$ntp_ok" = "yes"; then
2301     AC_DEFINE(HAVE_TIOCGPPSEV, 1, [Do we have the TIOCGPPSEV ioctl (Solaris)?])
2302     ac_cv_var_oncore_ok=yes
2304 AC_MSG_RESULT($ntp_ok)
2306 # Check for ioctls TIOCSPPS
2307 AC_MSG_CHECKING(ioctl TIOCSPPS)
2308 if test "$ac_cv_header_termios_h" = "yes"; then
2309     AC_EGREP_CPP(yes,
2310     [#include <termios.h>
2311 #ifdef TIOCSPPS
2312          yes
2313 #endif
2314          ], ntp_ok=yes, ntp_ok=no)
2315 else
2316     ntp_ok=no
2319 if test "$ntp_ok" = "yes"; then
2320     AC_DEFINE(HAVE_TIOCSPPS, 1, [Do we have the TIOCSPPS ioctl (Solaris)?])
2322 AC_MSG_RESULT($ntp_ok)
2324 # Check for ioctls CIOGETEV
2325 AC_MSG_CHECKING([ioctl CIOGETEV])
2326 if test "$ac_cv_header_sys_ppsclock_h" = "yes"; then
2327     AC_EGREP_CPP(yes,
2328     [#include <sys/ppsclock.h>
2329 #ifdef CIOGETEV
2330          yes
2331 #endif
2332          ], ntp_ok=yes, ntp_ok=no)
2333 else
2334 ntp_ok=no
2336 if test "$ntp_ok" = "yes"; then
2337     ac_cv_var_oncore_ok=yes
2338     AC_DEFINE(HAVE_CIOGETEV, 1, [Do we have the CIOGETEV ioctl (SunOS, Linux)?])
2340 AC_MSG_RESULT($ntp_ok)
2343 # ATOM/PPSAPI stuff.
2345 # ATOM used to require struct timespec, but that's been fixed now.
2347 # case "$ac_cv_struct_timespec" in
2348 #  'yes')
2349 #     ac_cv_var_atom_ok=yes
2350 #     ;;
2351 # esac
2352 ac_cv_var_atom_ok=yes
2354 # Check for header timepps.h, if found then we have PPS API (Draft RFC) stuff.
2356 # The PPSAPI headers need "inline" ($ac_cv_c_inline='inline')
2358 # The PPSAPI needs struct timespec.
2360 # The PPSAPI also needs a timepps header.
2362 case "$ac_cv_c_inline$ac_cv_struct_timespec" in
2363  inlineyes)
2364     case "$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h$host_os" in
2365      *yes* | *sunos* | *solaris* | *sco* | *netbsd* )
2366         AC_DEFINE(HAVE_PPSAPI, 1, [Do we have the PPS API per the Draft RFC?])
2367         ac_cv_var_jupiter_ok=yes
2368         ac_cv_var_oncore_ok=yes
2369         ac_cv_var_parse_ok=yes
2370         ac_cv_var_ripe_ncc_ok=yes
2371         ;;
2372     esac
2373     ;;
2374 esac
2376 # Check for ioctls TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG
2377 AC_CHECK_HEADER(linux/serial.h)
2378 AC_MSG_CHECKING([ioctl TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG])
2379 case "$ac_cv_header_sys_ppsclock_h$ac_cv_header_linux_serial_h" in
2380   yesyes)
2381     AC_EGREP_CPP(yes,
2382     [#include <sys/time.h>
2383 typedef int u_int;
2385 #include <sys/ppsclock.h>
2386 #include <linux/serial.h>
2388 #ifdef TIOCGSERIAL
2389 #ifdef TIOCSSERIAL
2390 #ifdef ASYNC_PPS_CD_POS
2391 #ifdef ASYNC_PPS_CD_NEG
2392 #ifdef CIOGETEV
2393          yes
2394 #endif
2395 #endif
2396 #endif
2397 #endif
2398 #endif
2399          ], ntp_ok=yes)
2400         ;;
2401   *)
2402         ntp_ok=no
2403         ;;
2404 esac
2405 if test "$ntp_ok" = "yes"; then
2406     AC_DEFINE(HAVE_TIO_SERIAL_STUFF, 1, [Do we have the TIO serial stuff?])
2408 AC_MSG_RESULT($ntp_ok)
2410 # Check for SHMEM_STATUS support
2411 AC_MSG_CHECKING([SHMEM_STATUS support])
2412 case "$ac_cv_header_sys_mman_h" in
2413  yes) ntp_ok=yes ;;
2414  *)   ntp_ok=no  ;;
2415 esac
2416 if test "$ntp_ok" = "yes"; then
2417     AC_DEFINE(ONCORE_SHMEM_STATUS, 1, [Do we have support for SHMEM_STATUS?])
2419 AC_MSG_RESULT($ntp_ok)
2421 dnl dnl These are for OPT_PROGRAMS in authstuff/
2422 dnl AC_SUBST(AUTHCERT)
2423 dnl AC_SUBST(AUTHSPEED)
2424 dnl AC_SUBST(MD5DRIVER)
2425 dnl AC_SUBST(KEYPARITY)
2426 dnl AC_SUBST(MAKEIPFP)
2427 dnl AC_SUBST(MAKEPC1)
2428 dnl AC_SUBST(MAKEPC2)
2429 dnl AC_SUBST(MAKESP)
2430 dnl AC_SUBST(MKRANDKEYS)
2431 dnl AC_SUBST(OMAKEIPFP)
2432 dnl AC_SUBST(UNIXCERT)
2434 ntp_refclock=no
2436 # HPUX only, and by explicit request
2437 AC_MSG_CHECKING([Datum/Bancomm bc635/VME interface])
2438 AC_ARG_ENABLE(BANCOMM,
2439     AC_HELP_STRING([--enable-BANCOMM], [- Datum/Bancomm bc635/VME interface]),
2440     [ntp_ok=$enableval], [ntp_ok=no])
2441 if test "$ntp_ok" = "yes"; then
2442     ntp_refclock=yes
2443     AC_DEFINE(CLOCK_BANC, 1, [Datum/Bancomm bc635/VME interface?])
2445 AC_MSG_RESULT($ntp_ok)
2446 case "$ntp_ok$host" in
2447  yes*-*-hpux*) ;;
2448  yes*) AC_MSG_WARN([*** But the expected answer is... no ***]) ;;
2449 esac
2451 #HPUX only, and only by explicit request
2452 AC_MSG_CHECKING([TrueTime GPS receiver/VME interface])
2453 AC_ARG_ENABLE(GPSVME,
2454     AC_HELP_STRING([--enable-GPSVME], [- TrueTime GPS receiver/VME interface]),
2455     [ntp_ok=$enableval], [ntp_ok=no])
2456 if test "$ntp_ok" = "yes"; then
2457     ntp_refclock=yes
2458     AC_DEFINE(CLOCK_GPSVME, 1, [TrueTime GPS receiver/VME interface?])
2460 AC_MSG_RESULT($ntp_ok)
2461 case "$ntp_ok$host" in
2462  yes*-*-hpux*) ;;
2463  yes*) AC_MSG_WARN([*** But the expected answer is... no ***]) ;;
2464 esac
2466 AC_MSG_CHECKING([for PCL720 clock support])
2467 case "$ac_cv_header_machine_inline_h$ac_cv_header_sys_pcl720_h$ac_cv_header_sys_i8253_h" in
2468  yesyesyes)
2469     AC_DEFINE(CLOCK_PPS720, 1, [PCL 720 clock support])
2470     ans=yes
2471     ;;
2472  *)
2473     ans=no
2474     ;;
2475 esac
2476 AC_MSG_RESULT([$ans])
2478 AC_MSG_CHECKING([for default inclusion of all suitable non-PARSE clocks])
2479 AC_ARG_ENABLE(all-clocks,
2480     AC_HELP_STRING([--enable-all-clocks], [+ include all suitable non-PARSE clocks:]),
2481     [ntp_eac=$enableval], [ntp_eac=yes])
2482 AC_MSG_RESULT($ntp_eac)
2484 # HMS: Should we also require ac_cv_var_parse_ok?
2485 AC_MSG_CHECKING([if we have support for PARSE clocks])
2486 case "$ac_cv_var_atom_ok$ac_cv_header_termio_h$ac_cv_header_termios_h" in
2487  yes*yes*)
2488     ntp_canparse=yes
2489     ;;
2490  *) ntp_canparse=no
2491     ;;
2492 esac
2493 AC_MSG_RESULT($ntp_canparse)
2495 AC_MSG_CHECKING([if we have support for audio clocks])
2496 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
2497  *yes*)
2498     ntp_canaudio=yes
2499     AC_DEFINE(HAVE_AUDIO, , [Do we have audio support?])
2500     ;;
2501  *) ntp_canaudio=no ;;
2502 esac
2503 AC_MSG_RESULT($ntp_canaudio)
2505 AC_MSG_CHECKING([if we have support for the SHM refclock interface])
2506 case "$ac_cv_header_sys_ipc_h$ac_cv_header_sys_shm_h" in
2507  yesyes)
2508     ntp_canshm=yes
2509     ;;
2510  *) ntp_canshm=no ;;
2511 esac
2512 AC_MSG_RESULT($ntp_canshm)
2514 # Requires modem control
2515 AC_MSG_CHECKING([ACTS modem service])
2516 AC_ARG_ENABLE(ACTS,
2517     AC_HELP_STRING([--enable-ACTS], [s ACTS modem service]),
2518     [ntp_ok=$enableval],
2519     [AC_EGREP_CPP(yes,
2520         [#include <termios.h>
2521 #ifdef HAVE_SYS_IOCTL_H
2522 #include <sys/ioctl.h>
2523 #endif
2524 #ifdef TIOCMBIS
2525          yes
2526 #endif
2527          ], ntp_ok=$ntp_eac, ntp_ok=no)])
2528 if test "$ntp_ok" = "yes"; then
2529     ntp_refclock=yes
2530     AC_DEFINE(CLOCK_ACTS, 1, [ACTS modem service])
2532 AC_MSG_RESULT($ntp_ok)
2534 AC_MSG_CHECKING([Arbiter 1088A/B GPS receiver])
2535 AC_ARG_ENABLE(ARBITER,
2536     AC_HELP_STRING([--enable-ARBITER], [+ Arbiter 1088A/B GPS receiver]),
2537     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2538 if test "$ntp_ok" = "yes"; then
2539     ntp_refclock=yes
2540     AC_DEFINE(CLOCK_ARBITER, 1, [Arbiter 1088A/B GPS receiver])
2542 AC_MSG_RESULT($ntp_ok)
2544 AC_MSG_CHECKING([Arcron MSF receiver])
2545 AC_ARG_ENABLE(ARCRON_MSF,
2546     AC_HELP_STRING([--enable-ARCRON-MSF], [+ Arcron MSF receiver]),
2547     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2548 if test "$ntp_ok" = "yes"; then
2549     ntp_refclock=yes
2550     AC_DEFINE(CLOCK_ARCRON_MSF, 1, [ARCRON support?])
2552 AC_MSG_RESULT($ntp_ok)
2554 AC_MSG_CHECKING([Austron 2200A/2201A GPS receiver])
2555 AC_ARG_ENABLE(AS2201,
2556     AC_HELP_STRING([--enable-AS2201], [+ Austron 2200A/2201A GPS receiver]),
2557     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2558 if test "$ntp_ok" = "yes"; then
2559     ntp_refclock=yes
2560     AC_DEFINE(CLOCK_AS2201, 1, [Austron 2200A/2201A GPS receiver?])
2562 AC_MSG_RESULT($ntp_ok)
2564 AC_MSG_CHECKING([ATOM PPS interface])
2565 AC_ARG_ENABLE(ATOM,     
2566     AC_HELP_STRING([--enable-ATOM], [s ATOM PPS interface]),
2567     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2568 case "$ac_cv_var_atom_ok" in
2569  no) ntp_ok=no ;;
2570 esac
2571 if test "$ntp_ok" = "yes"; then
2572     ntp_refclock=yes
2573     AC_DEFINE(CLOCK_ATOM, 1, [PPS interface?])
2575 AC_MSG_RESULT($ntp_ok)
2577 AC_MSG_CHECKING([Chrono-log K-series WWVB receiver])
2578 AC_ARG_ENABLE(CHRONOLOG,
2579     AC_HELP_STRING([--enable-CHRONOLOG], [+ Chrono-log K-series WWVB receiver]),
2580     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2581 if test "$ntp_ok" = "yes"; then
2582     ntp_refclock=yes
2583     AC_DEFINE(CLOCK_CHRONOLOG, 1, [Chronolog K-series WWVB receiver?])
2585 AC_MSG_RESULT($ntp_ok)
2587 AC_MSG_CHECKING([CHU modem/decoder])
2588 AC_ARG_ENABLE(CHU,
2589     AC_HELP_STRING([--enable-CHU], [+ CHU modem/decoder]),
2590     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2591 if test "$ntp_ok" = "yes"; then
2592     ntp_refclock=yes
2593     AC_DEFINE(CLOCK_CHU, 1, [CHU modem/decoder])
2595 AC_MSG_RESULT($ntp_ok)
2596 ac_refclock_chu=$ntp_ok
2598 AC_MSG_CHECKING([CHU audio/decoder])
2599 AC_ARG_ENABLE(AUDIO-CHU,
2600     AC_HELP_STRING([--enable-AUDIO-CHU], [s CHU audio/decoder]),
2601     [ntp_ok=$enableval],
2602     [case "$ntp_eac$ac_refclock_chu$ntp_canaudio" in
2603  *no*)  ntp_ok=no  ;;
2604  *)     ntp_ok=yes ;;
2605 esac])
2606 if test "$ntp_ok" = "yes"; then
2607     AC_DEFINE(AUDIO_CHU, 1, [CHU audio/decoder?])
2609 AC_MSG_RESULT($ntp_ok)
2610 # We used to check for sunos/solaris target...
2611 case "$ntp_ok$ac_refclock_chu$ntp_canaudio" in
2612  yes*no*) AC_MSG_WARN([*** But the expected answer is...no ***]) ;;
2613 esac
2615 # Not under HP-UX
2616 AC_MSG_CHECKING([Datum Programmable Time System])
2617 AC_ARG_ENABLE(DATUM,
2618     AC_HELP_STRING([--enable-DATUM], [s Datum Programmable Time System]),
2619     [ntp_ok=$enableval],
2620     [case "$ac_cv_header_termios_h" in
2621     yes)
2622         ntp_ok=$ntp_eac
2623         ;;
2624     *) ntp_ok=no
2625         ;;
2626     esac])
2627 if test "$ntp_ok" = "yes"; then
2628     ntp_refclock=yes
2629     AC_DEFINE(CLOCK_DATUM, 1, [Datum Programmable Time System?])
2631 AC_MSG_RESULT($ntp_ok)
2633 AC_MSG_CHECKING([Dumb generic hh:mm:ss local clock])
2634 AC_ARG_ENABLE(DUMBCLOCK,
2635     AC_HELP_STRING([--enable-DUMBCLOCK], [+ Dumb generic hh:mm:ss local clock]),
2636     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2637 if test "$ntp_ok" = "yes"; then
2638     ntp_refclock=yes
2639     AC_DEFINE(CLOCK_DUMBCLOCK, 1, [Dumb generic hh:mm:ss local clock?])
2641 AC_MSG_RESULT($ntp_ok)
2643 AC_MSG_CHECKING([Forum Graphic GPS])
2644 AC_ARG_ENABLE(FG,
2645     AC_HELP_STRING([--enable-FG], [+ Forum Graphic GPS]),
2646     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2647 if test "$ntp_ok" = "yes"; then
2648     ntp_refclock=yes
2649     AC_DEFINE(CLOCK_FG, 1, [Forum Graphic GPS datating station driver?])
2651 AC_MSG_RESULT($ntp_ok)
2653 # Requires modem control
2654 AC_MSG_CHECKING([Heath GC-1000 WWV/WWVH receiver])
2655 AC_ARG_ENABLE(HEATH,
2656     AC_HELP_STRING([--enable-HEATH], [s Heath GC-1000 WWV/WWVH receiver]),
2657     [ntp_ok=$enableval],
2658     [AC_EGREP_CPP(yes,
2659         [#include <termios.h>
2660 #ifdef HAVE_SYS_IOCTL_H
2661 #include <sys/ioctl.h>
2662 #endif
2663 #ifdef TIOCMBIS
2664          yes
2665 #endif
2666          ], ntp_ok=$ntp_eac, ntp_ok=no)])
2667 if test "$ntp_ok" = "yes"; then
2668     ntp_refclock=yes
2669     AC_DEFINE(CLOCK_HEATH, 1, [Heath GC-1000 WWV/WWVH receiver?])
2671 AC_MSG_RESULT($ntp_ok)
2673 AC_MSG_CHECKING([for hopf serial clock device])
2674 AC_ARG_ENABLE(HOPFSERIAL,
2675     AC_HELP_STRING([--enable-HOPFSERIAL], [+ hopf serial clock device]),
2676     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2677 if test "$ntp_ok" = "yes"; then
2678     ntp_refclock=yes
2679     AC_DEFINE(CLOCK_HOPF_SERIAL, 1, [HOPF serial clock device?])
2681 AC_MSG_RESULT($ntp_ok)
2683 AC_MSG_CHECKING([for hopf PCI clock 6039])
2684 AC_ARG_ENABLE(HOPFPCI,
2685     AC_HELP_STRING([--enable-HOPFPCI], [+ hopf 6039 PCI board]),
2686     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2687 if test "$ntp_ok" = "yes"; then
2688     ntp_refclock=yes
2689     AC_DEFINE(CLOCK_HOPF_PCI, 1, [HOPF PCI clock device?])
2691 AC_MSG_RESULT($ntp_ok)
2693 AC_MSG_CHECKING([HP 58503A GPS receiver])
2694 AC_ARG_ENABLE(HPGPS,
2695     AC_HELP_STRING([--enable-HPGPS], [+ HP 58503A GPS receiver]),
2696     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2697 if test "$ntp_ok" = "yes"; then
2698     ntp_refclock=yes
2699     AC_DEFINE(CLOCK_HPGPS, 1, [HP 58503A GPS receiver?])
2701 AC_MSG_RESULT($ntp_ok)
2703 AC_MSG_CHECKING([IRIG audio decoder])
2704 AC_ARG_ENABLE(IRIG,
2705     AC_HELP_STRING([--enable-IRIG], [s IRIG audio decoder]),
2706     [ntp_ok=$enableval],
2707     [case "$ntp_eac$ntp_canaudio" in
2708      *no*)      ntp_ok=no  ;;
2709      *)         ntp_ok=yes ;;
2710     esac])
2711 if test "$ntp_ok" = "yes"; then
2712     ntp_refclock=yes
2713     AC_DEFINE(CLOCK_IRIG, 1, [IRIG audio decoder?])
2715 AC_MSG_RESULT($ntp_ok)
2716 case "$ntp_ok$ntp_canaudio" in
2717  yesno) AC_MSG_WARN([*** But the expected answer is... no ***]) ;;
2718 esac
2720 AC_MSG_CHECKING([for JJY receiver])
2721 AC_ARG_ENABLE(JJY,
2722     AC_HELP_STRING([--enable-JJY], [+ JJY receiver]),
2723     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2724 if test "$ntp_ok" = "yes"; then
2725     ntp_refclock=yes
2726     AC_DEFINE(CLOCK_JJY, 1, [JJY receiver?])
2728 AC_MSG_RESULT($ntp_ok)
2730 AC_MSG_CHECKING([Rockwell Jupiter GPS receiver])
2731 AC_ARG_ENABLE(JUPITER,
2732     AC_HELP_STRING([--enable-JUPITER], [s Rockwell Jupiter GPS receiver]),
2733     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2734 case "$ac_cv_var_jupiter_ok" in
2735  no) ntp_ok=no ;;
2736 esac
2737 if test "$ntp_ok" = "yes"; then
2738     ntp_refclock=yes
2739     AC_DEFINE(CLOCK_JUPITER, 1, [Rockwell Jupiter GPS clock?])
2741 AC_MSG_RESULT($ntp_ok)
2743 AC_MSG_CHECKING([Leitch CSD 5300 Master Clock System Driver])
2744 AC_ARG_ENABLE(LEITCH,
2745     AC_HELP_STRING([--enable-LEITCH], [+ Leitch CSD 5300 Master Clock System Driver]),
2746     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2747 if test "$ntp_ok" = "yes"; then
2748     ntp_refclock=yes
2749     AC_DEFINE(CLOCK_LEITCH, 1, [Leitch CSD 5300 Master Clock System Driver?])
2751 AC_MSG_RESULT($ntp_ok)
2753 AC_MSG_CHECKING([local clock reference])
2754 AC_ARG_ENABLE(LOCAL-CLOCK,
2755     AC_HELP_STRING([--enable-LOCAL-CLOCK], [+ local clock reference]),
2756     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2757 if test "$ntp_ok" = "yes"; then
2758     ntp_refclock=yes
2759     AC_DEFINE(CLOCK_LOCAL, 1, [local clock reference?])
2761 AC_MSG_RESULT($ntp_ok)
2763 dnl Bug 340: longstanding unfixed bugs
2764 dnl AC_MSG_CHECKING(EES M201 MSF receiver)
2765 dnl AC_ARG_ENABLE(MSFEES,
2766 dnl     AC_HELP_STRING([--enable-MSFEES], [+ EES M201 MSF receiver]),
2767 dnl     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2768 dnl if test "$ntp_ok" = "yes"; then
2769 dnl     ntp_refclock=yes
2770 dnl     AC_DEFINE(CLOCK_MSFEES, 1, [EES M201 MSF receiver])
2771 dnl fi
2772 dnl AC_MSG_RESULT($ntp_ok)
2774 # Not Ultrix
2775 AC_MSG_CHECKING([Magnavox MX4200 GPS receiver])
2776 AC_ARG_ENABLE(MX4200,
2777     AC_HELP_STRING([--enable-MX4200 ], [s Magnavox MX4200 GPS receiver]),
2778     [ntp_ok=$enableval],
2779     [case "$ac_cv_var_ppsclock" in
2780      yes) ntp_ok=$ntp_eac
2781         ;;
2782      *) ntp_ok=no
2783         ;;
2784     esac])
2785 if test "$ntp_ok" = "yes"; then
2786     ntp_refclock=yes
2787     AC_DEFINE(CLOCK_MX4200, 1, [Magnavox MX4200 GPS receiver])
2789 AC_MSG_RESULT($ntp_ok)
2790 case "$ntp_ok$host" in
2791  yes*-*-ultrix*) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2792 esac
2794 AC_MSG_CHECKING([for NeoClock4X receiver])
2795 AC_ARG_ENABLE(NEOCLOCK4X,
2796     AC_HELP_STRING([--enable-NEOCLOCK4X], [+ NeoClock4X DCF77 / TDF receiver]),
2797     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2798 if test "$ntp_ok" = "yes"; then
2799     ntp_refclock=yes
2800     AC_DEFINE(CLOCK_NEOCLOCK4X, 1, [NeoClock4X])
2802 AC_MSG_RESULT($ntp_ok)
2804 AC_MSG_CHECKING([NMEA GPS receiver])
2805 AC_ARG_ENABLE(NMEA,
2806     AC_HELP_STRING([--enable-NMEA], [+ NMEA GPS receiver]),
2807     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2808 if test "$ntp_ok" = "yes"; then
2809     ntp_refclock=yes
2810     AC_DEFINE(CLOCK_NMEA, 1, [NMEA GPS receiver])
2812 AC_MSG_RESULT($ntp_ok)
2814 AC_MSG_CHECKING([for ONCORE Motorola VP/UT Oncore GPS])
2815 AC_ARG_ENABLE(ONCORE,
2816     AC_HELP_STRING([--enable-ONCORE], [s Motorola VP/UT Oncore GPS receiver]),
2817     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2818 case "$ac_cv_var_oncore_ok" in
2819  no) ntp_ok=no ;;
2820 esac
2821 if test "$ntp_ok" = "yes"; then
2822     ntp_refclock=yes
2823     AC_DEFINE(CLOCK_ONCORE, 1, [Motorola UT Oncore GPS])
2825 AC_MSG_RESULT($ntp_ok)
2827 AC_MSG_CHECKING([for Palisade clock])
2828 AC_ARG_ENABLE(PALISADE,
2829     AC_HELP_STRING([--enable-PALISADE], [s Palisade clock]),
2830     [ntp_ok=$enableval],
2831     [case "$ac_cv_header_termios_h" in
2832     yes)
2833         ntp_ok=$ntp_eac
2834         ;;
2835     *) ntp_ok=no
2836         ;;
2837     esac])
2839 if test "$ntp_ok" = "yes"; then
2840     ntp_refclock=yes
2841     AC_DEFINE(CLOCK_PALISADE, 1, [Palisade clock])
2843 AC_MSG_RESULT($ntp_ok)
2845 AC_MSG_CHECKING([Conrad parallel port radio clock])
2846 AC_ARG_ENABLE(PCF,
2847     AC_HELP_STRING([--enable-PCF ], [+ Conrad parallel port radio clock]),
2848     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2849 if test "$ntp_ok" = "yes"; then
2850     ntp_refclock=yes
2851     AC_DEFINE(CLOCK_PCF, 1, [Conrad parallel port radio clock])
2853 AC_MSG_RESULT($ntp_ok)
2855 AC_MSG_CHECKING([PST/Traconex 1020 WWV/WWVH receiver])
2856 AC_ARG_ENABLE(PST,
2857     AC_HELP_STRING([--enable-PST], [+ PST/Traconex 1020 WWV/WWVH receiver]),
2858     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2859 if test "$ntp_ok" = "yes"; then
2860     ntp_refclock=yes
2861     AC_DEFINE(CLOCK_PST, 1, [PST/Traconex 1020 WWV/WWVH receiver])
2863 AC_MSG_RESULT($ntp_ok)
2865 AC_MSG_CHECKING([RIPENCC specific Trimble driver])
2866 AC_ARG_ENABLE(RIPENCC,
2867     AC_HELP_STRING([--enable-RIPENCC], [- RIPENCC specific Trimble driver]),
2868     [ntp_ok=$enableval], [ntp_ok=no])
2869 # 020629: HMS: s/$ntp_eac -> -/no because of ptr += sprintf(ptr, ...) usage
2870 case "$ac_cv_var_ripe_ncc_ok" in
2871  no) ntp_ok=no ;;
2872 esac
2873 if test "$ntp_ok" = "yes"; then
2874     ntp_refclock=yes
2875     AC_DEFINE(CLOCK_RIPENCC, ,[RIPE NCC Trimble clock])
2877 AC_MSG_RESULT($ntp_ok)
2879 # Danny Meyer says SHM compiles (with a few warnings) under Win32.
2880 # For *IX, we need sys/ipc.h and sys/shm.h.
2881 AC_MSG_CHECKING([for SHM clock attached thru shared memory])
2882 AC_ARG_ENABLE(SHM,
2883     AC_HELP_STRING([--enable-SHM], [s SHM clock attached thru shared memory]),
2884     [ntp_ok=$enableval],
2885     [case "$ntp_eac$ntp_canshm" in
2886  *no*)  ntp_ok=no  ;;
2887  *)     ntp_ok=yes ;;
2888 esac])
2889 if test "$ntp_ok" = "yes"; then
2890     ntp_refclock=yes
2891     AC_DEFINE(CLOCK_SHM, 1, [clock thru shared memory])
2893 AC_MSG_RESULT($ntp_ok)
2895 AC_MSG_CHECKING([Spectracom 8170/Netclock/2 WWVB receiver])
2896 AC_ARG_ENABLE(SPECTRACOM,
2897     AC_HELP_STRING([--enable-SPECTRACOM], [+ Spectracom 8170/Netclock/2 WWVB receiver]),
2898     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2899 if test "$ntp_ok" = "yes"; then
2900     ntp_refclock=yes
2901     AC_DEFINE(CLOCK_SPECTRACOM, 1, [Spectracom 8170/Netclock/2 WWVB receiver])
2903 AC_MSG_RESULT($ntp_ok)
2905 AC_MSG_CHECKING([KSI/Odetics TPRO/S GPS receiver/IRIG interface])
2906 AC_ARG_ENABLE(TPRO,
2907     AC_HELP_STRING([--enable-TPRO], [s KSI/Odetics TPRO/S GPS receiver/IRIG interface]),
2908     [ntp_ok=$enableval],
2909     [case "$ac_cv_header_sys_tpro_h" in
2910      yes)
2911         ntp_ok=$ntp_eac
2912         ;;
2913      *) ntp_ok=no
2914         ;;
2915     esac])
2916 if test "$ntp_ok" = "yes"; then
2917     ntp_refclock=yes
2918     AC_DEFINE(CLOCK_TPRO, 1, [KSI/Odetics TPRO/S GPS receiver/IRIG interface])
2920 AC_MSG_RESULT($ntp_ok)
2921 case "$ntp_ok$ac_cv_header_sys_tpro" in
2922  yesno) AC_MSG_WARN([*** But the expected answer is... no ***]) ;;
2923 esac
2925 dnl Bug 342: longstanding unfixed bugs
2926 dnl AC_MSG_CHECKING(TRAK 8810 GPS receiver)
2927 dnl AC_ARG_ENABLE(TRAK,
2928 dnl     AC_HELP_STRING([--enable-TRAK], [+ TRAK 8810 GPS receiver]),
2929 dnl     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2930 dnl if test "$ntp_ok" = "yes"; then
2931 dnl     ntp_refclock=yes
2932 dnl     AC_DEFINE(CLOCK_TRAK, 1, [TRAK 8810 GPS receiver])
2933 dnl fi
2934 dnl AC_MSG_RESULT($ntp_ok)
2936 # Not on a vax-dec-bsd
2937 AC_MSG_CHECKING([Kinemetrics/TrueTime receivers])
2938 AC_ARG_ENABLE(TRUETIME,
2939     AC_HELP_STRING([--enable-TRUETIME], [s Kinemetrics/TrueTime receivers]),
2940     [ntp_ok=$enableval],
2941     [case "$host" in
2942      vax-dec-bsd)
2943         ntp_ok=no
2944         ;;
2945      *)
2946         ntp_ok=$ntp_eac
2947         ;;
2948     esac])
2949     
2950 if test "$ntp_ok" = "yes"; then
2951     ntp_refclock=yes
2952     AC_DEFINE(CLOCK_TRUETIME, 1, [Kinemetrics/TrueTime receivers])
2954 AC_MSG_RESULT($ntp_ok)
2955 case "$ntp_ok$host" in
2956  yesvax-dec-bsd) AC_MSG_WARN([*** But the expected answer is... no ***]) ;;
2957 esac
2959 AC_MSG_CHECKING([TrueTime 560 IRIG-B decoder])
2960 AC_ARG_ENABLE(TT560,
2961     AC_HELP_STRING([--enable-TT560], [- TrueTime 560 IRIG-B decoder]),
2962     [ntp_ok=$enableval], [ntp_ok=no])
2963 if test "$ntp_ok" = "yes"; then
2964     ntp_refclock=yes
2965     AC_DEFINE(CLOCK_TT560, , [TrueTime 560 IRIG-B decoder?])
2967 AC_MSG_RESULT($ntp_ok)
2969 AC_MSG_CHECKING([Ultralink M320 WWVB receiver])
2970 AC_ARG_ENABLE(ULINK,
2971     AC_HELP_STRING([--enable-ULINK], [+ Ultralink WWVB receiver]),
2972     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
2973 if test "$ntp_ok" = "yes"; then
2974     ntp_refclock=yes
2975     AC_DEFINE(CLOCK_ULINK, 1, [Ultralink M320 WWVB receiver?])
2977 AC_MSG_RESULT($ntp_ok)
2979 AC_MSG_CHECKING([WWV receiver])
2980 AC_ARG_ENABLE(WWV,
2981     AC_HELP_STRING([--enable-WWV], [s WWV Audio receiver]),
2982     [ntp_ok=$enableval],
2983     [case "$ntp_eac$ntp_canaudio" in
2984      *no*)      ntp_ok=no  ;;
2985      *)         ntp_ok=yes ;;
2986     esac])
2987 if test "$ntp_ok" = "yes"; then
2988     ntp_refclock=yes
2989     AC_DEFINE(CLOCK_WWV, 1, [WWV audio driver])
2991 AC_MSG_RESULT($ntp_ok)
2992 case "$ntp_ok$ntp_canaudio" in
2993  yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
2994 esac
2996 AC_MSG_CHECKING([for Zyfer receiver])
2997 AC_ARG_ENABLE(ZYFER,
2998     AC_HELP_STRING([--enable-ZYFER], [+ Zyfer GPStarplus receiver]),
2999     [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
3000 if test "$ntp_ok" = "yes"; then
3001     ntp_refclock=yes
3002     AC_DEFINE(CLOCK_ZYFER, 1, [Zyfer GPStarplus])
3004 AC_MSG_RESULT($ntp_ok)
3006 AC_MSG_CHECKING([for default inclusion of all suitable PARSE clocks])
3007 AC_ARG_ENABLE(parse-clocks,
3008    AC_HELP_STRING([--enable-parse-clocks], [- include all suitable PARSE clocks:]),
3009     [ntp_eapc=$enableval],
3010     [case "$ntp_eac" in
3011      yes) ntp_eapc=$ntp_canparse ;;
3012      *) ntp_eapc=no ;;
3013     esac
3014     # Delete the next line one of these days
3015     ntp_eapc=no])
3016 AC_MSG_RESULT($ntp_eapc)
3018 case "$ntp_eac$ntp_eapc$ntp_canparse" in
3019  noyes*)
3020     AC_MSG_ERROR(["--enable-parse-clocks" requires "--enable-all-clocks".])
3021     ;;
3022  yesyesno)
3023     AC_MSG_ERROR([You said "--enable-parse-clocks" but PARSE isn't supported on this platform!])
3024     ;;
3025  *) ;;
3026 esac
3028 ntp_libparse=no
3029 ntp_parseutil=no
3030 ntp_rawdcf=no
3032 AC_MSG_CHECKING([Diem Computime Radio Clock])
3033 AC_ARG_ENABLE(COMPUTIME,
3034     AC_HELP_STRING([--enable-COMPUTIME], [s Diem Computime Radio Clock]),
3035     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3036 if test "$ntp_ok" = "yes"; then
3037     ntp_libparse=yes
3038     ntp_refclock=yes
3039     AC_DEFINE(CLOCK_COMPUTIME, 1, [Diems Computime Radio Clock?])
3041 AC_MSG_RESULT($ntp_ok)
3042 case "$ntp_ok$ntp_canparse" in
3043  yesno)
3044     AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
3045     ;;
3046 esac
3048 AC_MSG_CHECKING([ELV/DCF7000 clock])
3049 AC_ARG_ENABLE(DCF7000,
3050     AC_HELP_STRING([--enable-DCF7000], [s ELV/DCF7000 clock]),
3051     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3052 if test "$ntp_ok" = "yes"; then
3053     ntp_libparse=yes
3054     ntp_refclock=yes
3055     AC_DEFINE(CLOCK_DCF7000, 1, [ELV/DCF7000 clock?])
3057 AC_MSG_RESULT($ntp_ok)
3058 case "$ntp_ok$ntp_canparse" in
3059  yesno)
3060     AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
3061     ;;
3062 esac
3064 AC_MSG_CHECKING([HOPF 6021 clock])
3065 AC_ARG_ENABLE(HOPF6021,
3066     AC_HELP_STRING([--enable-HOPF6021 ], [s HOPF 6021 clock]),
3067     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3068 if test "$ntp_ok" = "yes"; then
3069     ntp_libparse=yes
3070     ntp_refclock=yes
3071     AC_DEFINE(CLOCK_HOPF6021, 1, [HOPF 6021 clock?])
3073 AC_MSG_RESULT($ntp_ok)
3074 case "$ntp_ok$ntp_canparse" in
3075  yesno)
3076     AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
3077     ;;
3078 esac
3080 AC_MSG_CHECKING([Meinberg clocks])
3081 AC_ARG_ENABLE(MEINBERG,
3082     AC_HELP_STRING([--enable-MEINBERG], [s Meinberg clocks]),
3083     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3084 if test "$ntp_ok" = "yes"; then
3085     ntp_libparse=yes
3086     ntp_refclock=yes
3087     AC_DEFINE(CLOCK_MEINBERG, 1, [Meinberg clocks])
3089 AC_MSG_RESULT($ntp_ok)
3090 case "$ntp_ok$ntp_canparse" in
3091  yesno)
3092     AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
3093     ;;
3094 esac
3096 AC_MSG_CHECKING([DCF77 raw time code])
3097 AC_ARG_ENABLE(RAWDCF,
3098     AC_HELP_STRING([--enable-RAWDCF], [s DCF77 raw time code]),
3099     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3100 if test "$ntp_ok" = "yes"; then
3101     ntp_libparse=yes
3102     ntp_parseutil=yes
3103     ntp_refclock=yes
3104     ntp_rawdcf=yes
3105     AC_DEFINE(CLOCK_RAWDCF, 1, [DCF77 raw time code])
3107 AC_MSG_RESULT($ntp_ok)
3108 case "$ntp_ok$ntp_canparse" in
3109  yesno)
3110     AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
3111     ;;
3112 esac
3114 case "$ntp_rawdcf" in
3115  yes)
3116     AC_CACHE_CHECK([if we must enable parity for RAWDCF],
3117     ac_cv_var_rawdcf_parity,
3118     [ans=no
3119     case "$host" in
3120      *-*-*linux*)
3121         ans=yes
3122         ;;
3123     esac
3124     ac_cv_var_rawdcf_parity=$ans])
3125     case "$ac_cv_var_rawdcf_parity" in
3126      yes) AC_DEFINE(RAWDCF_NO_IGNPAR, 1, [Should we not IGNPAR (Linux)?]) ;;
3127     esac
3128     ;;
3130  *) # HMS: Is this a good idea?
3131     ac_cv_var_rawdcf_parity=no
3132     ;;
3133 esac
3135 AC_MSG_CHECKING([RCC 8000 clock])
3136 AC_ARG_ENABLE(RCC8000,
3137     AC_HELP_STRING([--enable-RCC8000], [s RCC 8000 clock]),
3138     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3139 if test "$ntp_ok" = "yes"; then
3140     ntp_libparse=yes
3141     ntp_refclock=yes
3142     AC_DEFINE(CLOCK_RCC8000, 1, [RCC 8000 clock])
3144 AC_MSG_RESULT($ntp_ok)
3145 case "$ntp_ok$ntp_canparse" in
3146  yesno)
3147     AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
3148     ;;
3149 esac
3151 AC_MSG_CHECKING([Schmid DCF77 clock])
3152 AC_ARG_ENABLE(SCHMID,
3153     AC_HELP_STRING([--enable-SCHMID ], [s Schmid DCF77 clock]),
3154     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3155 if test "$ntp_ok" = "yes"; then
3156     ntp_libparse=yes
3157     ntp_refclock=yes
3158     AC_DEFINE(CLOCK_SCHMID, 1, [Schmid DCF77 clock])
3160 AC_MSG_RESULT($ntp_ok)
3161 case "$ntp_ok$ntp_canparse" in
3162  yesno)
3163     AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
3164     ;;
3165 esac
3167 AC_MSG_CHECKING([Trimble GPS receiver/TAIP protocol])
3168 AC_ARG_ENABLE(TRIMTAIP,
3169     AC_HELP_STRING([--enable-TRIMTAIP], [s Trimble GPS receiver/TAIP protocol]),
3170     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3171 if test "$ntp_ok" = "yes"; then
3172     ntp_libparse=yes
3173     ntp_refclock=yes
3174     AC_DEFINE(CLOCK_TRIMTAIP, 1, [Trimble GPS receiver/TAIP protocol])
3176 AC_MSG_RESULT($ntp_ok)
3177 case "$ntp_ok$ntp_canparse" in
3178  yesno)
3179     AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
3180     ;;
3181 esac
3183 AC_MSG_CHECKING([Trimble GPS receiver/TSIP protocol])
3184 AC_ARG_ENABLE(TRIMTSIP,
3185     AC_HELP_STRING([--enable-TRIMTSIP], [s Trimble GPS receiver/TSIP protocol]),
3186     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3187 if test "$ntp_ok" = "yes"; then
3188     ntp_libparse=yes
3189     ntp_refclock=yes
3190     AC_DEFINE(CLOCK_TRIMTSIP, 1, [Trimble GPS receiver/TSIP protocol])
3192 AC_MSG_RESULT($ntp_ok)
3193 case "$ntp_ok$ntp_canparse" in
3194  yesno)
3195     AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
3196     ;;
3197 esac
3199 AC_MSG_CHECKING([WHARTON 400A Series clock])
3200 AC_ARG_ENABLE(WHARTON,
3201     AC_HELP_STRING([--enable-WHARTON], [s WHARTON 400A Series clock]),
3202     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3203 if test "$ntp_ok" = "yes"; then
3204     ntp_libparse=yes
3205     ntp_refclock=yes
3206     AC_DEFINE(CLOCK_WHARTON_400A, 1, [WHARTON 400A Series protocol])
3208 AC_MSG_RESULT($ntp_ok)
3209 case "$ntp_ok$ntp_canparse" in
3210  yesno)
3211     AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
3212     ;;
3213 esac
3215 AC_MSG_CHECKING([VARITEXT clock])
3216 AC_ARG_ENABLE(VARITEXT,
3217     AC_HELP_STRING([--enable-VARITEXT], [s VARITEXT clock]),
3218     [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
3219 if test "$ntp_ok" = "yes"; then
3220     ntp_libparse=yes
3221     ntp_refclock=yes
3222     AC_DEFINE(CLOCK_VARITEXT, 1, [VARITEXT protocol])
3224 AC_MSG_RESULT($ntp_ok)
3225 case "$ntp_ok$ntp_canparse" in
3226  yesno)
3227     AC_MSG_ERROR([That's a parse clock and this system doesn't support it!])
3228     ;;
3229 esac
3230 AC_SUBST(LIBPARSE)
3231 AC_SUBST(MAKE_LIBPARSE)
3232 AC_SUBST(MAKE_LIBPARSE_KERNEL)
3233 AC_SUBST(MAKE_CHECK_Y2K)
3234 AC_MSG_CHECKING([if we need to make and use the parse libraries])
3235 ans=no
3236 case "$ntp_libparse" in
3237  yes)
3238     ans=yes
3239     AC_DEFINE(CLOCK_PARSE, 1, [PARSE driver interface])
3240     LIBPARSE=../libparse/libparse.a
3241     MAKE_LIBPARSE=libparse.a
3242     # HMS: check_y2k trips the 34 year problem now...
3243     false && MAKE_CHECK_Y2K=check_y2k
3244     ;;
3245 esac
3246 AC_MSG_RESULT([$ans])
3249 # AC_SUBST(RSAOBJS)
3250 # AC_SUBST(RSASRCS)
3251 # AC_SUBST(RSADIR)
3252 # AC_SUBST(RSAREF)
3253 # AC_SUBST(LIBRSAREF)
3254 # AC_SUBST(MAKE_LIBRSAREF)
3256 AC_SUBST(OPENSSL)
3257 AC_SUBST(OPENSSL_INC)
3258 AC_SUBST(OPENSSL_LIB)
3260 AC_MSG_CHECKING([for openssl library directory])
3261 AC_ARG_WITH(openssl-libdir,
3262         AC_HELP_STRING([--with-openssl-libdir], [+ =/something/reasonable]),
3263 [ans=$withval],
3264 [case "$build" in
3265  $host) ans=yes ;;
3266  *)     ans=no ;;
3267 esac])
3268 case "$ans" in
3269  no) ;;
3270  yes) # Look in:
3271     ans="/usr/lib /usr/lib/openssl /usr/sfw/lib /usr/local/lib /usr/local/ssl/lib /lib"
3272     ;;
3273  *) # Look where they said
3274     ;;
3275 esac
3276 case "$ans" in
3277  no) ;;
3278  *) # Look for libcrypto.a and libssl.a:
3279     for i in $ans no
3280     do
3281         case "$host" in
3282          *-*-darwin*)
3283             test -f $i/libcrypto.dylib -a -f $i/libssl.dylib && break
3284             ;;
3285          *)
3286             test -f $i/libcrypto.so -a -f $i/libssl.so && break
3287             test -f $i/libcrypto.a -a -f $i/libssl.a && break
3288             ;;
3289         esac
3290     done
3291     case "$i" in
3292      no)
3293         ans=no
3294         OPENSSL_LIB=
3295         ;;
3296      *) ans=$i
3297         OPENSSL_LIB=$ans
3298         ;;
3299     esac
3300     ;;
3301 esac
3302 AC_MSG_RESULT([$ans])
3304 AC_MSG_CHECKING([for openssl include directory])
3305 AC_ARG_WITH(openssl-incdir,
3306         AC_HELP_STRING([--with-openssl-incdir], [+ =/something/reasonable]),
3307 [ans=$withval],
3308 [case "$build" in
3309  $host) ans=yes ;;
3310  *)     ans=no ;;
3311 esac])
3312 case "$ans" in
3313  no) ;;
3314  yes) # look in:
3315     ans="/usr/include /usr/sfw/include /usr/local/include /usr/local/ssl/include"
3316     ;;
3317  *) # Look where they said
3318     ;;
3319 esac
3320 case "$ans" in
3321  no) ;;
3322  *) # look for openssl/opensslconf.h:
3323     for i in $ans no
3324     do
3325         test -f $i/openssl/opensslconf.h && break
3326     done
3327     case "$i" in
3328      no)
3329         ans=no
3330         OPENSSL_INC=
3331         ;;
3332      *) ans=$i
3333         OPENSSL_INC=$ans
3334         ;;
3335     esac
3336     ;;
3337 esac
3338 AC_MSG_RESULT([$ans])
3340 AC_MSG_CHECKING([if we will use crypto])
3341 AC_ARG_WITH(crypto,
3342         AC_HELP_STRING([--with-crypto], [+ =openssl]),
3343 [ans=$withval], [ans=yes])
3344 case "$ans" in
3345  no)
3346     ;;
3347  yes|openssl)
3348     if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INC"
3349     then
3350         ans=no
3351     else
3352         ans=yes
3353     fi
3354 esac
3355 ntp_openssl=$ans
3356 AC_MSG_RESULT([$ans])
3358 case "$ntp_openssl" in
3359  yes)
3360     # We have OpenSSL inc/lib - use them.
3361     CPPFLAGS="$CPPFLAGS -I$OPENSSL_INC"
3362     LDFLAGS="$LDFLAGS -L$OPENSSL_LIB"
3363     case "$need_dash_r" in
3364      1) LDFLAGS="$LDFLAGS -R$OPENSSL_LIB"
3365     esac
3366     AC_SUBST(LCRYPTO, [-lcrypto])
3367     AC_DEFINE(OPENSSL, , [Use OpenSSL?])
3368 esac
3371 # OpenSSL has a number of callback prototypes inside other function
3372 # prototypes which trigger copious warnings with -Wstrict-prototypes,
3373 # (which is included in -Wall).
3375 # An example:
3377 # int i2d_RSA_NET(const RSA *a, unsigned char **pp, 
3378 #                 int (*cb)(), int sgckey);
3379 #                 ^^^^^^^^^^^
3381 # The OpenSSL headers probably haven't been fixed in this regard
3382 # due to the hoops you have to jump through to stay compatible with
3383 # K&R C compilers.
3385 case "$GCC$ntp_openssl" in
3386  yesyes)
3387     CFLAGS="$CFLAGS -Wno-strict-prototypes"
3388 esac
3390 AC_MSG_CHECKING([if we want to compile with ElectricFence])
3391 AC_ARG_WITH(electricfence,
3392         AC_HELP_STRING([--with-electricfence], [- compile with ElectricFence malloc debugger]),
3393 [ans=$withval], [ans=no])
3394 case "$ans" in
3395  no) ;;
3396  *)
3397     LIBS="$LIBS \${top_builddir}/ElectricFence/libefence.a"
3398     EF_PROGS="eftest tstheap"
3399     AC_SUBST(EF_PROGS)
3400     EF_LIBS=libefence.a
3401     AC_SUBST(EF_LIBS)
3402     ans=yes
3403     ;;
3404 esac
3405 AC_MSG_RESULT([$ans])
3407 AC_SUBST(MAKE_CHECK_LAYOUT)
3408 AC_MSG_CHECKING([if we want to run check-layout])
3409 case "$cross_compiling$PATH_PERL" in
3410  no/*)
3411     MAKE_CHECK_LAYOUT=check-layout
3412     ans=yes
3413     ;;
3414  *)
3415     ans=no
3416     ;;
3417 esac
3418 AC_MSG_RESULT([$ans])
3420 AC_SUBST(TESTDCF)
3421 AC_SUBST(DCFD)
3423 AC_MSG_CHECKING([if we can make dcf parse utilities])
3424 ans=no
3425 if test "$ntp_parseutil" = "yes"; then
3426     case "$host" in
3427      *-*-sunos4*|*-*-solaris2*|*-*-*linux*|*-*-netbsd*)
3428         ans="dcfd testdcf"
3429         DCFD=dcfd
3430         TESTDCF=testdcf
3431         ;;
3432     esac
3434 AC_MSG_RESULT([$ans])
3436 AC_SUBST(MAKE_PARSEKMODULE)
3437 AC_MSG_CHECKING([if we can build kernel streams modules for parse])
3438 ans=no
3439 case "$ntp_parseutil$ac_cv_header_sys_stropts_h" in
3440  yesyes)
3441     case "$host" in
3442      sparc-*-sunos4*)
3443         case "$ac_cv_var_kernel_pll" in
3444         yes)
3445             AC_DEFINE(PPS_SYNC, 1, [PARSE kernel PLL PPS support])
3446             ;;
3447         esac
3448         ans=parsestreams
3449         MAKE_PARSEKMODULE=parsestreams.loadable_module.o
3450         ;;
3451      sparc-*-solaris2*)
3452         ans=parsesolaris
3453         MAKE_PARSEKMODULE=parse
3454         AC_CHECK_HEADERS([strings.h])
3455         ;;
3456     esac
3457     ;;
3458 esac
3459 AC_MSG_RESULT([$ans])
3461 AC_MSG_CHECKING([if we need basic refclock support])
3462 if test "$ntp_refclock" = "yes"; then
3463     AC_DEFINE(REFCLOCK, 1, [Basic refclock support?])
3465 AC_MSG_RESULT($ntp_refclock)
3467 dnl Things that can be made in clockstuff/
3468 AC_SUBST(PROPDELAY)     dnl Set to "propdelay"
3469 AC_SUBST(CHUTEST)       dnl Set to "chutest"
3470 AC_SUBST(CLKTEST)       dnl Set to "clktest"
3472 AC_SUBST(MAKE_ADJTIMED)
3473 AC_MSG_CHECKING(if we want HP-UX adjtimed support)
3474 case "$host" in
3475  *-*-hpux[[56789]]*)
3476     ans=yes
3477     ;;
3478  *) ans=no
3479     ;;
3480 esac
3481 if test "$ans" = "yes"; then
3482     MAKE_ADJTIMED=adjtimed
3483     AC_DEFINE(NEED_HPUX_ADJTIME, 1, [Do we need HPUX adjtime() library support?])
3485 AC_MSG_RESULT([$ans])
3487 AC_MSG_CHECKING([if we want QNX adjtime support])
3488 case "$host" in
3489  *-*-qnx*)
3490     ans=yes
3491     ;;
3492  *) ans=no
3493     ;;
3494 esac
3495 if test "$ans" = "yes"; then
3496     AC_DEFINE(NEED_QNX_ADJTIME, 1, [Do we need the qnx adjtime call?])
3498 AC_MSG_RESULT([$ans])
3500 AC_MSG_CHECKING([if we can read kmem])
3502 #  the default is to enable it if the system has the capability
3504 case "$ac_cv_func_nlist$ac_cv_func_K_open$ac_cv_func_kvm_open" in
3505  *yes*)
3506     ans=yes
3507     ;;
3508  *) ans=no
3509 esac
3511 case "$host" in
3512  *-*-domainos)  # Won't be found...
3513     ans=no
3514     ;;
3515  *-*-hpux*)
3516     #ans=no
3517     ;;
3518  *-*-irix[[456]]*)
3519     ans=no
3520     ;;
3521  *-*-*linux*)
3522     ans=no
3523     ;;
3524  *-*-winnt3.5)
3525     ans=no
3526     ;;
3527  *-*-unicosmp*)
3528     ans=no
3529     ;;
3530 esac
3532 # --enable-kmem / --disable-kmem controls if present
3533 AC_ARG_ENABLE(
3534     [kmem],
3535     AC_HELP_STRING(
3536         [--enable-kmem],
3537         [s read /dev/kmem for tick and/or tickadj]
3538     ),
3539     [ans=$enableval]
3542 AC_MSG_RESULT([$ans])
3544 case "$ans" in
3545  yes)
3546     can_kmem=yes
3547     ;;
3548  *) 
3549     can_kmem=no
3550     AC_DEFINE(NOKMEM, 1, [Should we NOT read /dev/kmem?])
3551 esac
3554 AC_MSG_CHECKING([if adjtime is accurate])
3556 # target-dependent defaults
3558 case "$host" in
3559  i386-sequent-ptx*)
3560     ans=no
3561     ;;
3562  i386-unknown-osf1*)
3563     ans=yes
3564     ;;
3565  mips-sgi-irix[[456]]*)
3566     ans=yes
3567     ;;
3568  *-fujitsu-uxp*)
3569     ans=yes
3570     ;;
3571  *-ibm-aix[[456]]*)
3572     ans=yes
3573     ;;
3574  *-*-*linux*)
3575     ans=yes
3576     ;;
3577  *-*-solaris2.[[01]])
3578     ans=no
3579     ;;
3580  *-*-solaris2*)
3581     ans=yes
3582     ;;
3583  *-*-unicosmp*)
3584     ans=yes
3585     ;;
3586  *) ans=no
3587 esac
3589 # --enable-accurate-adjtime / --disable-accurate-adjtime
3590 # override the default
3591 AC_ARG_ENABLE([accurate-adjtime],
3592     AC_HELP_STRING(
3593         [--enable-accurate-adjtime], 
3594         [s the adjtime() call is accurate]
3595     ),
3596     [ans=$enableval],
3599 AC_MSG_RESULT([$ans])
3601 case "$ans" in
3602  yes) 
3603     AC_DEFINE(ADJTIME_IS_ACCURATE, 1, [Is adjtime() accurate?])
3604     adjtime_is_accurate=yes
3605     ;;
3606  *)
3607     adjtime_is_accurate=no
3608 esac
3610 AC_CACHE_CHECK([the name of 'tick' in the kernel],
3611 ac_cv_var_nlist_tick,
3612 [ans=_tick
3613 case "$host" in
3614  m68*-hp-hpux*) # HP9000/300?
3615     ans=_old_tick
3616     ;;
3617  *-apple-aux[[23]]*)
3618     ans=tick
3619     ;;
3620  *-hp-hpux*)
3621     ans=old_tick
3622     ;;
3623  *-ibm-aix[[3456]]*)
3624     ans=no
3625     ;;
3626  *-*-mpeix*)
3627     ans=no
3628     ;;
3629  *-*-ptx*)
3630     ans=tick
3631     ;;
3632  *-*-sco3.2v[[45]]*)
3633     ans=no
3634     ;;
3635  *-*-solaris2*)
3636     ans=nsec_per_tick
3637     ;;
3638  *-*-sysv4*)
3639     ans=tick
3640     ;;
3641 esac
3642 ac_cv_var_nlist_tick=$ans])
3643 case "$ac_cv_var_nlist_tick" in
3644  ''|no) ;;      # HMS: I think we can only get 'no' here...
3645  *) AC_DEFINE_UNQUOTED(K_TICK_NAME, "$ac_cv_var_nlist_tick", [What is the name of TICK in the kernel?]) ;;
3646 esac
3648 AC_CACHE_CHECK([for the units of 'tick'],
3649 ac_cv_var_tick_nano,
3650 [ans=usec
3651 case "$host" in
3652  *-*-solaris2*)
3653     ans=nsec
3654     ;;
3655 esac
3656 ac_cv_var_tick_nano=$ans])
3657 case "$ac_cv_var_tick_nano" in
3658  nsec)
3659     AC_DEFINE(TICK_NANO, 1, [Is K_TICK_NAME in nanoseconds?])
3660     ;;
3661 esac
3663 AC_CACHE_CHECK([the name of 'tickadj' in the kernel],
3664 ac_cv_var_nlist_tickadj,
3665 [ans=_tickadj
3666 case "$host" in
3667  m68*-hp-hpux*) # HP9000/300?
3668     ans=_tickadj
3669     ;;
3670  *-apple-aux[[23]]*)
3671     ans=tickadj
3672     ;;
3673  *-hp-hpux10*)
3674     ans=no
3675     ;;
3676  *-hp-hpux9*)
3677     ans=no
3678     ;;
3679  *-hp-hpux*)
3680     ans=tickadj
3681     ;;
3682  *-*-aix*)
3683     ans=tickadj
3684     ;;
3685  *-*-mpeix*)
3686     ans=no
3687     ;;
3688  *-*-ptx*)
3689     ans=tickadj
3690     ;;
3691  *-*-sco3.2v4*)
3692     ans=no
3693     ;;
3694  *-*-sco3.2v5.0*)
3695     ans=clock_drift
3696     ;;
3697  *-*-solaris2*)
3698     ans=no      # hrestime_adj
3699     ;;
3700  *-*-sysv4*)
3701     ans=tickadj
3702     ;;
3703 esac
3704 ac_cv_var_nlist_tickadj=$ans])
3705 case "$ac_cv_var_nlist_tickadj" in
3706  ''|no) ;;      # HMS: I think we can only get 'no' here...
3707  *) AC_DEFINE_UNQUOTED(K_TICKADJ_NAME, "$ac_cv_var_nlist_tickadj", [What is the name of TICKADJ in the kernel?]) ;;
3708 esac
3710 AC_CACHE_CHECK([for the units of 'tickadj'],
3711 ac_cv_var_tickadj_nano,
3712 [ans=usec
3713 case "$host" in
3714  *-*-solaris2*)
3715     ans=nsec
3716     ;;
3717 esac
3718 ac_cv_var_tickadj_nano=$ans])
3719 case "$ac_cv_var_tickadj_nano" in
3720  nsec)
3721     AC_DEFINE(TICKADJ_NANO, 1, [Is K_TICKADJ_NAME in nanoseconds?])
3722     ;;
3723 esac
3725 AC_CACHE_CHECK([half-heartedly for 'dosynctodr' in the kernel],
3726 ac_cv_var_nlist_dosynctodr,
3727 [case "$host" in
3728  *-apple-aux[[23]]*)
3729     ans=no
3730     ;;
3731  *-sni-sysv*)
3732     ans=dosynctodr
3733     ;;
3734  *-*-aix*)
3735     ans=dosynctodr
3736     ;;
3737  *-*-hpux*)
3738     ans=no
3739     ;;
3740  *-*-mpeix*)
3741     ans=no
3742     ;;
3743  *-*-nextstep*)
3744     ans=_dosynctodr
3745     ;;
3746  *-*-ptx*)
3747     ans=doresettodr
3748     ;;
3749  *-*-sco3.2v4*)
3750     ans=no
3751     ;;
3752  *-*-sco3.2v5*)
3753     ans=track_rtc
3754     ;;
3755  *-*-solaris2*)
3756     ans=dosynctodr
3757     ;;
3758  *-*-sysv4*)
3759     ans=doresettodr
3760     ;;
3761  *)
3762     ans=_dosynctodr
3763     ;;
3764 esac
3765 ac_cv_var_nlist_dosynctodr=$ans])
3766 case "$ac_cv_var_nlist_dosynctodr" in
3767  no) ;;
3768  *)  AC_DEFINE_UNQUOTED(K_DOSYNCTODR_NAME, "$ac_cv_var_nlist_dosynctodr", [What is (probably) the name of DOSYNCTODR in the kernel?])
3769      ;;
3770 esac
3772 AC_CACHE_CHECK([half-heartedly for 'noprintf' in the kernel],
3773 ac_cv_var_nlist_noprintf,
3774 [case "$host" in
3775  *-apple-aux[[23]]*)
3776     ans=no
3777     ;;
3778  *-sni-sysv*)
3779     ans=noprintf
3780     ;;
3781  *-*-aix*)
3782     ans=noprintf
3783     ;;
3784  *-*-hpux*)
3785     ans=no
3786     ;;
3787  *-*-mpeix*)
3788     ans=no
3789     ;;
3790  *-*-ptx*)
3791     ans=noprintf
3792     ;;
3793  *-*-nextstep*)
3794     ans=_noprintf
3795     ;;
3796  *-*-solaris2*)
3797     ans=noprintf
3798     ;;
3799  *-*-sysv4*)
3800     ans=noprintf
3801     ;;
3802  *)
3803     ans=_noprintf
3804     ;;
3805 esac
3806 ac_cv_var_nlist_noprintf=$ans])
3807 case "$ac_cv_var_nlist_noprintf" in
3808  no) ;;
3809  *)  AC_DEFINE_UNQUOTED(K_NOPRINTF_NAME, "$ac_cv_var_nlist_noprintf", [What is (probably) the name of NOPRINTF in the kernel?])
3810      ;;
3811 esac
3813 dnl The tick/tickadj sections were written by Skippy, who never learned
3814 dnl that it's impolite (horridly gross) to show your guts in public.
3816 dnl     tick            tickadj 
3817 dnl     10000           80          Unixware
3818 dnl     1000000L/hz     tick/16     (Solaris,UXPV,HPUX) && ADJTIME_IS_ACCURATE
3819 dnl     10000           150         sgi IRIX
3820 dnl     1000000L/hz     1000        RS6000 && NOKMEM
3821 dnl     1000000L/hz     668         DOMAINOS && NOKMEM
3822 dnl     1000000L/hz     500/HZ      other && NOKMEM
3823 dnl     txc.tick        1           Linux
3824 dnl     (every / 10)    50          WinNT - tickadj is roughly 500/hz
3825 dnl     1000000L/hz     (nlist)     (Solaris && !ADJTIME_IS_ACCURATE),
3826 dnl                                 (RS6000 && !NOKMEM), SINIX MIPS
3828 dnl But we'll only use these "values" if we can't find anything else.
3830 AC_MSG_CHECKING([for a default value for 'tick'])
3832 # target-dependent default for tick
3834 case "$host" in
3835  *-*-pc-cygwin*)
3836     AC_MSG_ERROR([tick needs work for cygwin])
3837     ;;
3838  *-univel-sysv*)
3839     ans=10000
3840     ;;
3841  *-*-irix*)
3842     ans=10000
3843     ;;
3844  *-*-*linux*)
3845     ans=txc.tick
3846     ;;
3847  *-*-mpeix*)
3848     ans=no
3849     ;;
3850  *-*-winnt3.5)
3851     ans='(every / 10)'
3852     ;;
3853  *-*-unicosmp*)
3854     ans=10000
3855     ;;
3856  *)
3857     ans='1000000L/hz'
3858     ;;
3859 esac
3861 AC_ARG_ENABLE(
3862     [tick],
3863     AC_HELP_STRING(
3864         [--enable-tick=VALUE],
3865         [s force a value for 'tick']
3866     ),
3867     [ans=$enableval]
3870 AC_MSG_RESULT([$ans])
3872 case "$ans" in
3873  ''|no) ;;      # HMS: I think we can only get 'no' here...
3874  *) AC_DEFINE_UNQUOTED(PRESET_TICK, [$ans], [Preset a value for 'tick'?]) ;;
3875 esac
3878 AC_MSG_CHECKING([for a default value for 'tickadj'])
3880 # target-specific default
3882 ans='500/hz'
3884 case "$host" in
3885  *-fujitsu-uxp*)
3886     case "$adjtime_is_accurate" in
3887      yes)
3888          ans='tick/16'
3889     esac
3890     ;;
3891  XXX-*-pc-cygwin*)
3892     ans=no
3893     ;;
3894  *-univel-sysv*)
3895     ans=80
3896     ;;
3897  *-*-aix*)
3898     case "$can_kmem" in
3899      no)
3900         ans=1000
3901     esac
3902     ;;
3903  *-*-domainos)  # Skippy: won't be found...
3904     case "$can_kmem" in
3905      no)
3906         ans=668
3907     esac
3908     ;;
3909  *-*-hpux*)
3910     case "$adjtime_is_accurate" in
3911      yes)
3912         ans='tick/16'
3913     esac
3914     ;;
3915  *-*-irix*)
3916     ans=150
3917     ;;
3918  *-*-mpeix*)
3919     ans=no
3920     ;;
3921  *-*-sco3.2v5.0*)
3922     ans=10000L/hz
3923     ;;
3924  *-*-winnt3.5)
3925     ans=50
3926     ;;
3927  *-*-unicosmp*)
3928     ans=150
3929 esac
3931 AC_ARG_ENABLE(
3932     [tickadj],
3933     AC_HELP_STRING(
3934         [--enable-tickadj=VALUE],
3935         [s force a value for 'tickadj']
3936     ),
3937     [ans=$enableval]
3940 AC_MSG_RESULT([$ans])
3942 default_tickadj=$ans
3944 case "$default_tickadj" in
3945  ''|no) ;;      # HMS: I think we can only get 'no' here...
3946  *) AC_DEFINE_UNQUOTED(PRESET_TICKADJ, $default_tickadj, [Preset a value for 'tickadj'?]) ;;
3947 esac
3949 # Newer versions of ReliantUNIX round adjtime() values down to
3950 # 1/100s (system tick). Sigh ...
3951 # Unfortunately, there is no easy way to know if particular release
3952 # has this "feature" or any obvious way to test for it.
3953 case "$host" in
3954  mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX_CLOCK, 1, [Do we want the ReliantUNIX clock hacks?]) ;;
3955 esac
3957 case "$host" in
3958  *-*-sco3.2v5*) AC_DEFINE(SCO5_CLOCK, 1, [Do we want the SCO clock hacks?]) ;;
3959 esac
3961 ac_cv_make_tickadj=yes
3962 case "$can_kmem$ac_cv_var_tick$default_tickadj" in
3963  nonono)        # Don't read KMEM, no presets.  Bogus.
3964     AC_MSG_WARN([Can't read kmem, no PRESET_TICK or PRESET_TICKADJ.  No tickadj.])
3965     ac_cv_make_tickadj=no
3966     ;;
3967  nono*)         # Don't read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
3968     AC_MSG_WARN([Can't read kmem but no PRESET_TICK.  No tickadj.])
3969     ac_cv_make_tickadj=no
3970     ;;
3971  no*no)         # Don't read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Bogus.
3972     AC_MSG_WARN([Can't read kmem but no PRESET_TICKADJ.  No tickadj.])
3973     ac_cv_make_tickadj=no
3974     ;;
3975  no*)           # Don't read KMEM, PRESET_TICK and PRESET_TICKADJ.  Cool.
3976     ;;
3977  yesnono)       # Read KMEM, no presets.  Cool.
3978     ;;
3979  yesno*)        # Read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
3980     AC_MSG_WARN([PRESET_TICKADJ is defined but not PRESET_TICK.  Please report this.])
3981     ;;
3982  yes*no)        # Read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Cool.
3983     ;;
3984  yes*)          # READ KMEM, PRESET_TICK and PRESET_TICKADJ.
3985     ;;
3986  *)             # Generally bogus.
3987     AC_MSG_ERROR([This shouldn't happen.])
3988     ;;
3989 esac
3991 AC_SUBST(MAKE_NTPTIME)
3992 AC_CACHE_CHECK([if we want and can make the ntptime utility], ac_cv_make_ntptime,
3993 [case "$host" in
3994  *) case "$ac_cv_struct_ntptimeval$ac_cv_var_kernel_pll" in
3995      yesyes)
3996         ans=yes
3997         ;;
3998      *)
3999         ans=no
4000         ;;
4001     esac
4002     ;;
4003 esac
4004 ac_cv_make_ntptime=$ans])
4005 case "$ac_cv_make_ntptime" in
4006  yes)
4007     MAKE_NTPTIME=ntptime
4008     ;;
4009 esac
4011 AC_SUBST(MAKE_TICKADJ)
4012 case "$host" in
4013  mips-sni-sysv4*)
4014     # tickadj is pretty useless on newer versions of ReliantUNIX
4015     # Do not bother
4016     ac_cv_make_tickadj=no
4017     ;;
4018  *-*-irix*)
4019     ac_cv_make_tickadj=no
4020     ;;
4021  *-*-solaris2*)
4022     # DLM says tickadj is a no-no starting with solaris2.5
4023     case "$host" in
4024      *-*-solaris2.1[[0-9]]*)
4025         ac_cv_make_tickadj=no
4026         ;;
4027      *-*-solaris2.[[0-4]]*) ;;
4028      *) ac_cv_make_tickadj=no ;;
4029     esac
4030     ;;
4031  *-*-unicosmp*)
4032     ac_cv_make_tickadj=no
4033     ;;
4034 esac
4037 # Despite all the above, we always make tickadj.  Setting
4038 # ac_cv_make_tickadj before AC_CACHE_CHECK will cause a false
4039 # report that the configuration variable was cached.  It may
4040 # be better to simply remove the hunk above, I did not want
4041 # to remove it if there is hope it will be used again.
4043 $as_unset ac_cv_make_tickadj
4045 AC_CACHE_CHECK([if we want and can make the tickadj utility], ac_cv_make_tickadj,
4046 ac_cv_make_tickadj=yes)
4047 case "$ac_cv_make_tickadj" in
4048  yes)
4049     MAKE_TICKADJ=tickadj
4050     ;;
4051 esac
4053 AC_SUBST(MAKE_TIMETRIM)
4054 AC_CACHE_CHECK([if we want and can make the timetrim utility], ac_cv_make_timetrim,
4055 [case "$host" in
4056  *-*-irix*)
4057     ac_cv_make_timetrim=yes
4058     ;;
4059  *-*-unicosmp*)
4060     ac_cv_make_timetrim=yes
4061     ;;
4062  *)
4063     ac_cv_make_timetrim=no
4064     ;;
4065 esac])
4066 case "$ac_cv_make_timetrim" in
4067  yes)
4068     MAKE_TIMETRIM=timetrim
4069     ;;
4070 esac
4072 AC_SUBST(MAKE_LIBNTPSIM)
4073 AC_SUBST(MAKE_NTPDSIM)
4075 AC_MSG_CHECKING([if we want to build the NTPD simulator])
4077 AC_ARG_ENABLE(
4078     [simulator],
4079     AC_HELP_STRING(
4080         [--enable-simulator],
4081         [- build/install the NTPD simulator?]
4082     ),
4083     [ans=$enableval], 
4084     [ans=no]
4087 AC_MSG_RESULT([$ans])
4089 case "$ans" in
4090  yes)
4091     MAKE_NTPDSIM=ntpdsim
4092     MAKE_LIBNTPSIM=libntpsim.a
4093     ;;
4094 esac
4096 case "$build" in
4097  $host)
4098     ;;
4099  *) case "$host" in
4100      *-*-vxworks*)
4101         LDFLAGS="$LDFLAGS -r"
4102         ;;
4103     esac
4104     ;;
4105 esac
4108 AC_MSG_CHECKING([if we want to build ntpsnmpd])
4109 AC_ARG_WITH(ntpsnmpd,
4110         AC_HELP_STRING([--with-ntpsnmpd], [s Build ntpsnmpd MIB agent?]),
4111         [ans=$withval],
4112         [case "$PATH_NET_SNMP_CONFIG" in
4113          /*)    ans=yes ;;
4114          *)     ans=no  ;;
4115         esac])
4116 AC_MSG_RESULT($ans)
4118 case "$ans" in
4119  yes)
4120     case "$PATH_NET_SNMP_CONFIG" in
4121      /*)
4122         SNMP_LIBS=`$PATH_NET_SNMP_CONFIG --agent-libs`
4123         AC_SUBST(SNMP_LIBS)
4124         # HMS: we really want to separate CPPFLAGS and CFLAGS
4125         foo=`$PATH_NET_SNMP_CONFIG --cflags`
4126         SNMP_CPPFLAGS=
4127         SNMP_CFLAGS=
4128         for i in $foo; do
4129             case "$i" in
4130              -D*|-U*|-I*)
4131                 SNMP_CPPFLAGS="$SNMP_CPPFLAGS $i"
4132                 ;;
4133             *)  SNMP_CFLAGS="$SNMP_CFLAGS $i"
4134                 ;;
4135             esac
4136         done
4137         AC_SUBST(SNMP_CPPFLAGS)
4138         AC_SUBST(SNMP_CFLAGS)
4140         save_CFLAGS=$CFLAGS
4141         save_CPPFLAGS=$CPPFLAGS
4142         save_LIBS=$LIBS
4143         CFLAGS=$SNMP_CFLAGS
4144         CPPFLAGS=$SNMP_CPPFLAGS
4146         AC_CHECK_HEADER([net-snmp/net-snmp-config.h], [MAKE_NTPSNMPD=ntpsnmpd],
4147                 [AC_MSG_WARN([net-snmp-config present but net-snmp headers are not available!])])
4149         # Do this last, as we're messing up LIBS.
4151         # check -lnetsnmp for netsnmp_daemonize
4152         LIBS=`$PATH_NET_SNMP_CONFIG --libs`
4153         AC_CHECK_LIB([netsnmp], [netsnmp_daemonize], [],
4154                 [AC_DEFINE([NEED_NETSNMP_DAEMONIZE], [1],
4155                         [We need to provide netsnmp_daemonize()])])
4157         CFLAGS=$save_CFLAGS
4158         CPPFLAGS=$save_CPPFLAGS
4159         LIBS=$save_LIBS
4161         ;;
4162      *) AC_MSG_WARN([Cannot build ntpsnmpd as desired - net-snmp-config cannot be found])
4163         ;;
4164     esac
4165     ;;
4166 esac
4167 AC_SUBST(MAKE_NTPSNMPD)
4170 AC_MSG_CHECKING([if we should always slew the time])
4172 # target-specific defaults
4174 case "$host" in
4175  *-apple-aux[[23]]*)
4176     ans=yes
4177     ;;
4178  *-*-bsdi[[012]]*)
4179     ans=no
4180     ;;
4181  *-*-bsdi*)
4182     ans=yes
4183     ;;
4184  *-*-openvms*)  # HMS: won't be found
4185     ans=yes
4186     ;;
4187  *) ans=no
4188     ;;
4189 esac
4191 # --enable-slew-always / --disable-slew-always overrides default
4193 AC_ARG_ENABLE(
4194     [slew-always],
4195     AC_HELP_STRING(
4196         [--enable-slew-always],
4197         [s always slew the time]
4198     ),
4199     [ans=$enableval]
4202 AC_MSG_RESULT([$ans])
4204 case "$ans" in
4205  yes) AC_DEFINE(SLEWALWAYS, 1, [Slew always?]) ;;
4206 esac
4208 AC_MSG_CHECKING([if we should step and slew the time])
4210 case "$host" in
4211  *-sni-sysv*)
4212     ans=yes
4213     ;;
4214  *-univel-sysv*)
4215     ans=no
4216     ;;
4217  *-*-ptx*)
4218     ans=yes
4219     ;;
4220  *-*-solaris2.1[[0-9]]*)
4221     ans=no
4222     ;;
4223  *-*-solaris2.[[012]]*)
4224     ans=yes
4225     ;;
4226  *-*-sysv4*)    # HMS: Does this catch Fujitsu UXP?
4227     ans=yes
4228     ;;
4229  *) ans=no
4230     ;;
4231 esac
4234 AC_ARG_ENABLE(
4235     [step-slew],
4236     AC_HELP_STRING(
4237         [--enable-step-slew],
4238         [s step and slew the time]
4239     ),
4240     [ans=$enableval]
4243 AC_MSG_RESULT([$ans])
4245 case "$ans" in
4246  yes) AC_DEFINE(STEP_SLEW, 1, [Step, then slew the clock?]) ;;
4247 esac
4249 AC_MSG_CHECKING([if ntpdate should step the time])
4251 case "$host" in
4252  *-apple-aux[[23]]*)
4253     ans=yes
4254     ;;
4255  *) ans=no
4256 esac
4258 AC_ARG_ENABLE(
4259     [ntpdate-step],
4260     AC_HELP_STRING(
4261         [--enable-ntpdate-step],
4262         [s if ntpdate should step the time]
4263     ),
4264     [ans=$enableval]
4267 AC_MSG_RESULT([$ans])
4269 case "$ans" in
4270  yes) AC_DEFINE(FORCE_NTPDATE_STEP, 1, [force ntpdate to step the clock if !defined(STEP_SLEW) ?]) ;;
4271 esac
4274 AC_MSG_CHECKING([if we should sync TODR clock every hour])
4276 case "$host" in
4277  *-*-nextstep*)
4278     ans=yes
4279     ;;
4280  *-*-openvms*)  # HMS: won't be found
4281     ans=yes
4282     ;;
4283  *)
4284     ans=no
4285 esac
4287 AC_ARG_ENABLE(
4288     [hourly-todr-sync],
4289     AC_HELP_STRING(
4290         [--enable-hourly-todr-sync],
4291         [s if we should sync TODR hourly]
4292     ),
4293     [ans=$enableval]
4296 AC_MSG_RESULT([$ans])
4298 case "$ac_cv_var_sync_todr" in
4299  yes) AC_DEFINE(DOSYNCTODR, 1, [synch TODR hourly?]) ;;
4300 esac
4303 AC_MSG_CHECKING([if we should avoid kernel FLL bug])
4305 case "$host" in
4306  *-*-solaris2.6)
4307     unamev=`uname -v`
4308     case "$unamev" in
4309      Generic_105181-*)
4310         old_IFS="$IFS"
4311         IFS="-"
4312         set $unamev
4313         IFS="$old_IFS"
4314         if test "$2" -ge 17
4315         then
4316             # Generic_105181-17 and higher
4317             ans=no
4318         else
4319             ans=yes
4320         fi
4321         ;;
4322      *) 
4323         ans=yes
4324     esac
4325     ;;
4326  *-*-solaris2.7)
4327     unamev=`uname -v`
4328     case "$unamev" in
4329      Generic_106541-*)
4330         old_IFS="$IFS"
4331         IFS="-"
4332         set $unamev
4333         IFS="$old_IFS"
4334         if test "$2" -ge 07
4335         then
4336             # Generic_106541-07 and higher
4337             ans=no
4338         else
4339             ans=yes
4340         fi
4341         ;;
4342      *)
4343         ans=yes
4344     esac
4345     ;;
4346  *)
4347     ans=no
4348 esac
4350 AC_ARG_ENABLE(
4351     [kernel-fll-bug],
4352     AC_HELP_STRING(
4353         [--enable-kernel-fll-bug],
4354         [s if we should avoid a kernel FLL bug]
4355     ),
4356     [ans=$enableval]
4359 AC_MSG_RESULT([$ans])
4361 case "$ans" in
4362  yes) AC_DEFINE(KERNEL_FLL_BUG, 1, [Does the kernel have an FLL bug?]) ;;
4363 esac
4366 AC_MSG_CHECKING([if we want new session key behavior])
4368 AC_ARG_ENABLE(
4369     [bug1243-fix],
4370     AC_HELP_STRING(
4371         [--enable-bug1243-fix],
4372         [+ use unmodified autokey session keys]
4373     ),
4374     [ans=$enableval],
4375     [ans=yes]
4378 AC_MSG_RESULT([$ans])
4380 case "$ans" in
4381  no)
4382     AC_DEFINE([DISABLE_BUG1243_FIX], 1, [use old autokey session key behavior?])
4383 esac
4386 AC_MSG_CHECKING([if we should use the IRIG sawtooth filter])
4388 case "$host" in
4389  *-*-solaris2.[[89]])
4390     ans=yes
4391     ;;
4392  *-*-solaris2.1[[0-9]]*)
4393     ans=yes
4394     ;;
4395  *) ans=no
4396 esac
4398 AC_ARG_ENABLE(
4399     [irig-sawtooth], 
4400     AC_HELP_STRING(
4401         [--enable-irig-sawtooth],
4402         [s if we should enable the IRIG sawtooth filter]
4403     ),
4404     [ans=$enableval]
4407 AC_MSG_RESULT([$ans])
4409 case "$ans" in
4410  yes) AC_DEFINE(IRIG_SUCKS, 1, [Should we use the IRIG sawtooth filter?]) ;;
4411 esac
4414 AC_MSG_CHECKING([if we should enable NIST lockclock scheme])
4416 AC_ARG_ENABLE(
4417         [nist], 
4418         AC_HELP_STRING(
4419             [--enable-nist],
4420             [- if we should enable the NIST lockclock scheme]
4421         ),
4422         [ans=$enableval],
4423         [ans=no]
4426 AC_MSG_RESULT([$ans])
4428 case "$ans" in
4429  yes) AC_DEFINE(LOCKCLOCK, 1, [Should we align with the NIST lockclock scheme?]) ;;
4430 esac
4433 AC_MSG_CHECKING([if we want support for Samba's signing daemon])
4435 AC_ARG_ENABLE(
4436     [ntp-signd],
4437     AC_HELP_STRING(
4438         [--enable-ntp-signd],
4439         [- Provide support for Samba's signing daemon, =/var/run/ntp_signd]
4440     ),
4441     [ans=$enableval],
4442     [ans=no]
4445 AC_MSG_RESULT([$ans])
4447 case "$ans" in
4448  no)
4449     ntp_signd_path=
4450     ;;
4451  yes)
4452     ntp_signd_path=/var/run/ntp_signd
4453     ;;
4454  *)
4455     ntp_signd_path="$ans"
4456 esac
4458 case "$ntp_signd_path" in
4459  '')
4460     ;;
4461  *)
4462     AC_DEFINE(HAVE_NTP_SIGND, ,[Do we want support for Samba's signing daemon?])
4463     AC_DEFINE_UNQUOTED(NTP_SIGND_PATH, "$ntp_signd_path", [Path to sign daemon rendezvous socket])
4464 esac
4467 AC_CHECK_HEADERS(sys/clockctl.h)
4469 case "$host" in
4470  *-*-netbsd*)
4471     ans=yes
4472     ;;
4473  *) ans=no
4474     ;;
4475 esac
4477 AC_ARG_ENABLE(
4478     [clockctl],
4479     AS_HELP_STRING(
4480         [--enable-clockctl],
4481         [s Use /dev/clockctl for non-root clock control]
4482     ),
4483     [ntp_use_dev_clockctl=$enableval],
4484     [ntp_use_dev_clockctl=$ac_cv_header_sys_clockctl_h]
4487 AC_MSG_CHECKING([[if we should use /dev/clockctl]])
4488 AC_MSG_RESULT([$ntp_use_dev_clockctl])
4491 AC_CHECK_HEADERS([sys/capability.h])
4492 AC_CHECK_HEADERS([sys/prctl.h])
4494 AC_MSG_CHECKING([[if we have linux capabilities (libcap)]])
4496 case "$ac_cv_header_sys_capability_h$ac_cv_header_sys_prctl_h" in
4497  yesyes)
4498     ntp_have_linuxcaps=yes
4499     ;;
4500  *)
4501     ntp_have_linuxcaps=no
4502 esac
4504 AC_ARG_ENABLE(
4505     [linuxcaps],
4506     AS_HELP_STRING(
4507         [--enable-linuxcaps],
4508         [+ Use Linux capabilities for non-root clock control]
4509     ),
4510     [ntp_have_linuxcaps=$enableval]
4513 AC_MSG_RESULT([$ntp_have_linuxcaps])
4515 case "$ntp_have_linuxcaps" in
4516  yes)
4517     AC_DEFINE(HAVE_LINUX_CAPABILITIES, ,[Do we have Linux capabilities?])
4518     LIBS="$LIBS -lcap"
4519 esac
4521 case "$ntp_use_dev_clockctl$ntp_have_linuxcaps" in
4522  *yes*)
4523     AC_DEFINE(HAVE_DROPROOT, ,[Can we drop root privileges?])
4524 esac
4527 AC_CHECK_HEADERS([libscf.h])
4529 case "$ac_cv_header_libscf_h" in
4530  yes)
4531     AC_SUBST(LSCF, [-lscf])
4532 esac
4534 AC_CHECK_FUNC(
4535     [setppriv],
4536     AC_DEFINE(HAVE_SOLARIS_PRIVS, ,[Are Solaris privileges available?])
4541 # ISC stuff
4544 AC_CACHE_CHECK(
4545     [struct sockaddr for sa_len],
4546     isc_cv_platform_havesalen,
4547     [
4548         AC_TRY_COMPILE(
4549             [
4550                 #include <sys/types.h>
4551                 #include <sys/socket.h>
4552             ],
4553             [
4554                 extern struct sockaddr *ps;
4555                 return ps->sa_len;
4556             ],
4557             [isc_cv_platform_havesalen=yes],
4558             [isc_cv_platform_havesalen=no]
4559         )
4560     ]
4562 if test $isc_cv_platform_havesalen = yes; then
4563     AC_DEFINE(ISC_PLATFORM_HAVESALEN, ,[struct sockaddr has sa_len?])
4566 AC_ARG_ENABLE(ipv6, AC_HELP_STRING([--enable-ipv6], [s use IPv6?]))
4568 case "$enable_ipv6" in
4569  yes|''|autodetect)
4570     case "$host" in
4571      powerpc-ibm-aix4*) ;;
4572      *)
4573         AC_DEFINE(WANT_IPV6, ,[configure --enable-ipv6])
4574         ;;
4575     esac
4576     ;;
4577  no)
4578     ;;
4579 esac
4582 AC_CACHE_CHECK(
4583     [for IPv6 structures],
4584     ac_cv_isc_found_ipv6,
4585     [
4586         AC_COMPILE_IFELSE(
4587             [
4588                 AC_LANG_PROGRAM(
4589                     [
4590                         #include <sys/types.h>
4591                         #include <sys/socket.h>
4592                         #include <netinet/in.h>
4593                     ],
4594                     [
4595                         struct sockaddr_in6 sin6;
4596                     ]
4597                 )
4598             ],
4599             [ac_cv_isc_found_ipv6=yes],
4600             [ac_cv_isc_found_ipv6=no]
4601         )
4602     ]
4606 # See whether IPv6 support is provided via a Kame add-on.
4607 # This is done before other IPv6 linking tests so LIBS is properly set.
4609 AC_MSG_CHECKING([for Kame IPv6 support])
4610 AC_ARG_WITH(kame,
4611         [AC_HELP_STRING([--with-kame], [- =/usr/local/v6])],
4612         use_kame="$withval", use_kame="no")
4615 case "$use_kame" in
4616  no)
4617     ;;
4618  yes)
4619     kame_path=/usr/local/v6
4620     ;;
4621  *)
4622     kame_path="$use_kame"
4623     ;;
4624 esac
4626 case "$use_kame" in
4627  no)
4628     AC_MSG_RESULT(no)
4629     ;;
4630  *)
4631     if test -f $kame_path/lib/libinet6.a; then
4632         AC_MSG_RESULT($kame_path/lib/libinet6.a)
4633         LIBS="-L$kame_path/lib -linet6 $LIBS"
4634     else
4635         AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
4637 Please choose the proper path with the following command:
4639     configure --with-kame=PATH
4641     fi
4642     ;;
4643 esac
4646 # Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
4647 # Including it on Kame-using platforms is very bad, though, because
4648 # Kame uses #error against direct inclusion.   So include it on only
4649 # the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
4650 # This is done before the in6_pktinfo check because that's what
4651 # netinet6/in6.h is needed for.
4653 case "$host" in
4654  *-bsdi4.[[01]]*)
4655     AC_DEFINE(ISC_PLATFORM_NEEDNETINET6IN6H, 1, [Do we need netinet6/in6.h?])
4656     isc_netinet6in6_hack="#include <netinet6/in6.h>"
4657     ;;
4658  *)
4659     isc_netinet6in6_hack=""
4660 esac
4663 # This is similar to the netinet6/in6.h issue.
4665 case "$host" in
4666  *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
4667     AC_DEFINE(ISC_PLATFORM_FIXIN6ISADDR, 1,[Do we need to fix in6isaddr?])
4668     isc_netinetin6_hack="#include <netinet/in6.h>"
4669     ;;
4670  *)
4671     isc_netinetin6_hack=""
4672 esac
4675 case "$ac_cv_isc_found_ipv6" in
4676  yes)
4677     AC_DEFINE(ISC_PLATFORM_HAVEIPV6, ,[have IPv6?])
4679     AC_CACHE_CHECK(
4680         [for in6_pktinfo],
4681         ac_cv_have_in6_pktinfo,
4682         [
4683             AC_COMPILE_IFELSE(
4684                 [
4685                     AC_LANG_PROGRAM(
4686                         [
4687                             #include <sys/types.h>
4688                             #include <sys/socket.h>
4689                             #include <netinet/in.h>
4690                             $isc_netinetin6_hack
4691                             $isc_netinet6in6_hack
4692                         ],
4693                         [
4694                             struct in6_pktinfo xyzzy;
4695                         ]
4696                     )
4697                 ],
4698                 [ac_cv_have_in6_pktinfo=yes],
4699                 [ac_cv_have_in6_pktinfo=no]
4700             )
4701         ]
4702     )
4704     case "$ac_cv_have_in6_pktinfo" in
4705      yes)
4706         AC_DEFINE(ISC_PLATFORM_HAVEIN6PKTINFO, , [have struct in6_pktinfo?])
4707     esac
4710     # HMS: Use HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID instead?
4711     AC_CACHE_CHECK(
4712         [for sockaddr_in6.sin6_scope_id],
4713         ac_cv_have_sin6_scope_id,
4714         [
4715             AC_COMPILE_IFELSE(
4716                 [
4717                     AC_LANG_PROGRAM(
4718                         [
4719                             #include <sys/types.h>
4720                             #include <sys/socket.h>
4721                             #include <netinet/in.h>
4722                             $isc_netinetin6_hack
4723                             $isc_netinet6in6_hack
4724                         ],
4725                         [
4726                             struct sockaddr_in6 xyzzy;
4727                             xyzzy.sin6_scope_id = 0;
4728                         ]
4729                     )
4730                 ],
4731                 [ac_cv_have_sin6_scope_id=yes],
4732                 [ac_cv_have_sin6_scope_id=no]
4733             )
4734         ]
4735     )
4737     case "$ac_cv_have_sin6_scope_id" in
4738      yes)
4739         AC_DEFINE(ISC_PLATFORM_HAVESCOPEID, , [have sin6_scope_id?])
4740     esac
4741 esac
4744 # We need this check run even without ac_cv_isc_found_ipv6=yes
4746 AC_CACHE_CHECK(
4747     [for in6addr_any],
4748     isc_cv_have_in6addr_any,
4749     [
4750         AC_LINK_IFELSE(
4751             [
4752                 AC_LANG_PROGRAM(
4753                     [
4754                         #include <sys/types.h>
4755                         #include <sys/socket.h>
4756                         #include <netinet/in.h>
4757                         $isc_netinetin6_hack
4758                         $isc_netinet6in6_hack
4759                     ],
4760                     [
4761                         struct in6_addr in6; 
4762                         in6 = in6addr_any;
4763                     ]
4764                 )
4765             ],
4766             [isc_cv_have_in6addr_any=yes],
4767             [isc_cv_have_in6addr_any=no]
4768         )
4769     ]
4772 case "$isc_cv_have_in6addr_any" in
4773  no)
4774     AC_DEFINE(ISC_PLATFORM_NEEDIN6ADDRANY, , [missing in6addr_any?])
4775 esac
4778 AC_CACHE_CHECK(
4779     [for struct if_laddrconf],
4780     ac_cv_isc_struct_if_laddrconf,
4781     [
4782         AC_COMPILE_IFELSE(
4783             [
4784                 AC_LANG_PROGRAM(
4785                     [
4786                         #include <sys/types.h>
4787                         #include <net/if6.h>
4788                     ],
4789                     [
4790                         struct if_laddrconf a;
4791                     ]
4792                 )
4793             ],
4794             [ac_cv_isc_struct_if_laddrconf=yes],
4795             [ac_cv_isc_struct_if_laddrconf=no]
4796         )
4797     ]
4800 case "$ac_cv_isc_struct_if_laddrconf" in
4801  yes)
4802     AC_DEFINE(ISC_PLATFORM_HAVEIF_LADDRCONF, , [have struct if_laddrconf?])
4803 esac
4805 AC_CACHE_CHECK(
4806     [for struct if_laddrreq],
4807     ac_cv_isc_struct_if_laddrreq,
4808     [
4809         AC_COMPILE_IFELSE(
4810             [
4811                 AC_LANG_PROGRAM(
4812                     [
4813                         #include <sys/types.h>
4814                         #include <net/if6.h>
4815                     ],
4816                     [
4817                         struct if_laddrreq a;
4818                     ]
4819                 )
4820             ],
4821             [ac_cv_isc_struct_if_laddrreq=yes],
4822             [ac_cv_isc_struct_if_laddrreq=no]
4823         )
4824     ]
4827 case "$ac_cv_isc_struct_if_laddrreq" in
4828  yes)
4829     AC_DEFINE(ISC_PLATFORM_HAVEIF_LADDRREQ, , [have struct if_laddrreq?])
4830 esac
4833 # Look for a sysctl call to get the list of network interfaces.
4835 AC_CACHE_CHECK(
4836     [for interface list sysctl],
4837     ac_cv_iflist_sysctl,
4838     AC_EGREP_CPP(
4839         [found_rt_iflist], 
4840         [
4841             #include <sys/param.h>
4842             #include <sys/sysctl.h>
4843             #include <sys/socket.h>
4844             #ifdef NET_RT_IFLIST  
4845             found_rt_iflist
4846             #endif
4847         ],
4848         [ac_cv_iflist_sysctl=yes],
4849         [ac_cv_iflist_sysctl=no]
4850     )
4853 case "$ac_cv_iflist_sysctl" in
4854  yes)
4855     AC_DEFINE(HAVE_IFLIST_SYSCTL,1,[have iflist_sysctl?])
4856 esac
4860 AC_MSG_CHECKING([if we want the saveconfig mechanism])
4861 AC_ARG_ENABLE(saveconfig,
4862     AC_HELP_STRING([--enable-saveconfig], [+ saveconfig mechanism]),
4863     [ntp_ok=$enableval], [ntp_ok=yes])
4864 ntp_saveconfig_enabled=0
4865 if test "$ntp_ok" = "yes"; then
4866     ntp_saveconfig_enabled=1
4867     AC_DEFINE(SAVECONFIG, 1, [saveconfig mechanism])
4869 AM_CONDITIONAL([SAVECONFIG_ENABLED], [test x$ntp_saveconfig_enabled = x1])
4870 AC_MSG_RESULT($ntp_ok)
4874 AC_DEFINE_DIR(NTP_KEYSDIR, sysconfdir, [Default location of crypto key info])
4876 AC_CONFIG_FILES(Makefile)
4877 AC_CONFIG_FILES(ElectricFence/Makefile)
4878 AC_CONFIG_FILES(adjtimed/Makefile)
4879 AC_CONFIG_FILES(clockstuff/Makefile)
4880 AC_CONFIG_FILES(include/Makefile)
4881 AC_CONFIG_FILES(include/isc/Makefile)
4882 AC_CONFIG_FILES(kernel/Makefile)
4883 AC_CONFIG_FILES(kernel/sys/Makefile)
4884 AC_CONFIG_FILES(libntp/Makefile)
4885 AC_CONFIG_FILES(libparse/Makefile)
4886 AC_CONFIG_FILES(ntpd/Makefile)
4887 AC_CONFIG_FILES(ntpdate/Makefile)
4888 AC_CONFIG_FILES(ntpdc/Makefile)
4889 AC_CONFIG_FILES(ntpdc/nl.pl,            [chmod +x ntpdc/nl.pl])
4890 AC_CONFIG_FILES(ntpq/Makefile)
4891 AC_CONFIG_FILES(ntpsnmpd/Makefile)
4892 AC_CONFIG_FILES(parseutil/Makefile)
4893 AC_CONFIG_FILES(scripts/Makefile)
4894 AC_CONFIG_FILES(scripts/calc_tickadj,   [chmod +x scripts/calc_tickadj])
4895 AC_CONFIG_FILES(scripts/checktime,      [chmod +x scripts/checktime])
4896 AC_CONFIG_FILES(scripts/freq_adj,       [chmod +x scripts/freq_adj])
4897 AC_CONFIG_FILES(scripts/html2man,       [chmod +x scripts/html2man])
4898 AC_CONFIG_FILES(scripts/mkver,          [chmod +x scripts/mkver])
4899 AC_CONFIG_FILES(scripts/ntp-wait,       [chmod +x scripts/ntp-wait])
4900 AC_CONFIG_FILES(scripts/ntpsweep,       [chmod +x scripts/ntpsweep])
4901 AC_CONFIG_FILES(scripts/ntptrace,       [chmod +x scripts/ntptrace])
4902 AC_CONFIG_FILES(scripts/ntpver,         [chmod +x scripts/ntpver])
4903 AC_CONFIG_FILES(scripts/plot_summary,   [chmod +x scripts/plot_summary])
4904 AC_CONFIG_FILES(scripts/summary,        [chmod +x scripts/summary])
4905 AC_CONFIG_FILES(util/Makefile)
4907 AC_CONFIG_SUBDIRS(sntp)
4909 AC_OUTPUT