From 7eebcca8bd83b759da622cb306868147ce5b9312 Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Tue, 8 Jan 2008 17:29:24 +0000
Subject: 	* futex.m4: New file.

---
 config/ChangeLog |  4 ++++
 config/futex.m4  | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+)
 create mode 100644 config/futex.m4

diff --git a/config/ChangeLog b/config/ChangeLog
index 77082b4..8343f06 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2008-01-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* futex.m4: New file.
+
 2007-12-06  Richard Sandiford  <rsandifo@nildram.co.uk>
 
 	* mt-sde (CFLAGS_FOR_TARGET, CXXFLAGS_FOR_TARGET): Use +=, not =.
diff --git a/config/futex.m4 b/config/futex.m4
new file mode 100644
index 0000000..e95144d
--- /dev/null
+++ b/config/futex.m4
@@ -0,0 +1,64 @@
+dnl ----------------------------------------------------------------------
+dnl This whole bit snagged from libgomp.
+
+dnl
+dnl GCC_LINUX_FUTEX
+dnl    (SHELL-CODE_HANDLER)
+dnl
+AC_DEFUN([GCC_LINUX_FUTEX],[dnl
+GCC_ENABLE(linux-futex,default, ,[use the Linux futex system call],
+	   permit yes|no|default)
+case "$target" in
+  *-linux*)
+    case "$enable_linux_futex" in
+      default)
+	# 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=no
+	AC_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; then
+	       if getconf GNU_LIBPTHREAD_VERSION 2>/dev/null \
+		  | LC_ALL=C grep -i NPTL > /dev/null 2>/dev/null; then :; else
+		 AC_MSG_WARN([The kernel might not support futex or gettid syscalls.
+If so, please configure with --disable-linux-futex])
+	       fi
+	     fi
+	     enable_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
+    ;;
+esac
+if test x$enable_linux_futex = xyes; then
+  $1
+fi
+])
-- 
cgit v1.1