diff options
-rw-r--r-- | configure.ac | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index b58a5c149..408152a84 100644 --- a/configure.ac +++ b/configure.ac @@ -501,9 +501,20 @@ LIBS=$DLLIB AC_SEARCH_LIBS(pthread_create, pthread, [PTHREADLIB=$LIBS]) AC_SUBST(PTHREADLIB) -# uClibc requires explicit -latomic for __atomic_* operations +# Some architectures require explicit -latomic for __atomic_* operations +# AC_SEARCH_LIBS() does not work when checking built-ins due to conflicting types LIBS="" -AC_SEARCH_LIBS(__atomic_load, atomic, [ATOMICLIB=$LIBS]) +AC_MSG_CHECKING(for library containing __atomic_and_fetch) +AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[]], [[int x; __atomic_and_fetch(&x, 1, __ATOMIC_RELAXED);]])], + [AC_MSG_RESULT([none required])], + [LIBS="-latomic"; + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[]], [[int x; __atomic_and_fetch(&x, 1, __ATOMIC_RELAXED);]])], + [AC_MSG_RESULT([-latomic]); ATOMICLIB=$LIBS], + [AC_MSG_RESULT([no])]) + ] +) AC_SUBST(ATOMICLIB) LIBS=$saved_LIBS |