Patch by Shawn Landden for kyotocabinet >= 1.2.76, which fixes the configure test to handle lack of 8 byte atomics correctly as is the case with ARM 32 bit on all Fedora releases, Intel 32 bit on RHEL 5 and PowerPC 32 bit on RHEL 5 and all Fedora releases. --- kyotocabinet-1.2.76/configure.in 2012-05-24 13:31:42.000000000 +0200 +++ kyotocabinet-1.2.76/configure.in.8-byte-atomics 2013-03-01 00:21:21.000000000 +0100 @@ -238,9 +238,22 @@ # 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 +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' --- kyotocabinet-1.2.76/configure 2012-05-24 13:31:45.000000000 +0200 +++ kyotocabinet-1.2.76/configure.8-byte-atomics 2013-03-01 00:22:37.000000000 +0100 @@ -4012,25 +4012,22 @@ # 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 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'