And now I left the CHROMIUM tag, sorry ,-(
On Thu, Mar 29, 2018 at 4:31 PM, Nicolas Boichat <drink...@chromium.org> wrote: > From: Nicolas Boichat <drink...@chromium.org> > > When compiling with LLVM 6.0, the test fails to detect that > -latomic is actually required, as the atomic call is inlined. > > In the code itself (src/util/disk_cache.c), we see this pattern: > p_atomic_add(cache->size, - (uint64_t)size); > where cache->size is an uint64_t *, and results in the following > link time error without -latomic: > src/util/disk_cache.c:628: error: undefined reference to > '__atomic_fetch_add_8' > > Fix the configure/meson test to replicate this pattern, which then > correctly realizes the need for -latomic. > > Signed-off-by: Nicolas Boichat <drink...@chromium.org> > --- > > Changes since v1: > - Updated meson.build as well (untested) > > configure.ac | 6 ++++-- > meson.build | 6 ++++-- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/configure.ac b/configure.ac > index e874f8ebfb2..eff9a0ef88f 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -445,9 +445,11 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then > AC_MSG_CHECKING(whether -latomic is needed) > AC_LINK_IFELSE([AC_LANG_SOURCE([[ > #include <stdint.h> > - uint64_t v; > + struct { > + uint64_t* v; > + } x; > int main() { > - return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE); > + return (int)__atomic_load_n(x.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 > diff --git a/meson.build b/meson.build > index f210eeb2530..cd567dc000e 100644 > --- a/meson.build > +++ b/meson.build > @@ -850,8 +850,10 @@ if cc.compiles('int main() { int n; return > __atomic_load_n(&n, __ATOMIC_ACQUIRE) > # as ARM. > if not cc.links('''#include <stdint.h> > int main() { > - uint64_t n; > - return (int)__atomic_load_n(&n, __ATOMIC_ACQUIRE); > + struct { > + uint64_t *v; > + } x; > + return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE); > }''', > name : 'GCC atomic builtins required -latomic') > dep_atomic = cc.find_library('atomic') > -- > 2.17.0.rc1.321.gba9d0f2565-goog > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev