mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-03 01:36:17 +01:00
configure: fix check for atomic operations
Some compilers have support for atomic operations, but do not define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. Instead of checking for this define, we check for __sync_bool_compare_and_swap and define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 if the compiler doesn't define it. https://bugzilla.gnome.org/show_bug.cgi?id=682818
This commit is contained in:
parent
6b3ec82732
commit
7f9af8071c
15
configure.ac
15
configure.ac
@ -2385,7 +2385,8 @@ dnl We may add other compilers here in the future...
|
|||||||
|
|
||||||
AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
|
AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
|
||||||
AC_TRY_COMPILE([],
|
AC_TRY_COMPILE([],
|
||||||
[__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
|
[volatile int atomic = 2;\
|
||||||
|
__sync_bool_compare_and_swap (&atomic, 2, 3);],
|
||||||
[glib_cv_g_atomic_lock_free=yes],
|
[glib_cv_g_atomic_lock_free=yes],
|
||||||
[glib_cv_g_atomic_lock_free=no])])
|
[glib_cv_g_atomic_lock_free=no])])
|
||||||
|
|
||||||
@ -2393,12 +2394,22 @@ 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_COMPILE([],
|
||||||
[__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
|
[volatile int atomic = 2;\
|
||||||
|
__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.])],
|
||||||
[])
|
[])
|
||||||
CFLAGS="${SAVE_CFLAGS}"
|
CFLAGS="${SAVE_CFLAGS}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Some compilers support atomic operations but do not define
|
||||||
|
# __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
|
||||||
|
if test x"$glib_cv_g_atomic_lock_free" = xyes; then
|
||||||
|
AC_TRY_COMPILE([],
|
||||||
|
[__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
|
||||||
|
[],
|
||||||
|
[AC_DEFINE(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, 1, [ compiler supports atomic operations])])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl We need a more robust approach here...
|
dnl We need a more robust approach here...
|
||||||
case $host_cpu in
|
case $host_cpu in
|
||||||
i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*)
|
i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*)
|
||||||
|
Loading…
Reference in New Issue
Block a user