dnl -*-fundamental-*-
dnl Process this file with autoconf to produce a configure script.
AC_INIT(ntpd/ntp_refclock.c)
AC_CANONICAL_SYSTEM
AC_DEFINE_UNQUOTED(STR_SYSTEM, "$host", [canonical system (cpu-vendor-os) string])
AM_CONFIG_HEADER(config.h)
AC_ARG_PROGRAM
AM_INIT_AUTOMAKE(ntp, 4.2.0)
AC_PREREQ(2.53)

ac_cv_var_atom_ok=no
ac_cv_var_oncore_ok=no
ac_cv_var_ripe_ncc_ok=no
ac_cv_var_jupiter_ok=no

dnl Grab any initial CFLAGS so we can pick better defaults.
iCFLAGS="$CFLAGS"

dnl check these early to avoid autoconf warnings
AC_AIX
AC_MINIX

dnl  we need to check for cross compile tools for vxWorks here
AC_PROG_CC
AC_PROG_CC_STDC
AC_PROG_CPP

case "$host" in
 *-*-amigaos)
    CFLAGS="$CFLAGS -Dfork=vfork -DSYS_AMIGA"
    ;;
 *-pc-cygwin*)
    CFLAGS="$CFLAGS -DSYS_CYGWIN32"
    ;;
 i386-sequent-sysv4)
    case "$CC" in
     cc)
	CFLAGS="$CFLAGS -Wc,+abi-socket"
	;;
    esac
    ;;
 *-*-mpeix*)
    CPPFLAGS="$CPPFLAGS -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB"
    LDFLAGS="$LDFLAGS -L/SYSLOG/PUB"
    LIBS="$LIBS -lcurses"
    ;;
esac

AC_CACHE_CHECK(if we should use /dev/clockctl, ac_clockctl,
[AC_ARG_ENABLE(clockctl,
   AC_HELP_STRING([--enable-clockctl], [Use /dev/clockctl for non-root time control]),
    [ans=$enableval],
    [case "$target" in
      *-*-netbsd*)
	 ans=yes
	 ;;
      *) ans=no
	 ;;
     esac
     ])
ac_clockctl=$ans])
# End of AC_CACHE_CHECK for clockctl
AC_CHECK_HEADERS(sys/clockctl.h)
case "$ac_clockctl$ac_cv_header_sys_clockctl_h" in
 yesyes)
    AC_DEFINE(HAVE_CLOCKCTL, ,[[Use /dev/clockctl?]])
    ;;
esac

case "$build" in
 $host)
    ;;
 *) case "$host" in
     *-*-vxworks*)
	# Quick and dirty sanity check
	case "$VX_KERNEL" in
	 '') AC_MSG_ERROR(Please follow the directions in html/vxworks.html!)
	    ;;
	esac
        CFLAGS="$CFLAGS -DSYS_VXWORKS"
        ;;
    esac
    ;;
esac

dnl  we need to check for cross compile tools for vxWorks here
AC_PROG_AWK
AC_PROG_MAKE_SET

rm -f conftest*

case "$GCC" in
 yes)
    CFLAGS="$CFLAGS -Wall"
    # CFLAGS="$CFLAGS -Wcast-align"
    CFLAGS="$CFLAGS -Wcast-qual"
    # CFLAGS="$CFLAGS -Wconversion"
    # CFLAGS="$CFLAGS -Werror"
    CFLAGS="$CFLAGS -Wmissing-prototypes"
    CFLAGS="$CFLAGS -Wpointer-arith"
    CFLAGS="$CFLAGS -Wshadow"
    CFLAGS="$CFLAGS -Wstrict-prototypes"
    # CFLAGS="$CFLAGS -Wtraditional"
    # CFLAGS="$CFLAGS -Wwrite-strings"

    ;;
esac

ac_busted_vpath_in_make=no

case "$host" in
 *-next-nextstep3)
    CFLAGS="$CFLAGS -posix"
    ;;
 *-*-irix6.1*)	# 64 bit only
    # busted vpath?
    ;;
 *-*-irix6*)	# 6.2 (and later?)
    ac_busted_vpath_in_make=yes
    # don't pass -n32 to gcc, it cannot handle and doesn't need it
    if test "$GCC" != yes; then
      case "$CFLAGS" in
       *-n32*) ;;
       *-n64*) ;;
       *-64*) ;;
       *) case "$iCFLAGS" in
	   '') CFLAGS="-O2 -g3 -n32" ;;
	   *)  CFLAGS="$CFLAGS -n32" ;;
	  esac
	  ;;
      esac
      case "$LDFLAGS" in
       *-n32*) ;;
       *-n64*) ;;
       *-64*) ;;
       *) LDFLAGS="$LDFLAGS -n32" ;;
      esac
    fi
    ;;
 *-*-solaris2.5.1)
    ac_busted_vpath_in_make=yes
    ;;
 *-*-unicosmp*)
    ac_busted_vpath_in_make=yes
    ;;
dnl This is currently commented out by bor. 
dnl The new versions of ReliantUNIX round adjtime() interval down
dnl to 1/100s (system tick). This makes tickadj actually useless.
dnl So, I'd better not use additional flags.
dnl I leave it here just in case anybody has better idea
dnl  mips-sni-sysv4* )
dnl     #
dnl     # Add flags for 64 bit file access to enable tickadj to access /dev/kmem
dnl     #
dnl     if getconf _LFS_CFLAGS > /dev/null 2>&1 ; then
dnl       CFLAGS="$CFLAGS `getconf _LFS_CFLAGS`"
dnl     fi
dnl     ;;
esac

case "$ac_busted_vpath_in_make$srcdir" in
 no*) ;;
 yes.) ;;
 *) case "`${MAKE-make} -v -f /dev/null 2>/dev/null | sed -e 's/GNU Make version \(1-9.]*\).*/\1/' -e q`" in
     '')
	AC_MSG_ERROR(building outside of the main directory requires GNU make)
	;;
     *) ;;
    esac
    ;;
esac

AC_SUBST(CFLAGS)dnl
AC_SUBST(LDFLAGS)dnl

AC_PROG_LN_S
AC_PROG_GCC_TRADITIONAL
AC_C_VOLATILE
AC_ISC_POSIX
AC_PROG_RANLIB
AC_PATH_PROG(PATH_SH, sh)
AC_PATH_PROG(PATH_PERL, perl)

hs_ULONG_CONST

case "$host" in
 *-*-vxworks*)
    ac_link="$ac_link $VX_KERNEL"
    ;;
esac

AC_PROG_INSTALL

case "$host" in
 *-pc-cygwin*)
    AC_CHECK_LIB(advapi32, main)
    ;;
esac
AC_CHECK_LIB(elf, nlist)	dnl Only needed for tickadj...
dnl AC_CHECK_LIB(kvm, main, , , -lelf)
AC_CHECK_LIB(kvm, main)		dnl We already know about -lelf here...
AC_CHECK_LIB(ld, nlist)
AC_CHECK_LIB(mld, nlist)
AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent, , , -lsocket))
AC_CHECK_FUNC(openlog, , 
  AC_CHECK_LIB(gen, openlog, , 
  AC_CHECK_LIB(syslog, openlog, , , -lsocket)))
AC_CHECK_LIB(md5, MD5Init, , 
  AC_CHECK_LIB(md, MD5Init))
AC_CHECK_FUNCS(MD5Init)
dnl HMS: What a hack...
AC_CHECK_HEADERS(readline/history.h readline/readline.h)
case "$ac_cv_header_readline_history_h$ac_cv_header_readline_readline_h" in
 *no*) ;;
 *) save_LIBS=$LIBS
    LIBS=
    AC_CHECK_LIB(readline, readline, ,
     AC_MSG_NOTICE([Trying again with -lcurses])
     unset ac_cv_lib_readline_readline
     AC_CHECK_LIB(readline, readline,
      LIBS="-lreadline -lcurses $LIBS"
      AC_DEFINE(HAVE_LIBREADLINE)
      AC_DEFINE(HAVE_LIBCURSES, , [Do we have the curses library?]),
      AC_CHECK_LIB(edit, readline,
       LIBS="-ledit -lcurses"
       AC_DEFINE(HAVE_LIBEDIT, , [Do we have the edit library?])
       AC_DEFINE(HAVE_LIBCURSES, , [Do we have the curses library?])
       , , -lcurses)
      , -lcurses))
    READLINE_LIBS=$LIBS
    AC_SUBST(READLINE_LIBS)
    LIBS=$save_LIBS
    ;;
esac

dnl Digital UNIX V4.0 and Solaris 7 have POSIX.1c functions in -lrt
dnl Solaris 2.6 only has -lposix4; in Solaris 7, this is a symlink to -lrt,
dnl so only use one of them.  Linux (glibc-2.1.2 and -2.2.2, at least)
dnl does Strange Things with extra processes using the Posix-compatibility
dnl real-time library, so we don't want to use it.

case "$host" in
 *-*-linux*) ;;
 *)
    AC_CHECK_LIB(rt, sched_setscheduler, ,
	AC_CHECK_LIB(posix4, sched_setscheduler))
    ;;
esac

AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))

AC_HEADER_STDC
AC_CHECK_HEADERS(bstring.h errno.h fcntl.h ieeefp.h math.h)
# HMS: Lame, but fast.
if test -f /etc/redhat-release
then
    :
else
    AC_CHECK_HEADERS(md5.h)
fi
AC_CHECK_HEADERS(memory.h netdb.h poll.h)
AC_CHECK_HEADERS(sched.h sgtty.h stdlib.h string.h termio.h)
AC_CHECK_HEADERS(termios.h timepps.h timex.h unistd.h)
case "$host" in
 *-*-aix*)
    AC_CHECK_HEADERS(utmpx.h)
    case "$ac_cv_header_utmpx_h" in
     yes) ;;
     *) AC_CHECK_HEADERS(utmp.h) ;;
    esac
    ;;
 *) AC_CHECK_HEADERS(utmp.h utmpx.h) ;;
esac
AC_CHECK_HEADERS(arpa/nameser.h)
AC_CHECK_HEADERS(net/if.h, [], [],
[#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
])
AC_CHECK_HEADERS(net/if6.h)
AC_CHECK_HEADERS(netinet/in_system.h netinet/in_systm.h)
AC_CHECK_HEADERS(netinet/in.h)
AC_CHECK_HEADERS(netinet/ip.h, [], [],
[#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
#endif
])
AC_CHECK_HEADERS(netinfo/ni.h, [AC_DEFINE(HAVE_NETINFO, 1, [NetInfo support?])])
AC_CHECK_HEADERS(sun/audioio.h sys/audioio.h)
dnl AC_CHECK_HEADERS(sys/chudefs.h)
AC_CHECK_HEADERS(sys/clkdefs.h sys/file.h)
case "$host" in
 *-*-sunos4*) ;;
 *) AC_CHECK_HEADERS(sys/ioctl.h)
    ;;
esac
AC_CHECK_HEADERS(sys/ipc.h)
AC_CHECK_HEADERS(sys/lock.h sys/mman.h sys/modem.h sys/param.h sys/ppsclock.h)
AC_CHECK_HEADERS(sys/ppstime.h sys/proc.h sys/resource.h sys/sched.h)
case "$host" in
 *-*-sco*)
    AC_CHECK_HEADERS(sys/sio.h)
    ;;
esac
AC_CHECK_HEADERS(sys/select.h sys/shm.h sys/signal.h sys/sockio.h)
AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h)
AC_CHECK_HEADERS(sys/stat.h sys/stream.h)
AC_CHECK_HEADERS(sys/stropts.h sys/sysctl.h sys/syssgi.h sys/systune.h)
AC_CHECK_HEADERS(sys/termios.h sys/time.h sys/signal.h)
AC_EGREP_CPP(yes,
[#include <sys/timepps.h>
#ifdef PPS_API_VERS_1
yes
#endif
], [AC_CHECK_HEADERS(sys/timepps.h)])
AC_CHECK_HEADERS(sys/timers.h sys/timex.h sys/tpro.h sys/types.h sys/wait.h)
AC_HEADER_TIME
case "$host" in
*-convex-*)
  AC_CHECK_HEADERS(/sys/sync/queue.h /sys/sync/sema.h)
  ;;
*-*-bsdi*)
  AC_CHECK_HEADERS(machine/inline.h sys/pcl720.h sys/i8253.h)
  ;;
esac

AC_CHECK_HEADER(nlist.h,
[AC_DEFINE(NLIST_STRUCT, 1, [nlist stuff])
AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un,
[AC_TRY_COMPILE([#include <nlist.h>],
[struct nlist n; n.n_un.n_name = 0;],
ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)])
if test $ac_cv_struct_nlist_n_un = yes; then
  AC_DEFINE(NLIST_NAME_UNION, 1, [does struct nlist use a name union?])
fi
])dnl

dnl AC_CHECK_HEADERS(net/if.h, [], [],
dnl [#if HAVE_SYS_TYPES_H
dnl # include <sys/types.h>
dnl #endif
dnl #if HAVE_SYS_SOCKET_H
dnl # include <sys/socket.h>
dnl #endif
dnl ])

AC_CHECK_HEADERS(resolv.h, [], [],
[#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif
])

AC_CACHE_CHECK(for basic volatile support, ac_cv_c_volatile,
[AC_TRY_COMPILE([],[
volatile int x;],
	ac_cv_c_volatile=yes,
	ac_cv_c_volatile=no)
])
case "$ac_cv_c_volatile" in
 yes)
    ;;
 *) AC_DEFINE(volatile, , [Does the compiler like "volatile"?])
    ;;
esac

case "$host" in
 sparc-*-solaris2*)
    # Assume that solaris2 is Ansi C...
    ;;
 *)
    AM_C_PROTOTYPES
    ;;
esac
AC_CACHE_CHECK(if C compiler permits function prototypes, ac_cv_have_prototypes,
[AC_TRY_COMPILE([
extern int foo (short);
int foo(short i) { return i; }],[
int i;], ac_cv_have_prototypes=yes, ac_cv_have_prototypes=no)
])
if test "$ac_cv_have_prototypes" = yes; then
  AC_DEFINE(HAVE_PROTOTYPES, 1, [Are function prototypes OK?])
fi

AC_C_CONST
AC_C_BIGENDIAN
AC_TYPE_SIGNAL
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_CHECK_TYPE(time_t, long)
AC_STRUCT_TM

AC_CACHE_CHECK([for u_int8_t], ac_cv_type_u_int8_t,
[AC_TRY_COMPILE([#include <sys/types.h>],
	[u_int8_t len = 42; return 0;],
	ac_cv_type_u_int8_t=yes,
	ac_cv_type_u_int8_t=no)
])
if test $ac_cv_type_u_int8_t = yes; then
	AC_DEFINE(HAVE_TYPE_U_INT8_T,1,Does u_int8_t exist)
fi

AC_CACHE_CHECK([for u_int64_t], ac_cv_type_u_int64_t,
[AC_TRY_COMPILE([#include <sys/types.h>],
	[u_int64_t len = 42; return 0;],
	ac_cv_type_u_int64_t=yes,
	ac_cv_type_u_int64_t=no)
])
if test $ac_cv_type_u_int64_t = yes; then
	AC_DEFINE(HAVE_TYPE_U_INT64_T,1,Does u_int64_t exist)
fi

AC_CACHE_CHECK(for a fallback value for HZ, ac_cv_var_default_hz,
[ac_cv_var_default_hz=100
case "$host" in
 alpha*-dec-osf4*|alpha*-dec-osf5*)
    ac_cv_var_default_hz=1024
    ;;
 mips-dec-ultrix4*)
    ac_cv_var_default_hz=256
    ;;
esac])
AC_DEFINE_UNQUOTED(DEFAULT_HZ, $ac_cv_var_default_hz, [What is the fallback value for HZ?])

