diff --git a/configure.ac b/configure.ac index ab4f1f711..020151911 100644 --- a/configure.ac +++ b/configure.ac @@ -326,6 +326,7 @@ AC_SUBST([SCM_I_GSC_T_PTRDIFF]) AC_CHECK_HEADERS([stdint.h]) AC_CHECK_HEADERS([inttypes.h]) +AC_CHECK_HEADERS([stdatomic.h]) AC_CHECK_SIZEOF(intmax_t) diff --git a/libguile/atomics-internal.h b/libguile/atomics-internal.h index 9074d8cc3..f2d17e102 100644 --- a/libguile/atomics-internal.h +++ b/libguile/atomics-internal.h @@ -28,9 +28,7 @@ -#define HAVE_C11_ATOMICS (__STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__)) - -#if HAVE_C11_ATOMICS +#ifdef HAVE_STDATOMIC_H #include static inline uint32_t @@ -74,7 +72,7 @@ scm_atomic_compare_and_swap_scm (SCM *loc, SCM *expected, SCM desired) { return atomic_compare_exchange_weak (loc, expected, desired); } -#else /* HAVE_C11_ATOMICS */ +#else /* HAVE_STDATOMIC_H */ /* Fallback implementation using locks. */ #include "libguile/threads.h" @@ -171,6 +169,6 @@ scm_atomic_compare_and_swap_scm (SCM *loc, SCM *expected, SCM desired) return ret; } -#endif /* HAVE_C11_ATOMICS */ +#endif /* HAVE_STDATOMIC_H */ #endif /* SCM_ATOMICS_INTERNAL_H */