1dnl ###################################################################### 2dnl Common m4sh code for libntp and clients 3dnl 4dnl Any configure tests which libntp or libisc code depends upon should 5dnl be here or in another m4 macro used by the top-level and sntp 6dnl configure.ac files, so that libntp can be moved into the sntp 7dnl subpackage while retaining access to such test results. 8dnl 9AC_DEFUN([NTP_LIBNTP], [ 10 11AC_REQUIRE([NTP_CROSSCOMPILE]) 12 13# HMS: Save $LIBS and empty it. 14# any LIBS we add here should go in to LDADD_LIBNTP 15AC_SUBST([LDADD_LIBNTP]) 16__LIBS=$LIBS 17LIBS= 18 19dnl The contents of NTP_PROG_CC used to be here... 20 21AC_PROG_INSTALL 22# [Bug 2332] because we need to know if we are using GNU ld... 23LT_PATH_LD 24 25NTP_DIR_SEP 26NTP_LINEEDITLIBS 27NTP_LIB_M 28 29AC_FUNC_FORK 30AC_FUNC_ALLOCA 31AC_FUNC_STRERROR_R 32 33ac_busted_vpath_in_make=no 34case "$build" in 35 *-*-irix6.1*) # 64 bit only 36 # busted vpath? 37 ;; 38 *-*-irix6*) # 6.2 (and later?) 39 ac_busted_vpath_in_make=yes 40 ;; 41 *-*-solaris2.5.1) 42 ac_busted_vpath_in_make=yes 43 ;; 44 *-*-unicosmp*) 45 ac_busted_vpath_in_make=yes 46 ;; 47esac 48 49case "$ac_busted_vpath_in_make$srcdir" in 50 yes.|no*) 51 ;; 52 *) case "`${MAKE-make} -v -f /dev/null 2>/dev/null | grep 'GNU Make'`" in 53 '') 54 AC_MSG_ERROR([building outside of the main directory requires GNU make]) 55 esac 56 ;; 57esac 58 59case "$host" in 60 *-*-aix4*) 61 # Bug 2516: 62 # Was *-*-aix[[4-9]]* 63 # XXX only verified thru AIX6. But... 64 # Ken Link says this is fine for AIX 5.3 and 7.1, and sees no reason 65 # that this support would be in 5.3, removed in 6, and added back. 66 # 67 # (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub 68 # (returning ENOSYS). I didn't check 4.2. If, in the future, 69 # IBM pulls its thumbs out long enough to implement clock_settime, 70 # this conditional will need to change. Maybe use AC_TRY_RUN 71 # instead to try to set the time to itself and check errno. 72 ;; 73 *) 74 HMS_SEARCH_LIBS([LDADD_LIBNTP], [clock_gettime], [rt]) 75 AC_CHECK_FUNCS([clock_getres clock_gettime clock_settime]) 76 ;; 77esac 78 79AC_CHECK_FUNCS([getclock stime timegm strlcpy strlcat]) 80 81# Bug 2713 82LDADD_LIBUTIL= 83AC_SUBST([LDADD_LIBUTIL]) 84HMS_SEARCH_LIBS([LDADD_LIBUTIL], [snprintb], [util], 85 [AC_DEFINE([USE_SNPRINTB], 1, [OK to use snprintb()?])]) 86 87dnl HP-UX 11.31 on HPPA has a net/if.h that can't be compiled with gcc4 88dnl due to an incomplete type (a union) mpinfou used in an array. gcc3 89dnl compiles it without complaint. The mpinfou union is defined later 90dnl in the resulting preprocessed source than the spu_info array in 91dnl /usr/include/machine/sys/getppdp.h: 92dnl extern union mpinfou spu_info[]; 93dnl triggering the error. Our strategy is on HP-UX only, test compile 94dnl net/if.h. If that fails, try adding a duplicate definition of 95dnl mpinfou, and if that helps add it to confdefs.h (used for further 96dnl configure tests) and config.h. 97# 98AC_CHECK_HEADERS([errno.h sys/socket.h sys/types.h time.h]) 99AC_CHECK_HEADERS([net/if.h], [], [], [ 100 #ifdef HAVE_SYS_SOCKET_H 101 # include <sys/socket.h> 102 #endif 103]) 104case "$host" in 105 *-hp-hpux*) 106 AC_CACHE_CHECK( 107 [if net/if.h requires mpinfou predeclaration], 108 [ntp_cv_predecl_mpinfou], 109 [ 110 np_cv_predecl_mpinfou=no 111 case "$ac_cv_header_net_if_h" in 112 no) 113 AC_COMPILE_IFELSE( 114 [AC_LANG_PROGRAM( 115 [[ 116 typedef union mpinfou { 117 struct pdk_mpinfo *pdkptr; 118 struct mpinfo *pikptr; 119 } mpinfou_t; 120 #ifdef HAVE_SYS_SOCKET_H 121 # include <sys/socket.h> 122 #endif 123 #include <net/if.h> 124 ]], 125 [[ 126 ]] 127 )], 128 [ 129 ntp_cv_predecl_mpinfou=yes 130 ac_cv_header_net_if_h=yes 131 ] 132 ) 133 esac 134 ] 135 ) 136 case "$ntp_cv_predecl_mpinfou" in 137 yes) 138 cat >>confdefs.h <<_ACEOF 139#ifndef MPINFOU_PREDECLARED 140# define MPINFOU_PREDECLARED 141typedef union mpinfou { 142 struct pdk_mpinfo *pdkptr; 143 struct mpinfo *pikptr; 144} mpinfou_t; 145#endif 146_ACEOF 147 AH_BOTTOM([ 148#ifndef MPINFOU_PREDECLARED 149# define MPINFOU_PREDECLARED 150typedef union mpinfou { 151 struct pdk_mpinfo *pdkptr; 152 struct mpinfo *pikptr; 153} mpinfou_t; 154#endif 155]) 156 esac 157esac 158 159case "$host" in 160 *-linux*) 161 AC_CHECK_HEADERS([linux/if_addr.h], [], [], [ 162 #ifdef HAVE_SYS_SOCKET_H 163 # include <sys/socket.h> 164 #endif 165 ]) 166 AC_DEFINE([NEED_EARLY_FORK], [1], [having to fork the DNS worker early when doing chroot?]) 167esac 168 169AC_CHECK_HEADERS([arpa/nameser.h sys/param.h sys/time.h sys/timers.h]) 170# sys/sysctl.h depends on sys/param.h on OpenBSD - Bug 1576 171AC_CHECK_HEADERS([sys/sysctl.h], [], [], [ 172 #if defined HAVE_SYS_PARAM_H 173 # include <sys/param.h> 174 #endif 175]) 176AC_CHECK_HEADERS([netinet/in_system.h netinet/in_systm.h netinet/in.h]) 177 178AC_CHECK_HEADERS([resolv.h], [], [], [ 179 #ifdef HAVE_SYS_TYPES_H 180 # include <sys/types.h> 181 #endif 182 #ifdef HAVE_NETINET_IN_H 183 # include <netinet/in.h> 184 #endif 185 #ifdef HAVE_ARPA_NAMESER_H 186 # include <arpa/nameser.h> 187 #endif 188]) 189 190AC_CHECK_HEADERS([net/if_var.h], [], [], [ 191 #if HAVE_SYS_TYPES_H 192 # include <sys/types.h> 193 #endif 194 #ifdef HAVE_SYS_SOCKET_H 195 # include <sys/socket.h> 196 #endif 197 #ifdef HAVE_NETINET_IN_H 198 # include <netinet/in.h> 199 #endif 200 #ifdef HAVE_NET_IF_H 201 # include <net/if.h> 202 #endif 203]) 204 205AC_CHECK_HEADERS([netinet/ip.h netinet/in_var.h], [], [], [ 206 #ifdef HAVE_SYS_TYPES_H 207 # include <sys/types.h> 208 #endif 209 #ifdef HAVE_SYS_SOCKET_H 210 # include <sys/socket.h> 211 #endif 212 #ifdef HAVE_NET_IF_H 213 # include <net/if.h> 214 #endif 215 #ifdef HAVE_NETINET_IN_H 216 # include <netinet/in.h> 217 #endif 218 #ifdef HAVE_NET_IF_VAR_H 219 # include <net/if_var.h> 220 #endif 221 #ifdef HAVE_NETINET_IN_SYSTM_H 222 # include <netinet/in_systm.h> 223 #endif 224]) 225 226# HMS: Do we need to check for -lsocket before or after these tests? 227HMS_SEARCH_LIBS([LDADD_LIBNTP], [inet_pton], [nsl]) 228HMS_SEARCH_LIBS([LDADD_LIBNTP], [inet_ntop], [resolv], , , [-lnsl]) 229 230# [Bug 1628] On Solaris, we need -lxnet -lsocket. Generalize this to 231# avoid keying on the OS name: If we find socket functions in 232# libsocket, next try for them in libxnet without libsocket, if found, 233# list both. If we simply tested libxnet first, we would find the 234# functions there and never add libsocket. See also [Bug 660] 235# http://bugs.ntp.org/show_bug.cgi?id=660#c9 236saved_LIBS=$LIBS 237HMS_SEARCH_LIBS([LDADD_LIBNTP], [setsockopt], [socket]) 238case "$ac_cv_search_setsockopt" in 239 -lsocket) 240 LIBS="$saved_LIBS" 241 HMS_SEARCH_LIBS([LDADD_LIBNTP], [getsockopt], [xnet]) 242 # XXX Possible trouble here - reading the comments above and looking at the 243 # code below I wonder if we'll add -lxnet when we don't need it. 244 # Also, do we need to add -lxnet to LDADD_LIBNTP, or perhaps see if it's 245 # there when it is not needed? 246 case "$ac_cv_search_getsockopt" in 247 -lxnet) 248 LIBS="-lxnet -lsocket $saved_LIBS" 249 ;; 250 *) LIBS="-lsocket $saved_LIBS" 251 ;; 252 esac 253 ;; 254esac 255AS_UNSET([saved_LIBS]) 256 257# Bug 2427 - look for recvmsg here. 258AC_CHECK_FUNCS([recvmsg]) 259 260AC_C_INLINE 261 262case "$ac_cv_c_inline" in 263 '') 264 ;; 265 *) 266 AC_DEFINE([HAVE_INLINE], [1], [inline keyword or macro available]) 267 AC_SUBST([HAVE_INLINE]) 268esac 269 270AC_HEADER_TIME 271AC_CHECK_SIZEOF([time_t]) 272AC_C_CHAR_UNSIGNED dnl CROSS_COMPILE? 273AC_CHECK_SIZEOF([signed char]) 274AC_CHECK_TYPES([s_char, long long]) 275AC_CHECK_SIZEOF([short]) 276AC_CHECK_SIZEOF([int]) 277AC_CHECK_SIZEOF([long]) 278 279case "$ac_cv_type_long_long" in 280 no) 281 ;; 282 *) 283 AC_CHECK_SIZEOF([long long]) 284 ;; 285esac 286 287case "$ac_cv_c_char_unsigned$ac_cv_sizeof_signed_char$ac_cv_type_s_char" in 288 *yes) 289 # We have a typedef for s_char. Might as well believe it... 290 ;; 291 no0no) 292 # We have signed chars, can't say 'signed char', no s_char typedef. 293 AC_DEFINE([NEED_S_CHAR_TYPEDEF], [1], 294 [Do we need an s_char typedef?]) 295 ;; 296 no1no) 297 # We have signed chars, can say 'signed char', no s_char typedef. 298 AC_DEFINE([NEED_S_CHAR_TYPEDEF], [1], 299 [Do we need an s_char typedef?]) 300 ;; 301 yes0no) 302 # We have unsigned chars, can't say 'signed char', no s_char typedef. 303 AC_MSG_ERROR([No way to specify a signed character!]) 304 ;; 305 yes1no) 306 # We have unsigned chars, can say 'signed char', no s_char typedef. 307 AC_DEFINE([NEED_S_CHAR_TYPEDEF], [1], 308 [Do we need an s_char typedef?]) 309 ;; 310esac 311 312AC_TYPE_UID_T 313 314m4_divert_text([HELP_ENABLE], 315[AS_HELP_STRING([defaults:], 316 [+ yes, - no, s system-specific])]) 317 318NTP_DEBUG 319 320# check if we can compile with pthreads 321AC_CHECK_HEADERS([semaphore.h]) 322AC_CHECK_FUNCS([socketpair]) 323AC_ARG_ENABLE( 324 [thread-support], 325 [AS_HELP_STRING([--enable-thread-support], 326 [s use threads (+ if available)])], 327 [], 328 [enable_thread_support=yes] 329 ) 330have_pthreads=no 331case "$enable_thread_support" in 332 no) ;; 333 *) 334 ol_found_pthreads=no 335 OL_THREAD_CHECK([ol_found_pthreads=yes]) 336 case "$ol_found_pthreads" in 337 yes) 338 saved_LIBS="$LIBS" 339 LIBS="$LTHREAD_LIBS $LIBS" 340 saved_CFLAGS="$CFLAGS" 341 CFLAGS="$PTHREAD_CFLAGS $CFLAGS" 342 AC_CHECK_FUNCS([sem_timedwait]) 343 LIBS="$saved_LIBS" 344 AS_UNSET([saved_LIBS]) 345 CFLAGS="$saved_CFLAGS" 346 AS_UNSET([saved_CFLAGS]) 347 case "$ac_cv_func_sem_timedwait" in 348 yes) 349 PTHREAD_LIBS="$LTHREAD_LIBS" 350 have_pthreads=yes 351 esac 352 esac 353esac 354AC_SUBST([PTHREAD_LIBS]) 355case "$have_pthreads" in 356 yes) 357 CFLAGS_NTP="$CFLAGS_NTP $PTHREAD_CFLAGS" 358 saved_LIBS="$LIBS" 359 LIBS="$LTHREAD_LIBS $LIBS" 360 saved_CFLAGS="$CFLAGS" 361 CFLAGS="$PTHREAD_CFLAGS $CFLAGS" 362 AC_CHECK_SIZEOF( 363 [pthread_t], 364 , 365 [ 366 AC_INCLUDES_DEFAULT() 367 #include <pthread.h> 368 ] 369 ) 370 LIBISC_PTHREADS_NOTHREADS=pthreads 371 AC_DEFINE([ISC_PLATFORM_USETHREADS], [1], 372 [enable libisc thread support?]) 373 # 374 # We'd like to use sigwait() too 375 # 376 AC_CHECK_FUNC( 377 [sigwait], 378 [have_sigwait=yes], 379 [AC_CHECK_LIB( 380 [c], 381 [sigwait], 382 [have_sigwait=yes], 383 [AC_CHECK_LIB( 384 [pthread], 385 [sigwait], 386 [have_sigwait=yes], 387 [AC_CHECK_LIB( 388 [pthread], 389 [_Psigwait], 390 [have_sigwait=yes], 391 [have_sigwait=no] 392 )] 393 )] 394 )] 395 ) 396 case "$host:$have_sigwait" in 397 *-freebsd*:no) 398 AC_CHECK_LIB( 399 [c_r], 400 [sigwait], 401 [have_sigwait=yes] 402 ) 403 esac 404 case "$have_sigwait" in 405 yes) 406 ac_cv_func_sigwait=yes 407 AC_DEFINE([HAVE_SIGWAIT], [1], [sigwait() available?]) 408 esac 409 410 AC_CHECK_FUNCS([pthread_attr_getstacksize]) 411 AC_CHECK_FUNCS([pthread_attr_setstacksize sysconf]) 412 413 case "$host" in 414 *-freebsd5.[[012]]|*-freebsd5.[[012]].*) 415 ;; 416 *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*|*-freebsd6.*) 417 AC_DEFINE([NEED_PTHREAD_SCOPE_SYSTEM], [1], 418 [use PTHREAD_SCOPE_SYSTEM?]) 419 ;; 420 *-bsdi3.*|*-bsdi4.0*) 421 AC_DEFINE([NEED_PTHREAD_INIT], [1], [pthread_init() required?]) 422 ;; 423 *-linux*) 424 AC_DEFINE([HAVE_LINUXTHREADS], [1], [using Linux pthread?]) 425 ;; 426 *-solaris*) 427 AC_DEFINE([_POSIX_PTHREAD_SEMANTICS], [1]) 428 AC_CHECK_FUNCS([pthread_setconcurrency]) 429 case "$ac_cv_func_pthread_setconcurrency" in 430 yes) 431 AC_DEFINE([CALL_PTHREAD_SETCONCURRENCY], [1], 432 [why not HAVE_P_S?]) 433 esac 434 ;; 435 *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 436 AC_DEFINE([HAVE_UNIXWARE_SIGWAIT], [1], [deviant sigwait?]) 437 ;; 438 esac 439 hack_shutup_pthreadonceinit=no 440 case "$host" in 441 *-aix5.[[123]].*) 442 hack_shutup_pthreadonceinit=yes 443 ;; 444 *-solaris2.[[89]]) 445 hack_shutup_pthreadonceinit=yes 446 ;; 447 *-solaris2.1[[0-9]]) 448 AC_CACHE_CHECK( 449 [if extra braces are needed for PTHREAD_ONCE_INIT], 450 [ntp_cv_braces_around_pthread_once_init], 451 [AC_COMPILE_IFELSE( 452 [AC_LANG_PROGRAM( 453 [[ 454 #include <pthread.h> 455 ]], 456 [[ 457 static pthread_once_t once_test = 458 PTHREAD_ONCE_INIT; 459 ]] 460 )], 461 [ntp_cv_braces_around_pthread_once_init=no], 462 [ntp_cv_braces_around_pthread_once_init=yes] 463 )] 464 ) 465 case "$ntp_cv_braces_around_pthread_once_init" in 466 yes) 467 hack_shutup_pthreadonceinit=yes 468 esac 469 ;; 470 esac 471 case "$hack_shutup_pthreadonceinit" in 472 yes) 473 AC_DEFINE([ISC_PLATFORM_BRACEPTHREADONCEINIT], [1], 474 [Enclose PTHREAD_ONCE_INIT in extra braces?]) 475 esac 476 LIBS="$saved_LIBS" 477 AS_UNSET([saved_LIBS]) 478 CFLAGS="$saved_CFLAGS" 479 AS_UNSET([saved_CFLAGS]) 480 ;; 481 *) 482 LIBISC_PTHREADS_NOTHREADS=nothreads 483 ;; 484esac 485AC_SUBST([LIBISC_PTHREADS_NOTHREADS]) 486AM_CONDITIONAL([PTHREADS], [test "$have_pthreads" != "no"]) 487 488AC_DEFUN([NTP_BEFORE_HW_FUNC_VSNPRINTF], [ 489 AC_BEFORE([$0], [HW_FUNC_VSNPRINTF])dnl 490 AC_BEFORE([$0], [HW_FUNC_SNPRINTF])dnl 491 AC_ARG_ENABLE( 492 [c99-snprintf], 493 [AS_HELP_STRING([--enable-c99-snprintf], [s force replacement])], 494 [force_c99_snprintf=$enableval], 495 [force_c99_snprintf=no] 496 ) 497 case "$force_c99_snprintf" in 498 yes) 499 hw_force_rpl_snprintf=yes 500 hw_force_rpl_vsnprintf=yes 501 esac 502 AH_VERBATIM( 503 [snprinte],dnl sorted in config.h just before #define snprintf 504 [ 505 #if !defined(_KERNEL) && !defined(PARSESTREAM) 506 /* 507 * stdio.h must be included after _GNU_SOURCE is defined 508 * but before #define snprintf rpl_snprintf 509 */ 510 # include <stdio.h> 511 #endif 512 ]) 513 AH_BOTTOM([ 514 #if !defined(_KERNEL) && !defined(PARSESTREAM) 515 # if defined(HW_WANT_RPL_VSNPRINTF) 516 # if defined(__cplusplus) 517 extern "C" { 518 # endif 519 # include <stdarg.h> 520 int rpl_vsnprintf(char *, size_t, const char *, va_list); 521 # if defined(__cplusplus) 522 } 523 # endif 524 # endif 525 # if defined(HW_WANT_RPL_SNPRINTF) 526 # if defined(__cplusplus) 527 extern "C" { 528 # endif 529 int rpl_snprintf(char *, size_t, const char *, ...); 530 # if defined(__cplusplus) 531 } 532 # endif 533 # endif 534 #endif /* !defined(_KERNEL) && !defined(PARSESTREAM) */ 535 ]) 536]) dnl end of AC_DEFUN of NTP_BEFORE_HW_FUNC_VSNPRINTF 537 538AC_DEFUN([NTP_C99_SNPRINTF], [ 539 AC_REQUIRE([NTP_BEFORE_HW_FUNC_VSNPRINTF])dnl 540 AC_REQUIRE([HW_FUNC_VSNPRINTF])dnl 541 AC_REQUIRE([HW_FUNC_SNPRINTF])dnl 542]) dnl end of DEFUN of NTP_C99_SNPRINTF 543 544NTP_C99_SNPRINTF 545 546dnl C99-snprintf does not handle %m 547case "$hw_use_rpl_vsnprintf:$hw_cv_func_vsnprintf" in 548 no:yes) 549 AC_CACHE_CHECK( 550 [if vsnprintf expands "%m" to strerror(errno)], 551 [ntp_cv_vsnprintf_percent_m], 552 [AC_RUN_IFELSE( 553 [AC_LANG_PROGRAM( 554 [[ 555 #include <stdarg.h> 556 #include <errno.h> 557 #include <stdio.h> 558 #include <string.h> 559 560 int call_vsnprintf( 561 char * dst, 562 size_t sz, 563 const char *fmt, 564 ... 565 ); 566 567 int call_vsnprintf( 568 char * dst, 569 size_t sz, 570 const char *fmt, 571 ... 572 ) 573 { 574 va_list ap; 575 int rc; 576 577 va_start(ap, fmt); 578 rc = vsnprintf(dst, sz, fmt, ap); 579 va_end(ap); 580 581 return rc; 582 } 583 ]], 584 [[ 585 char sbuf[512]; 586 char pbuf[512]; 587 int slen; 588 589 strcpy(sbuf, strerror(ENOENT)); 590 errno = ENOENT; 591 slen = call_vsnprintf(pbuf, sizeof(pbuf), "%m", 592 "wrong"); 593 return strcmp(sbuf, pbuf); 594 ]] 595 )], 596 [ntp_cv_vsnprintf_percent_m=yes], 597 [ntp_cv_vsnprintf_percent_m=no], 598 [ntp_cv_vsnprintf_percent_m=no] 599 )] 600 ) 601 case "$ntp_cv_vsnprintf_percent_m" in 602 yes) 603 AC_DEFINE([VSNPRINTF_PERCENT_M], [1], 604 [vsnprintf expands "%m" to strerror(errno)]) 605 esac 606esac 607 608AC_CHECK_HEADERS([sys/clockctl.h]) 609 610AC_ARG_ENABLE( 611 [clockctl], 612 [AS_HELP_STRING( 613 [--enable-clockctl], 614 [s Use /dev/clockctl for non-root clock control] 615 )], 616 [ntp_use_dev_clockctl=$enableval], 617 [ntp_use_dev_clockctl=$ac_cv_header_sys_clockctl_h] 618) 619 620AC_MSG_CHECKING([if we should use /dev/clockctl]) 621AC_MSG_RESULT([$ntp_use_dev_clockctl]) 622 623 624AC_CHECK_HEADERS([sys/capability.h sys/prctl.h]) 625 626AC_MSG_CHECKING([if we have linux capabilities (libcap)]) 627 628case "$ac_cv_header_sys_capability_h$ac_cv_header_sys_prctl_h" in 629 yesyes) 630 case "$host" in 631 mips-sgi-irix*) 632 ntp_have_linuxcaps=no 633 ;; 634 *) ntp_have_linuxcaps=yes 635 ;; 636 esac 637 ;; 638 *) 639 ntp_have_linuxcaps=no 640 ;; 641esac 642 643AC_ARG_ENABLE( 644 [linuxcaps], 645 [AS_HELP_STRING( 646 [--enable-linuxcaps], 647 [+ Use Linux capabilities for non-root clock control] 648 )], 649 [ntp_have_linuxcaps=$enableval] 650) 651 652AC_MSG_RESULT([$ntp_have_linuxcaps]) 653 654case "$ntp_have_linuxcaps" in 655 yes) 656 AC_DEFINE([HAVE_LINUX_CAPABILITIES], [1], 657 [Do we have Linux capabilities?]) 658 LIBS="$LIBS -lcap" 659 ;; 660esac 661 662 663AC_CHECK_HEADERS([priv.h]) 664case "$ac_cv_header_priv_h" in 665 yes) 666 case "$host" in 667 *-solaris*) 668 AC_CHECK_FUNC( 669 [setppriv], 670 [ntp_have_solarisprivs=yes], 671 [ntp_have_solarisprivs=no] 672 ) 673 ;; 674 esac 675esac 676 677AC_ARG_ENABLE( 678 [solarisprivs], 679 [AS_HELP_STRING( 680 [--enable-solarisprivs], 681 [+ Use Solaris privileges for non-root clock control] 682 )], 683 [ntp_have_solarisprivs=$enableval] 684) 685 686AC_MSG_CHECKING([if we have solaris privileges]) 687 688case "$ntp_have_solarisprivs" in 689 yes) 690 AC_DEFINE([HAVE_SOLARIS_PRIVS], [1], 691 [Are Solaris privileges available?]) 692 ;; 693 '') ntp_have_solarisprivs="no" 694 ;; 695esac 696 697AC_MSG_RESULT([$ntp_have_solarisprivs]) 698 699AC_CHECK_HEADERS([sys/mac.h]) 700 701AC_ARG_ENABLE( 702 [trustedbsd_mac], 703 [AS_HELP_STRING( 704 [--enable-trustedbsd-mac], 705 [s Use TrustedBSD MAC policy for non-root clock control] 706 )], 707 [ntp_use_trustedbsd_mac=$enableval] 708) 709 710AC_MSG_CHECKING([if we should use TrustedBSD MAC privileges]) 711 712case "$ntp_use_trustedbsd_mac$ac_cv_header_sys_mac_h" in 713 yesyes) 714 AC_DEFINE([HAVE_TRUSTEDBSD_MAC], [1], 715 [Are TrustedBSD MAC policy privileges available?]) 716 ;; 717 *) ntp_use_trustedbsd_mac="no"; 718 ;; 719esac 720 721AC_MSG_RESULT([$ntp_use_trustedbsd_mac]) 722 723case "$ntp_use_dev_clockctl$ntp_have_linuxcaps$ntp_have_solarisprivs$ntp_use_trustedbsd_mac" in 724 *yes*) 725 AC_DEFINE([HAVE_DROPROOT], [1], 726 [Can we drop root privileges?]) 727esac 728 729case "$host" in 730 *-*-darwin*) 731 AC_SEARCH_LIBS([res_9_init], [resolv]) 732 ;; 733 *) AC_SEARCH_LIBS([res_init], [resolv]) 734 ;; 735esac 736AC_HEADER_RESOLV 737#HMS: Why do we do this check so "early"? 738AC_CHECK_FUNCS([res_init], , [AC_CHECK_FUNCS([__res_init])]) 739 740# We also need -lsocket, but we have tested for that already. 741AC_CHECK_FUNC([inet_ntop], [], 742 [AC_DEFINE([ISC_PLATFORM_NEEDNTOP], [1], [ISC: provide inet_ntop()])]) 743AC_CHECK_FUNC([inet_pton], [], 744 [AC_DEFINE([ISC_PLATFORM_NEEDPTON], [1], [ISC: provide inet_pton()])]) 745 746AC_CHECK_TYPES([uintptr_t, int32, u_int32]) 747 748AH_VERBATIM([TYPEDEF_UINTPTR_T], 749[/* Provide a typedef for uintptr_t? */ 750#ifndef HAVE_UINTPTR_T 751typedef unsigned int uintptr_t; 752#define HAVE_UINTPTR_T 1 753#endif]) 754 755case "$ac_cv_type_int32::$ac_cv_header_resolv_h" in 756 no::yes) 757 AC_CACHE_CHECK( 758 [for int32 with DNS headers included], 759 [ntp_cv_type_int32_with_dns], 760 [AC_COMPILE_IFELSE( 761 [AC_LANG_PROGRAM( 762 [[ 763 #ifdef HAVE_ARPA_NAMESER_H 764 # include <arpa/nameser.h> 765 #endif 766 #include <resolv.h> 767 ]], 768 [[ 769 size_t cb = sizeof(int32); 770 ]] 771 )], 772 [ntp_cv_type_int32_with_dns=yes], 773 [ntp_cv_type_int32_with_dns=no] 774 )] 775 ) 776 case "$ntp_cv_type_int32_with_dns" in 777 yes) 778 AC_DEFINE([HAVE_INT32_ONLY_WITH_DNS], [1], 779 [int32 type in DNS headers, not others.]) 780 esac 781esac 782 783case "$ac_cv_type_u_int32::$ac_cv_header_resolv_h" in 784 no::yes) 785 AC_CACHE_CHECK( 786 [for u_int32 with DNS headers included], 787 [ntp_cv_type_u_int32_with_dns], 788 [AC_COMPILE_IFELSE( 789 [AC_LANG_PROGRAM( 790 [[ 791 #ifdef HAVE_ARPA_NAMESER_H 792 # include <arpa/nameser.h> 793 #endif 794 #include <resolv.h> 795 ]], 796 [[ 797 size_t cb = sizeof(u_int32); 798 ]] 799 )], 800 [ntp_cv_type_u_int32_with_dns=yes], 801 [ntp_cv_type_u_int32_with_dns=no] 802 )] 803 ) 804 case "$ntp_cv_type_u_int32_with_dns" in 805 yes) 806 AC_DEFINE([HAVE_U_INT32_ONLY_WITH_DNS], [1], 807 [u_int32 type in DNS headers, not others.]) 808 esac 809esac 810 811AC_CHECK_HEADERS( 812 [sys/timepps.h], 813 [], 814 [], 815 [ 816 #ifdef HAVE_SYS_TIME_H 817 # include <sys/time.h> 818 #endif 819 #ifdef HAVE_ERRNO_H 820 # include <errno.h> 821 #endif 822 ] 823) 824 825AC_CACHE_CHECK( 826 [for struct timespec], 827 [ntp_cv_struct_timespec], 828 [AC_COMPILE_IFELSE( 829 [AC_LANG_PROGRAM( 830 [[ 831 #include <sys/time.h> 832 /* Under SunOS, timespec is in sys/timepps.h, 833 which needs errno.h and FRAC */ 834 #ifdef HAVE_ERRNO_H 835 # include <errno.h> 836 #endif 837 #ifdef HAVE_SYS_TIMEPPS_H 838 # define FRAC 4294967296 839 # include <sys/timepps.h> 840 #endif 841 ]], 842 [[ 843 struct timespec n; 844 ]] 845 )], 846 [ntp_cv_struct_timespec=yes], 847 [ntp_cv_struct_timespec=no] 848 )] 849) 850case "$ntp_cv_struct_timespec" in 851 yes) 852 AC_DEFINE([HAVE_STRUCT_TIMESPEC], [1], [struct timespec declared?]) 853esac 854 855AC_CACHE_CHECK( 856 [for struct ntptimeval], 857 [ntp_cv_struct_ntptimeval], 858 [AC_COMPILE_IFELSE( 859 [AC_LANG_PROGRAM( 860 [[ 861 #include <sys/time.h> 862 #include <sys/timex.h> 863 ]], 864 [[ 865 struct ntptimeval n; 866 ]] 867 )], 868 [ntp_cv_struct_ntptimeval=yes], 869 [ntp_cv_struct_ntptimeval=no] 870 )] 871) 872case "$ntp_cv_struct_ntptimeval" in 873 yes) 874 AC_DEFINE([HAVE_STRUCT_NTPTIMEVAL], [1], 875 [Do we have struct ntptimeval?]) 876esac 877 878AC_CHECK_HEADERS( 879 [md5.h], 880 [], 881 [], 882 [ 883 #ifdef HAVE_SYS_TYPES_H 884 # include <sys/types.h> 885 #endif 886 ] 887) 888 889AC_SEARCH_LIBS([MD5Init], [md5 md]) 890AC_CHECK_FUNCS([MD5Init sysconf getdtablesize sigaction sigset sigvec]) 891 892# HMS: does this need to be a cached variable? 893AC_ARG_ENABLE( 894 [signalled-io], 895 [AS_HELP_STRING([--enable-signalled-io], [s Use signalled IO if we can])], 896 [use_signalled_io=$enableval], 897 [use_signalled_io=yes] 898 ) 899 900AC_CACHE_CHECK( 901 [for SIGIO], 902 [ntp_cv_hdr_def_sigio], 903 [AC_PREPROC_IFELSE( 904 [AC_LANG_SOURCE([ 905 #include <signal.h> 906 907 #ifndef SIGIO 908 # error 909 #endif 910 ])], 911 [ntp_cv_hdr_def_sigio=yes], 912 [ntp_cv_hdr_def_sigio=no] 913 )] 914 ) 915 916dnl Override those system that have a losing SIGIO 917AC_MSG_CHECKING([if we want to use SIGIO]) 918ans=no 919case "$ntp_cv_hdr_def_sigio" in 920 yes) 921 ans=yes 922 case "$host" in 923 alpha*-dec-osf4*|alpha*-dec-osf5*) 924 ans=no 925 ;; 926 *-convex-*) 927 ans=no 928 ;; 929 *-dec-*) 930 ans=no 931 ;; 932 *-pc-cygwin*) 933 ans=no 934 ;; 935 *-sni-sysv*) 936 ans=no 937 ;; 938 *-stratus-vos) 939 ans=no 940 ;; 941 *-univel-sysv*) 942 ans=no 943 ;; 944 *-*-irix6*) 945 ans=no 946 ;; 947 *-*-freebsd*) 948 ans=no 949 ;; 950 *-*-*linux*) 951 ans=no 952 ;; 953 *-*-unicosmp*) 954 ans=no 955 ;; 956 *-*-kfreebsd*) 957 ans=no 958 ;; 959 m68k-*-mint*) 960 ans=no 961 ;; 962 esac 963 case "$ans" in 964 no) 965 ans="Possible for $host but disabled because of reported problems" 966 ;; 967 esac 968 ;; 969esac 970case "$ans" in 971 yes) 972 case "$use_signalled_io" in 973 yes) 974 AC_DEFINE([HAVE_SIGNALED_IO], [1], 975 [Can we use SIGIO for tcp and udp IO?]) 976 ;; 977 *) ans="Allowed for $host but --disable-signalled-io was given" 978 ;; 979 esac 980esac 981AC_MSG_RESULT([$ans]) 982 983AC_CACHE_CHECK( 984 [for SIGPOLL], 985 [ntp_cv_hdr_def_sigpoll], 986 [AC_PREPROC_IFELSE( 987 [AC_LANG_SOURCE([ 988 #include <signal.h> 989 990 #ifndef SIGPOLL 991 # error 992 #endif 993 ])], 994 [ntp_cv_hdr_def_sigpoll=yes], 995 [ntp_cv_hdr_def_sigpoll=no] 996 )] 997) 998 999AC_MSG_CHECKING([if we can use SIGPOLL for UDP I/O]) 1000ans=no 1001case "$ntp_cv_hdr_def_sigpoll" in 1002 yes) 1003 case "$host" in 1004 mips-sgi-irix*) 1005 ans=no 1006 ;; 1007 vax-dec-bsd) 1008 ans=no 1009 ;; 1010 *-pc-cygwin*) 1011 ans=no 1012 ;; 1013 *-sni-sysv*) 1014 ans=no 1015 ;; 1016 *-stratus-vos) 1017 ans=no 1018 ;; 1019 *-*-aix[[4-9]]*) 1020 # XXX Only verified thru AIX6 1021 ans=no 1022 ;; 1023 *-*-hpux*) 1024 ans=no 1025 ;; 1026 *-*-*linux*) 1027 ans=no 1028 ;; 1029 *-*-osf*) 1030 ans=no 1031 ;; 1032 *-*-qnx*) 1033 ans=no 1034 ;; 1035 *-*-sunos*) 1036 ans=no 1037 ;; 1038 *-*-solaris*) 1039 ans=no 1040 ;; 1041 *-*-ultrix*) 1042 ans=no 1043 ;; 1044 *-*-unicosmp*) 1045 ans=no 1046 ;; 1047 *-*-kfreebsd*) 1048 ans=no 1049 ;; 1050 *) ans=yes 1051 ;; 1052 esac 1053 ;; 1054esac 1055case "$ans" in 1056 yes) 1057 AC_DEFINE([USE_UDP_SIGPOLL], [1], [Can we use SIGPOLL for UDP?]) 1058esac 1059AC_MSG_RESULT([$ans]) 1060 1061AC_MSG_CHECKING([if we can use SIGPOLL for TTY I/O]) 1062ans=no 1063case "$ntp_cv_hdr_def_sigpoll" in 1064 yes) 1065 case "$host" in 1066 mips-sgi-irix*) 1067 ans=no 1068 ;; 1069 vax-dec-bsd) 1070 ans=no 1071 ;; 1072 *-pc-cygwin*) 1073 ans=no 1074 ;; 1075 *-sni-sysv*) 1076 ans=no 1077 ;; 1078 *-stratus-vos) 1079 ans=no 1080 ;; 1081 *-*-aix[[4-9]]*) 1082 # XXX Only verified thru AIX6 1083 ans=no 1084 ;; 1085 *-*-hpux*) 1086 ans=no 1087 ;; 1088 *-*-*linux*) 1089 ans=no 1090 ;; 1091 *-*-osf*) 1092 ans=no 1093 ;; 1094 *-*-sunos*) 1095 ans=no 1096 ;; 1097 *-*-ultrix*) 1098 ans=no 1099 ;; 1100 *-*-qnx*) 1101 ans=no 1102 ;; 1103 *-*-unicosmp*) 1104 ans=no 1105 ;; 1106 *-*-kfreebsd*) 1107 ans=no 1108 ;; 1109 *) ans=yes 1110 ;; 1111 esac 1112 ;; 1113esac 1114case "$ans" in 1115 yes) 1116 AC_DEFINE([USE_TTY_SIGPOLL], [1], [Can we use SIGPOLL for tty IO?]) 1117esac 1118AC_MSG_RESULT([$ans]) 1119 1120AC_CACHE_CHECK( 1121 [number of arguments to gettimeofday()], 1122 [ntp_cv_func_Xettimeofday_nargs], 1123 [AC_COMPILE_IFELSE( 1124 [AC_LANG_PROGRAM( 1125 [[ 1126 #include <sys/time.h> 1127 ]], 1128 [[ 1129 gettimeofday(0, 0); 1130 settimeofday(0, 0); 1131 ]] 1132 )], 1133 [ntp_cv_func_Xettimeofday_nargs=2], 1134 [ntp_cv_func_Xettimeofday_nargs=1] 1135 )] 1136) 1137case "$ntp_cv_func_Xettimeofday_nargs" in 1138 1) 1139 AC_DEFINE([SYSV_TIMEOFDAY], [1], [Does Xettimeofday take 1 arg?]) 1140esac 1141 1142AC_CHECK_FUNCS([settimeofday], ,[ 1143 case "$host" in 1144 *-*-mpeix*) ac_cv_func_settimeofday=yes 1145 esac 1146]) 1147 1148AC_MSG_CHECKING([if we'll use clock_settime or settimeofday or stime]) 1149ntp_warning='GRONK' 1150ans=none 1151case "$ac_cv_func_clock_settime$ac_cv_func_settimeofday$ac_cv_func_stime" in 1152 yes*) 1153 ntp_warning='' 1154 ans='clock_settime()' 1155 ;; 1156 noyes*) 1157 ntp_warning='But clock_settime() would be better (if we had it)' 1158 ans='settimeofday()' 1159 ;; 1160 nonoyes) 1161 ntp_warning='Which is the worst of the three' 1162 ans='stime()' 1163 ;; 1164 *) 1165 case "$build" in 1166 $host) 1167 ntp_warning='Which leaves us with nothing to use!' 1168 esac 1169esac 1170AC_MSG_RESULT([$ans]) 1171case "$ntp_warning" in 1172 '') 1173 ;; 1174 *) 1175 AC_MSG_WARN([*** $ntp_warning ***]) 1176 ;; 1177esac 1178 1179 1180dnl add to LDADD_LIBNTP set by ntp_compiler.m4 1181LDADD_LIBNTP="$LDADD_LIBNTP $LIBS" 1182LIBS=$__LIBS 1183AS_UNSET([__LIBS]) 1184 1185])dnl 1186dnl ====================================================================== 1187