AC_CACHE_CHECK(if we need to override the system's value for HZ, ac_cv_var_override_hz,
[ac_cv_var_override_hz=no
case "$host" in
 alpha*-dec-osf4*|alpha*-dec-osf5*)
    ac_cv_var_override_hz=yes
    ;;
 mips-dec-ultrix4*)
    ac_cv_var_override_hz=yes
    ;;
 *-*-freebsd*)
    ac_cv_var_override_hz=yes
    ;;
 *-*-sunos4*)
    ac_cv_var_override_hz=yes
    ;;
esac])
case "$ac_cv_var_override_hz" in
 yes)
    AC_DEFINE(OVERRIDE_HZ, 1, [Do we need to override the system's idea of HZ?])
    ;;
esac

dnl AC_CACHE_CHECK(ut_host in struct utmp, ac_cv_func_ut_host_in_utmp,
dnl [AC_TRY_LINK([#include <sys/types.h>
dnl #include <utmp.h>], [struct utmp ut; ut.ut_host;],
dnl ac_cv_func_ut_host_in_utmp=yes, ac_cv_func_ut_host_in_utmp=no)])
dnl if test $su_cv_func_ut_host_in_utmp = yes; then
dnl   AC_DEFINE(HAVE_UT_HOST)
dnl fi

dnl AC_MSG_CHECKING(if we can get the system boot time)
dnl AC_CACHE_VAL(su_cv_have_boot_time,
dnl [AC_EGREP_CPP(yes,
dnl [#ifdef HAVE_UTMPX_H
dnl #include <utmpx.h>
dnl #else
dnl #include <utmp.h>
dnl #endif
dnl #ifdef BOOT_TIME
dnl yes
dnl #endif
dnl ], su_cv_have_boot_time=yes, su_cv_have_boot_time=no)])
dnl AC_MSG_RESULT($su_cv_have_boot_time)

AC_CACHE_CHECK(
  struct sigaction for sa_sigaction,
  ac_cv_struct_sigaction_has_sa_sigaction,
  [
    AC_TRY_COMPILE(
      [#include <signal.h>],
      [struct sigaction act; act.sa_sigaction = 0;],
      ac_cv_struct_sigaction_has_sa_sigaction=yes,
      ac_cv_struct_sigaction_has_sa_sigaction=no
    )
  ]
)
if test $ac_cv_struct_sigaction_has_sa_sigaction = yes; then
  AC_DEFINE(HAVE_SA_SIGACTION_IN_STRUCT_SIGACTION, 1, [Obvious...])
fi

AC_CACHE_CHECK(for struct ppsclockev, ac_cv_struct_ppsclockev,
[AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef HAVE_SYS_TERMIOS_H
# include <sys/termios.h>
#endif
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
#ifdef HAVE_SYS_PPSCLOCK_H
# include <sys/ppsclock.h>
#endif],[
extern struct ppsclockev *pce;
return pce->serial;],
	ac_cv_struct_ppsclockev=yes,
	ac_cv_struct_ppsclockev=no)
])
if test $ac_cv_struct_ppsclockev = yes; then
    AC_DEFINE(HAVE_STRUCT_PPSCLOCKEV, 1, [Does a system header define struct ppsclockev?])
fi

AC_CACHE_CHECK(struct sockaddr for sa_len, ac_cv_struct_sockaddr_has_sa_len,
[AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>],[
extern struct sockaddr *ps;
return ps->sa_len;],
	ac_cv_struct_sockaddr_has_sa_len=yes,
	ac_cv_struct_sockaddr_has_sa_len=no)
])
if test $ac_cv_struct_sockaddr_has_sa_len = yes; then
    AC_DEFINE(HAVE_SA_LEN_IN_STRUCT_SOCKADDR, 1, [Should be obvious...])
fi

AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
		ac_cv_have_ss_family_in_struct_ss, [
	AC_TRY_COMPILE(
		[
#include <sys/types.h>
#include <sys/socket.h>
		],
		[ struct sockaddr_storage s; s.ss_family = 1; ],
		[ ac_cv_have_ss_family_in_struct_ss="yes" ],
		[ ac_cv_have_ss_family_in_struct_ss="no" ],
	)
])
if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
	AC_DEFINE(HAVE_SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have ss_family?])
else
    # Hack around a problem...
    case "$host" in
     *-*-hpux11.11) CPPFLAGS="$CPPFLAGS -D_NETINET_IN6_H"
	;;
    esac
fi

AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
		ac_cv_have___ss_family_in_struct_ss, [
	AC_TRY_COMPILE(
		[
#include <sys/types.h>
#include <sys/socket.h>
		],
		[ struct sockaddr_storage s; s.__ss_family = 1; ],
		[ ac_cv_have___ss_family_in_struct_ss="yes" ],
		[ ac_cv_have___ss_family_in_struct_ss="no" ]
	)
])
if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
	AC_DEFINE(HAVE___SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have __ss_family?])
fi

AH_VERBATIM([X_HAVE_SS_FAMILY_IN_SS],
[/* Handle ss_family */
#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
# define ss_family __ss_family
# define ss_len __ss_len
#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */])

case "$ac_cv_header_machine_soundcard_h$ac_cv_header_sys_soundcard_h" in
  *yes*)
    AC_CACHE_CHECK([for struct snd_size], ac_cv_struct_snd_size,
[AC_TRY_COMPILE([
#ifdef HAVE_MACHINE_SOUNDCARD_H
# include <machine/soundcard.h>
#endif
#ifdef HAVE_SYS_SOUNDCARD_H
# include <sys/soundcard.h>
#endif],[
extern struct snd_size *ss;
return ss->rec_size;],
    ac_cv_struct_snd_size=yes,
    ac_cv_struct_snd_size=no)
])
    case "$ac_cv_struct_snd_size" in
     yes) AC_DEFINE(HAVE_STRUCT_SND_SIZE, 1,[Do we have struct snd_size?]) ;;
    esac
    ;;
esac

AC_CACHE_CHECK(struct clockinfo for hz, ac_cv_struct_clockinfo_has_hz,
[AC_TRY_COMPILE([
#include <sys/time.h>],[
extern struct clockinfo *pc;
return pc->hz;],
	ac_cv_struct_clockinfo_has_hz=yes,
	ac_cv_struct_clockinfo_has_hz=no)
])
if test $ac_cv_struct_clockinfo_has_hz = yes; then
    AC_DEFINE(HAVE_HZ_IN_STRUCT_CLOCKINFO, 1, [Obvious...])
fi

AC_CACHE_CHECK(struct clockinfo for tickadj, ac_cv_struct_clockinfo_has_tickadj,
[AC_TRY_COMPILE([
#include <sys/time.h>],[
extern struct clockinfo *pc;
return pc->tickadj;],
	ac_cv_struct_clockinfo_has_tickadj=yes,
	ac_cv_struct_clockinfo_has_tickadj=no)
])
if test $ac_cv_struct_clockinfo_has_tickadj = yes; then
    AC_DEFINE(HAVE_TICKADJ_IN_STRUCT_CLOCKINFO, 1, [Obvious...])
fi

AC_CACHE_CHECK([for struct timespec], ac_cv_struct_timespec,
[AC_TRY_COMPILE([
#include <sys/time.h>
/* Under SunOS, timespec is in sys/timepps.h, which needs errno.h and FRAC */
#ifdef HAVE_ERRNO_H
# include <errno.h>
#endif
#ifdef HAVE_SYS_TIMEPPS_H
# define FRAC 4294967296
# include <sys/timepps.h>
#endif],
[struct timespec n;],
ac_cv_struct_timespec=yes, ac_cv_struct_timespec=no)])
if test $ac_cv_struct_timespec = yes; then
  AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1, [Do we have struct timespec?])
fi

AC_CACHE_CHECK([for struct ntptimeval], ac_cv_struct_ntptimeval,
[AC_TRY_COMPILE([
#include <sys/time.h>
#include <sys/timex.h>],
[struct ntptimeval n;],
ac_cv_struct_ntptimeval=yes, ac_cv_struct_ntptimeval=no)])
if test $ac_cv_struct_ntptimeval = yes; then
  AC_DEFINE(HAVE_STRUCT_NTPTIMEVAL, 1, [Do we have struct ntptimeval?])
fi

AC_CHECK_MEMBERS([struct ntptimeval.time.tv_nsec], , ,
[#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#else
# ifdef HAVE_TIME_H
# include <time.h>
# endif
#endif
#ifdef HAVE_SYS_TIMEX_H
#include <sys/timex.h>
#else
# ifdef HAVE_TIMEX_H
# include <timex.h>
# endif
#endif])

AC_C_INLINE
AC_C_CHAR_UNSIGNED		dnl CROSS_COMPILE?
AC_CHECK_SIZEOF(signed char)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)

AC_CHECK_TYPES([s_char])
case "$ac_cv_c_char_unsigned$ac_cv_sizeof_signed_char$ac_cv_type_s_char" in
 *yes)
    # We have a typedef for s_char.  Might as well believe it...
    ;;
 no0no)
    # We have signed chars, can't say 'signed char', no s_char typedef.
    AC_DEFINE(NEED_S_CHAR_TYPEDEF, 1, [Do we need an s_char typedef?])
    ;;
 no1no)
    # We have signed chars, can say 'signed char', no s_char typedef.
    AC_DEFINE(NEED_S_CHAR_TYPEDEF)
    ;;
 yes0no)
    # We have unsigned chars, can't say 'signed char', no s_char typedef.
    AC_MSG_ERROR(No way to specify a signed character!)
    ;;
 yes1no)
    # We have unsigned chars, can say 'signed char', no s_char typedef.
    AC_DEFINE(NEED_S_CHAR_TYPEDEF)
    ;;
esac
AC_TYPE_UID_T

case "$host" in
 *-*-linux*)
    AC_CHECK_FUNCS(__adjtimex __ntp_gettime)
    ;;
esac
case "$host" in
 *-*-aix[[45]]*)
	# (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub
	# (returning ENOSYS).  I didn't check 4.2.  If, in the future,
	# IBM pulls its thumbs out long enough to implement clock_settime,
	# this conditional will need to change.  Maybe use AC_TRY_RUN
	# instead to try to set the time to itself and check errno.
    ;;
 *) AC_CHECK_FUNCS(clock_gettime clock_settime)
    ;;
esac
AC_CHECK_FUNCS(daemon)
AC_CHECK_FUNCS(finite, ,
  [AC_CHECK_FUNCS(isfinite, ,
    [AC_MSG_CHECKING(for isfinite with <math.h>)
    _libs=$LIBS
    LIBS="$LIBS -lm"
    AC_TRY_LINK([#include <math.h>], [float f = 0.0; isfinite(f)],
      [AC_MSG_RESULT(yes)
      AC_DEFINE(HAVE_ISFINITE)],
      AC_MSG_RESULT(no))
    LIBS=$_libs])])
AC_CHECK_FUNCS(getbootfile getclock getdtablesize getrusage)
AC_CHECK_FUNC(gettimeofday, ,[
case "$host" in
  *-*-mpeix*) ac_cv_func_gettimeofday=yes
    ;;
esac])
case "$host" in
 *-pc-cygwin*)
    ;;
 *) AC_CHECK_FUNCS(getuid)
    ;;
esac
AC_CHECK_FUNCS(hstrerror)
AC_CHECK_FUNC(inet_ntop, [], [AC_DEFINE(ISC_PLATFORM_NEEDNTOP, 1, [ISC: provide inet_ntop()])])
AC_CHECK_FUNCS(K_open kvm_open memcpy memmove memset)
case "$host" in
 *-*-sco3.2v5.0.*)
    # Just stubs.  Idiots.
    ;;
 *) AC_CHECK_FUNCS(mkstemp)
    ;;
esac
AC_CHECK_FUNCS(mktime)
case "$host" in
 *-*-aix[[45]]*)
    # Just a stub.  Idiots.
    ;;
 *-*-irix[[45]]*)
    # Just a stub in "old" Irix.  Idiots.
    ;;
 *-*-qnx*)
    # Apparently there but not working in QNX.  Idiots?
    ;;
 *-*-sco3.2v5.0.*)
    # Just a stub.  Idiots.
    ;;
 alpha*-dec-osf4*|alpha*-dec-osf5*)
    # mlockall is there, as a #define calling memlk via <sys/mman.h>
    # Not easy to test for - cheat.
    AC_CHECK_FUNCS(memlk, [ac_cv_func_mlockall='yes'])
    AC_CHECK_FUNCS(mlockall)
    ;;
 *) AC_CHECK_FUNCS(mlockall)
    ;;
esac
AC_CHECK_FUNCS(mrand48 srand48 nice nlist)
case "$host" in
 *-*-solaris2.6)
    # Broken...
    ;;
 *) AC_CHECK_FUNCS(ntp_adjtime ntp_gettime)
    ;;
esac
AC_CHECK_FUNCS(plock pututline pututxline readlink rtprio)
case "$ac_cv_func_mrand48" in
 yes) ;;
 *) AC_REPLACE_FUNCS(random) ;;
esac
case "$host" in
 *-*-aix[[45]]*)
    # Just a stub in AIX 4.  Idiots.
    ;;
 *-*-solaris2.5*)
    # Just stubs in solaris2.5.  Idiots.
    ;;
 *) AC_CHECK_FUNCS(sched_setscheduler)
    ;;
esac
AC_CHECK_FUNCS(setlinebuf setpgid setpriority setsid)
AC_CHECK_FUNCS(setrlimit)
AC_CHECK_FUNCS(settimeofday, ,[
case "$host" in
  *-*-mpeix*) ac_cv_func_settimeofday=yes
    ;;
esac])
AC_CHECK_FUNCS(setvbuf sigaction)
AC_CHECK_FUNCS(sigvec sigset sigsuspend stime strchr sysconf sysctl)
AC_CHECK_FUNCS(snprintf strdup strerror strstr)
AC_CHECK_FUNCS(timegm)
case "$host" in
 *-*-aix[[45]]*)
    # Just stubs.  Idiots.
    ;;
 *-*-netbsd1*)
    # Just stubs.  Idiots.
    ;;
 *-*-netbsdelf1*)
    # Just stubs.  Idiots.
    ;;
 *-*-openbsd*)
    # Just stubs.  Idiots.
    ;;
 *) AC_CHECK_FUNCS(timer_create timer_settime)
    ;;
esac
case "$host" in
 *-pc-cygwin*)
    # I have no idea...
    ;;
 *) AC_CHECK_FUNCS(umask)
    ;;
esac
AC_CHECK_FUNCS(uname updwtmp updwtmpx vsprintf)

