diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-01-08 17:29:24 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2008-01-08 17:29:24 +0000 |
commit | 84a49ec5c46354769f095c3d5dd6e6003ad9a413 (patch) | |
tree | e688870bd658fa02660a84033246472e669df548 /config/futex.m4 | |
parent | 58e21be152e100522681ea5a0ffefc3ee8943741 (diff) | |
download | cygnal-84a49ec5c46354769f095c3d5dd6e6003ad9a413.tar.gz cygnal-84a49ec5c46354769f095c3d5dd6e6003ad9a413.tar.bz2 cygnal-84a49ec5c46354769f095c3d5dd6e6003ad9a413.zip |
* futex.m4: New file.
Diffstat (limited to 'config/futex.m4')
-rw-r--r-- | config/futex.m4 | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/config/futex.m4 b/config/futex.m4 new file mode 100644 index 000000000..e95144dd1 --- /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 +]) |