about summary refs log tree commit diff
path: root/sysdeps/nptl/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/nptl/configure.ac')
-rw-r--r--sysdeps/nptl/configure.ac49
1 files changed, 49 insertions, 0 deletions
diff --git a/sysdeps/nptl/configure.ac b/sysdeps/nptl/configure.ac
new file mode 100644
index 0000000000..413af96799
--- /dev/null
+++ b/sysdeps/nptl/configure.ac
@@ -0,0 +1,49 @@
+dnl configure fragment for new libpthread implementation.
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+
+if test "x$libc_cv_gcc___thread" != xyes; then
+  AC_MSG_ERROR(compiler support for __thread is required)
+fi
+
+if test "x${libc_cv_visibility_attribute}" != xyes ||
+   test "x${libc_cv_broken_visibility_attribute}" != xno; then
+  AC_MSG_ERROR(working compiler support for visibility attribute is required)
+fi
+
+if test "x$libc_cv_asm_cfi_directives" != xyes; then
+  dnl We need this only for some architectures.
+  case "$base_machine" in
+    i386 | x86_64 | powerpc | s390)
+      AC_MSG_ERROR(CFI directive support in assembler is required) ;;
+    *) ;;
+  esac
+fi
+
+dnl Iff <unwind.h> is available, make sure it is the right one and it
+dnl contains struct _Unwind_Exception.
+AC_CACHE_CHECK(dnl
+for forced unwind support, libc_cv_forced_unwind, [dnl
+AC_TRY_COMPILE([#include <unwind.h>], [
+struct _Unwind_Exception exc;
+struct _Unwind_Context *context;
+_Unwind_GetCFA (context)],
+libc_cv_forced_unwind=yes, libc_cv_forced_unwind=no)])
+if test $libc_cv_forced_unwind = yes; then
+  AC_DEFINE(HAVE_FORCED_UNWIND)
+dnl Check for C cleanup handling.
+  old_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror -fexceptions"
+  AC_CACHE_CHECK([for C cleanup handling], libc_cv_c_cleanup, [dnl
+  AC_TRY_COMPILE([
+extern void some_function (void);
+void cl (void *a) { }], [
+  int a __attribute__ ((cleanup (cl)));
+  some_function ()],
+libc_cv_c_cleanup=yes, libc_cv_c_cleanup=no)])
+  CFLAGS="$old_CFLAGS"
+  if test $libc_cv_c_cleanup = no; then
+    AC_MSG_ERROR([the compiler must support C cleanup handling])
+  fi
+else
+  AC_MSG_ERROR(forced unwind support is required)
+fi