case "$host" in
 *-*-sunos4*)
    AC_DEFINE(SPRINTF_CHAR, 1, [*s*printf() functions are char*])
    ;;
esac

AC_CACHE_CHECK(number of arguments to gettimeofday(), ac_cv_func_Xettimeofday_nargs,
[AC_TRY_COMPILE([#include <sys/time.h>],[
gettimeofday((struct timeval*)0,(struct timezone*)0);
settimeofday((struct timeval*)0,(struct timezone*)0);
],
	ac_cv_func_Xettimeofday_nargs=2, ac_cv_func_Xettimeofday_nargs=1)
])
if test $ac_cv_func_Xettimeofday_nargs = 1; then
	AC_DEFINE(SYSV_TIMEOFDAY, 1, [Does Xettimeofday take 1 arg?])
fi

AC_CACHE_CHECK(number of arguments taken by setpgrp(), ac_cv_func_setpgrp_nargs,
[AC_TRY_COMPILE([
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
],[setpgrp(0,0);],
        ac_cv_func_setpgrp_nargs=2, ac_cv_func_setpgrp_nargs=0)
])
if test $ac_cv_func_setpgrp_nargs = 0; then
        AC_DEFINE(HAVE_SETPGRP_0, 1, [define if setpgrp takes 0 arguments])
fi

save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -I$srcdir/include"

AC_CACHE_CHECK(argument pointer type of qsort()'s compare function and base,
ac_cv_func_qsort_argtype,
[AC_TRY_COMPILE([
#include "l_stdlib.h"

#ifdef HAVE_PROTOTYPES
#define P(x) x
#else
#define P(x) ()
#endif

extern void *base;
extern sortfunc P((const void *, const void *));
int sortfunc(a, b)
  const void *a;
  const void *b; { return 0; }
],[
qsort(base, 2, sizeof(char *), sortfunc);
],
	ac_cv_func_qsort_argtype=void, ac_cv_func_qsort_argtype=char)
])
case "$ac_cv_func_qsort_argtype" in
 void)
    AC_DEFINE(QSORT_USES_VOID_P, 1, [Does qsort expect to work on "void *" stuff?])
    ;;
esac

CFLAGS=$save_CFLAGS

AC_CACHE_CHECK(if we need to declare 'errno', ac_cv_decl_errno,
[AC_TRY_COMPILE([#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif],
  [errno = 0;],
  ac_cv_decl_errno=no, ac_cv_decl_errno=yes)])
case "$ac_cv_decl_errno" in
 yes) AC_DEFINE(DECL_ERRNO, 1, [Declare errno?]) ;;
esac

dnl FIXME: from ntpd/ntp_intres.c, but there's no info which header produces
dnl the clash.  <resolv.h> isn't currently used.
dnl
dnl (prr) aix 4.3 defines h_errno as (*(int *)h_errno_which()) for
dnl MT purposes.  This makes the line "extern int h_errno" choke
dnl the compiler.  Hopefully adding !defined(h_errno) fixes this
dnl without breaking any other platforms.
dnl
AC_CACHE_CHECK(if we may declare 'h_errno', ac_cv_decl_h_errno,
[AC_TRY_COMPILE([#include <sys/types.h>
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_RESOLV_H
#include <resolv.h>
#endif],
  [extern int h_errno;],
  ac_cv_decl_h_errno=yes, ac_cv_decl_h_errno=no)])
case "$ac_cv_decl_h_errno" in
 yes) AC_DEFINE(DECL_H_ERRNO, 1, [Declare h_errno?]) ;;
esac

dnl See if char *sys_errlist[] is OK.
AC_CACHE_CHECK([[if declaring 'char *sys_errlist[]' is ok]], ac_cv_decl_sys_errlist,
[AC_TRY_COMPILE([#include <stdio.h>
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif],
  [extern char *sys_errlist[];
],
  ac_cv_decl_sys_errlist=yes, ac_cv_decl_sys_errlist=no)])
case "$ac_cv_decl_sys_errlist" in
 yes) AC_DEFINE(CHAR_SYS_ERRLIST, 1, [Declare char *sys_errlist array]) ;;
esac

AC_CACHE_CHECK(if declaring 'syscall()' is ok, ac_cv_decl_syscall,
[AC_TRY_COMPILE([
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifdef HAVE_PROTOTYPES
#define P(x) x
#else
#define P(x) ()
#endif
],
  [extern int syscall P((int, ...));],
  ac_cv_decl_syscall=yes, ac_cv_decl_syscall=no)])
case "$ac_cv_decl_syscall" in
 yes) AC_DEFINE(DECL_SYSCALL, 1, [Declare syscall()?]) ;;
esac

case "$host" in
 *-*-aix4.3.*)
    AC_DEFINE(DECL_HSTRERROR_0, 1, [Declaration style])		# Needed for XLC under AIX 4.3.2
    ;;
 *-*-mpeix*)
    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
    AC_DEFINE(DECL_INET_NTOA_0, 1, [Declaration style])
    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
    AC_DEFINE(DECL_MRAND48_0, 1, [Declaration style])
    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
    AC_DEFINE(DECL_SRAND48_0, 1, [Declaration style])
    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
    ;;
 *-*-osf[[45]]*)
    AC_DEFINE(DECL_PLOCK_0, 1, [Declaration style])
    AC_DEFINE(DECL_STIME_1, 1, [Declaration style])
    ;;
 *-*-qnx*)
    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
    ;;
 *-*-riscos4*)
    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
    AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
    AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
    AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
    AC_DEFINE(DECL_MEMMOVE_0, 1, [Declaration style])
    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
    AC_DEFINE(DECL_RENAME_0, 1, [Declaration style])
    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
    AC_DEFINE(DECL_STDIO_0, 1, [Declaration style])
    AC_DEFINE(DECL_STRTOL_0, 1, [Declaration style])
    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
    AC_DEFINE(DECL_TIME_0, 1, [Declaration style])
    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
    AC_DEFINE(DECL_TOLOWER_0, 1, [Declaration style])
    ;;
 *-*-solaris2*)
    AC_DEFINE(DECL_MKSTEMP_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETPRIORITY_1, 1, [Declaration style])
    case "$host" in
     *-*-solaris2.4)
        AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
	;;
    esac
    ;;
 *-*-sunos4*)
    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
    AC_DEFINE(DECL_BCOPY_0, 1, [Declaration style])
    AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
    AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
    AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
    AC_DEFINE(DECL_MEMMOVE_0, 1, [Declaration style])
    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
    AC_DEFINE(DECL_MKSTEMP_0, 1, [Declaration style])
    AC_DEFINE(DECL_MRAND48_0, 1, [Declaration style])
    AC_DEFINE(DECL_RENAME_0, 1, [Declaration style])
    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
    AC_DEFINE(DECL_SIGVEC_0, 1, [Declaration style])
    AC_DEFINE(DECL_SRAND48_0, 1, [Declaration style])
    case "`basename $ac_cv_prog_CC`" in
     acc*) ;;
     *) AC_DEFINE(DECL_STDIO_0, 1, [Declaration style])
	;;
    esac
    AC_DEFINE(DECL_STRTOL_0, 1, [Declaration style])
    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
    AC_DEFINE(DECL_TIME_0, 1, [Declaration style])
    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
    AC_DEFINE(DECL_TOLOWER_0, 1, [Declaration style])
    AC_DEFINE(DECL_TOUPPER_0, 1, [Declaration style])
    AC_DEFINE(DECL_STRERROR_0, 1, [Declaration style])
    ;;
 *-*-ultrix4*)
    AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
    AC_DEFINE(DECL_BZERO_0, 1, [Declaration style])
    AC_DEFINE(DECL_CFSETISPEED_0, 1, [Declaration style])
    AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
    AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
    AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
    AC_DEFINE(DECL_MRAND48_0, 1, [Declaration style])
    AC_DEFINE(DECL_NLIST_0, 1, [Declaration style])
    AC_DEFINE(DECL_PLOCK_0, 1, [Declaration style])
    AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
    AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
    AC_DEFINE(DECL_SRAND48_0, 1, [Declaration style])
    AC_DEFINE(DECL_STIME_0, 1, [Declaration style])
    AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
    AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
    ;;
esac

case "$host" in
 *-*-sco3.2*)
    AC_DEFINE(TERMIOS_NEEDS__SVID3, 1, [Do we need to #define _SVID3 when we #include <termios.h>?])
    ;;
esac

AC_CACHE_CHECK(if we need extra room for SO_RCVBUF, ac_cv_var_rcvbuf_slop,
[ans=no
case "$host" in
 *-*-hpux[[567]]*)
    ans=yes
    ;;
esac
ac_cv_var_rcvbuf_slop=$ans])
case "$ac_cv_var_rcvbuf_slop" in
 yes) AC_DEFINE(NEED_RCVBUF_SLOP, 1, [Do we need extra room for SO_RCVBUF? (HPUX <8)]) ;;
esac

AC_CACHE_CHECK(if we will open the broadcast socket, ac_cv_var_open_bcast_socket,
[ans=yes
case "$host" in
 *-*-domainos)
    ans=no
    ;;
esac
ac_cv_var_open_bcast_socket=$ans])
case "$ac_cv_var_open_bcast_socket" in
 yes) AC_DEFINE(OPEN_BCAST_SOCKET, 1, [Should we open the broadcast socket?]) ;;
esac

AC_CACHE_CHECK(if we want the HPUX version of FindConfig(), ac_cv_var_hpux_findconfig,
[ans=no
case "$host" in
 *-*-hpux*)
    ans=yes
    ;;
esac
ac_cv_var_hpux_findconfig=$ans])
case "$ac_cv_var_hpux_findconfig" in
 yes) AC_DEFINE(NEED_HPUX_FINDCONFIG, 1, [Do we want the HPUX FindConfig()?]) ;;
esac

AC_CACHE_CHECK(if process groups are set with -pid, ac_cv_arg_setpgrp_negpid,
[case "$host" in
 *-*-hpux[[567]]*)
    ans=no
    ;;
 *-*-hpux*)
    ans=yes
    ;;
 *-*-linux*)
    ans=yes
    ;;
 *-*-sunos3*)
    ans=yes
    ;;
 *-*-ultrix2*)
    ans=yes
    ;;
 *)
    ans=no
    ;;
esac
ac_cv_arg_setpgrp_negpid=$ans])
case "$ac_cv_arg_setpgrp_negpid" in
 yes) AC_DEFINE(UDP_BACKWARDS_SETOWN, 1, [Do we set process groups with -pid?]) ;;
esac

AC_CACHE_CHECK(if we need a ctty for F_SETOWN, ac_cv_func_ctty_for_f_setown,
[case "$host" in
 *-*-bsdi[[23]]*)
    ans=yes
    ;;
 *-*-freebsd*)
    ans=yes
    ;;
 *-*-netbsd*)
    ans=yes
    ;;
 *-*-openbsd*)
    ans=yes
    ;;
 *-*-osf*)
    ans=yes
    ;;
 *) ans=no
    ;;
esac
ac_cv_func_ctty_for_f_setown=$ans])
case "$ac_cv_func_ctty_for_f_setown" in
 yes) AC_DEFINE(USE_FSETOWNCTTY, 1, [Must we have a CTTY for fsetown?]) ;;
esac

ntp_warning='GRONK'
AC_MSG_CHECKING(if we'll use clock_settime or settimeofday or stime)
case "$ac_cv_func_clock_settime$ac_cv_func_settimeofday$ac_cv_func_stime" in
 yes*)
    ntp_warning=''
    ans='clock_settime()'
    ;;
 noyes*)
    ntp_warning='But clock_settime() would be better (if we had it)'
    ans='settimeofday()'
    ;;
 nonoyes)
    ntp_warning='Which is the worst of the three'
    ans='stime()'
    ;;
 *) 
    case "$build" in
     $host) ntp_warning='Which leaves us with nothing to use!'
    ans=none
    ;;
esac
esac
AC_MSG_RESULT($ans)
case "$ntp_warning" in
 '') ;;
 *) AC_MSG_WARN(*** $ntp_warning ***)
    ;;
esac

AC_CACHE_CHECK(if we have a losing syscall(), ac_cv_var_syscall_bug,
[case "$host" in
 *-*-solaris2.4*)
    ans=yes
    ;;
 *) ans=no
    ;;
esac
ac_cv_var_syscall_bug=$ans])
case "$ac_cv_var_syscall_bug" in
 yes) AC_DEFINE(SYSCALL_BUG, 1, [Buggy syscall() (Solaris2.4)?]) ;;
esac

AC_CACHE_CHECK(for Streams/TLI, ac_cv_var_streams_tli,
[ case "$ac_cv_header_sys_stropts_h" in
  yes)
     ans=no
     # There must be a better way...
     case "$host" in
      *-*-ptx*)
         ans=yes
         ;;
     esac
     ;;
 esac
 ac_cv_var_streams_tli=$ans])
case "$ac_cv_var_streams_tli" in
 yes)
    AC_DEFINE(STREAMS_TLI, 1, [Do we have STREAMS/TLI? (Can we replace this with HAVE_SYS_STROPTS_H?)])
    ;;
esac

AC_CACHE_CHECK(for SIGIO, ac_cv_hdr_def_sigio,
 AC_EGREP_CPP(yes,
  [#include <signal.h>
#ifdef SIGIO
   yes
#endif
  ], ac_cv_hdr_def_sigio=yes, ac_cv_hdr_def_sigio=no))

dnl Override those system that have a losing SIGIO
AC_CACHE_CHECK(if we want to use signalled IO, ac_cv_var_signalled_io,
[ans=no
case "$ac_cv_hdr_def_sigio" in
 yes)
    ans=yes
    case "$host" in
     alpha*-dec-osf4*|alpha*-dec-osf5*)
        ans=no
        ;;
     *-convex-*)
        ans=no
        ;;
     *-dec-*)
        ans=no
        ;;
     *-pc-cygwin*)
	ans=no
	;;
     *-sni-sysv*)
        ans=no
        ;;
     *-univel-sysv*)
        ans=no
	;;
     *-*-irix6*)
	ans=no
	;;
     *-*-freebsd*)
	ans=no
	;;
     *-*-linux*)
	ans=no
	;;
     *-*-unicosmp*)
	ans=no
	;;
    esac
    ;;
esac
ac_cv_var_signalled_io=$ans])
case "$ac_cv_var_signalled_io" in
 yes) AC_DEFINE(HAVE_SIGNALED_IO, 1, [Can we use SIGIO for tcp and udp IO?]) ;;
esac

AC_CACHE_CHECK(for SIGPOLL, ac_cv_hdr_def_sigpoll,
 AC_EGREP_CPP(yes,
 [#include <signal.h>
#ifdef SIGPOLL
  yes
#endif
 ], ac_cv_hdr_def_sigpoll=yes, ac_cv_hdr_def_sigpoll=no))

AC_CACHE_CHECK(for SIGSYS, ac_cv_hdr_def_sigsys,
 AC_EGREP_CPP(yes,
 [#include <signal.h>
#ifdef SIGSYS
  yes
#endif
 ], ac_cv_hdr_def_sigsys=yes, ac_cv_hdr_def_sigsys=no))

