X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fnanosleep.m4;h=88e630e8970ff20d35a4bd4187e89016a35855e4;hb=901bc47c9a8db854db97bb28780352748020c81d;hp=d3d0ef89f532f02146fc6f4f708880754b374f6f;hpb=27ef3b8633ec7b4aba91535ec51c43f39b42a25a;p=gnulib.git diff --git a/m4/nanosleep.m4 b/m4/nanosleep.m4 index d3d0ef89f..88e630e89 100644 --- a/m4/nanosleep.m4 +++ b/m4/nanosleep.m4 @@ -1,24 +1,38 @@ -#serial 7 +#serial 18 dnl From Jim Meyering. dnl Check for the nanosleep function. dnl If not found, use the supplied replacement. dnl -AC_DEFUN(jm_FUNC_NANOSLEEP, +# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free Software +# Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_NANOSLEEP], [ + dnl Persuade glibc and Solaris to declare nanosleep. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + + AC_REQUIRE([AC_HEADER_TIME]) + AC_CHECK_HEADERS_ONCE(sys/time.h) + nanosleep_save_libs=$LIBS # Solaris 2.5.1 needs -lposix4 to get the nanosleep function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. - AC_SEARCH_LIBS(nanosleep, [rt posix4], [LIB_NANOSLEEP=$ac_cv_search_nanosleep]) - AC_SUBST(LIB_NANOSLEEP) + AC_SEARCH_LIBS([nanosleep], [rt posix4], + [test "$ac_cv_search_nanosleep" = "none required" || + LIB_NANOSLEEP=$ac_cv_search_nanosleep]) + AC_SUBST([LIB_NANOSLEEP]) - AC_CACHE_CHECK([whether nanosleep works], - jm_cv_func_nanosleep_works, + AC_CACHE_CHECK([for nanosleep], + [gl_cv_func_nanosleep], [ - AC_REQUIRE([AC_HEADER_TIME]) - AC_TRY_RUN([ + AC_LINK_IFELSE([AC_LANG_SOURCE([[ # if TIME_WITH_SYS_TIME # include # include @@ -36,19 +50,25 @@ AC_DEFUN(jm_FUNC_NANOSLEEP, struct timespec ts_sleep, ts_remaining; ts_sleep.tv_sec = 0; ts_sleep.tv_nsec = 1; - exit (nanosleep (&ts_sleep, &ts_remaining) == 0 ? 0 : 1); + return nanosleep (&ts_sleep, &ts_remaining) < 0; } - ], - jm_cv_func_nanosleep_works=yes, - jm_cv_func_nanosleep_works=no, - dnl When crosscompiling, assume the worst. - jm_cv_func_nanosleep_works=no) + ]])], + [gl_cv_func_nanosleep=yes], + [gl_cv_func_nanosleep=no]) ]) - if test $jm_cv_func_nanosleep_works = no; then + if test $gl_cv_func_nanosleep = no; then AC_LIBOBJ(nanosleep) - AC_DEFINE_UNQUOTED(nanosleep, rpl_nanosleep, + AC_DEFINE(nanosleep, rpl_nanosleep, [Define to rpl_nanosleep if the replacement function should be used.]) + gl_PREREQ_NANOSLEEP fi LIBS=$nanosleep_save_libs ]) + +# Prerequisites of lib/nanosleep.c. +AC_DEFUN([gl_PREREQ_NANOSLEEP], +[ + AC_CHECK_FUNCS_ONCE(siginterrupt) + AC_CHECK_HEADERS_ONCE(sys/select.h) +])