AC_MSG_NOTICE([With dl])
fi
+AC_DEFUN([LIBATOMIC_CHECKER],[
+ AC_MSG_CHECKING(whether linking $1 -latomic works)
+ AC_LINK_IFELSE([
+ AC_LANG_SOURCE([[
+#include <atomic>
+#include <cstdint>
+ int
+ main(int, char **) {
+ return std::atomic<uint64_t>{}.is_lock_free() ? 0 : 1;
+ }
+ ]])],[
+ AC_MSG_RESULT(yes)
+ libatomic_checker_result="yes"],[
+ AC_MSG_RESULT(no)
+ libatomic_checker_result="no"
+])])
+
## check for atomics library before anything that might need it
-# AC_SEARCH_LIBS pollutes LIBS
SQUID_STATE_SAVE(LIBATOMIC)
-AC_SEARCH_LIBS([__atomic_load_8],[atomic],[
- test "$ac_res" = "none required" || ATOMICLIB=$ac_res],[])
+LIBATOMIC_CHECKER(without)
+AS_IF([test "x$libatomic_checker_result" = "xno"],[
+ LIBS="$LIBS -latomic"
+ LIBATOMIC_CHECKER(with)
+ AS_IF([test "x$libatomic_checker_result" = "xyes"],[
+ ATOMICLIB="-latomic"],[
+ AC_MSG_ERROR([Required library libatomic not found.])
+])])
SQUID_STATE_ROLLBACK(LIBATOMIC)
AC_SUBST(ATOMICLIB)