dnl AM_CHECK_ATOMIC(header-location, code-prefix, if-found)
AC_DEFUN([AM_CHECK_ATOMIC],
[
AC_MSG_CHECKING([for atomic functions in $1])
AC_TRY_LINK( [ #include <$1> ],
[
$2
_Atomic_word i(0);
__atomic_add(&i, 1);
__exchange_and_add(&i, 1);
],
[
AC_MSG_RESULT(yes)
$3
],
[
AC_MSG_RESULT(no)
])
])
dnl If support is available, then HAVE_ATOMIC_GCC
dnl will be set
dnl
AC_DEFUN([AM_ATOMIC],
[
AC_ARG_ENABLE(atomic-gcc,
AC_HELP_STRING([--enable-atomic-gcc],
[use gcc atomic instructions [default=test]]),
enable_atomic_gcc=$enableval, enable_atomic_gcc="test" )
ATOMIC_GCC="0"
ATOMIC_GCC_PRIVATE="0"
if test $enable_atomic_gcc != "no"; then
dnl check bits directory for atomic functions
AC_CHECK_HEADERS([bits/atomicity.h])
if test "x$ac_cv_header_bits_atomicity_h" = xyes; then
AM_CHECK_ATOMIC([bits/atomicity.h], [],
[ATOMIC_GCC="1"])
AM_CHECK_ATOMIC([bits/atomicity.h], [using namespace __gnu_cxx;],
[ATOMIC_GCC_PRIVATE="1"])
fi
dnl GCC 4.2 changed location to ext directory, so check that too
AC_CHECK_HEADERS([ext/atomicity.h])
if test "x$ac_cv_header_ext_atomicity_h" = xyes; then
AM_CHECK_ATOMIC([ext/atomicity.h], [],
[ATOMIC_GCC="1"])
AM_CHECK_ATOMIC([ext/atomicity.h], [using namespace __gnu_cxx;],
[ATOMIC_GCC_PRIVATE="1"])
fi
if test "$ATOMIC_GCC" = "1"; then
AC_DEFINE(HAVE_ATOMIC_GCC,,
[Defined if atomicity.h is usable without namespace])
fi
if test "$ATOMIC_GCC_PRIVATE" = "1"; then
AC_DEFINE(HAVE_ATOMIC_GCC_PRIVATE,,
[Defined if atomicity.h is usable in __gnu_cxx namespace])
fi
fi
AC_SUBST(ATOMIC_GCC)
AC_SUBST(ATOMIC_GCC_PRIVATE)
])
syntax highlighted by Code2HTML, v. 0.9.1