mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 15:36:14 +01:00
fix atomic ops detection
AC_TRY_LINK should be used instead of AC_TRY_COMPILE because the code will compile everywhere, either producing ``atomic'' code, or an external reference to __sync_bool_compare_and_swap. https://bugzilla.gnome.org/show_bug.cgi?id=706958
This commit is contained in:
parent
34e1a53795
commit
996edb0c46
@ -2454,7 +2454,7 @@ AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
|
|||||||
glib_cv_g_atomic_lock_free=yes
|
glib_cv_g_atomic_lock_free=yes
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
AC_TRY_COMPILE([],
|
AC_TRY_LINK([],
|
||||||
[volatile int atomic = 2;\
|
[volatile int atomic = 2;\
|
||||||
__sync_bool_compare_and_swap (&atomic, 2, 3);],
|
__sync_bool_compare_and_swap (&atomic, 2, 3);],
|
||||||
[glib_cv_g_atomic_lock_free=yes],
|
[glib_cv_g_atomic_lock_free=yes],
|
||||||
@ -2462,7 +2462,7 @@ AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
|
|||||||
if test "$glib_cv_g_atomic_lock_free" = "no"; then
|
if test "$glib_cv_g_atomic_lock_free" = "no"; then
|
||||||
SAVE_CFLAGS="${CFLAGS}"
|
SAVE_CFLAGS="${CFLAGS}"
|
||||||
CFLAGS="-march=i486"
|
CFLAGS="-march=i486"
|
||||||
AC_TRY_COMPILE([],
|
AC_TRY_LINK([],
|
||||||
[volatile int atomic = 2;\
|
[volatile int atomic = 2;\
|
||||||
__sync_bool_compare_and_swap (&atomic, 2, 3);],
|
__sync_bool_compare_and_swap (&atomic, 2, 3);],
|
||||||
[AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
|
[AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
|
||||||
@ -2480,7 +2480,7 @@ case $host in
|
|||||||
# Some compilers support atomic operations but do not define
|
# Some compilers support atomic operations but do not define
|
||||||
# __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
|
# __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
|
||||||
if test x"$glib_cv_g_atomic_lock_free" = xyes; then
|
if test x"$glib_cv_g_atomic_lock_free" = xyes; then
|
||||||
AC_TRY_COMPILE([],
|
AC_TRY_LINK([],
|
||||||
[__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
|
[__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
|
||||||
[],
|
[],
|
||||||
[AC_DEFINE(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, 1, [ compiler supports atomic operations])])
|
[AC_DEFINE(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, 1, [ compiler supports atomic operations])])
|
||||||
|
Loading…
Reference in New Issue
Block a user