atomic_builtins.m4 942 B

1234567891011121314151617181920212223242526272829
  1. dnl Checks for availability of GCC's atomic operations builtins.
  2. dnl Defines HAVE_GCC_ATOMIC_BUILTINS if available.
  3. AC_DEFUN([WX_ATOMIC_BUILTINS],
  4. [
  5. AC_REQUIRE([AC_PROG_CC])
  6. if test -n "$GCC"; then
  7. AC_MSG_CHECKING([for __sync_fetch_and_add and __sync_sub_and_fetch builtins])
  8. AC_CACHE_VAL(wx_cv_cc_gcc_atomic_builtins, [
  9. AC_TRY_LINK(
  10. [],
  11. [
  12. unsigned int value=0;
  13. /* wxAtomicInc doesn't use return value here */
  14. __sync_fetch_and_add(&value, 2);
  15. __sync_sub_and_fetch(&value, 1);
  16. /* but wxAtomicDec does, so mimic that: */
  17. volatile unsigned int r2 = __sync_sub_and_fetch(&value, 1);
  18. ],
  19. wx_cv_cc_gcc_atomic_builtins=yes,
  20. wx_cv_cc_gcc_atomic_builtins=no)
  21. ])
  22. AC_MSG_RESULT([$wx_cv_cc_gcc_atomic_builtins])
  23. if test $wx_cv_cc_gcc_atomic_builtins = yes; then
  24. AC_DEFINE([HAVE_GCC_ATOMIC_BUILTINS])
  25. fi
  26. fi
  27. ])