AC_CACHE_CHECK(if we can use SIGPOLL for UDP I/O, ac_cv_var_use_udp_sigpoll,
[ans=no
case "$ac_cv_hdr_def_sigpoll" in
 yes)
    case "$host" in
     mips-sgi-irix*)
	ans=no
	;;
     vax-dec-bsd)
        ans=no
        ;;
     *-pc-cygwin*)
	ans=no
	;;
     *-sni-sysv*)
        ans=no
        ;;
     *-*-aix[[45]]*)
        ans=no
        ;;
     *-*-hpux*)
        ans=no
        ;;
     *-*-linux*)
	ans=no
	;;
     *-*-osf*)
        ans=no
        ;;
     *-*-qnx*)
        ans=no
        ;;
     *-*-sunos*)
	ans=no
	;;
     *-*-ultrix*)
        ans=no
        ;;
     *-*-unicosmp*)
        ans=no
        ;;
     *) ans=yes
        ;;
    esac
    ;;
esac
ac_cv_var_use_udp_sigpoll=$ans])
case "$ac_cv_var_use_udp_sigpoll" in
 yes) AC_DEFINE(USE_UDP_SIGPOLL, 1, [Can we use SIGPOLL for UDP?]) ;;
esac

AC_CACHE_CHECK(if we can use SIGPOLL for TTY I/O, ac_cv_var_use_tty_sigpoll,
[ans=no
case "$ac_cv_hdr_def_sigpoll" in
 yes)
    case "$host" in
     mips-sgi-irix*)
        ans=no
        ;;
     vax-dec-bsd)
        ans=no
        ;;
     *-pc-cygwin*)
	ans=no
	;;
     *-sni-sysv*)
        ans=no
        ;;
     *-*-aix[[45]]*)
	ans=no
	;;
     *-*-hpux*)
        ans=no
        ;;
     *-*-linux*)
	ans=no
	;;
     *-*-osf*)
        ans=no
        ;;
     *-*-sunos*)
	ans=no
	;;
     *-*-ultrix*)
        ans=no
        ;;
     *-*-qnx*)
        ans=no
        ;;
     *-*-unicosmp*)
        ans=no
        ;;
     *) ans=yes
        ;;
    esac
    ;;
esac
ac_cv_var_use_tty_sigpoll=$ans])
case "$ac_cv_var_use_tty_sigpoll" in
 yes) AC_DEFINE(USE_TTY_SIGPOLL, 1, [Can we use SIGPOLL for tty IO?]) ;;
esac

case "$ac_cv_header_sys_sio_h" in
 yes)
    AC_CACHE_CHECK(sys/sio.h for TIOCDCDTIMESTAMP, ac_cv_hdr_def_tiocdcdtimestamp,
     AC_EGREP_CPP(yes,
[#include <sys/sio.h>
#ifdef TIOCDCDTIMESTAMP
  yes
#endif
     ], ac_cv_hdr_def_tiocdcdtimestamp=yes, ac_cv_hdr_def_tiocdcdtimestamp=no))
    ;;
esac

case "$ac_cv_hdr_def_tiocdcdtimestamp" in
 yes)
    ac_cv_var_oncore_ok=yes
    ;;
esac

AC_CACHE_CHECK(if nlist() values might require extra indirection,
ac_cv_var_nlist_extra_indirection,
[ans=no
case "$host" in
 *-*-aix*)
    ans=yes
    ;;
esac
ac_cv_var_nlist_extra_indirection=$ans])
case "$ac_cv_var_nlist_extra_indirection" in
 yes) AC_DEFINE(NLIST_EXTRA_INDIRECTION, 1, [Might nlist() values require an extra level of indirection (AIX)?]) ;;
esac

AC_CACHE_CHECK(for a minimum recommended value of tickadj,
ac_cv_var_min_rec_tickadj,
[ans=no
case "$host" in
 *-*-aix*)
    ans=40
    ;;
esac
ac_cv_var_min_rec_tickadj=$ans])
case "$ac_cv_var_min_rec_tickadj" in
 ''|no) ;;
 *) AC_DEFINE_UNQUOTED(MIN_REC_TICKADJ, $ac_cv_var_min_rec_tickadj, [Should we recommend a minimum value for tickadj?]) ;;
esac

AC_CACHE_CHECK(if the TTY code permits PARENB and IGNPAR,
ac_cv_var_no_parenb_ignpar,
[ans=no
case "$host" in
 i?86-*-linux*)
    ans=yes
    ;;
 mips-sgi-irix*)
    ans=yes
    ;;
 i?86-*-freebsd[[123]].*)
    ;;
 i?86-*-freebsd*)
    ans=yes
    ;;
 *-*-unicosmp*)
    ans=yes
    ;;
esac
ac_cv_var_no_parenb_ignpar=$ans])
case "$ac_cv_var_no_parenb_ignpar" in
 yes) AC_DEFINE(NO_PARENB_IGNPAR, 1, [Is there a problem using PARENB and IGNPAR (IRIX)?]) ;;
esac

AC_MSG_CHECKING(if we're including debugging code)
AC_ARG_ENABLE(debugging,	[  --enable-debugging      + include debugging code],
    [ntp_ok=$enableval], [ntp_ok=yes])
if test "$ntp_ok" = "yes"; then
    AC_DEFINE(DEBUG, 1, [Enable debugging?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(for a the number of minutes in a DST adjustment)
AC_ARG_ENABLE(dst_minutes,	[  --enable-dst-minutes=60 + minutes per DST adjustment],
    [ans=$enableval], [ans=60])
AC_DEFINE_UNQUOTED(DSTMINUTES, $ans, [The number of minutes in a DST adjustment])
AC_MSG_RESULT($ans)

AC_CACHE_CHECK(if we have the tty_clk line discipline/streams module,
 ac_cv_var_tty_clk,
 [case "$ac_cv_header_sys_clkdefs_h$ac_cv_hdr_def_tiocdcdtimestamp" in
  *yes*) ac_cv_var_tty_clk=yes ;;
 esac])
case "$ac_cv_var_tty_clk" in
 yes) AC_DEFINE(TTYCLK, 1, [Do we have the tty_clk line discipline/streams module?]) ;;
esac

AC_CACHE_CHECK(for the ppsclock streams module,
 ac_cv_var_ppsclock,
 ac_cv_var_ppsclock=$ac_cv_struct_ppsclockev)
case "$ac_cv_var_ppsclock" in
 yes) AC_DEFINE(PPS, 1, [Do we have the ppsclock streams module?]) ;;
esac

AC_CACHE_CHECK(for kernel multicast support, ac_cv_var_mcast,
  [ac_cv_var_mcast=no
  case "$host" in
   i386-sequent-sysv4) ;;
   *) AC_EGREP_CPP(yes,
  [#include <netinet/in.h>
#ifdef IP_ADD_MEMBERSHIP
   yes
#endif
  ], ac_cv_var_mcast=yes) ;;
  esac])
case "$ac_cv_var_mcast" in
 yes) AC_DEFINE(MCAST, 1, [Does the kernel support multicasting IP?]) ;;
esac

AC_CACHE_CHECK([[availability of ntp_{adj,get}time()]], ac_cv_var_ntp_syscalls,
 [ac_cv_var_ntp_syscalls=no
 case "$ac_cv_func___adjtimex" in
  yes)
    ac_cv_var_ntp_syscalls=libc
    ;;
  *) case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime" in
      yesyes)
        ac_cv_var_ntp_syscalls=libc
        ;;
      *) AC_EGREP_CPP(yes,
         [#include <sys/syscall.h>
#if defined(SYS_ntp_gettime) && defined(SYS_ntp_adjtime)
           yes
#endif
          ], ac_cv_var_ntp_syscalls=kernel)
         ;;
     esac
     ;;
 esac])
case "$ac_cv_var_ntp_syscalls" in
 libc)
    AC_DEFINE(NTP_SYSCALLS_LIBC, 1, [Do we have ntp_{adj,get}time in libc?])
    ;;
 kernel)
    AC_DEFINE(NTP_SYSCALLS_STD, 1, [Do we have ntp_{adj,get}time in the kernel?])
    ;;
 *)
    ;;
esac

AC_CACHE_CHECK(if sys/timex.h has STA_FLL, ac_cv_var_sta_fll,
[AC_EGREP_CPP(yes,
    [#include <sys/timex.h>
#ifdef STA_FLL
    yes
#endif
    ], ac_cv_var_sta_fll=yes, ac_cv_var_sta_fll=no)])

AC_CACHE_CHECK(if we have kernel PLL support, ac_cv_var_kernel_pll,
[dnl ac_cv_var_ntp_syscalls is {no,libc,kernel}
case "$ac_cv_header_sys_timex_h$ac_cv_struct_ntptimeval$ac_cv_var_sta_fll$ac_cv_var_ntp_syscalls" in
 *no*)
    ac_cv_var_kernel_pll=no
    ;;
 *) ac_cv_var_kernel_pll=yes
    ;;
esac])
case "$ac_cv_var_kernel_pll" in
 yes)
    AC_DEFINE(KERNEL_PLL, 1, [Does the kernel support precision time discipline?])
    ;;
esac

AC_CACHE_CHECK(if SIOCGIFCONF returns buffer size in the buffer, ac_cv_var_size_returned_in_buffer,
  [ans=no
  case "$host" in
   *-fujitsu-uxp*)
      ans=yes
      ;;
   *-ncr-sysv4*)
      ans=yes
      ;;
   *-univel-sysv*)
      ans=yes
      ;;
  esac
  ac_cv_var_size_returned_in_buffer=$ans])
case "$ac_cv_var_size_returned_in_buffer" in
 yes) AC_DEFINE(SIZE_RETURNED_IN_BUFFER, 1, [Does SIOCGIFCONF return size in the buffer?]) ;;
esac

dnl AC_CACHE_CHECK(if we want GDT surveying code, ac_cv_var_gdt_surveying,
dnl [AC_ARG_ENABLE(gdt-surveying,	[  --enable-gdt-surveying   - include GDT survey code],
dnl     [ans=$enableval], [ans=no])
dnl ac_cv_var_gdt_surveying=$ans])
dnl case "$ac_cv_var_gdt_surveying" in
dnl  yes) AC_DEFINE(GDT_SURVEYING, 1, [Include the GDT Surveying code?]) ;;
dnl esac

# Check for ioctls TIOCGPPSEV
AC_MSG_CHECKING(ioctl TIOCGPPSEV)
if test "$ac_cv_header_termios_h" = "yes"; then
    AC_EGREP_CPP(yes,
    [#include <termios.h>
#ifdef TIOCGPPSEV
         yes
#endif
	 ], ntp_ok=yes, ntp_ok=no)
else
ntp_ok=no
fi
if test "$ntp_ok" = "yes"; then
    AC_DEFINE(HAVE_TIOCGPPSEV, 1, [Do we have the TIOCGPPSEV ioctl (Solaris)?])
    ac_cv_var_oncore_ok=yes
fi
AC_MSG_RESULT($ntp_ok)

# Check for ioctls TIOCSPPS
AC_MSG_CHECKING(ioctl TIOCSPPS)
if test "$ac_cv_header_termios_h" = "yes"; then
    AC_EGREP_CPP(yes,
    [#include <termios.h>
#ifdef TIOCSPPS
         yes
#endif
	 ], ntp_ok=yes, ntp_ok=no)
else
    ntp_ok=no
fi

if test "$ntp_ok" = "yes"; then
    AC_DEFINE(HAVE_TIOCSPPS, 1, [Do we have the TIOCSPPS ioctl (Solaris)?])
fi
AC_MSG_RESULT($ntp_ok)

# Check for ioctls CIOGETEV
AC_MSG_CHECKING(ioctl CIOGETEV)
if test "$ac_cv_header_sys_ppsclock_h" = "yes"; then
    AC_EGREP_CPP(yes,
    [#include <sys/ppsclock.h>
#ifdef CIOGETEV
         yes
#endif
	 ], ntp_ok=yes, ntp_ok=no)
else
ntp_ok=no
fi
if test "$ntp_ok" = "yes"; then
    ac_cv_var_oncore_ok=yes
    AC_DEFINE(HAVE_CIOGETEV, 1, [Do we have the CIOGETEV ioctl (SunOS, Linux)?])
fi
AC_MSG_RESULT($ntp_ok)


# ATOM/PPSAPI stuff.

# ATOM used to require struct timespec, but that's been fixed now.

# case "$ac_cv_struct_timespec" in
#  'yes')
#     ac_cv_var_atom_ok=yes
#     ;;
# esac
ac_cv_var_atom_ok=yes

# Check for header timepps.h, if found then we have PPS API (Draft RFC) stuff.

# The PPSAPI headers need "inline" ($ac_cv_c_inline='inline')

# The PPSAPI needs ATOM

# The PPSAPI needs struct timespec.

case "$ac_cv_c_inline$ac_cv_struct_timespec$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h" in
 inlineyes*yes*)
    AC_DEFINE(HAVE_PPSAPI, 1, [Do we have the PPS API per the Draft RFC?])
    ac_cv_var_oncore_ok=yes
    ac_cv_var_ripe_ncc_ok=yes
    ac_cv_var_jupiter_ok=yes
    ;;
esac

# Check for ioctls TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG
AC_CHECK_HEADER(linux/serial.h)
AC_MSG_CHECKING(ioctl TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG)
case "$ac_cv_header_sys_ppsclock_h$ac_cv_header_linux_serial_h" in
  yesyes)
    AC_EGREP_CPP(yes,
    [#include <sys/time.h>
typedef int u_int;

#include <sys/ppsclock.h>
#include <linux/serial.h>

#ifdef TIOCGSERIAL
#ifdef TIOCSSERIAL
#ifdef ASYNC_PPS_CD_POS
#ifdef ASYNC_PPS_CD_NEG
#ifdef CIOGETEV
         yes
#endif
#endif
#endif
#endif
#endif
	 ], ntp_ok=yes)
	;;
  *)
	ntp_ok=no
	;;
esac
if test "$ntp_ok" = "yes"; then
    AC_DEFINE(HAVE_TIO_SERIAL_STUFF, 1, [Do we have the TIO serial stuff?])
fi
AC_MSG_RESULT($ntp_ok)

# Check for SHMEM_STATUS support
AC_MSG_CHECKING(SHMEM_STATUS support)
case "$ac_cv_header_sys_mman_h" in
 yes) ntp_ok=yes ;;
 *)   ntp_ok=no  ;;
esac
if test "$ntp_ok" = "yes"; then
    AC_DEFINE(ONCORE_SHMEM_STATUS, 1, [Do we have support for SHMEM_STATUS?])
fi
AC_MSG_RESULT($ntp_ok)

dnl dnl These are for OPT_PROGRAMS in authstuff/
dnl AC_SUBST(AUTHCERT)
dnl AC_SUBST(AUTHSPEED)
dnl AC_SUBST(MD5DRIVER)
dnl AC_SUBST(KEYPARITY)
dnl AC_SUBST(MAKEIPFP)
dnl AC_SUBST(MAKEPC1)
dnl AC_SUBST(MAKEPC2)
dnl AC_SUBST(MAKESP)
dnl AC_SUBST(MKRANDKEYS)
dnl AC_SUBST(OMAKEIPFP)
dnl AC_SUBST(UNIXCERT)

ntp_refclock=no

