You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2011/05/15 00:42:18 UTC
svn commit: r1103246 - in /activemq/activemq-cpp/trunk/activemq-cpp:
configure.ac m4/check_atomics.m4
Author: tabish
Date: Sat May 14 22:42:18 2011
New Revision: 1103246
URL: http://svn.apache.org/viewvc?rev=1103246&view=rev
Log:
Detect compiler built-in Atomic operations
Added:
activemq/activemq-cpp/trunk/activemq-cpp/m4/check_atomics.m4 (with props)
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/configure.ac
Modified: activemq/activemq-cpp/trunk/activemq-cpp/configure.ac
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/configure.ac?rev=1103246&r1=1103245&r2=1103246&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/configure.ac (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/configure.ac Sat May 14 22:42:18 2011
@@ -178,6 +178,9 @@ PLAT_LIBS=
# Detect the presence of pthreads and the correct linker settings.
DECAF_CHECK_PTHREADS()
+# Detect the presence of atomic operations.
+DECAF_CHECK_ATOMICS()
+
case "${host_os}" in
*darwin* ) ## Mac OS X configuration
Added: activemq/activemq-cpp/trunk/activemq-cpp/m4/check_atomics.m4
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/m4/check_atomics.m4?rev=1103246&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/m4/check_atomics.m4 (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/m4/check_atomics.m4 Sat May 14 22:42:18 2011
@@ -0,0 +1,86 @@
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Licensed to the Apache Software Foundation (ASF) under one or more
+dnl contributor license agreements. See the NOTICE file distributed with
+dnl this work for additional information regarding copyright ownership.
+dnl The ASF licenses this file to You under the Apache License, Version 2.0
+dnl (the "License"); you may not use this file except in compliance with
+dnl the License. You may obtain a copy of the License at
+dnl
+dnl http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
+dnl
+dnl check_atomics.m4 - checks support for atomics and determines what the
+dnl features of the installed library are on this platform.
+dnl
+dnl This macro checks for the presence of the atomics operations. If found then
+dnl the library is tested to determine what features it supports, or lacks and
+dnl configuration options are set to indicate this information.
+dnl
+
+dnl
+dnl DECAF_CHECK_FOR_ATOMIC_BUILTINS in GCC
+dnl
+AC_DEFUN([DECAF_CHECK_FOR_ATOMIC_BUILTINS], [
+
+ AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins],
+ [AC_TRY_RUN([
+ int main()
+ {
+ unsigned long val = 1010, tmp, *mem = &val;
+
+ if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
+ return 1;
+
+ tmp = val;
+
+ if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
+ return 1;
+
+ if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
+ return 1;
+
+ tmp = 3030;
+
+ if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
+ return 1;
+
+ if (__sync_lock_test_and_set(&val, 4040) != 3030)
+ return 1;
+
+ mem = &tmp;
+
+ if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
+ return 1;
+
+ __sync_synchronize();
+
+ if (mem != &val)
+ return 1;
+
+ return 0;
+ }], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])])
+
+ if test "$ap_cv_atomic_builtins" = "yes"; then
+ AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
+ fi
+
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Checks for atomic operations support and the various features that are
+dnl needed in order to build the DECAF Code that uses atomics provided by
+dnl the compiler or OS rather than using Mutex based atomic operations.
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([DECAF_CHECK_ATOMICS], [
+
+ dnl Attempts to enable atomic builtins compilation on this platform.
+ DECAF_CHECK_FOR_ATOMIC_BUILTINS
+
+])
Propchange: activemq/activemq-cpp/trunk/activemq-cpp/m4/check_atomics.m4
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: activemq/activemq-cpp/trunk/activemq-cpp/m4/check_atomics.m4
------------------------------------------------------------------------------
svn:executable = *