File configure-8-byte-atomics.patch of Package kyotocabinet.19321

From: Shawn Landden <shawnlandden@gmail.com>
Date: Thu, 21 Jun 2012 20:34:28 -0700
Subject: configure: 8 byte atomics

fix up configure test to handle lack of 8 byte atomics correctly

as is the case with all ARM targets currently
---
 configure    |   29 +++++++++++++----------------
 configure.in |   19 ++++++++++++++++---
 2 files changed, 29 insertions(+), 19 deletions(-)

Index: kyotocabinet-1.2.77/configure
===================================================================
--- kyotocabinet-1.2.77.orig/configure
+++ kyotocabinet-1.2.77/configure
@@ -4041,25 +4041,22 @@ fi
 # Atomic operations
 if test "$enable_atomic" != "no"
 then
-  printf 'checking for atomic operations... '
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
+  printf 'checking for 8 byte atomic operations... '
+  if printf '
+/* Some targets support 4 byte atomics, but not 8 byte atomics,
+ * and will fail at link time if they are used.
+ *
+ * http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Atomic-Builtins.html
+ * http://gcc.gnu.org/wiki/Atomic
+ */
+#include <stdint.h>
 int
 main ()
 {
-__sync_fetch_and_add
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  MYGCCATOMIC=yes
-else
-  MYGCCATOMIC=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test "$MYGCCATOMIC" = "yes"
+uint64_t n = 0xdeadbeaf;
+__sync_bool_compare_and_swap(&n, 0xdeadbeaf, 0);
+return n;
+}' | $CC -xc -o config.tmp - >/dev/null 2>&1
   then
     MYCPPFLAGS="$MYCPPFLAGS -D_MYGCCATOMIC"
     printf 'yes\n'
Index: kyotocabinet-1.2.77/configure.in
===================================================================
--- kyotocabinet-1.2.77.orig/configure.in
+++ kyotocabinet-1.2.77/configure.in
@@ -229,9 +229,22 @@ fi
 # Atomic operations
 if test "$enable_atomic" != "no"
 then
-  printf 'checking for atomic operations... '
-  AC_TRY_COMPILE([], [__sync_fetch_and_add], [MYGCCATOMIC=yes], [MYGCCATOMIC=no])
-  if test "$MYGCCATOMIC" = "yes"
+  printf 'checking for 8 byte atomic operations... '
+  if printf '
+/* Some targets support 4 byte atomics, but not 8 byte atomics,
+ * and will fail at link time if they are used.
+ *
+ * http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Atomic-Builtins.html
+ * http://gcc.gnu.org/wiki/Atomic
+ */
+#include <stdint.h>
+int
+main ()
+{
+uint64_t n = 0xdeadbeaf;
+__sync_bool_compare_and_swap(&n, 0xdeadbeaf, 0);
+return n;
+}' | $CC -xc -o config.tmp - >/dev/null 2>&1
   then
     MYCPPFLAGS="$MYCPPFLAGS -D_MYGCCATOMIC"
     printf 'yes\n'
openSUSE Build Service is sponsored by