# HPUX only, and by explicit request
AC_MSG_CHECKING(Datum/Bancomm bc635/VME interface)
AC_ARG_ENABLE(BANCOMM,
    AC_HELP_STRING([--enable-BANCOMM], [- Datum/Bancomm bc635/VME interface]),
    [ntp_ok=$enableval], [ntp_ok=no])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_BANC, 1, [Datum/Bancomm bc635/VME interface?])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$host" in
 yes*-*-hpux*) ;;
 yes*) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac

#HPUX only, and only by explicit request
AC_MSG_CHECKING(TrueTime GPS receiver/VME interface)
AC_ARG_ENABLE(GPSVME,
    AC_HELP_STRING([--enable-GPSVME], [- TrueTime GPS receiver/VME interface]),
    [ntp_ok=$enableval], [ntp_ok=no])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_GPSVME, 1, [TrueTime GPS receiver/VME interface?])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$host" in
 yes*-*-hpux*) ;;
 yes*) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac

AC_MSG_CHECKING(for PCL720 clock support)
case "$ac_cv_header_machine_inline_h$ac_cv_header_sys_pcl720_h$ac_cv_header_sys_i8253_h" in
 yesyesyes)
    AC_DEFINE(CLOCK_PPS720, 1, [PCL 720 clock support])
    ans=yes
    ;;
 *)
    ans=no
    ;;
esac
AC_MSG_RESULT($ans)

AC_MSG_CHECKING(for default inclusion of all suitable non-PARSE clocks)
AC_ARG_ENABLE(all-clocks,
    AC_HELP_STRING([--enable-all-clocks], [+ include all suitable non-PARSE clocks:]),
    [ntp_eac=$enableval], [ntp_eac=yes])
AC_MSG_RESULT($ntp_eac)

AC_MSG_CHECKING(if we have support for PARSE clocks)
case "$ac_cv_var_atom_ok$ac_cv_header_termio_h$ac_cv_header_termios_h" in
 yes*yes*)
    ntp_canparse=yes
    ;;
 *) ntp_canparse=no
    ;;
esac
AC_MSG_RESULT($ntp_canparse)

AC_MSG_CHECKING([if we have support for audio clocks])
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
 *yes*)
    ntp_canaudio=yes
    AC_DEFINE(HAVE_AUDIO, , [Do we have audio support?])
    ;;
 *) ntp_canaudio=no ;;
esac
AC_MSG_RESULT($ntp_canaudio)

AC_MSG_CHECKING([if we have support for the SHM refclock interface])
case "$ac_cv_header_sys_ipc_h$ac_cv_header_sys_shm_h" in
 yesyes)
    ntp_canshm=yes
    ;;
 *) ntp_canshm=no ;;
esac
AC_MSG_RESULT($ntp_canshm)

# Requires modem control
AC_MSG_CHECKING(ACTS modem service)
AC_ARG_ENABLE(ACTS,
    AC_HELP_STRING([--enable-ACTS], [s ACTS modem service]),
    [ntp_ok=$enableval],
    [AC_EGREP_CPP(yes,
        [#include <termios.h>
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
#ifdef TIOCMBIS
         yes
#endif
         ], ntp_ok=$ntp_eac, ntp_ok=no)])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_ACTS, 1, [ACTS modem service])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Arbiter 1088A/B GPS receiver)
