Module: Mesa Branch: master Commit: 2ef7f23820a67e958c2252bd81eb0458903ebf33 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ef7f23820a67e958c2252bd81eb0458903ebf33
Author: Grazvydas Ignotas <[email protected]> Date: Mon Sep 18 22:11:26 2017 +0300 configure: check if -latomic is needed for __atomic_* On some platforms, gcc generates library calls when __atomic_* functions are used, but does not link the required library (libatomic) automatically (supposedly to allow the app to use some other atomics implementation?). Detect this at configure time and add the library when needed. Tested on armel (library was added) and on x86_64 (was not, as expected). Some documentation on this is provided in GCC wiki: https://gcc.gnu.org/wiki/Atomic/GCCMM Fixes: 8915f0c0 "util: use GCC atomic intrinsics with explicit memory model" Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102573 Signed-off-by: Grazvydas Ignotas <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Emil Velikov <[email protected]> --- configure.ac | 13 +++++++++++++ src/util/Makefile.am | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f5d960f9d9..d87b767033 100644 --- a/configure.ac +++ b/configure.ac @@ -379,8 +379,21 @@ int main() { }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1) if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS" + dnl On some platforms, new-style atomics need a helper library + AC_MSG_CHECKING(whether -latomic is needed) + AC_LINK_IFELSE([AC_LANG_SOURCE([[ + #include <stdint.h> + uint64_t v; + int main() { + return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE); + }]])], GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=no, GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=yes) + AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC) + if test "x$GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC" = xyes; then + LIBATOMIC_LIBS="-latomic" + fi fi AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1]) +AC_SUBST([LIBATOMIC_LIBS]) dnl Check if host supports 64-bit atomics dnl note that lack of support usually results in link (not compile) error diff --git a/src/util/Makefile.am b/src/util/Makefile.am index 9885bbe968..c37afff752 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -48,7 +48,8 @@ libmesautil_la_SOURCES = \ libmesautil_la_LIBADD = \ $(CLOCK_LIB) \ - $(ZLIB_LIBS) + $(ZLIB_LIBS) \ + $(LIBATOMIC_LIBS) libxmlconfig_la_SOURCES = $(XMLCONFIG_FILES) libxmlconfig_la_CFLAGS = \ _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
