]>
Commit | Line | Data |
---|---|---|
7eebcca8 JJ |
1 | dnl ---------------------------------------------------------------------- |
2 | dnl This whole bit snagged from libgomp. | |
3 | ||
4 | dnl | |
5 | dnl GCC_LINUX_FUTEX | |
6 | dnl (SHELL-CODE_HANDLER) | |
7 | dnl | |
8 | AC_DEFUN([GCC_LINUX_FUTEX],[dnl | |
9 | GCC_ENABLE(linux-futex,default, ,[use the Linux futex system call], | |
10 | permit yes|no|default) | |
11 | case "$target" in | |
12 | *-linux*) | |
13 | case "$enable_linux_futex" in | |
14 | default) | |
15 | # If headers don't have gettid/futex syscalls definition, then | |
16 | # default to no, otherwise there will be compile time failures. | |
17 | # Otherwise, default to yes. If we don't detect we are | |
18 | # compiled/linked against NPTL and not cross-compiling, check | |
19 | # if programs are run by default against NPTL and if not, issue | |
20 | # a warning. | |
21 | enable_linux_futex=no | |
22 | AC_LINK_IFELSE( | |
23 | [AC_LANG_PROGRAM( | |
24 | [#include <sys/syscall.h> | |
25 | int lk;], | |
26 | [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])], | |
27 | [save_LIBS="$LIBS" | |
28 | LIBS="-lpthread $LIBS" | |
29 | AC_LINK_IFELSE( | |
30 | [AC_LANG_PROGRAM( | |
31 | [#ifndef _GNU_SOURCE | |
32 | #define _GNU_SOURCE 1 | |
33 | #endif | |
34 | #include <pthread.h> | |
35 | pthread_t th; void *status;], | |
36 | [pthread_tryjoin_np (th, &status);])],[enable_linux_futex=yes], | |
37 | [if test x$cross_compiling = xno; then | |
38 | if getconf GNU_LIBPTHREAD_VERSION 2>/dev/null \ | |
39 | | LC_ALL=C grep -i NPTL > /dev/null 2>/dev/null; then :; else | |
40 | AC_MSG_WARN([The kernel might not support futex or gettid syscalls. | |
41 | If so, please configure with --disable-linux-futex]) | |
42 | fi | |
43 | fi | |
44 | enable_linux_futex=yes]) | |
45 | LIBS="$save_LIBS"]) | |
46 | ;; | |
47 | yes) | |
48 | AC_LINK_IFELSE( | |
49 | [AC_LANG_PROGRAM( | |
50 | [#include <sys/syscall.h> | |
51 | int lk;], | |
52 | [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])],[], | |
53 | [AC_MSG_ERROR([SYS_gettid and SYS_futex required for --enable-linux-futex])]) | |
54 | ;; | |
55 | esac | |
56 | ;; | |
57 | *) | |
58 | enable_linux_futex=no | |
59 | ;; | |
60 | esac | |
61 | if test x$enable_linux_futex = xyes; then | |
62 | $1 | |
63 | fi | |
64 | ]) |