AC_ARG_ENABLE(ARBITER,
    AC_HELP_STRING([--enable-ARBITER], [+ Arbiter 1088A/B GPS receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_ARBITER, 1, [Arbiter 1088A/B GPS receiver])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Arcron MSF receiver)
AC_ARG_ENABLE(ARCRON_MSF,
    AC_HELP_STRING([--enable-ARCRON-MSF], [+ Arcron MSF receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_ARCRON_MSF, 1, [ARCRON support?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Austron 2200A/2201A GPS receiver)
AC_ARG_ENABLE(AS2201,
    AC_HELP_STRING([--enable-AS2201], [+ Austron 2200A/2201A GPS receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_AS2201, 1, [Austron 2200A/2201A GPS receiver?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(ATOM PPS interface)
AC_ARG_ENABLE(ATOM,	
    AC_HELP_STRING([--enable-ATOM], [s ATOM PPS interface]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
case "$ac_cv_var_atom_ok" in
 no) ntp_ok=no ;;
esac
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_ATOM, 1, [PPS interface?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Chrono-log K-series WWVB receiver)
AC_ARG_ENABLE(CHRONOLOG,
    AC_HELP_STRING([--enable-CHRONOLOG], [+ Chrono-log K-series WWVB receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_CHRONOLOG, 1, [Chronolog K-series WWVB receiver?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(CHU modem/decoder)
AC_ARG_ENABLE(CHU,
    AC_HELP_STRING([--enable-CHU], [+ CHU modem/decoder]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_CHU, 1, [CHU modem/decoder])
fi
AC_MSG_RESULT($ntp_ok)
ac_refclock_chu=$ntp_ok

AC_MSG_CHECKING(CHU audio/decoder)
AC_ARG_ENABLE(AUDIO-CHU,
    AC_HELP_STRING([--enable-AUDIO-CHU], [s CHU audio/decoder]),
    [ntp_ok=$enableval],
    [case "$ntp_eac$ac_refclock_chu$ntp_canaudio" in
 *no*)	ntp_ok=no  ;;
 *)	ntp_ok=yes ;;
esac])
if test "$ntp_ok" = "yes"; then
    AC_DEFINE(AUDIO_CHU, 1, [CHU audio/decoder?])
fi
AC_MSG_RESULT($ntp_ok)
# We used to check for sunos/solaris target...
case "$ntp_ok$ac_refclock_chu$ntp_canaudio" in
 yes*no*) AC_MSG_WARN(*** But the expected answer is...no ***) ;;
esac

# Not under HP-UX
AC_MSG_CHECKING(Datum Programmable Time System)
AC_ARG_ENABLE(DATUM,
    AC_HELP_STRING([--enable-DATUM], [s Datum Programmable Time System]),
    [ntp_ok=$enableval],
    [case "$ac_cv_header_termios_h" in
    yes)
        ntp_ok=$ntp_eac
        ;;
    *) ntp_ok=no
        ;;
    esac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_DATUM, 1, [Datum Programmable Time System?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Dumb generic hh:mm:ss local clock)
AC_ARG_ENABLE(DUMBCLOCK,
    AC_HELP_STRING([--enable-DUMBCLOCK], [+ Dumb generic hh:mm:ss local clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_DUMBCLOCK, 1, [Dumb generic hh:mm:ss local clock?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Forum Graphic GPS)
AC_ARG_ENABLE(FG,
    AC_HELP_STRING([--enable-FG], [+ Forum Graphic GPS]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_FG, 1, [Forum Graphic GPS datating station driver?])
fi
AC_MSG_RESULT($ntp_ok)

# Requires modem control
AC_MSG_CHECKING(Heath GC-1000 WWV/WWVH receiver)
AC_ARG_ENABLE(HEATH,
    AC_HELP_STRING([--enable-HEATH], [s Heath GC-1000 WWV/WWVH receiver]),
    [ntp_ok=$enableval],
    [AC_EGREP_CPP(yes,
        [#include <termios.h>
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
#ifdef TIOCMBIS
         yes
#endif
         ], ntp_ok=$ntp_eac, ntp_ok=no)])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_HEATH, 1, [Heath GC-1000 WWV/WWVH receiver?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(for hopf serial clock device)
AC_ARG_ENABLE(HOPFSERIAL,
    AC_HELP_STRING([--enable-HOPFSERIAL], [+ hopf serial clock device]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_HOPF_SERIAL, 1, [HOPF serial clock device?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(for hopf PCI clock 6039)
AC_ARG_ENABLE(HOPFPCI,
    AC_HELP_STRING([--enable-HOPFPCI], [+ hopf 6039 PCI board]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_HOPF_PCI, 1, [HOPF PCI clock device?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(HP 58503A GPS receiver)
AC_ARG_ENABLE(HPGPS,
    AC_HELP_STRING([--enable-HPGPS], [+ HP 58503A GPS receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_HPGPS, 1, [HP 58503A GPS receiver?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(IRIG audio decoder)
AC_ARG_ENABLE(IRIG,
    AC_HELP_STRING([--enable-IRIG], [s IRIG audio decoder]),
    [ntp_ok=$enableval],
    [case "$ntp_eac$ntp_canaudio" in
     *no*)	ntp_ok=no  ;;
     *)		ntp_ok=yes ;;
    esac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_IRIG, 1, [IRIG audio decoder?])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canaudio" in
 yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac

AC_MSG_CHECKING(for JJY receiver)
AC_ARG_ENABLE(JJY,
    AC_HELP_STRING([--enable-JJY], [+ JJY receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_JJY, 1, [JJY receiver?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Rockwell Jupiter GPS receiver)
AC_ARG_ENABLE(JUPITER,
    AC_HELP_STRING([--enable-JUPITER], [s Rockwell Jupiter GPS receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
case "$ac_cv_var_jupiter_ok" in
 no) ntp_ok=no ;;
esac
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_JUPITER, 1, [Rockwell Jupiter GPS clock?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Leitch CSD 5300 Master Clock System Driver)
AC_ARG_ENABLE(LEITCH,
    AC_HELP_STRING([--enable-LEITCH], [+ Leitch CSD 5300 Master Clock System Driver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_LEITCH, 1, [Leitch CSD 5300 Master Clock System Driver?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(local clock reference)
AC_ARG_ENABLE(LOCAL-CLOCK,
    AC_HELP_STRING([--enable-LOCAL-CLOCK], [+ local clock reference]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_LOCAL, 1, [local clock reference?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(EES M201 MSF receiver)
AC_ARG_ENABLE(MSFEES,
    AC_HELP_STRING([--enable-MSFEES], [+ EES M201 MSF receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_MSFEES, 1, [EES M201 MSF receiver])
fi
AC_MSG_RESULT($ntp_ok)

# Not Ultrix
AC_MSG_CHECKING(Magnavox MX4200 GPS receiver)
AC_ARG_ENABLE(MX4200,
    AC_HELP_STRING([--enable-MX4200 ], [s Magnavox MX4200 GPS receiver]),
    [ntp_ok=$enableval],
    [case "$ac_cv_var_ppsclock" in
     yes) ntp_ok=$ntp_eac
        ;;
     *) ntp_ok=no
        ;;
    esac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_MX4200, 1, [Magnavox MX4200 GPS receiver])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$host" in
 yes*-*-ultrix*) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac

AC_MSG_CHECKING(for NeoClock4X receiver)
AC_ARG_ENABLE(NEOCLOCK4X,
    AC_HELP_STRING([--enable-NEOCLOCK4X], [+ NeoClock4X DCF77 / TDF receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_NEOCLOCK4X, 1, [NeoClock4X])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(NMEA GPS receiver)
AC_ARG_ENABLE(NMEA,
    AC_HELP_STRING([--enable-NMEA], [+ NMEA GPS receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_NMEA, 1, [NMEA GPS receiver])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(for ONCORE Motorola VP/UT Oncore GPS)
AC_ARG_ENABLE(ONCORE,
    AC_HELP_STRING([--enable-ONCORE], [s Motorola VP/UT Oncore GPS receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
case "$ac_cv_var_oncore_ok" in
 no) ntp_ok=no ;;
esac
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_ONCORE, 1, [Motorola UT Oncore GPS])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(for Palisade clock)
AC_ARG_ENABLE(PALISADE,
    AC_HELP_STRING([--enable-PALISADE], [s Palisade clock]),
    [ntp_ok=$enableval],
    [case "$ac_cv_header_termios_h" in
    yes)
        ntp_ok=$ntp_eac
        ;;
    *) ntp_ok=no
        ;;
    esac])

if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_PALISADE, 1, [Palisade clock])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Conrad parallel port radio clock)
AC_ARG_ENABLE(PCF,
    AC_HELP_STRING([--enable-PCF ], [+ Conrad parallel port radio clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_PCF, 1, [Conrad parallel port radio clock])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(PST/Traconex 1020 WWV/WWVH receiver)
AC_ARG_ENABLE(PST,
    AC_HELP_STRING([--enable-PST], [+ PST/Traconex 1020 WWV/WWVH receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_PST, 1, [PST/Traconex 1020 WWV/WWVH receiver])
fi
AC_MSG_RESULT($ntp_ok)

# Requires modem control
AC_MSG_CHECKING(PTB modem service)
AC_ARG_ENABLE(PTBACTS,
    AC_HELP_STRING([--enable-PTBACTS], [s PTB modem service]),
    [ntp_ok=$enableval],
    [AC_EGREP_CPP(yes,
        [#include <termios.h>
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
#ifdef TIOCMBIS
         yes
#endif
         ], ntp_ok=$ntp_eac, ntp_ok=no)])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_PTBACTS, 1, [PTB modem service])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(RIPENCC specific Trimble driver)
AC_ARG_ENABLE(RIPENCC,
    AC_HELP_STRING([--enable-RIPENCC], [- RIPENCC specific Trimble driver]),
    [ntp_ok=$enableval], [ntp_ok=no])
# 020629: HMS: s/$ntp_eac -> -/no because of ptr += sprintf(ptr, ...) usage
case "$ac_cv_var_ripe_ncc_ok" in
 no) ntp_ok=no ;;
esac
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_RIPENCC, ,[RIPE NCC Trimble clock])
fi
AC_MSG_RESULT($ntp_ok)

# Danny Meyer says SHM compiles (with a few warnings) under Win32.
# For *IX, we need sys/ipc.h and sys/shm.h.
AC_MSG_CHECKING(for SHM clock attached thru shared memory)
AC_ARG_ENABLE(SHM,
    AC_HELP_STRING([--enable-SHM], [s SHM clock attached thru shared memory]),
    [ntp_ok=$enableval],
    [case "$ntp_eac$ntp_canshm" in
 *no*)	ntp_ok=no  ;;
 *)	ntp_ok=yes ;;
esac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_SHM, 1, [clock thru shared memory])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Spectracom 8170/Netclock/2 WWVB receiver)
AC_ARG_ENABLE(SPECTRACOM,
    AC_HELP_STRING([--enable-SPECTRACOM], [+ Spectracom 8170/Netclock/2 WWVB receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_SPECTRACOM, 1, [Spectracom 8170/Netclock/2 WWVB receiver])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(KSI/Odetics TPRO/S GPS receiver/IRIG interface)
AC_ARG_ENABLE(TPRO,
    AC_HELP_STRING([--enable-TPRO], [s KSI/Odetics TPRO/S GPS receiver/IRIG interface]),
    [ntp_ok=$enableval],
    [case "$ac_cv_header_sys_tpro_h" in
     yes)
	ntp_ok=$ntp_eac
	;;
     *)	ntp_ok=no
	;;
    esac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_TPRO, 1, [KSI/Odetics TPRO/S GPS receiver/IRIG interface])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ac_cv_header_sys_tpro" in
 yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac

AC_MSG_CHECKING(TRAK 8810 GPS receiver)
AC_ARG_ENABLE(TRAK,
    AC_HELP_STRING([--enable-TRAK], [+ TRAK 8810 GPS receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_TRAK, 1, [TRAK 8810 GPS receiver])
fi
AC_MSG_RESULT($ntp_ok)

# Not on a vax-dec-bsd
AC_MSG_CHECKING(Kinemetrics/TrueTime receivers)
AC_ARG_ENABLE(TRUETIME,
    AC_HELP_STRING([--enable-TRUETIME], [s Kinemetrics/TrueTime receivers]),
    [ntp_ok=$enableval],
    [case "$host" in
     vax-dec-bsd)
	ntp_ok=no
	;;
     *)
	ntp_ok=$ntp_eac
	;;
    esac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_TRUETIME, 1, [Kinemetrics/TrueTime receivers])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$host" in
 yesvax-dec-bsd) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac

AC_MSG_CHECKING(TrueTime 560 IRIG-B decoder)
AC_ARG_ENABLE(TT560,
    AC_HELP_STRING([--enable-TT560], [- TrueTime 560 IRIG-B decoder]),
    [ntp_ok=$enableval], [ntp_ok=no])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_TT560, , [TrueTime 560 IRIG-B decoder?])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(Ultralink M320 WWVB receiver)
AC_ARG_ENABLE(ULINK,
    AC_HELP_STRING([--enable-ULINK], [+ Ultralink WWVB receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_ULINK, 1, [Ultralink M320 WWVB receiver?])
fi
AC_MSG_RESULT($ntp_ok)

# Requires modem control
AC_MSG_CHECKING(USNO modem service)
AC_ARG_ENABLE(USNO,
    AC_HELP_STRING([--enable-USNO], [s USNO modem service]),
    [ntp_ok=$enableval],
    [AC_EGREP_CPP(yes,
        [#include <termios.h>
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
#ifdef TIOCMBIS
         yes
#endif
         ], ntp_ok=$ntp_eac, ntp_ok=no)])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_USNO, 1, [USNO modem service])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(WWV receiver)
AC_ARG_ENABLE(WWV,
    AC_HELP_STRING([--enable-WWV], [s WWV Audio receiver]),
    [ntp_ok=$enableval],
    [case "$ntp_eac$ntp_canaudio" in
     *no*)	ntp_ok=no  ;;
     *)		ntp_ok=yes ;;
    esac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_WWV, 1, [WWV audio driver])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canaudio" in
 yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac

AC_MSG_CHECKING(for Zyfer receiver)
AC_ARG_ENABLE(ZYFER,
    AC_HELP_STRING([--enable-ZYFER], [+ Zyfer GPStarplus receiver]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
if test "$ntp_ok" = "yes"; then
    ntp_refclock=yes
    AC_DEFINE(CLOCK_ZYFER, 1, [Zyfer GPStarplus])
fi
AC_MSG_RESULT($ntp_ok)

AC_MSG_CHECKING(for default inclusion of all suitable PARSE clocks)
AC_ARG_ENABLE(parse-clocks,	[  --enable-parse-clocks   - include all suitable PARSE clocks:],
    [ntp_eapc=$enableval],
    [case "$ntp_eac" in
     yes) ntp_eapc=$ntp_canparse ;;
     *) ntp_eapc=no ;;
    esac
    ntp_eapc=no])
AC_MSG_RESULT($ntp_eapc)

case "$ntp_eac$ntp_eapc$ntp_canparse" in
 noyes*)
    AC_MSG_ERROR("--enable-parse-clocks" requires "--enable-all-clocks".)
    ;;
 yesyesno)
    AC_MSG_ERROR(You said "--enable-parse-clocks" but PARSE isn't supported on this platform!)
    ;;
 *) ;;
esac

ntp_libparse=no
ntp_parseutil=no
ntp_rawdcf=no

AC_MSG_CHECKING(Diem Computime Radio Clock)
AC_ARG_ENABLE(COMPUTIME,
    AC_HELP_STRING([--enable-COMPUTIME], [s Diem Computime Radio Clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_COMPUTIME, 1, [Diems Computime Radio Clock?])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(ELV/DCF7000 clock)
AC_ARG_ENABLE(DCF7000,
    AC_HELP_STRING([--enable-DCF7000], [s ELV/DCF7000 clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_DCF7000, 1, [ELV/DCF7000 clock?])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(HOPF 6021 clock)
AC_ARG_ENABLE(HOPF6021,
    AC_HELP_STRING([--enable-HOPF6021 ], [s HOPF 6021 clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_HOPF6021, 1, [HOPF 6021 clock?])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(Meinberg clocks)
AC_ARG_ENABLE(MEINBERG,
    AC_HELP_STRING([--enable-MEINBERG], [s Meinberg clocks]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_MEINBERG, 1, [Meinberg clocks])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(DCF77 raw time code)
AC_ARG_ENABLE(RAWDCF,
    AC_HELP_STRING([--enable-RAWDCF], [s DCF77 raw time code]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_parseutil=yes
    ntp_refclock=yes
    ntp_rawdcf=yes
    AC_DEFINE(CLOCK_RAWDCF, 1, [DCF77 raw time code])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

case "$ntp_rawdcf" in
 yes)
    AC_CACHE_CHECK(if we must enable parity for RAWDCF,
    ac_cv_var_rawdcf_parity,
    [ans=no
    case "$host" in
     *-*-linux*)
        ans=yes
        ;;
    esac
    ac_cv_var_rawdcf_parity=$ans])
    case "$ac_cv_var_rawdcf_parity" in
     yes) AC_DEFINE(RAWDCF_NO_IGNPAR, 1, [Should we not IGNPAR (Linux)?]) ;;
    esac
    ;;

 *) # HMS: Is this a good idea?
    ac_cv_var_rawdcf_parity=no
    ;;
esac

AC_MSG_CHECKING(RCC 8000 clock)
AC_ARG_ENABLE(RCC8000,
    AC_HELP_STRING([--enable-RCC8000], [s RCC 8000 clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_RCC8000, 1, [RCC 8000 clock])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(Schmid DCF77 clock)
AC_ARG_ENABLE(SCHMID,
    AC_HELP_STRING([--enable-SCHMID ], [s Schmid DCF77 clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_SCHMID, 1, [Schmid DCF77 clock])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(Trimble GPS receiver/TAIP protocol)
AC_ARG_ENABLE(TRIMTAIP,
    AC_HELP_STRING([--enable-TRIMTAIP], [s Trimble GPS receiver/TAIP protocol]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_TRIMTAIP, 1, [Trimble GPS receiver/TAIP protocol])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(Trimble GPS receiver/TSIP protocol)
AC_ARG_ENABLE(TRIMTSIP,
    AC_HELP_STRING([--enable-TRIMTSIP], [s Trimble GPS receiver/TSIP protocol]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_TRIMTSIP, 1, [Trimble GPS receiver/TSIP protocol])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(WHARTON 400A Series clock)
AC_ARG_ENABLE(WHARTON,
    AC_HELP_STRING([--enable-WHARTON], [s WHARTON 400A Series clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_WHARTON_400A, 1, [WHARTON 400A Series protocol])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac

AC_MSG_CHECKING(VARITEXT clock)
AC_ARG_ENABLE(VARITEXT,
    AC_HELP_STRING([--enable-VARITEXT], [s VARITEXT clock]),
    [ntp_ok=$enableval], [ntp_ok=$ntp_eapc])
if test "$ntp_ok" = "yes"; then
    ntp_libparse=yes
    ntp_refclock=yes
    AC_DEFINE(CLOCK_VARITEXT, 1, [VARITEXT protocol])
fi
AC_MSG_RESULT($ntp_ok)
case "$ntp_ok$ntp_canparse" in
 yesno)
    AC_MSG_ERROR(That's a parse clock and this system doesn't support it!)
    ;;
esac
AC_SUBST(LIBPARSE)
AC_SUBST(MAKE_LIBPARSE)
AC_SUBST(MAKE_LIBPARSE_KERNEL)
AC_SUBST(MAKE_CHECK_Y2K)
AC_MSG_CHECKING(if we need to make and use the parse libraries)
ans=no
case "$ntp_libparse" in
 yes)
    ans=yes
    AC_DEFINE(CLOCK_PARSE, 1, [PARSE driver interface])
    LIBPARSE=../libparse/libparse.a
    MAKE_LIBPARSE=libparse.a
    MAKE_CHECK_Y2K=check_y2k
    AC_DEFINE(PPS_SAMPLE, 1, [PPS auxiliary interface for ATOM?])
    AC_DEFINE(CLOCK_ATOM)
    ;;
esac
AC_MSG_RESULT($ans)

# AC_SUBST(RSAOBJS)
# AC_SUBST(RSASRCS)
# AC_SUBST(RSADIR)
# AC_SUBST(RSAREF)
# AC_SUBST(LIBRSAREF)
# AC_SUBST(MAKE_LIBRSAREF)

AC_SUBST(OPENSSL)
AC_SUBST(OPENSSL_INC)
AC_SUBST(OPENSSL_LIB)

AC_SUBST(MAKE_NTP_KEYGEN)

AC_MSG_CHECKING(for openssl library directory)
AC_ARG_WITH(openssl-libdir,
	AC_HELP_STRING([--with-openssl-libdir], [+ =/something/reasonable]),
[ans=$withval], [ans=yes])
case "$ans" in
 no) ;;
 yes) # Look in:
    ans="/usr/lib /usr/lib/openssl /usr/local/lib /usr/local/ssl/lib"
    ;;
 *) # Look where they said
    ;;
esac
case "$ans" in
 no) ;;
 *) # Look for libcrypto.a and libssl.a:
    for i in $ans no
    do
	case "$host" in
	 *-*-darwin*)
	    test -f $i/libcrypto.dylib -a -f $i/libssl.dylib && break
	    ;;
	 *)
	    test -f $i/libcrypto.a -a -f $i/libssl.a && break
	    ;;
	esac
    done
    case "$i" in
     no)
	ans=no
	OPENSSL_LIB=
	;;
     *) ans=$i
	OPENSSL_LIB=$ans
	;;
    esac
    ;;
esac
AC_MSG_RESULT($ans)

AC_MSG_CHECKING(for openssl include directory)
AC_ARG_WITH(openssl-incdir,
	AC_HELP_STRING([--with-openssl-incdir], [+ =/something/reasonable]),
[ans=$withval], [ans=yes])
case "$ans" in
 no) ;;
 yes) # look in:
    ans="/usr/include /usr/local/include /usr/local/ssl/include"
    ;;
 *) # Look where they said
    ;;
esac
case "$ans" in
 no) ;;
 *) # look for openssl/opensslconf.h:
    for i in $ans no
    do
	test -f $i/openssl/opensslconf.h && break
    done
    case "$i" in
     no)
	ans=no
	OPENSSL_INC=
	;;
     *) ans=$i
	OPENSSL_INC=$ans
	;;
    esac
    ;;
esac
AC_MSG_RESULT($ans)

AC_ARG_WITH(crypto,
	AC_HELP_STRING([--with-crypto], [+ =openssl]),
[ans=$withval], [ans=yes])
case "$ans" in
 no) ;;
 yes|openssl)
    if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INC"
    then
	ans=no
    else
	# We have OpenSSL inc/lib - use them.
	ans=openssl
	CPPFLAGS="$CPPFLAGS -I$OPENSSL_INC"
	LDFLAGS="$LDFLAGS -L$OPENSSL_LIB"
	AC_SUBST(LCRYPTO, [-lcrypto])
	MAKE_NTP_KEYGEN=ntp-keygen
	AC_DEFINE(OPENSSL, , [Use OpenSSL?])
	AC_CHECK_FUNCS(EVP_md2 EVP_mdc2)
    fi
    ;;
esac
AC_MSG_CHECKING(for the level of crypto support)
AC_MSG_RESULT($ans)

AC_MSG_CHECKING(if we want to compile with ElectricFence)
AC_ARG_WITH(electricfence,
	AC_HELP_STRING([--with-electricfence], [- compile with ElectricFence malloc debugger]),
[ans=$withval], [ans=no])
case "$ans" in
 no) ;;
 *)
    LIBS="$LIBS \${top_builddir}/ElectricFence/libefence.a"
    EF_PROGS="eftest tstheap"
    AC_SUBST(EF_PROGS)
    EF_LIBS=libefence.a
    AC_SUBST(EF_LIBS)
    ans=yes
    ;;
esac
AC_MSG_RESULT($ans)

AC_MSG_CHECKING(if we want to try SNTP)
AC_ARG_WITH(sntp,
	AC_HELP_STRING([--with-sntp], [- Build SNTP?]),
[ans=$withval], [ans=no])
case "$ans" in
 no) ;;
 *)
    MAKE_SNTP="sntp"
    AC_SUBST(MAKE_SNTP)
    ans=yes
    ;;
esac
AC_MSG_RESULT($ans)

AC_SUBST(TESTDCF)
AC_SUBST(DCFD)

AC_MSG_CHECKING(if we can make dcf parse utilities)
ans=no
if test "$ntp_parseutil" = "yes"; then
    case "$host" in
     *-*-sunos4*|*-*-solaris2*|*-*-linux*)
	ans="dcfd testdcf"
	DCFD=dcfd
        TESTDCF=testdcf
	;;
    esac
fi
AC_MSG_RESULT($ans)

AC_SUBST(MAKE_PARSEKMODULE)
AC_MSG_CHECKING(if we can build kernel streams modules for parse)
ans=no
case "$ntp_parseutil$ac_cv_header_sys_stropts_h" in
 yesyes)
    case "$host" in
     sparc-*-sunos4*)
        case "$ac_cv_var_kernel_pll" in
	yes)
	    AC_DEFINE(PPS_SYNC, 1, [PARSE kernel PLL PPS support])
	    ;;
	esac
	ans=parsestreams
	MAKE_PARSEKMODULE=parsestreams.loadable_module.o
	;;
     sparc-*-solaris2*)
	ans=parsesolaris
	MAKE_PARSEKMODULE=parse
	;;
    esac
    ;;
esac
AC_MSG_RESULT($ans)

AC_MSG_CHECKING(if we need basic refclock support)
if test "$ntp_refclock" = "yes"; then
    AC_DEFINE(REFCLOCK, 1, [Basic refclock support?])
fi
AC_MSG_RESULT($ntp_refclock)

dnl Things that can be made in clockstuff/
AC_SUBST(PROPDELAY)	dnl Set to "propdelay"
AC_SUBST(CHUTEST)	dnl Set to "chutest"
AC_SUBST(CLKTEST)	dnl Set to "clktest"

AC_SUBST(MAKE_ADJTIMED)
AC_MSG_CHECKING(if we want HP-UX adjtimed support)
case "$host" in
 *-*-hpux[[56789]]*)
    ans=yes
    ;;
 *) ans=no
    ;;
esac
if test "$ans" = "yes"; then
    MAKE_ADJTIMED=adjtimed
    AC_DEFINE(NEED_HPUX_ADJTIME, 1, [Do we need HPUX adjtime() library support?])
fi
AC_MSG_RESULT($ans)

AC_MSG_CHECKING(if we want QNX adjtime support)
case "$host" in
 *-*-qnx*)
    ans=yes
    ;;
 *) ans=no
    ;;
esac
if test "$ans" = "yes"; then
    AC_DEFINE(NEED_QNX_ADJTIME, 1, [Do we need the qnx adjtime call?])
fi
AC_MSG_RESULT($ans)

AC_CACHE_CHECK(if we can read kmem, ac_cv_var_can_kmem,
[AC_ARG_ENABLE(kmem,		[  --enable-kmem           s read /dev/kmem for tick and/or tickadj],
    [ans=$enableval],
    [case "$ac_cv_func_nlist$ac_cv_func_K_open$ac_cv_func_kvm_open" in
     *yes*)
	ans=yes
	;;
     *) ans=no
	;;
    esac
    case "$host" in
     *-*-aix*)
	#ans=no
	;;
     *-*-domainos)	# Won't be found...
	ans=no
	;;
     *-*-hpux*)
	#ans=no
	;;
     *-*-irix[[456]]*)
	ans=no
	;;
     *-*-linux*)
	ans=no
	;;
     *-*-winnt3.5)
	ans=no
	;;
     *-*-unicosmp*)
	ans=no
	;;
    esac
    ])
ac_cv_var_can_kmem=$ans])

case "$ac_cv_var_can_kmem" in
 *yes*) ;;
 *) AC_DEFINE(NOKMEM, 1, [Should we NOT read /dev/kmem?]) ;;
esac

AC_CACHE_CHECK(if adjtime is accurate, ac_cv_var_adjtime_is_accurate,
[AC_ARG_ENABLE(accurate-adjtime, [  --enable-accurate-adjtime
                          s the adjtime() call is accurate],
    [ans=$enableval],
    [case "$host" in
      i386-sequent-ptx*)
	 ans=no
	 ;;
      i386-unknown-osf1*)
	 ans=yes
	 ;;
      mips-sgi-irix[[456]]*)
	 ans=yes
	 ;;
      *-fujitsu-uxp*)
	 ans=yes
	 ;;
      *-ibm-aix[[45]]*)
	 ans=yes
	 ;;
      *-*-linux*)
	 ans=yes
	 ;;
      *-*-solaris2.[[01]])
	 ans=no
	 ;;
      *-*-solaris2*)
         ans=yes
         ;;
      *-*-unicosmp*)
         ans=yes
         ;;
      *) ans=no
	 ;;
     esac
     ])
