added a new check for pthread_mutex_timedlock() into configure.ac

This commit is contained in:
hyung-hwan 2017-09-09 13:07:24 +00:00
parent dc53a74542
commit 70f8765ada
4 changed files with 61 additions and 0 deletions

46
qse/configure vendored
View File

@ -19902,6 +19902,52 @@ fi
done done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_timedlock in -lpthread" >&5
$as_echo_n "checking for pthread_mutex_timedlock in -lpthread... " >&6; }
if ${ac_cv_lib_pthread_pthread_mutex_timedlock+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthread $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 pthread_mutex_timedlock ();
int
main ()
{
return pthread_mutex_timedlock ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_pthread_pthread_mutex_timedlock=yes
else
ac_cv_lib_pthread_pthread_mutex_timedlock=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_pthread_pthread_mutex_timedlock" >&5
$as_echo "$ac_cv_lib_pthread_pthread_mutex_timedlock" >&6; }
if test "x$ac_cv_lib_pthread_pthread_mutex_timedlock" = xyes; then :
$as_echo "#define HAVE_PTHREAD_MUTEX_TIMEDLOCK 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lunicows" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lunicows" >&5
$as_echo_n "checking for main in -lunicows... " >&6; } $as_echo_n "checking for main in -lunicows... " >&6; }
if ${ac_cv_lib_unicows_main+:} false; then : if ${ac_cv_lib_unicows_main+:} false; then :

View File

@ -255,6 +255,11 @@ fi
AC_CHECK_FUNCS([kqueue kqueue1 kevent]) AC_CHECK_FUNCS([kqueue kqueue1 kevent])
AC_CHECK_LIB([pthread], [pthread_mutex_timedlock], [
AC_DEFINE([HAVE_PTHREAD_MUTEX_TIMEDLOCK],1,[pthreads has pthread_mutex_timedlock()])
])
dnl check is the import library for unicows.dll exists dnl check is the import library for unicows.dll exists
dnl this check doesn't look for a particular symbol dnl this check doesn't look for a particular symbol
dnl but for the symbol 'main' since i want to check dnl but for the symbol 'main' since i want to check

View File

@ -467,6 +467,9 @@
/* Define if you have POSIX threads libraries and header files. */ /* Define if you have POSIX threads libraries and header files. */
#undef HAVE_PTHREAD #undef HAVE_PTHREAD
/* pthreads has pthread_mutex_timedlock() */
#undef HAVE_PTHREAD_MUTEX_TIMEDLOCK
/* Have PTHREAD_PRIO_INHERIT. */ /* Have PTHREAD_PRIO_INHERIT. */
#undef HAVE_PTHREAD_PRIO_INHERIT #undef HAVE_PTHREAD_PRIO_INHERIT

View File

@ -212,6 +212,9 @@ int qse_mtx_lock (qse_mtx_t* mtx, const qse_ntime_t* waiting_time)
} }
#else #else
/* if pthread_mutex_timedlock() isn't available, don't honor the waiting time. */
#if defined(HAVE_PTHREAD_MUTEX_TIMEDLOCK)
if (waiting_time) if (waiting_time)
{ {
qse_ntime_t t; qse_ntime_t t;
@ -226,8 +229,12 @@ int qse_mtx_lock (qse_mtx_t* mtx, const qse_ntime_t* waiting_time)
} }
else else
{ {
#endif
if (pthread_mutex_lock ((pthread_mutex_t*)&mtx->hnd) != 0) return -1; if (pthread_mutex_lock ((pthread_mutex_t*)&mtx->hnd) != 0) return -1;
#if defined(HAVE_PTHREAD_MUTEX_TIMEDLOCK)
} }
#endif
#endif #endif
return 0; return 0;