about summary refs log tree commit diff
path: root/sysdeps/nptl/configure.ac
blob: 58032155cd672c899e57939672db44e623744cfc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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

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
old_CPPFLAGS="$CPPFLAGS"
# Without inhibit_libc #define'd, GCC's unwind.h (at least for ia64)
# will try to include <stdlib.h>, which doesn't exist yet if we're
# building libc in a bare environment.
CPPFLAGS="$CPPFLAGS -Dinhibit_libc=1"
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)
CPPFLAGS="$old_CPPFLAGS"])
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