ac_cv_var_adjtime_is_accurate=$ans])
case "$ac_cv_var_adjtime_is_accurate" in
 yes) AC_DEFINE(ADJTIME_IS_ACCURATE, 1, [Is adjtime() accurate?]) ;;
esac

AC_CACHE_CHECK([the name of 'tick' in the kernel],
ac_cv_var_nlist_tick,
[ans=_tick
case "$host" in
 m68*-hp-hpux*) # HP9000/300?
    ans=_old_tick
    ;;
 *-apple-aux[[23]]*)
    ans=tick
    ;;
 *-hp-hpux*)
    ans=old_tick
    ;;
 *-ibm-aix[[345]]*)
    ans=no
    ;;
 *-*-mpeix*)
    ans=no
    ;;
 *-*-ptx*)
    ans=tick
    ;;
 *-*-sco3.2v[[45]]*)
    ans=no
    ;;
 *-*-solaris2*)
    ans=nsec_per_tick
    ;;
 *-*-sysv4*)
    ans=tick
    ;;
esac
ac_cv_var_nlist_tick=$ans])
case "$ac_cv_var_nlist_tick" in
 ''|no) ;;	# HMS: I think we can only get 'no' here...
 *) AC_DEFINE_UNQUOTED(K_TICK_NAME, "$ac_cv_var_nlist_tick", [What is the name of TICK in the kernel?]) ;;
esac
#
AC_CACHE_CHECK([for the units of 'tick'],
ac_cv_var_tick_nano,
[ans=usec
case "$host" in
 *-*-solaris2*)
    ans=nsec
    ;;
esac
ac_cv_var_tick_nano=$ans])
case "$ac_cv_var_tick_nano" in
 nsec)
    AC_DEFINE(TICK_NANO, 1, [Is K_TICK_NAME in nanoseconds?])
    ;;
esac
#
AC_CACHE_CHECK([the name of 'tickadj' in the kernel],
ac_cv_var_nlist_tickadj,
[ans=_tickadj
case "$host" in
 m68*-hp-hpux*) # HP9000/300?
    ans=_tickadj
    ;;
 *-apple-aux[[23]]*)
    ans=tickadj
    ;;
 *-hp-hpux10*)
    ans=no
    ;;
 *-hp-hpux9*)
    ans=no
    ;;
 *-hp-hpux*)
    ans=tickadj
    ;;
 *-*-aix*)
    ans=tickadj
    ;;
 *-*-mpeix*)
    ans=no
    ;;
 *-*-ptx*)
    ans=tickadj
    ;;
 *-*-sco3.2v4*)
    ans=no
    ;;
 *-*-sco3.2v5.0*)
    ans=clock_drift
    ;;
 *-*-solaris2*)
    ans=no	# hrestime_adj
    ;;
 *-*-sysv4*)
    ans=tickadj
    ;;
esac
ac_cv_var_nlist_tickadj=$ans])
case "$ac_cv_var_nlist_tickadj" in
 ''|no) ;;	# HMS: I think we can only get 'no' here...
 *) AC_DEFINE_UNQUOTED(K_TICKADJ_NAME, "$ac_cv_var_nlist_tickadj", [What is the name of TICKADJ in the kernel?]) ;;
esac
#
AC_CACHE_CHECK([for the units of 'tickadj'],
ac_cv_var_tickadj_nano,
[ans=usec
case "$host" in
 *-*-solaris2*)
    ans=nsec
    ;;
esac
ac_cv_var_tickadj_nano=$ans])
case "$ac_cv_var_tickadj_nano" in
 nsec)
    AC_DEFINE(TICKADJ_NANO, 1, [Is K_TICKADJ_NAME in nanoseconds?])
    ;;
esac
#
AC_CACHE_CHECK([half-heartedly for 'dosynctodr' in the kernel],
ac_cv_var_nlist_dosynctodr,
[case "$host" in
 *-apple-aux[[23]]*)
    ans=no
    ;;
 *-sni-sysv*)
    ans=dosynctodr
    ;;
 *-*-aix*)
    ans=dosynctodr
    ;;
 *-*-hpux*)
    ans=no
    ;;
 *-*-mpeix*)
    ans=no
    ;;
 *-*-nextstep*)
    ans=_dosynctodr
    ;;
 *-*-ptx*)
    ans=doresettodr
    ;;
 *-*-sco3.2v4*)
    ans=no
    ;;
 *-*-sco3.2v5*)
    ans=track_rtc
    ;;
 *-*-solaris2*)
    ans=dosynctodr
    ;;
 *-*-sysv4*)
    ans=doresettodr
    ;;
 *)
    ans=_dosynctodr
    ;;
esac
ac_cv_var_nlist_dosynctodr=$ans])
case "$ac_cv_var_nlist_dosynctodr" in
 no) ;;
 *)  AC_DEFINE_UNQUOTED(K_DOSYNCTODR_NAME, "$ac_cv_var_nlist_dosynctodr", [What is (probably) the name of DOSYNCTODR in the kernel?])
     ;;
esac
#
AC_CACHE_CHECK([half-heartedly for 'noprintf' in the kernel],
ac_cv_var_nlist_noprintf,
[case "$host" in
 *-apple-aux[[23]]*)
    ans=no
    ;;
 *-sni-sysv*)
    ans=noprintf
    ;;
 *-*-aix*)
    ans=noprintf
    ;;
 *-*-hpux*)
    ans=no
    ;;
 *-*-mpeix*)
    ans=no
    ;;
 *-*-ptx*)
    ans=noprintf
    ;;
 *-*-nextstep*)
    ans=_noprintf
    ;;
 *-*-solaris2*)
    ans=noprintf
    ;;
 *-*-sysv4*)
    ans=noprintf
    ;;
 *)
    ans=_noprintf
    ;;
esac
ac_cv_var_nlist_noprintf=$ans])
case "$ac_cv_var_nlist_noprintf" in
 no) ;;
 *)  AC_DEFINE_UNQUOTED(K_NOPRINTF_NAME, "$ac_cv_var_nlist_noprintf", [What is (probably) the name of NOPRINTF in the kernel?])
     ;;
esac

dnl The tick/tickadj sections were written by Skippy, who never learned
dnl that it's impolite (horridly gross) to show your guts in public.

dnl	tick		tickadj	
dnl	10000		80	    Unixware
dnl	1000000L/hz	tick/16     (Solaris,UXPV,HPUX) && ADJTIME_IS_ACCURATE
dnl	10000		150	    sgi IRIX
dnl	1000000L/hz	1000	    RS6000 && NOKMEM
dnl	1000000L/hz	668	    DOMAINOS && NOKMEM
dnl	1000000L/hz	500/HZ	    other && NOKMEM
dnl	txc.tick	1	    Linux
dnl	(every / 10)	50	    WinNT - tickadj is roughly 500/hz
dnl	1000000L/hz	(nlist)     (Solaris && !ADJTIME_IS_ACCURATE),
dnl				    (RS6000 && !NOKMEM), SINIX MIPS

dnl But we'll only use these "values" if we can't find anything else.

AC_CACHE_CHECK(for a default value for 'tick', ac_cv_var_tick,
[AC_ARG_ENABLE(tick,		[  --enable-tick=VALUE     s force a value for 'tick'],
    [ans=$enableval],
    [ans=no
     case "$host" in
      XXX-*-pc-cygwin*)
	 ;;
      *-univel-sysv*)
	 ans=10000
	 ;;
      *-*-irix*)
	 ans=10000
	 ;;
      *-*-linux*)
	 ans=txc.tick
	 ;;
      *-*-mpeix*)
	 ans=no
	 ;;
      *-*-winnt3.5)
	 ans='(every / 10)'
	 ;;
      *-*-unicosmp*)
	 ans=10000
	 ;;
      *)
	 ans='1000000L/hz'
	 ;;
     esac])
ac_cv_var_tick=$ans])
case "$ac_cv_var_tick" in
 ''|no) ;;	# HMS: I think we can only get 'no' here...
 *) AC_DEFINE_UNQUOTED(PRESET_TICK, $ac_cv_var_tick, [Preset a value for 'tick'?]) ;;
esac

AC_CACHE_CHECK(for a default value for 'tickadj', ac_cv_var_tickadj,
[AC_ARG_ENABLE(tickadj,		[  --enable-tickadj=VALUE  s force a value for 'tickadj'],
  [ans=$enableval],
  [ans='500/hz'
  case "$host" in
   *-fujitsu-uxp*)
      case "$ac_cv_var_adjtime_is_accurate" in
       yes) ans='tick/16' ;;
      esac
      ;;
   XXX-*-pc-cygwin*)
      ans=no
      ;;
   *-univel-sysv*)
      ans=80
      ;;
   *-*-aix*)
      case "$ac_cv_var_can_kmem" in
       no) ans=1000 ;;
      esac
      ;;
   *-*-domainos)	# Skippy: won't be found...
      case "$ac_cv_var_can_kmem" in
       no) ans=668 ;;
      esac
      ;;
   *-*-hpux*)
      case "$ac_cv_var_adjtime_is_accurate" in
       yes) ans='tick/16' ;;
      esac
      ;;
   *-*-irix*)
      ans=150
      ;;
   *-*-mpeix*)
      ans=no
      ;;
   *-*-sco3.2v5.0*)
      ans=10000L/hz
      ;;
   *-*-solaris2*)
      case "$ac_cv_var_adjtime_is_accurate" in
       yes)
          #ans='tick/16'
	  ;;
      esac
      ;;
   *-*-winnt3.5)
      ans=50
      ;;
   *-*-unicosmp*)
      ans=150
      ;;
  esac])
ac_cv_var_tickadj=$ans])
case "$ac_cv_var_tickadj" in
 ''|no) ;;	# HMS: I think we can only get 'no' here...
 *) AC_DEFINE_UNQUOTED(PRESET_TICKADJ, $ac_cv_var_tickadj, [Preset a value for 'tickadj'?]) ;;
esac

# Newer versions of ReliantUNIX round adjtime() values down to
# 1/100s (system tick). Sigh ...
# Unfortunately, there is no easy way to know if particular release
# has this "feature" or any obvious way to test for it.
case "$host" in
 mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX_CLOCK, 1, [Do we want the ReliantUNIX clock hacks?]) ;;
esac

case "$host" in
 *-*-sco3.2v5*) AC_DEFINE(SCO5_CLOCK, 1, [Do we want the SCO clock hacks?]) ;;
esac

ac_cv_make_tickadj=yes
case "$ac_cv_var_can_kmem$ac_cv_var_tick$ac_cv_var_tickadj" in
 nonono)	# Don't read KMEM, no presets.  Bogus.
    AC_MSG_WARN(Can't read kmem, no PRESET_TICK or PRESET_TICKADJ.  No tickadj.)
    ac_cv_make_tickadj=no
    ;;
 nono*)		# Don't read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
    AC_MSG_WARN(Can't read kmem but no PRESET_TICK.  No tickadj.)
    ac_cv_make_tickadj=no
    ;;
 no*no)		# Don't read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Bogus.
    AC_MSG_WARN(Can't read kmem but no PRESET_TICKADJ.  No tickadj.)
    ac_cv_make_tickadj=no
    ;;
 no*)		# Don't read KMEM, PRESET_TICK and PRESET_TICKADJ.  Cool.
    ;;
 yesnono)	# Read KMEM, no presets.  Cool.
    ;;
 yesno*)	# Read KMEM, no PRESET_TICK but PRESET_TICKADJ.  Bogus.
    AC_MSG_WARN(PRESET_TICKADJ is defined but not PRESET_TICK.  Please report this.)
    ;;
 yes*no)	# Read KMEM, PRESET_TICK but no PRESET_TICKADJ.  Cool.
    ;;
 yes*)		# READ KMEM, PRESET_TICK and PRESET_TICKADJ.
    ;;
 *)		# Generally bogus.
    AC_MSG_ERROR(This shouldn't happen.)
    ;;
esac

AC_SUBST(MAKE_NTPTIME)
AC_CACHE_CHECK(if we want and can make the ntptime utility, ac_cv_make_ntptime,
[case "$host" in
 *) case "$ac_cv_struct_ntptimeval$ac_cv_var_kernel_pll" in
     yesyes)
	ans=yes
	;;
     *)
	ans=no
	;;
    esac
    ;;
esac
ac_cv_make_ntptime=$ans])
case "$ac_cv_make_ntptime" in
 yes)
    MAKE_NTPTIME=ntptime
    ;;
esac

AC_SUBST(MAKE_TICKADJ)
case "$host" in
 mips-sni-sysv4*)
    # tickadj is pretty useless on newer versions of ReliantUNIX
    # Do not bother
    ac_cv_make_tickadj=no
    ;;
 *-*-irix*)
    ac_cv_make_tickadj=no
    ;;
 *-*-solaris2*)
    # DLM says tickadj is a no-no starting with solaris2.5
    case "$host" in
     *-*-solaris2.1[[0-9]]*)
	ac_cv_make_tickadj=no
	;;
     *-*-solaris2.[[0-4]]*) ;;
     *) ac_cv_make_tickadj=no ;;
    esac
    ;;
 *-*-unicosmp*)
    ac_cv_make_tickadj=no
    ;;
