86 lines
2.5 KiB
Diff
86 lines
2.5 KiB
Diff
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'
|