dnl ----------------------------------------------------------------------dnl This whole bit snagged from libgomp.dnldnl GCC_LINUX_FUTEXdnl (SHELL-CODE_HANDLER)dnlAC_DEFUN([GCC_LINUX_FUTEX],[dnlGCC_ENABLE(linux-futex,default, ,[use the Linux futex system call],permit yes|no|default)case "$target" in*-linux*)case "$enable_linux_futex" indefault)# If headers don't have gettid/futex syscalls definition, then# default to no, otherwise there will be compile time failures.# Otherwise, default to yes. If we don't detect we are# compiled/linked against NPTL and not cross-compiling, check# if programs are run by default against NPTL and if not, issue# a warning.enable_linux_futex=noAC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/syscall.h>int lk;],[syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])],[save_LIBS="$LIBS"LIBS="-lpthread $LIBS"AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifndef _GNU_SOURCE#define _GNU_SOURCE 1#endif#include <pthread.h>pthread_t th; void *status;],[pthread_tryjoin_np (th, &status);])],[enable_linux_futex=yes],[if test x$cross_compiling = xno; thenif getconf GNU_LIBPTHREAD_VERSION 2>/dev/null \| LC_ALL=C grep -i NPTL > /dev/null 2>/dev/null; then :; elseAC_MSG_WARN([The kernel might not support futex or gettid syscalls.If so, please configure with --disable-linux-futex])fifienable_linux_futex=yes])LIBS="$save_LIBS"]);;yes)AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/syscall.h>int lk;],[syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])],[],[AC_MSG_ERROR([SYS_gettid and SYS_futex required for --enable-linux-futex])]);;esac;;*)enable_linux_futex=no;;esacif test x$enable_linux_futex = xyes; then$1fi])