esac
AC_CACHE_CHECK(if we want and can make the tickadj utility, ac_cv_make_tickadj,
ac_cv_make_tickadj=yes)
case "$ac_cv_make_tickadj" in
 yes)
    MAKE_TICKADJ=tickadj
    ;;
esac

AC_SUBST(MAKE_TIMETRIM)
AC_CACHE_CHECK(if we want and can make the timetrim utility, ac_cv_make_timetrim,
[case "$host" in
 *-*-irix*)
    ac_cv_make_timetrim=yes
    ;;
 *-*-unicosmp*)
    ac_cv_make_timetrim=yes
    ;;
 *)
    ac_cv_make_timetrim=no
    ;;
esac])
case "$ac_cv_make_timetrim" in
 yes)
    MAKE_TIMETRIM=timetrim
    ;;
esac

AC_SUBST(MAKE_LIBNTPSIM)
AC_SUBST(MAKE_NTPDSIM)
AC_CACHE_CHECK([if we want to build the NTPD simulator], ac_cv_var_ntpd_sim,
[AC_ARG_ENABLE(simulator,
    AC_HELP_STRING([--enable-simulator], [- build/install the NTPD simulator?]),
    [ans=$enableval], [ans=no])
ac_cv_var_ntpd_sim=$ans])
case "$ac_cv_var_ntpd_sim" in
 yes)
    MAKE_NTPDSIM=ntpdsim
    MAKE_LIBNTPSIM=libntpsim.a
    ;;
esac

AC_CACHE_CHECK(if we want UDP wildcard delivery, ac_cv_var_udp_wildcard_delivery,
[AC_ARG_ENABLE(udp-wildcard,	[  --enable-udp-wildcard   s use UDP wildcard delivery],
    [ans=$enableval],
    [ans=no
     case "$host" in
      *-fujitsu-uxp*)
	 ans=yes
	 ;;
      *-univel-sysv*)
	 ans=yes
	 ;;
      *-*-aix3.2*)
	 ans=yes
	 ;;
      *-*-aix[[45]]*)
	 ans=yes
	 ;;
      *-*-bsdi*)
	 ans=yes
	 ;;
      *-*-domainos)
	 ans=yes
	 ;;
      *-*-freebsd*)
	ans=yes
	;;
      *-*-hpux*)
	 ans=yes
	 ;;
      *-*-irix6*)
	 ans=yes
	 ;;
      *-*-linux*)
	 ans=yes
	 ;;
      *-*-mpeix*)
	 ans=yes
	 ;;
      *-*-osf*)
	 ans=yes
	 ;;
      *-*-ptx*)
	 ans=yes
	 ;;
      *-*-solaris2*)
	 ans=yes
	 ;;
      *-*-sunos4*)
	 ans=yes
	 ;;
      *-*-unicosmp*)
	 ans=yes
	 ;;
     esac])
ac_cv_var_udp_wildcard_delivery=$ans])
case "$ac_cv_var_udp_wildcard_delivery" in
 yes) AC_DEFINE(UDP_WILDCARD_DELIVERY, 1, [use UDP Wildcard Delivery?]) ;;
esac

case "$build" in
 $host)
    ;;
 *) case "$host" in
     *-*-vxworks*)
        LDFLAGS="$LDFLAGS -r"
        ;;
    esac
    ;;
esac

AC_CACHE_CHECK(if we should always slew the time, ac_cv_var_slew_always,
[AC_ARG_ENABLE(slew-always,	 [  --enable-slew-always    s always slew the time],
    [ans=$enableval],
    [case "$host" in
      *-apple-aux[[23]]*)
	 ans=yes
	 ;;
      *-*-bsdi[[012]]*)
	 ans=no
	 ;;
      *-*-bsdi*)
	 ans=yes
	 ;;
      *-*-openvms*)	# HMS: won't be found
	 ans=yes
	 ;;
      *) ans=no
	 ;;
     esac
     ])
ac_cv_var_slew_always=$ans])
case "$ac_cv_var_slew_always" in
 yes) AC_DEFINE(SLEWALWAYS, 1, [Slew always?]) ;;
esac

AC_CACHE_CHECK(if we should step and slew the time, ac_cv_var_step_slew,
[AC_ARG_ENABLE(step-slew,	 [  --enable-step-slew      s step and slew the time],
    [ans=$enableval],
    [case "$host" in
      *-sni-sysv*)
	 ans=yes
	 ;;
      *-univel-sysv*)
	 ans=no
	 ;;
      *-*-ptx*)
	 ans=yes
	 ;;
      *-*-solaris2.1[[0-9]]*)
	 ans-no
	 ;;
      *-*-solaris2.[[012]]*)
	 ans=yes
	 ;;
      *-*-sysv4*)	# HMS: Does this catch Fujitsu UXP?
	 ans=yes
	 ;;
      *) ans=no
	 ;;
     esac
     ])
ac_cv_var_step_slew=$ans])
case "$ac_cv_var_step_slew" in
 yes) AC_DEFINE(STEP_SLEW, 1, [Step, then slew the clock?]) ;;
esac

AC_CACHE_CHECK(if ntpdate should step the time, ac_cv_var_ntpdate_step,
[AC_ARG_ENABLE(ntpdate-step,	 [  --enable-ntpdate-step   s if ntpdate should step the time],
    [ans=$enableval],
    [case "$host" in
      *-apple-aux[[23]]*)
	 ans=yes
	 ;;
      *) ans=no
	 ;;
     esac
     ])
ac_cv_var_ntpdate_step=$ans])
case "$ac_cv_var_ntpdate_step" in
 yes) AC_DEFINE(FORCE_NTPDATE_STEP, 1, [force ntpdate to step the clock if !defined(STEP_SLEW) ?]) ;;
esac

AC_CACHE_CHECK(if we should sync TODR clock every hour, ac_cv_var_sync_todr,
[AC_ARG_ENABLE(hourly-todr-sync, [  --enable-hourly-todr-sync
                          s if we should sync TODR hourly],
    [ans=$enableval],
    [case "$host" in
      *-*-nextstep*)
	 ans=yes
	 ;;
      *-*-openvms*)	# HMS: won't be found
	 ans=yes
	 ;;
      *) ans=no
	 ;;
     esac])
ac_cv_var_sync_todr=$ans])
case "$ac_cv_var_sync_todr" in
 yes) AC_DEFINE(DOSYNCTODR, 1, [synch TODR hourly?]) ;;
esac

AC_CACHE_CHECK(if we should avoid kernel FLL bug, ac_cv_var_kernel_fll_bug,
[AC_ARG_ENABLE(kernel-fll-bug, [  --enable-kernel-fll-bug s if we should avoid a kernel FLL bug],
    [ans=$enableval],
    [case "$host" in
     *-*-solaris2.6)
	 unamev=`uname -v`
	 case "$unamev" in
	  Generic_105181-*)
	     old_IFS="$IFS"
	     IFS="-"
	     set $unamev
	     IFS="$old_IFS"
	     if test "$2" -ge 17
	     then
	        # Generic_105181-17 and higher
	        ans=no
	     else
	        ans=yes
	     fi
	     ;;
	  *) ans=yes
	     ;;
	 esac
	 ;;
     *-*-solaris2.7)
	 unamev=`uname -v`
	 case "$unamev" in
	  Generic_106541-*)
	     old_IFS="$IFS"
	     IFS="-"
	     set $unamev
	     IFS="$old_IFS"
	     if test "$2" -ge 07
	     then
	        # Generic_106541-07 and higher
	        ans=no
	     else
	        ans=yes
	     fi
	     ;;
	  *) ans=yes
	     ;;
	 esac
	 ;;
     *) ans=no
	 ;;
    esac
    ])
ac_cv_var_kernel_fll_bug=$ans])
case "$ac_cv_var_kernel_fll_bug" in
 yes) AC_DEFINE(KERNEL_FLL_BUG, 1, [Does the kernel have an FLL bug?]) ;;
esac

AC_CACHE_CHECK(if we should use the IRIG sawtooth filter, ac_cv_var_irig_sucks,
[AC_ARG_ENABLE(irig-sawtooth, 
	AC_HELP_STRING([--enable-irig-sawtooth], [s if we should enable the IRIG sawtooth filter]),
    [ans=$enableval],
    [case "$host" in
     *-*-solaris2.[[89]])
	ans=yes
	;;
     *-*-solaris2.1[[0-9]]*)
	ans=yes
	;;
     *) ans=no
	;;
    esac
    ])
ac_cv_var_irig_sucks=$ans])
case "$ac_cv_var_irig_sucks" in
 yes) AC_DEFINE(IRIG_SUCKS, 1, [Should we use the IRIG sawtooth filter?]) ;;
esac

AC_CACHE_CHECK(if we should enable NIST lockclock scheme, ac_cv_var_nist_lockclock,
[AC_ARG_ENABLE(nist, 
	AC_HELP_STRING([--enable-nist], [- if we should enable the NIST lockclock scheme]),
    [ans=$enableval],[ans=no])
ac_cv_var_nist_lockclock=$ans])
case "$ac_cv_var_nist_lockclock" in
 yes) AC_DEFINE(LOCKCLOCK, 1, [Should we align with the NIST lockclock scheme?]) ;;
esac

#
# ISC stuff
#

if test $ac_cv_struct_sockaddr_has_sa_len = yes; then
    AC_DEFINE(ISC_PLATFORM_HAVESALEN, ,[ISC: struct sockaddr as sa_len?])
fi

AC_MSG_CHECKING(for IPv6 structures)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>],
[struct sockaddr_in6 sin6; return (0);],
	[AC_MSG_RESULT(yes)
	 found_ipv6=yes],
	[AC_MSG_RESULT(no)
	 found_ipv6=no])

AC_MSG_CHECKING([for struct if_laddrconf])
AC_TRY_LINK([
#include <sys/types.h>
#include <net/if6.h>
],[ struct if_laddrconf a; ],
	[AC_MSG_RESULT(yes)
	 AC_DEFINE(ISC_PLATFORM_HAVEIF_LADDRCONF, ,
		[ISC: have struct if_laddrconf?])],
	[AC_MSG_RESULT(no)])

AC_MSG_CHECKING([for struct if_laddrreq])
AC_TRY_LINK([
#include <sys/types.h>
#include <net/if6.h>
],[ struct if_laddrreq a; ],
	[AC_MSG_RESULT(yes)
	 AC_DEFINE(ISC_PLATFORM_HAVEIF_LADDRREQ, ,
		[ISC: have struct if_laddrreq?])],
	[AC_MSG_RESULT(no)])

case "$found_ipv6" in
 yes)
    AC_DEFINE(ISC_PLATFORM_HAVEIPV6, ,[ISC: Have IPv6?])
    AC_DEFINE(WANT_IPV6, ,[ISC: Want IPv6?])

    AC_MSG_CHECKING(for in6_pktinfo)
    AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
],
	[struct in6_pktinfo xyzzy; return (0);],
	[AC_MSG_RESULT(yes)
	 AC_DEFINE(ISC_PLATFORM_HAVEIN6PKTINFO, ,
		[ISC: Have struct in6_pktinfo?])],
	[AC_MSG_RESULT(no -- disabling runtime ipv6 support)])

    AC_MSG_CHECKING(for in6addr_any)
    AC_TRY_LINK([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
$isc_netinetin6_hack
$isc_netinet6in6_hack
$isc_in_addr6_hack
],
	[struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
	[AC_MSG_RESULT(yes)],
	[AC_MSG_RESULT(no)
	 AC_DEFINE(ISC_PLATFORM_NEEDIN6ADDRANY, ,
		[ISC: Need in6addr_any?])]
	)
    ;;
esac

#
# Look for a sysctl call to get the list of network interfaces.
#
AC_MSG_CHECKING(for interface list sysctl)
AC_EGREP_CPP(found_rt_iflist, [
#include <sys/param.h>
#include <sys/sysctl.h>
#include <sys/socket.h>
#ifdef NET_RT_IFLIST  
found_rt_iflist
#endif
],
        [AC_MSG_RESULT(yes)
         AC_DEFINE(HAVE_IFLIST_SYSCTL,1,[ISC: Use iflist_sysctl?])],
        [AC_MSG_RESULT(no)])

case "$build" in
 $host)
    ;;
 *) case "$host" in
     *-*-vxworks*)
        LDFLAGS="$LDFLAGS -r"
        ;;
    esac
    ;;
esac

AC_DEFINE_DIR(NTP_KEYSDIR, sysconfdir, [Default location of crypto key info])

AC_SUBST(ARLIB_DIR)
if test -d $srcdir/arlib
then
    AC_ARG_WITH(arlib,
	AC_HELP_STRING([--with-arlib], [- Compile the async resolver library?]),
    [ans=$withval], [ans=no])

    case "$ans" in
     yes)
	ARLIB_DIR=arlib
	AC_CONFIG_SUBDIRS(arlib)
	;;
    esac
fi

AC_CONFIG_FILES(Makefile)
AC_CONFIG_FILES(ElectricFence/Makefile)
AC_CONFIG_FILES(adjtimed/Makefile)
AC_CONFIG_FILES(clockstuff/Makefile)
AC_CONFIG_FILES(include/Makefile)
AC_CONFIG_FILES(include/isc/Makefile)
AC_CONFIG_FILES(kernel/Makefile)
AC_CONFIG_FILES(kernel/sys/Makefile)
AC_CONFIG_FILES(libntp/Makefile)
AC_CONFIG_FILES(libparse/Makefile)
AC_CONFIG_FILES(ntpd/Makefile)
AC_CONFIG_FILES(ntpdate/Makefile)
AC_CONFIG_FILES(ntpdc/Makefile)
AC_CONFIG_FILES(ntpdc/nl.pl,		[chmod +x ntpdc/nl.pl])
AC_CONFIG_FILES(ntpq/Makefile)
AC_CONFIG_FILES(parseutil/Makefile)
AC_CONFIG_FILES(scripts/Makefile)
AC_CONFIG_FILES(scripts/calc_tickadj,	[chmod +x scripts/calc_tickadj])
AC_CONFIG_FILES(scripts/checktime,	[chmod +x scripts/checktime])
AC_CONFIG_FILES(scripts/freq_adj,	[chmod +x scripts/freq_adj])
AC_CONFIG_FILES(scripts/mkver,		[chmod +x scripts/mkver])
AC_CONFIG_FILES(scripts/ntp-wait,	[chmod +x scripts/ntp-wait])
AC_CONFIG_FILES(scripts/ntpsweep,	[chmod +x scripts/ntpsweep])
AC_CONFIG_FILES(scripts/ntptrace,	[chmod +x scripts/ntptrace])
AC_CONFIG_FILES(scripts/ntpver,		[chmod +x scripts/ntpver])
AC_CONFIG_FILES(scripts/plot_summary,	[chmod +x scripts/plot_summary])
AC_CONFIG_FILES(scripts/summary,	[chmod +x scripts/summary])
AC_CONFIG_FILES(util/Makefile)

case "$MAKE_SNTP" in
 '') ;;
 *)
    AC_CONFIG_SUBDIRS(sntp)
    ;;
esac

AC_OUTPUT
