more granular configure checks for clock_* functions (closes #28081)

This commit is contained in:
Benjamin Peterson 2016-09-13 22:55:09 -07:00
parent 54bb13bdfd
commit 37098cd584
4 changed files with 91 additions and 4 deletions

View File

@ -160,7 +160,9 @@ PyDoc_STRVAR(clock_gettime_doc,
"clock_gettime(clk_id) -> floating point number\n\ "clock_gettime(clk_id) -> floating point number\n\
\n\ \n\
Return the time of the specified clock clk_id."); Return the time of the specified clock clk_id.");
#endif /* HAVE_CLOCK_GETTIME */
#ifdef HAVE_CLOCK_SETTIME
static PyObject * static PyObject *
time_clock_settime(PyObject *self, PyObject *args) time_clock_settime(PyObject *self, PyObject *args)
{ {
@ -191,7 +193,9 @@ PyDoc_STRVAR(clock_settime_doc,
"clock_settime(clk_id, time)\n\ "clock_settime(clk_id, time)\n\
\n\ \n\
Set the time of the specified clock clk_id."); Set the time of the specified clock clk_id.");
#endif /* HAVE_CLOCK_SETTIME */
#ifdef HAVE_CLOCK_GETRES
static PyObject * static PyObject *
time_clock_getres(PyObject *self, PyObject *args) time_clock_getres(PyObject *self, PyObject *args)
{ {
@ -215,7 +219,7 @@ PyDoc_STRVAR(clock_getres_doc,
"clock_getres(clk_id) -> floating point number\n\ "clock_getres(clk_id) -> floating point number\n\
\n\ \n\
Return the resolution (precision) of the specified clock clk_id."); Return the resolution (precision) of the specified clock clk_id.");
#endif /* HAVE_CLOCK_GETTIME */ #endif /* HAVE_CLOCK_GETRES */
static PyObject * static PyObject *
time_sleep(PyObject *self, PyObject *obj) time_sleep(PyObject *self, PyObject *obj)
@ -1287,7 +1291,11 @@ static PyMethodDef time_methods[] = {
#endif #endif
#ifdef HAVE_CLOCK_GETTIME #ifdef HAVE_CLOCK_GETTIME
{"clock_gettime", time_clock_gettime, METH_VARARGS, clock_gettime_doc}, {"clock_gettime", time_clock_gettime, METH_VARARGS, clock_gettime_doc},
#endif
#ifdef HAVE_CLOCK_SETTIME
{"clock_settime", time_clock_settime, METH_VARARGS, clock_settime_doc}, {"clock_settime", time_clock_settime, METH_VARARGS, clock_settime_doc},
#endif
#ifdef HAVE_CLOCK_GETRES
{"clock_getres", time_clock_getres, METH_VARARGS, clock_getres_doc}, {"clock_getres", time_clock_getres, METH_VARARGS, clock_getres_doc},
#endif #endif
{"sleep", time_sleep, METH_O, sleep_doc}, {"sleep", time_sleep, METH_O, sleep_doc},
@ -1383,8 +1391,9 @@ PyInit_time(void)
/* Set, or reset, module variables like time.timezone */ /* Set, or reset, module variables like time.timezone */
PyInit_timezone(m); PyInit_timezone(m);
#if defined(HAVE_CLOCK_GETTIME) #ifdef CLOCK_REALTIME
PyModule_AddIntMacro(m, CLOCK_REALTIME); PyModule_AddIntMacro(m, CLOCK_REALTIME);
#endif
#ifdef CLOCK_MONOTONIC #ifdef CLOCK_MONOTONIC
PyModule_AddIntMacro(m, CLOCK_MONOTONIC); PyModule_AddIntMacro(m, CLOCK_MONOTONIC);
#endif #endif
@ -1400,7 +1409,6 @@ PyInit_time(void)
#ifdef CLOCK_THREAD_CPUTIME_ID #ifdef CLOCK_THREAD_CPUTIME_ID
PyModule_AddIntMacro(m, CLOCK_THREAD_CPUTIME_ID); PyModule_AddIntMacro(m, CLOCK_THREAD_CPUTIME_ID);
#endif #endif
#endif /* HAVE_CLOCK_GETTIME */
if (!initialized) { if (!initialized) {
if (PyStructSequence_InitType2(&StructTimeType, if (PyStructSequence_InitType2(&StructTimeType,

72
configure vendored
View File

@ -784,6 +784,7 @@ infodir
docdir docdir
oldincludedir oldincludedir
includedir includedir
runstatedir
localstatedir localstatedir
sharedstatedir sharedstatedir
sysconfdir sysconfdir
@ -894,6 +895,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc' sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com' sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var' localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include' includedir='${prefix}/include'
oldincludedir='/usr/include' oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@ -1146,6 +1148,15 @@ do
| -silent | --silent | --silen | --sile | --sil) | -silent | --silent | --silen | --sile | --sil)
silent=yes ;; silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;; ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@ -1283,7 +1294,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \ datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir libdir localedir mandir runstatedir
do do
eval ac_val=\$$ac_var eval ac_val=\$$ac_var
# Remove trailing slashes. # Remove trailing slashes.
@ -1436,6 +1447,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var] --localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib] --libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include] --includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include] --oldincludedir=DIR C header files for non-gcc [/usr/include]
@ -12571,6 +12583,64 @@ fi
done done
for ac_func in clock_settime
do :
ac_fn_c_check_func "$LINENO" "clock_settime" "ac_cv_func_clock_settime"
if test "x$ac_cv_func_clock_settime" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_CLOCK_SETTIME 1
_ACEOF
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_settime in -lrt" >&5
$as_echo_n "checking for clock_settime in -lrt... " >&6; }
if ${ac_cv_lib_rt_clock_settime+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char clock_settime ();
int
main ()
{
return clock_settime ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_rt_clock_settime=yes
else
ac_cv_lib_rt_clock_settime=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_settime" >&5
$as_echo "$ac_cv_lib_rt_clock_settime" >&6; }
if test "x$ac_cv_lib_rt_clock_settime" = xyes; then :
$as_echo "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h
fi
fi
done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for major" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for major" >&5
$as_echo_n "checking for major... " >&6; } $as_echo_n "checking for major... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext

View File

@ -3734,6 +3734,12 @@ AC_CHECK_FUNCS(clock_getres, [], [
]) ])
]) ])
AC_CHECK_FUNCS(clock_settime, [], [
AC_CHECK_LIB(rt, clock_settime, [
AC_DEFINE(HAVE_CLOCK_SETTIME, 1)
])
])
AC_MSG_CHECKING(for major, minor, and makedev) AC_MSG_CHECKING(for major, minor, and makedev)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#if defined(MAJOR_IN_MKDEV) #if defined(MAJOR_IN_MKDEV)

View File

@ -125,6 +125,9 @@
/* Define to 1 if you have the `clock_gettime' function. */ /* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME #undef HAVE_CLOCK_GETTIME
/* Define to 1 if you have the `clock_settime' function. */
#undef HAVE_CLOCK_SETTIME
/* Define if the C compiler supports computed gotos. */ /* Define if the C compiler supports computed gotos. */
#undef HAVE_COMPUTED_GOTOS #undef HAVE_COMPUTED_GOTOS