1275970Scydnl ######################################################################
2275970Scydnl Common m4sh code for libntp and clients
3275970Scydnl
4275970Scydnl Any configure tests which libntp or libisc code depends upon should
5275970Scydnl be here or in another m4 macro used by the top-level and sntp
6275970Scydnl configure.ac files, so that libntp can be moved into the sntp
7275970Scydnl subpackage while retaining access to such test results.
8275970Scydnl
9275970ScyAC_DEFUN([NTP_LIBNTP], [
10275970Scy
11275970ScyAC_REQUIRE([NTP_CROSSCOMPILE])
12275970Scy
13275970Scy# HMS: Save $LIBS and empty it.
14275970Scy# any LIBS we add here should go in to LDADD_LIBNTP
15275970ScyAC_SUBST([LDADD_LIBNTP])
16275970Scy__LIBS=$LIBS
17275970ScyLIBS=
18275970Scy
19275970Scydnl The contents of NTP_PROG_CC used to be here...
20275970Scy
21275970ScyAC_PROG_INSTALL
22275970Scy# [Bug 2332] because we need to know if we are using GNU ld...
23275970ScyLT_PATH_LD
24275970Scy
25275970ScyNTP_DIR_SEP
26275970ScyNTP_LINEEDITLIBS
27275970ScyNTP_LIB_M
28275970Scy
29275970ScyAC_FUNC_FORK
30275970ScyAC_FUNC_ALLOCA
31275970ScyAC_FUNC_STRERROR_R
32275970Scy
33275970Scyac_busted_vpath_in_make=no
34275970Scycase "$build" in
35275970Scy *-*-irix6.1*)	# 64 bit only
36275970Scy    # busted vpath?
37275970Scy    ;;
38275970Scy *-*-irix6*)	# 6.2 (and later?)
39275970Scy    ac_busted_vpath_in_make=yes
40275970Scy    ;;
41275970Scy *-*-solaris2.5.1)
42275970Scy    ac_busted_vpath_in_make=yes
43275970Scy    ;;
44275970Scy *-*-unicosmp*)
45275970Scy    ac_busted_vpath_in_make=yes
46275970Scy    ;;
47275970Scyesac
48275970Scy
49275970Scycase "$ac_busted_vpath_in_make$srcdir" in
50275970Scy yes.|no*)
51275970Scy    ;;
52275970Scy *) case "`${MAKE-make} -v -f /dev/null 2>/dev/null | grep 'GNU Make'`" in
53275970Scy     '')
54275970Scy	AC_MSG_ERROR([building outside of the main directory requires GNU make])
55275970Scy    esac
56275970Scy    ;;
57275970Scyesac
58275970Scy
59275970Scycase "$host" in
60275970Scy *-*-aix4*)
61275970Scy	# Bug 2516:
62275970Scy	# Was *-*-aix[[4-9]]*
63275970Scy	# XXX only verified thru AIX6.  But...
64275970Scy	# Ken Link says this is fine for AIX 5.3 and 7.1, and sees no reason
65275970Scy	# that this support would be in 5.3, removed in 6, and added back.
66275970Scy	#
67275970Scy	# (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub
68275970Scy	# (returning ENOSYS).  I didn't check 4.2.  If, in the future,
69275970Scy	# IBM pulls its thumbs out long enough to implement clock_settime,
70275970Scy	# this conditional will need to change.  Maybe use AC_TRY_RUN
71275970Scy	# instead to try to set the time to itself and check errno.
72275970Scy    ;;
73275970Scy *)
74275970Scy    HMS_SEARCH_LIBS([LDADD_LIBNTP], [clock_gettime], [rt])
75275970Scy    AC_CHECK_FUNCS([clock_getres clock_gettime clock_settime])
76275970Scy    ;;
77275970Scyesac
78275970Scy
79275970ScyAC_CHECK_FUNCS([getclock stime timegm strlcpy strlcat])
80275970Scy
81280849Scy# Bug 2713
82280849ScyLDADD_LIBUTIL=
83280849ScyAC_SUBST([LDADD_LIBUTIL])
84280849ScyHMS_SEARCH_LIBS([LDADD_LIBUTIL], [snprintb], [util],
85280849Scy		[AC_DEFINE([USE_SNPRINTB], 1, [OK to use snprintb()?])])
86280849Scy
87275970Scydnl  HP-UX 11.31 on HPPA has a net/if.h that can't be compiled with gcc4
88275970Scydnl  due to an incomplete type (a union) mpinfou used in an array.  gcc3
89275970Scydnl  compiles it without complaint.  The mpinfou union is defined later
90275970Scydnl  in the resulting preprocessed source than the spu_info array in
91275970Scydnl  /usr/include/machine/sys/getppdp.h:
92275970Scydnl	extern union mpinfou spu_info[];
93275970Scydnl  triggering the error.  Our strategy is on HP-UX only, test compile
94275970Scydnl  net/if.h.  If that fails, try adding a duplicate definition of
95275970Scydnl  mpinfou, and if that helps add it to confdefs.h (used for further
96275970Scydnl  configure tests) and config.h.
97275970Scy#
98275970ScyAC_CHECK_HEADERS([errno.h sys/socket.h sys/types.h time.h])
99275970ScyAC_CHECK_HEADERS([net/if.h], [], [], [
100275970Scy    #ifdef HAVE_SYS_SOCKET_H
101275970Scy    # include <sys/socket.h>
102275970Scy    #endif
103275970Scy])
104275970Scycase "$host" in
105275970Scy *-hp-hpux*)
106275970Scy    AC_CACHE_CHECK(
107275970Scy	[if net/if.h requires mpinfou predeclaration],
108275970Scy	[ntp_cv_predecl_mpinfou],
109275970Scy	[
110275970Scy	    np_cv_predecl_mpinfou=no
111275970Scy	    case "$ac_cv_header_net_if_h" in
112275970Scy	     no)
113275970Scy		AC_COMPILE_IFELSE(
114275970Scy		    [AC_LANG_PROGRAM(
115275970Scy			[[
116275970Scy			    typedef union mpinfou {
117275970Scy				    struct pdk_mpinfo *pdkptr;
118275970Scy				    struct mpinfo *pikptr;
119275970Scy			    } mpinfou_t;
120275970Scy			    #ifdef HAVE_SYS_SOCKET_H
121275970Scy			    # include <sys/socket.h>
122275970Scy			    #endif
123275970Scy			    #include <net/if.h>
124275970Scy			]],
125275970Scy			[[
126275970Scy			]]
127275970Scy		    )],
128275970Scy		    [
129275970Scy			ntp_cv_predecl_mpinfou=yes
130275970Scy			ac_cv_header_net_if_h=yes
131275970Scy		    ]
132275970Scy		)
133275970Scy	    esac
134275970Scy	]
135275970Scy    )
136275970Scy    case "$ntp_cv_predecl_mpinfou" in
137275970Scy     yes)
138275970Scy	cat >>confdefs.h <<_ACEOF
139275970Scy#ifndef MPINFOU_PREDECLARED
140275970Scy# define MPINFOU_PREDECLARED
141275970Scytypedef union mpinfou {
142275970Scy	struct pdk_mpinfo *pdkptr;
143275970Scy	struct mpinfo *pikptr;
144275970Scy} mpinfou_t;
145275970Scy#endif
146275970Scy_ACEOF
147275970Scy	AH_BOTTOM([
148275970Scy#ifndef MPINFOU_PREDECLARED
149275970Scy# define MPINFOU_PREDECLARED
150275970Scytypedef union mpinfou {
151275970Scy	struct pdk_mpinfo *pdkptr;
152275970Scy	struct mpinfo *pikptr;
153275970Scy} mpinfou_t;
154275970Scy#endif
155275970Scy])
156275970Scy    esac
157275970Scyesac
158275970Scy
159275970Scycase "$host" in
160275970Scy *-linux*)
161275970Scy    AC_CHECK_HEADERS([linux/if_addr.h], [], [], [
162275970Scy	#ifdef HAVE_SYS_SOCKET_H
163275970Scy	# include <sys/socket.h>
164275970Scy	#endif
165275970Scy    ])
166298695Sdelphij    AC_DEFINE([NEED_EARLY_FORK], [1], [having to fork the DNS worker early when doing chroot?])
167275970Scyesac
168275970Scy
169275970ScyAC_CHECK_HEADERS([arpa/nameser.h sys/param.h sys/time.h sys/timers.h])
170275970Scy# sys/sysctl.h depends on sys/param.h on OpenBSD - Bug 1576
171275970ScyAC_CHECK_HEADERS([sys/sysctl.h], [], [], [
172275970Scy    #if defined HAVE_SYS_PARAM_H
173275970Scy    # include <sys/param.h>
174275970Scy    #endif
175275970Scy])
176275970ScyAC_CHECK_HEADERS([netinet/in_system.h netinet/in_systm.h netinet/in.h])
177275970Scy
178275970ScyAC_CHECK_HEADERS([resolv.h], [], [], [
179275970Scy    #ifdef HAVE_SYS_TYPES_H
180275970Scy    # include <sys/types.h>
181275970Scy    #endif
182275970Scy    #ifdef HAVE_NETINET_IN_H
183275970Scy    # include <netinet/in.h>
184275970Scy    #endif
185275970Scy    #ifdef HAVE_ARPA_NAMESER_H
186275970Scy    # include <arpa/nameser.h>
187275970Scy    #endif
188275970Scy])
189275970Scy
190275970ScyAC_CHECK_HEADERS([net/if_var.h], [], [], [
191275970Scy    #if HAVE_SYS_TYPES_H
192275970Scy    # include <sys/types.h>
193275970Scy    #endif
194275970Scy    #ifdef HAVE_SYS_SOCKET_H
195275970Scy    # include <sys/socket.h>
196275970Scy    #endif
197275970Scy    #ifdef HAVE_NETINET_IN_H
198275970Scy    # include <netinet/in.h>
199275970Scy    #endif
200275970Scy    #ifdef HAVE_NET_IF_H
201275970Scy    # include <net/if.h>
202275970Scy    #endif
203275970Scy])
204275970Scy
205275970ScyAC_CHECK_HEADERS([netinet/ip.h netinet/in_var.h], [], [], [
206275970Scy    #ifdef HAVE_SYS_TYPES_H
207275970Scy    # include <sys/types.h>
208275970Scy    #endif
209275970Scy    #ifdef HAVE_SYS_SOCKET_H
210275970Scy    # include <sys/socket.h>
211275970Scy    #endif
212275970Scy    #ifdef HAVE_NET_IF_H
213275970Scy    # include <net/if.h>
214275970Scy    #endif
215275970Scy    #ifdef HAVE_NETINET_IN_H
216275970Scy    # include <netinet/in.h>
217275970Scy    #endif
218275970Scy    #ifdef HAVE_NET_IF_VAR_H
219275970Scy    # include <net/if_var.h>
220275970Scy    #endif
221275970Scy    #ifdef HAVE_NETINET_IN_SYSTM_H
222275970Scy    # include <netinet/in_systm.h>
223275970Scy    #endif
224275970Scy])
225275970Scy
226275970Scy# HMS: Do we need to check for -lsocket before or after these tests?
227275970ScyHMS_SEARCH_LIBS([LDADD_LIBNTP], [inet_pton], [nsl])
228275970ScyHMS_SEARCH_LIBS([LDADD_LIBNTP], [inet_ntop], [resolv], , , [-lnsl])
229275970Scy
230275970Scy# [Bug 1628] On Solaris, we need -lxnet -lsocket.  Generalize this to
231275970Scy# avoid keying on the OS name:  If we find socket functions in
232275970Scy# libsocket, next try for them in libxnet without libsocket, if found,
233275970Scy# list both.  If we simply tested libxnet first, we would find the
234275970Scy# functions there and never add libsocket.  See also [Bug 660]
235275970Scy# http://bugs.ntp.org/show_bug.cgi?id=660#c9
236275970Scysaved_LIBS=$LIBS
237275970ScyHMS_SEARCH_LIBS([LDADD_LIBNTP], [setsockopt], [socket])
238275970Scycase "$ac_cv_search_setsockopt" in
239275970Scy -lsocket)
240275970Scy    LIBS="$saved_LIBS"
241275970Scy    HMS_SEARCH_LIBS([LDADD_LIBNTP], [getsockopt], [xnet])
242275970Scy    # XXX Possible trouble here - reading the comments above and looking at the
243275970Scy    # code below I wonder if we'll add -lxnet when we don't need it.
244275970Scy    # Also, do we need to add -lxnet to LDADD_LIBNTP, or perhaps see if it's
245275970Scy    # there when it is not needed?
246275970Scy    case "$ac_cv_search_getsockopt" in
247275970Scy     -lxnet)
248275970Scy	LIBS="-lxnet -lsocket $saved_LIBS"
249275970Scy	;;
250275970Scy     *) LIBS="-lsocket $saved_LIBS"
251275970Scy	;;
252275970Scy    esac
253275970Scy    ;;
254275970Scyesac
255275970ScyAS_UNSET([saved_LIBS])
256275970Scy
257275970Scy# Bug 2427 - look for recvmsg here.
258275970ScyAC_CHECK_FUNCS([recvmsg])
259275970Scy
260275970ScyAC_C_INLINE
261275970Scy
262275970Scycase "$ac_cv_c_inline" in
263275970Scy '')
264275970Scy    ;;
265275970Scy *)
266275970Scy    AC_DEFINE([HAVE_INLINE], [1], [inline keyword or macro available])
267275970Scy    AC_SUBST([HAVE_INLINE])
268275970Scyesac
269275970Scy
270275970ScyAC_HEADER_TIME
271275970ScyAC_CHECK_SIZEOF([time_t])
272275970ScyAC_C_CHAR_UNSIGNED		dnl CROSS_COMPILE?
273275970ScyAC_CHECK_SIZEOF([signed char])
274275970ScyAC_CHECK_TYPES([s_char, long long])
275275970ScyAC_CHECK_SIZEOF([short])
276275970ScyAC_CHECK_SIZEOF([int])
277275970ScyAC_CHECK_SIZEOF([long])
278275970Scy
279275970Scycase "$ac_cv_type_long_long" in
280275970Scy no)
281275970Scy    ;;
282275970Scy *)
283275970Scy    AC_CHECK_SIZEOF([long long])
284275970Scy    ;;
285275970Scyesac
286275970Scy
287275970Scycase "$ac_cv_c_char_unsigned$ac_cv_sizeof_signed_char$ac_cv_type_s_char" in
288275970Scy *yes)
289275970Scy    # We have a typedef for s_char.  Might as well believe it...
290275970Scy    ;;
291275970Scy no0no)
292275970Scy    # We have signed chars, can't say 'signed char', no s_char typedef.
293275970Scy    AC_DEFINE([NEED_S_CHAR_TYPEDEF], [1],
294275970Scy	[Do we need an s_char typedef?])
295275970Scy    ;;
296275970Scy no1no)
297275970Scy    # We have signed chars, can say 'signed char', no s_char typedef.
298275970Scy    AC_DEFINE([NEED_S_CHAR_TYPEDEF], [1],
299275970Scy	[Do we need an s_char typedef?])
300275970Scy    ;;
301275970Scy yes0no)
302275970Scy    # We have unsigned chars, can't say 'signed char', no s_char typedef.
303275970Scy    AC_MSG_ERROR([No way to specify a signed character!])
304275970Scy    ;;
305275970Scy yes1no)
306275970Scy    # We have unsigned chars, can say 'signed char', no s_char typedef.
307275970Scy    AC_DEFINE([NEED_S_CHAR_TYPEDEF], [1],
308275970Scy	[Do we need an s_char typedef?])
309275970Scy    ;;
310275970Scyesac
311275970Scy
312275970ScyAC_TYPE_UID_T
313275970Scy
314275970Scym4_divert_text([HELP_ENABLE],
315275970Scy[AS_HELP_STRING([defaults:],
316275970Scy    [+ yes, - no, s system-specific])])
317275970Scy
318275970ScyNTP_DEBUG
319275970Scy
320275970Scy# check if we can compile with pthreads
321275970ScyAC_CHECK_HEADERS([semaphore.h])
322275970ScyAC_CHECK_FUNCS([socketpair])
323275970ScyAC_ARG_ENABLE(
324275970Scy    [thread-support],
325275970Scy    [AS_HELP_STRING([--enable-thread-support],
326275970Scy		    [s use threads (+ if available)])],
327275970Scy    [],
328275970Scy    [enable_thread_support=yes]
329275970Scy    )
330275970Scyhave_pthreads=no
331275970Scycase "$enable_thread_support" in
332289764Sglebius no) ;;
333289764Sglebius *)
334275970Scy    ol_found_pthreads=no
335275970Scy    OL_THREAD_CHECK([ol_found_pthreads=yes])
336275970Scy    case "$ol_found_pthreads" in
337275970Scy     yes)
338275970Scy	saved_LIBS="$LIBS"
339275970Scy	LIBS="$LTHREAD_LIBS $LIBS"
340275970Scy	saved_CFLAGS="$CFLAGS"
341275970Scy	CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
342275970Scy	AC_CHECK_FUNCS([sem_timedwait])
343275970Scy	LIBS="$saved_LIBS"
344275970Scy	AS_UNSET([saved_LIBS])
345275970Scy	CFLAGS="$saved_CFLAGS"
346275970Scy	AS_UNSET([saved_CFLAGS])
347275970Scy	case "$ac_cv_func_sem_timedwait" in
348275970Scy	 yes)
349275970Scy	    PTHREAD_LIBS="$LTHREAD_LIBS"
350275970Scy	    have_pthreads=yes
351275970Scy	esac
352275970Scy    esac
353275970Scyesac
354275970ScyAC_SUBST([PTHREAD_LIBS])
355275970Scycase "$have_pthreads" in
356275970Scy yes)
357275970Scy    CFLAGS_NTP="$CFLAGS_NTP $PTHREAD_CFLAGS"
358275970Scy    saved_LIBS="$LIBS"
359275970Scy    LIBS="$LTHREAD_LIBS $LIBS"
360275970Scy    saved_CFLAGS="$CFLAGS"
361275970Scy    CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
362275970Scy    AC_CHECK_SIZEOF(
363275970Scy	[pthread_t],
364275970Scy	,
365275970Scy	[
366275970Scy	    AC_INCLUDES_DEFAULT()
367275970Scy	    #include <pthread.h>
368275970Scy	]
369275970Scy    )
370275970Scy    LIBISC_PTHREADS_NOTHREADS=pthreads
371275970Scy    AC_DEFINE([ISC_PLATFORM_USETHREADS], [1],
372275970Scy	      [enable libisc thread support?])
373275970Scy    #
374275970Scy    # We'd like to use sigwait() too
375275970Scy    #
376275970Scy    AC_CHECK_FUNC(
377275970Scy	[sigwait],
378275970Scy	[have_sigwait=yes],
379275970Scy	[AC_CHECK_LIB(
380275970Scy	    [c],
381275970Scy	    [sigwait],
382275970Scy	    [have_sigwait=yes],
383275970Scy	    [AC_CHECK_LIB(
384275970Scy		[pthread],
385275970Scy		[sigwait],
386275970Scy		[have_sigwait=yes],
387275970Scy		[AC_CHECK_LIB(
388275970Scy		    [pthread],
389275970Scy		    [_Psigwait],
390275970Scy		    [have_sigwait=yes],
391275970Scy		    [have_sigwait=no]
392275970Scy		)]
393275970Scy	    )]
394275970Scy	)]
395275970Scy    )
396275970Scy    case "$host:$have_sigwait" in
397275970Scy     *-freebsd*:no)
398275970Scy	AC_CHECK_LIB(
399275970Scy	    [c_r],
400275970Scy	    [sigwait],
401275970Scy	    [have_sigwait=yes]
402275970Scy	)
403275970Scy    esac
404275970Scy    case "$have_sigwait" in
405275970Scy     yes)
406275970Scy	ac_cv_func_sigwait=yes
407275970Scy	AC_DEFINE([HAVE_SIGWAIT], [1], [sigwait() available?])
408275970Scy    esac
409275970Scy
410275970Scy    AC_CHECK_FUNCS([pthread_attr_getstacksize])
411275970Scy    AC_CHECK_FUNCS([pthread_attr_setstacksize sysconf])
412275970Scy
413275970Scy    case "$host" in
414275970Scy     *-freebsd5.[[012]]|*-freebsd5.[[012]].*)
415275970Scy	;;
416275970Scy     *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*|*-freebsd6.*)
417275970Scy	AC_DEFINE([NEED_PTHREAD_SCOPE_SYSTEM], [1],
418275970Scy		  [use PTHREAD_SCOPE_SYSTEM?])
419275970Scy	;;
420275970Scy     *-bsdi3.*|*-bsdi4.0*)
421275970Scy	AC_DEFINE([NEED_PTHREAD_INIT], [1], [pthread_init() required?])
422275970Scy	;;
423275970Scy     *-linux*)
424275970Scy	AC_DEFINE([HAVE_LINUXTHREADS], [1], [using Linux pthread?])
425275970Scy	;;
426275970Scy     *-solaris*)
427275970Scy	AC_DEFINE([_POSIX_PTHREAD_SEMANTICS], [1])
428275970Scy	AC_CHECK_FUNCS([pthread_setconcurrency])
429275970Scy	case "$ac_cv_func_pthread_setconcurrency" in
430275970Scy	 yes)
431275970Scy	    AC_DEFINE([CALL_PTHREAD_SETCONCURRENCY], [1],
432275970Scy		      [why not HAVE_P_S?])
433275970Scy	esac
434275970Scy	;;
435275970Scy     *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
436275970Scy	AC_DEFINE([HAVE_UNIXWARE_SIGWAIT], [1], [deviant sigwait?])
437275970Scy	;;
438275970Scy    esac
439275970Scy    hack_shutup_pthreadonceinit=no
440275970Scy    case "$host" in
441275970Scy     *-aix5.[[123]].*)
442275970Scy	hack_shutup_pthreadonceinit=yes
443275970Scy	;;
444275970Scy     *-solaris2.[[89]])
445275970Scy	hack_shutup_pthreadonceinit=yes
446275970Scy	;;
447275970Scy     *-solaris2.1[[0-9]])
448275970Scy	AC_CACHE_CHECK(
449275970Scy	    [if extra braces are needed for PTHREAD_ONCE_INIT],
450275970Scy	    [ntp_cv_braces_around_pthread_once_init],
451275970Scy	    [AC_COMPILE_IFELSE(
452275970Scy		[AC_LANG_PROGRAM(
453275970Scy		    [[
454275970Scy			#include <pthread.h>
455275970Scy		    ]],
456275970Scy		    [[
457275970Scy		        static pthread_once_t once_test =
458275970Scy						PTHREAD_ONCE_INIT;
459275970Scy		    ]]
460275970Scy		)],
461275970Scy		[ntp_cv_braces_around_pthread_once_init=no],
462275970Scy		[ntp_cv_braces_around_pthread_once_init=yes]
463275970Scy	    )]
464275970Scy	)
465275970Scy	case "$ntp_cv_braces_around_pthread_once_init" in
466275970Scy	 yes)
467275970Scy	    hack_shutup_pthreadonceinit=yes
468275970Scy	esac
469275970Scy	;;
470275970Scy    esac
471275970Scy    case "$hack_shutup_pthreadonceinit" in
472275970Scy     yes)
473275970Scy	AC_DEFINE([ISC_PLATFORM_BRACEPTHREADONCEINIT], [1],
474275970Scy		  [Enclose PTHREAD_ONCE_INIT in extra braces?])
475275970Scy    esac
476275970Scy    LIBS="$saved_LIBS"
477275970Scy    AS_UNSET([saved_LIBS])
478275970Scy    CFLAGS="$saved_CFLAGS"
479275970Scy    AS_UNSET([saved_CFLAGS])
480275970Scy    ;;
481275970Scy *)
482275970Scy    LIBISC_PTHREADS_NOTHREADS=nothreads
483275970Scy    ;;
484275970Scyesac
485275970ScyAC_SUBST([LIBISC_PTHREADS_NOTHREADS])
486275970ScyAM_CONDITIONAL([PTHREADS], [test "$have_pthreads" != "no"])
487275970Scy
488275970ScyAC_DEFUN([NTP_BEFORE_HW_FUNC_VSNPRINTF], [
489275970Scy    AC_BEFORE([$0], [HW_FUNC_VSNPRINTF])dnl
490275970Scy    AC_BEFORE([$0], [HW_FUNC_SNPRINTF])dnl
491275970Scy    AC_ARG_ENABLE(
492275970Scy	[c99-snprintf],
493275970Scy	[AS_HELP_STRING([--enable-c99-snprintf], [s force replacement])],
494275970Scy	[force_c99_snprintf=$enableval],
495275970Scy	[force_c99_snprintf=no]
496275970Scy	)
497275970Scy    case "$force_c99_snprintf" in
498275970Scy     yes)
499275970Scy	hw_force_rpl_snprintf=yes
500275970Scy	hw_force_rpl_vsnprintf=yes
501275970Scy    esac
502275970Scy    AH_VERBATIM(
503275970Scy	[snprinte],dnl	sorted in config.h just before #define snprintf
504275970Scy	[
505275970Scy	    #if !defined(_KERNEL) && !defined(PARSESTREAM)
506275970Scy	    /*
507275970Scy	     * stdio.h must be included after _GNU_SOURCE is defined
508275970Scy	     * but before #define snprintf rpl_snprintf
509275970Scy	     */
510275970Scy	    # include <stdio.h>	
511275970Scy	    #endif
512275970Scy	])
513275970Scy    AH_BOTTOM([
514275970Scy	#if !defined(_KERNEL) && !defined(PARSESTREAM)
515275970Scy	# if defined(HW_WANT_RPL_VSNPRINTF)
516275970Scy	#  if defined(__cplusplus)
517275970Scy	extern "C" {
518275970Scy	# endif
519275970Scy	# include <stdarg.h>
520275970Scy	int rpl_vsnprintf(char *, size_t, const char *, va_list);
521275970Scy	# if defined(__cplusplus)
522275970Scy	}
523275970Scy	#  endif
524275970Scy	# endif
525275970Scy	# if defined(HW_WANT_RPL_SNPRINTF)
526275970Scy	#  if defined(__cplusplus)
527275970Scy	extern "C" {
528275970Scy	#  endif
529275970Scy	int rpl_snprintf(char *, size_t, const char *, ...);
530275970Scy	#  if defined(__cplusplus)
531275970Scy	}
532275970Scy	#  endif
533275970Scy	# endif
534275970Scy	#endif	/* !defined(_KERNEL) && !defined(PARSESTREAM) */
535275970Scy	])
536275970Scy]) dnl end of AC_DEFUN of NTP_BEFORE_HW_FUNC_VSNPRINTF
537275970Scy
538275970ScyAC_DEFUN([NTP_C99_SNPRINTF], [
539275970Scy    AC_REQUIRE([NTP_BEFORE_HW_FUNC_VSNPRINTF])dnl
540275970Scy    AC_REQUIRE([HW_FUNC_VSNPRINTF])dnl
541275970Scy    AC_REQUIRE([HW_FUNC_SNPRINTF])dnl
542275970Scy]) dnl end of DEFUN of NTP_C99_SNPRINTF
543275970Scy
544275970ScyNTP_C99_SNPRINTF
545275970Scy
546275970Scydnl C99-snprintf does not handle %m
547275970Scycase "$hw_use_rpl_vsnprintf:$hw_cv_func_vsnprintf" in
548275970Scy no:yes)
549275970Scy    AC_CACHE_CHECK(
550275970Scy	[if vsnprintf expands "%m" to strerror(errno)],
551275970Scy	[ntp_cv_vsnprintf_percent_m],
552275970Scy	[AC_RUN_IFELSE(
553275970Scy	    [AC_LANG_PROGRAM(
554275970Scy		[[
555275970Scy		    #include <stdarg.h>
556275970Scy		    #include <errno.h>
557275970Scy		    #include <stdio.h>
558275970Scy		    #include <string.h>
559275970Scy
560275970Scy		    int call_vsnprintf(
561275970Scy			    char *	dst,
562275970Scy			    size_t	sz,
563275970Scy			    const char *fmt,
564275970Scy			    ...
565275970Scy			    );
566275970Scy
567275970Scy		    int call_vsnprintf(
568275970Scy			    char *	dst,
569275970Scy			    size_t	sz,
570275970Scy			    const char *fmt,
571275970Scy			    ...
572275970Scy			    )
573275970Scy		    {
574275970Scy			    va_list	ap;
575275970Scy			    int		rc;
576275970Scy
577275970Scy			    va_start(ap, fmt);
578275970Scy			    rc = vsnprintf(dst, sz, fmt, ap);
579275970Scy			    va_end(ap);
580275970Scy
581275970Scy			    return rc;
582275970Scy		    }
583275970Scy		]],
584275970Scy		[[
585275970Scy		    char	sbuf[512];
586275970Scy		    char	pbuf[512];
587275970Scy		    int		slen;
588275970Scy
589275970Scy		    strcpy(sbuf, strerror(ENOENT));
590275970Scy		    errno = ENOENT;
591275970Scy		    slen = call_vsnprintf(pbuf, sizeof(pbuf), "%m",
592275970Scy					  "wrong");
593275970Scy		    return strcmp(sbuf, pbuf);
594275970Scy		]]
595275970Scy	    )],
596275970Scy	    [ntp_cv_vsnprintf_percent_m=yes],
597275970Scy	    [ntp_cv_vsnprintf_percent_m=no],
598275970Scy	    [ntp_cv_vsnprintf_percent_m=no]
599275970Scy	)]
600275970Scy    )
601275970Scy    case "$ntp_cv_vsnprintf_percent_m" in
602275970Scy     yes)
603275970Scy	AC_DEFINE([VSNPRINTF_PERCENT_M], [1],
604275970Scy		  [vsnprintf expands "%m" to strerror(errno)])
605275970Scy    esac
606275970Scyesac
607275970Scy
608275970ScyAC_CHECK_HEADERS([sys/clockctl.h])
609275970Scy
610275970ScyAC_ARG_ENABLE(
611275970Scy    [clockctl],
612275970Scy    [AS_HELP_STRING(
613275970Scy	[--enable-clockctl],
614275970Scy	[s Use /dev/clockctl for non-root clock control]
615275970Scy    )],
616275970Scy    [ntp_use_dev_clockctl=$enableval],
617275970Scy    [ntp_use_dev_clockctl=$ac_cv_header_sys_clockctl_h]
618275970Scy)
619275970Scy
620275970ScyAC_MSG_CHECKING([if we should use /dev/clockctl])
621275970ScyAC_MSG_RESULT([$ntp_use_dev_clockctl])
622275970Scy
623275970Scy
624275970ScyAC_CHECK_HEADERS([sys/capability.h sys/prctl.h])
625275970Scy
626275970ScyAC_MSG_CHECKING([if we have linux capabilities (libcap)])
627275970Scy
628275970Scycase "$ac_cv_header_sys_capability_h$ac_cv_header_sys_prctl_h" in
629275970Scy yesyes)
630275970Scy    case "$host" in
631275970Scy     mips-sgi-irix*)
632275970Scy	ntp_have_linuxcaps=no
633275970Scy	;;
634275970Scy     *) ntp_have_linuxcaps=yes
635275970Scy	;;
636275970Scy    esac
637275970Scy    ;;
638275970Scy *)
639275970Scy    ntp_have_linuxcaps=no
640275970Scy    ;;
641275970Scyesac
642275970Scy
643275970ScyAC_ARG_ENABLE(
644275970Scy    [linuxcaps],
645275970Scy    [AS_HELP_STRING(
646275970Scy	[--enable-linuxcaps],
647275970Scy	[+ Use Linux capabilities for non-root clock control]
648275970Scy    )],
649275970Scy    [ntp_have_linuxcaps=$enableval]
650275970Scy)
651275970Scy
652275970ScyAC_MSG_RESULT([$ntp_have_linuxcaps])
653275970Scy
654275970Scycase "$ntp_have_linuxcaps" in
655275970Scy yes)
656275970Scy    AC_DEFINE([HAVE_LINUX_CAPABILITIES], [1],
657275970Scy	[Do we have Linux capabilities?])
658275970Scy    LIBS="$LIBS -lcap"
659275970Scy    ;;
660275970Scyesac
661275970Scy
662275970Scy
663275970ScyAC_CHECK_HEADERS([priv.h])
664275970Scycase "$ac_cv_header_priv_h" in
665275970Scy yes)
666275970Scy    case "$host" in 
667275970Scy     *-solaris*)
668275970Scy	AC_CHECK_FUNC(
669275970Scy    	    [setppriv],
670275970Scy    	    [ntp_have_solarisprivs=yes],
671275970Scy    	    [ntp_have_solarisprivs=no]
672275970Scy	)
673275970Scy	;;
674275970Scy    esac
675275970Scyesac
676275970Scy
677275970ScyAC_ARG_ENABLE(
678275970Scy    [solarisprivs],
679275970Scy    [AS_HELP_STRING(
680275970Scy	[--enable-solarisprivs],
681275970Scy	[+ Use Solaris privileges for non-root clock control]
682275970Scy    )],
683275970Scy    [ntp_have_solarisprivs=$enableval]
684275970Scy)
685275970Scy
686316068SdelphijAC_MSG_CHECKING([if we have solaris privileges])
687275970Scy
688275970Scycase "$ntp_have_solarisprivs" in
689275970Scy yes)
690275970Scy    AC_DEFINE([HAVE_SOLARIS_PRIVS], [1],
691275970Scy	[Are Solaris privileges available?])
692344884Scy    ;;
693344884Scy '') ntp_have_solarisprivs="no"
694344884Scy    ;;
695275970Scyesac
696275970Scy
697275970ScyAC_MSG_RESULT([$ntp_have_solarisprivs])
698275970Scy
699338530SdelphijAC_CHECK_HEADERS([sys/mac.h])
700338530Sdelphij
701338530SdelphijAC_ARG_ENABLE(
702338530Sdelphij    [trustedbsd_mac],
703338530Sdelphij    [AS_HELP_STRING(
704338530Sdelphij	[--enable-trustedbsd-mac],
705338530Sdelphij	[s Use TrustedBSD MAC policy for non-root clock control]
706338530Sdelphij    )],
707338530Sdelphij    [ntp_use_trustedbsd_mac=$enableval]
708338530Sdelphij)
709338530Sdelphij
710338530SdelphijAC_MSG_CHECKING([if we should use TrustedBSD MAC privileges])
711338530Sdelphij
712338530Sdelphijcase "$ntp_use_trustedbsd_mac$ac_cv_header_sys_mac_h" in
713338530Sdelphij yesyes)
714338530Sdelphij    AC_DEFINE([HAVE_TRUSTEDBSD_MAC], [1],
715338530Sdelphij	[Are TrustedBSD MAC policy privileges available?])
716344884Scy    ;;
717344884Scy *) ntp_use_trustedbsd_mac="no";
718344884Scy    ;;
719338530Sdelphijesac
720338530Sdelphij
721338530SdelphijAC_MSG_RESULT([$ntp_use_trustedbsd_mac])
722338530Sdelphij
723338530Sdelphijcase "$ntp_use_dev_clockctl$ntp_have_linuxcaps$ntp_have_solarisprivs$ntp_use_trustedbsd_mac" in
724275970Scy *yes*)
725275970Scy    AC_DEFINE([HAVE_DROPROOT], [1],
726275970Scy	[Can we drop root privileges?])
727275970Scyesac
728275970Scy
729275970Scycase "$host" in
730275970Scy *-*-darwin*)
731275970Scy    AC_SEARCH_LIBS([res_9_init], [resolv])
732275970Scy    ;;
733275970Scy *) AC_SEARCH_LIBS([res_init], [resolv])
734275970Scy    ;;
735275970Scyesac
736275970ScyAC_HEADER_RESOLV
737275970Scy#HMS: Why do we do this check so "early"?
738275970ScyAC_CHECK_FUNCS([res_init], , [AC_CHECK_FUNCS([__res_init])])
739275970Scy
740275970Scy# We also need -lsocket, but we have tested for that already.
741275970ScyAC_CHECK_FUNC([inet_ntop], [], 
742275970Scy    [AC_DEFINE([ISC_PLATFORM_NEEDNTOP], [1], [ISC: provide inet_ntop()])])
743275970ScyAC_CHECK_FUNC([inet_pton], [],
744275970Scy    [AC_DEFINE([ISC_PLATFORM_NEEDPTON], [1], [ISC: provide inet_pton()])])
745275970Scy
746275970ScyAC_CHECK_TYPES([uintptr_t, int32, u_int32])
747275970Scy 
748275970ScyAH_VERBATIM([TYPEDEF_UINTPTR_T],
749275970Scy[/* Provide a typedef for uintptr_t? */
750275970Scy#ifndef HAVE_UINTPTR_T
751275970Scytypedef unsigned int	uintptr_t;
752275970Scy#define HAVE_UINTPTR_T	1
753275970Scy#endif])
754275970Scy
755275970Scycase "$ac_cv_type_int32::$ac_cv_header_resolv_h" in
756275970Scy no::yes)
757275970Scy    AC_CACHE_CHECK(
758275970Scy	[for int32 with DNS headers included],
759275970Scy	[ntp_cv_type_int32_with_dns],
760275970Scy	[AC_COMPILE_IFELSE(
761275970Scy	    [AC_LANG_PROGRAM(
762275970Scy		[[
763275970Scy		    #ifdef HAVE_ARPA_NAMESER_H
764275970Scy		    # include <arpa/nameser.h>
765275970Scy		    #endif
766275970Scy		    #include <resolv.h>
767275970Scy		]],
768275970Scy		[[
769275970Scy		    size_t cb = sizeof(int32);
770275970Scy		]]
771275970Scy	    )],
772275970Scy	    [ntp_cv_type_int32_with_dns=yes],
773275970Scy	    [ntp_cv_type_int32_with_dns=no]
774275970Scy	)]
775275970Scy    )
776275970Scy    case "$ntp_cv_type_int32_with_dns" in
777275970Scy     yes)
778275970Scy	AC_DEFINE([HAVE_INT32_ONLY_WITH_DNS], [1],
779275970Scy	    [int32 type in DNS headers, not others.])
780275970Scy    esac
781275970Scyesac
782275970Scy
783275970Scycase "$ac_cv_type_u_int32::$ac_cv_header_resolv_h" in
784275970Scy no::yes)
785275970Scy    AC_CACHE_CHECK(
786275970Scy	[for u_int32 with DNS headers included],
787275970Scy	[ntp_cv_type_u_int32_with_dns],
788275970Scy	[AC_COMPILE_IFELSE(
789275970Scy	    [AC_LANG_PROGRAM(
790275970Scy		[[
791275970Scy		    #ifdef HAVE_ARPA_NAMESER_H
792275970Scy		    # include <arpa/nameser.h>
793275970Scy		    #endif
794275970Scy		    #include <resolv.h>
795275970Scy		]],
796275970Scy		[[
797275970Scy		    size_t cb = sizeof(u_int32);
798275970Scy		]]
799275970Scy	    )],
800275970Scy	    [ntp_cv_type_u_int32_with_dns=yes],
801275970Scy	    [ntp_cv_type_u_int32_with_dns=no]
802275970Scy	)]
803275970Scy    )
804275970Scy    case "$ntp_cv_type_u_int32_with_dns" in
805275970Scy     yes)
806275970Scy	AC_DEFINE([HAVE_U_INT32_ONLY_WITH_DNS], [1],
807275970Scy	    [u_int32 type in DNS headers, not others.])
808275970Scy    esac
809275970Scyesac
810275970Scy
811275970ScyAC_CHECK_HEADERS(
812275970Scy    [sys/timepps.h],
813275970Scy    [],
814275970Scy    [],
815275970Scy    [
816275970Scy	#ifdef HAVE_SYS_TIME_H
817275970Scy	# include <sys/time.h>
818275970Scy	#endif
819275970Scy	#ifdef HAVE_ERRNO_H
820275970Scy	# include <errno.h>
821275970Scy	#endif
822275970Scy    ]
823275970Scy)
824275970Scy
825275970ScyAC_CACHE_CHECK(
826275970Scy    [for struct timespec],
827275970Scy    [ntp_cv_struct_timespec],
828275970Scy    [AC_COMPILE_IFELSE(
829275970Scy	[AC_LANG_PROGRAM(
830275970Scy	    [[
831275970Scy		#include <sys/time.h>
832275970Scy		/* Under SunOS, timespec is in sys/timepps.h,
833275970Scy		   which needs errno.h and FRAC */
834275970Scy		#ifdef HAVE_ERRNO_H
835275970Scy		# include <errno.h>
836275970Scy		#endif
837275970Scy		#ifdef HAVE_SYS_TIMEPPS_H
838275970Scy		# define FRAC 4294967296
839275970Scy		# include <sys/timepps.h>
840275970Scy		#endif
841275970Scy	    ]],
842275970Scy	    [[
843275970Scy		struct timespec n;
844275970Scy	    ]]
845275970Scy	)],
846275970Scy	[ntp_cv_struct_timespec=yes],
847275970Scy	[ntp_cv_struct_timespec=no]
848275970Scy    )]
849275970Scy)
850275970Scycase "$ntp_cv_struct_timespec" in
851275970Scy yes)
852275970Scy    AC_DEFINE([HAVE_STRUCT_TIMESPEC], [1], [struct timespec declared?])
853275970Scyesac
854275970Scy
855275970ScyAC_CACHE_CHECK(
856275970Scy    [for struct ntptimeval],
857275970Scy    [ntp_cv_struct_ntptimeval],
858275970Scy    [AC_COMPILE_IFELSE(
859275970Scy	[AC_LANG_PROGRAM(
860275970Scy	    [[
861275970Scy		#include <sys/time.h>
862275970Scy		#include <sys/timex.h>
863275970Scy	    ]],
864275970Scy	    [[
865275970Scy		struct ntptimeval n;
866275970Scy	    ]]
867275970Scy	)],
868275970Scy	[ntp_cv_struct_ntptimeval=yes],
869275970Scy	[ntp_cv_struct_ntptimeval=no]
870275970Scy    )]
871275970Scy)
872275970Scycase "$ntp_cv_struct_ntptimeval" in
873275970Scy yes)
874275970Scy    AC_DEFINE([HAVE_STRUCT_NTPTIMEVAL], [1],
875275970Scy	[Do we have struct ntptimeval?])
876275970Scyesac
877275970Scy
878275970ScyAC_CHECK_HEADERS(
879275970Scy    [md5.h],
880275970Scy    [],
881275970Scy    [],
882275970Scy    [
883275970Scy	#ifdef HAVE_SYS_TYPES_H
884275970Scy	# include <sys/types.h>
885275970Scy	#endif
886275970Scy    ]
887275970Scy)
888275970Scy
889275970ScyAC_SEARCH_LIBS([MD5Init], [md5 md])
890275970ScyAC_CHECK_FUNCS([MD5Init sysconf getdtablesize sigaction sigset sigvec])
891275970Scy
892344884Scy# HMS: does this need to be a cached variable?
893344884ScyAC_ARG_ENABLE(
894344884Scy    [signalled-io],
895344884Scy    [AS_HELP_STRING([--enable-signalled-io], [s Use signalled IO if we can])],
896344884Scy    [use_signalled_io=$enableval],
897344884Scy    [use_signalled_io=yes]
898344884Scy    )
899344884Scy
900275970ScyAC_CACHE_CHECK(
901275970Scy    [for SIGIO],
902275970Scy    [ntp_cv_hdr_def_sigio],
903275970Scy    [AC_PREPROC_IFELSE(
904282408Scy	[AC_LANG_SOURCE([
905275970Scy	    #include <signal.h>
906275970Scy
907275970Scy	    #ifndef SIGIO
908275970Scy	    # error
909275970Scy	    #endif
910282408Scy	])],
911275970Scy	[ntp_cv_hdr_def_sigio=yes],
912275970Scy	[ntp_cv_hdr_def_sigio=no]
913275970Scy    )]
914275970Scy )
915275970Scy
916275970Scydnl Override those system that have a losing SIGIO
917275970ScyAC_MSG_CHECKING([if we want to use SIGIO])
918275970Scyans=no
919275970Scycase "$ntp_cv_hdr_def_sigio" in
920275970Scy yes)
921275970Scy    ans=yes
922275970Scy    case "$host" in
923275970Scy     alpha*-dec-osf4*|alpha*-dec-osf5*)
924275970Scy	ans=no
925275970Scy	;;
926275970Scy     *-convex-*)
927275970Scy	ans=no
928275970Scy	;;
929275970Scy     *-dec-*)
930275970Scy	ans=no
931275970Scy	;;
932275970Scy     *-pc-cygwin*)
933275970Scy	ans=no
934275970Scy	;;
935275970Scy     *-sni-sysv*)
936275970Scy	ans=no
937275970Scy	;;
938285169Scy     *-stratus-vos)
939285169Scy	ans=no
940285169Scy	;;
941275970Scy     *-univel-sysv*)
942275970Scy	ans=no
943275970Scy	;;
944275970Scy     *-*-irix6*)
945275970Scy	ans=no
946275970Scy	;;
947275970Scy     *-*-freebsd*)
948275970Scy	ans=no
949275970Scy	;;
950275970Scy     *-*-*linux*)
951275970Scy	ans=no
952275970Scy	;;
953275970Scy     *-*-unicosmp*)
954275970Scy	ans=no
955275970Scy	;;
956275970Scy     *-*-kfreebsd*)
957275970Scy	ans=no
958275970Scy	;;
959275970Scy     m68k-*-mint*)
960275970Scy	ans=no
961275970Scy	;;
962275970Scy    esac
963344884Scy    case "$ans" in
964344884Scy     no)
965344884Scy	ans="Possible for $host but disabled because of reported problems"
966344884Scy	;;
967344884Scy    esac
968275970Scy    ;;
969275970Scyesac
970275970Scycase "$ans" in
971275970Scy yes)
972344884Scy    case "$use_signalled_io" in
973344884Scy     yes)
974344884Scy	AC_DEFINE([HAVE_SIGNALED_IO], [1],
975344884Scy	    [Can we use SIGIO for tcp and udp IO?])
976344884Scy	;;
977344884Scy     *) ans="Allowed for $host but --disable-signalled-io was given"
978344884Scy	;;
979344884Scy    esac
980275970Scyesac
981275970ScyAC_MSG_RESULT([$ans])
982275970Scy
983275970ScyAC_CACHE_CHECK(
984275970Scy    [for SIGPOLL],
985275970Scy    [ntp_cv_hdr_def_sigpoll],
986275970Scy    [AC_PREPROC_IFELSE(
987282408Scy	[AC_LANG_SOURCE([
988275970Scy	    #include <signal.h>
989275970Scy	    
990275970Scy	    #ifndef SIGPOLL
991275970Scy	    # error
992275970Scy	    #endif
993282408Scy	])],
994275970Scy	[ntp_cv_hdr_def_sigpoll=yes],
995275970Scy	[ntp_cv_hdr_def_sigpoll=no]
996275970Scy    )]
997275970Scy)
998275970Scy
999275970ScyAC_MSG_CHECKING([if we can use SIGPOLL for UDP I/O])
1000275970Scyans=no
1001275970Scycase "$ntp_cv_hdr_def_sigpoll" in
1002275970Scy yes)
1003275970Scy    case "$host" in
1004275970Scy     mips-sgi-irix*)
1005275970Scy	ans=no
1006275970Scy	;;
1007275970Scy     vax-dec-bsd)
1008275970Scy	ans=no
1009275970Scy	;;
1010275970Scy     *-pc-cygwin*)
1011275970Scy	ans=no
1012275970Scy	;;
1013275970Scy     *-sni-sysv*)
1014275970Scy	ans=no
1015275970Scy	;;
1016285169Scy     *-stratus-vos)
1017285169Scy	ans=no
1018285169Scy	;;
1019275970Scy     *-*-aix[[4-9]]*)
1020275970Scy	# XXX Only verified thru AIX6
1021275970Scy	ans=no
1022275970Scy	;;
1023275970Scy     *-*-hpux*)
1024275970Scy	ans=no
1025275970Scy	;;
1026275970Scy     *-*-*linux*)
1027275970Scy	ans=no
1028275970Scy	;;
1029275970Scy     *-*-osf*)
1030275970Scy	ans=no
1031275970Scy	;;
1032275970Scy     *-*-qnx*)
1033275970Scy	ans=no
1034275970Scy	;;
1035275970Scy     *-*-sunos*)
1036275970Scy	ans=no
1037275970Scy	;;
1038275970Scy     *-*-solaris*)
1039275970Scy	ans=no
1040275970Scy	;;
1041275970Scy     *-*-ultrix*)
1042275970Scy	ans=no
1043275970Scy	;;
1044275970Scy     *-*-unicosmp*)
1045275970Scy	ans=no
1046275970Scy	;;
1047275970Scy     *-*-kfreebsd*)
1048275970Scy	ans=no
1049275970Scy	;;
1050275970Scy     *) ans=yes
1051275970Scy	;;
1052275970Scy    esac
1053275970Scy    ;;
1054275970Scyesac
1055275970Scycase "$ans" in
1056275970Scy yes)
1057275970Scy    AC_DEFINE([USE_UDP_SIGPOLL], [1], [Can we use SIGPOLL for UDP?])
1058275970Scyesac
1059275970ScyAC_MSG_RESULT([$ans])
1060275970Scy
1061275970ScyAC_MSG_CHECKING([if we can use SIGPOLL for TTY I/O])
1062275970Scyans=no
1063275970Scycase "$ntp_cv_hdr_def_sigpoll" in
1064275970Scy yes)
1065275970Scy    case "$host" in
1066275970Scy     mips-sgi-irix*)
1067275970Scy	ans=no
1068275970Scy	;;
1069275970Scy     vax-dec-bsd)
1070275970Scy	ans=no
1071275970Scy	;;
1072275970Scy     *-pc-cygwin*)
1073275970Scy	ans=no
1074275970Scy	;;
1075275970Scy     *-sni-sysv*)
1076275970Scy	ans=no
1077275970Scy	;;
1078285169Scy     *-stratus-vos)
1079285169Scy	ans=no
1080285169Scy	;;
1081275970Scy     *-*-aix[[4-9]]*)
1082275970Scy	# XXX Only verified thru AIX6
1083275970Scy	ans=no
1084275970Scy	;;
1085275970Scy     *-*-hpux*)
1086275970Scy	ans=no
1087275970Scy	;;
1088275970Scy     *-*-*linux*)
1089275970Scy	ans=no
1090275970Scy	;;
1091275970Scy     *-*-osf*)
1092275970Scy	ans=no
1093275970Scy	;;
1094275970Scy     *-*-sunos*)
1095275970Scy	ans=no
1096275970Scy	;;
1097275970Scy     *-*-ultrix*)
1098275970Scy	ans=no
1099275970Scy	;;
1100275970Scy     *-*-qnx*)
1101275970Scy	ans=no
1102275970Scy	;;
1103275970Scy     *-*-unicosmp*)
1104275970Scy	ans=no
1105275970Scy	;;
1106275970Scy     *-*-kfreebsd*)
1107275970Scy	ans=no
1108275970Scy	;;
1109275970Scy     *) ans=yes
1110275970Scy	;;
1111275970Scy    esac
1112275970Scy    ;;
1113275970Scyesac
1114275970Scycase "$ans" in
1115275970Scy yes)
1116275970Scy    AC_DEFINE([USE_TTY_SIGPOLL], [1], [Can we use SIGPOLL for tty IO?])
1117275970Scyesac
1118275970ScyAC_MSG_RESULT([$ans])
1119275970Scy
1120275970ScyAC_CACHE_CHECK(
1121275970Scy    [number of arguments to gettimeofday()],
1122275970Scy    [ntp_cv_func_Xettimeofday_nargs],
1123275970Scy    [AC_COMPILE_IFELSE(
1124275970Scy	[AC_LANG_PROGRAM(
1125275970Scy	    [[
1126275970Scy		#include <sys/time.h>
1127275970Scy	    ]],
1128275970Scy	    [[
1129275970Scy		gettimeofday(0, 0);
1130275970Scy		settimeofday(0, 0);
1131275970Scy	    ]]
1132275970Scy	)],
1133275970Scy	[ntp_cv_func_Xettimeofday_nargs=2],
1134275970Scy	[ntp_cv_func_Xettimeofday_nargs=1]
1135275970Scy    )]
1136275970Scy)
1137275970Scycase "$ntp_cv_func_Xettimeofday_nargs" in
1138275970Scy 1)
1139275970Scy    AC_DEFINE([SYSV_TIMEOFDAY], [1], [Does Xettimeofday take 1 arg?])
1140275970Scyesac
1141275970Scy
1142275970ScyAC_CHECK_FUNCS([settimeofday], ,[
1143275970Scy    case "$host" in
1144275970Scy     *-*-mpeix*) ac_cv_func_settimeofday=yes
1145275970Scy    esac
1146275970Scy])
1147275970Scy
1148275970ScyAC_MSG_CHECKING([if we'll use clock_settime or settimeofday or stime])
1149275970Scyntp_warning='GRONK'
1150275970Scyans=none
1151275970Scycase "$ac_cv_func_clock_settime$ac_cv_func_settimeofday$ac_cv_func_stime" in
1152275970Scy yes*)
1153275970Scy    ntp_warning=''
1154275970Scy    ans='clock_settime()'
1155275970Scy    ;;
1156275970Scy noyes*)
1157275970Scy    ntp_warning='But clock_settime() would be better (if we had it)'
1158275970Scy    ans='settimeofday()'
1159275970Scy    ;;
1160275970Scy nonoyes)
1161275970Scy    ntp_warning='Which is the worst of the three'
1162275970Scy    ans='stime()'
1163275970Scy    ;;
1164275970Scy *) 
1165275970Scy    case "$build" in
1166275970Scy     $host) 
1167275970Scy	ntp_warning='Which leaves us with nothing to use!'
1168275970Scy    esac
1169275970Scyesac
1170275970ScyAC_MSG_RESULT([$ans])
1171275970Scycase "$ntp_warning" in
1172275970Scy '')
1173275970Scy    ;;
1174275970Scy *)
1175275970Scy    AC_MSG_WARN([*** $ntp_warning ***])
1176275970Scy    ;;
1177275970Scyesac
1178275970Scy
1179275970Scy
1180275970Scydnl add to LDADD_LIBNTP set by ntp_compiler.m4
1181275970ScyLDADD_LIBNTP="$LDADD_LIBNTP $LIBS"
1182275970ScyLIBS=$__LIBS
1183275970ScyAS_UNSET([__LIBS])
1184275970Scy
1185275970Scy])dnl
1186275970Scydnl ======================================================================
1187