summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Lucina <mato@kotelna.sk>2010-02-22 18:16:40 +0100
committerMartin Lucina <mato@kotelna.sk>2010-02-22 18:16:40 +0100
commit61f0ef569b2f879b6b4e1f247253ceec08e774c7 (patch)
tree725c11365f699713bbded6024126157e5bbf8284
parent3a69cca386a895313729f418ee44443794feed0f (diff)
NetBSD: Check for and use atomic_ops(3) if available
-rw-r--r--configure.in18
1 files changed, 14 insertions, 4 deletions
diff --git a/configure.in b/configure.in
index 2420fa6..b2607bb 100644
--- a/configure.in
+++ b/configure.in
@@ -158,11 +158,21 @@ case "${host_os}" in
# Define on NetBSD to enable all library features
CPPFLAGS="-D_NETBSD_SOURCE $CPPFLAGS"
AC_DEFINE(ZMQ_HAVE_NETBSD, 1, [Have NetBSD OS])
- # NetBSD 5.0 and newer provides atomic operations
+ # NetBSD 5.0 and newer provides atomic operations but we can
+ # only use these on systems where PR #42842 has been fixed so
+ # we must try and link a test program using C++.
netbsd_has_atomic=no
- # XXX As of 5.0.1 the functions declared in atomic.h are
- # missing "extern C", disable this until upstream fixes it.
- # AC_CHECK_HEADERS(atomic.h, [netbsd_has_atomic=yes])
+ AC_MSG_CHECKING([whether atomic operations can be used])
+ AC_LANG_PUSH([C++])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(
+ [[#include <atomic.h>]],
+ [[uint32_t value;
+ atomic_cas_32 (&value, 0, 0);
+ return 0;]])],
+ [netbsd_has_atomic=yes],
+ [netbsd_has_atomic=no])
+ AC_LANG_POP([C++])
+ AC_MSG_RESULT([$netbsd_has_atomic])
if test "x$netbsd_has_atomic" = "xno"; then
AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes])
fi