On Fri, 23 Feb 2018 at 13:18 Thierry Reding <thierry.red...@gmail.com> wrote:
> From: Thierry Reding <tred...@nvidia.com> > > The disk cache implementation uses 64-bit atomic operations. For some > architectures, such as 32-bit ARM, GCC will not be able to translate > these operations into lock-free instructions and will instead rely on > the external atomics library to provide these operations. > > Check at configuration time whether or not linking against libatomic > is necessary and if so, create a dependency that can be used while > linking the mesautil library. > > This is the meson equivalent of 2ef7f23820a6 ("configure: check if > -latomic is needed for __atomic_*"). > > Signed-off-by: Thierry Reding <tred...@nvidia.com> > --- > meson.build | 15 +++++++++++++++ > src/util/meson.build | 2 +- > 2 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/meson.build b/meson.build > index 121341a950c4..7c6f40573421 100644 > --- a/meson.build > +++ b/meson.build > @@ -800,6 +800,21 @@ endif > if cc.compiles('int main() { int n; return __atomic_load_n(&n, > __ATOMIC_ACQUIRE); }', > name : 'GCC atomic builtins') > pre_args += '-DUSE_GCC_ATOMIC_BUILTINS' > + > + # Not all atomic calls can be turned into lock-free instructions, in > which > + # GCC will make calls into the libatomic library. Check whether we need > to > + # link with -latomic. > + # > + # This can happen for 64-bit atomic operations on 32-bit architectures > such > + # as ARM. > + if not cc.links('''#include <stdint.h> > + int main() { > + uint64_t n; > + return (int)__atomic_load_n(&n, __ATOMIC_ACQUIRE); > + }''', > + name : 'GCC atomic builtins required -latomic') > + dep_atomic = cc.find_library('atomic') > + endif > endif > if not cc.links('''#include <stdint.h> > uint64_t v; > diff --git a/src/util/meson.build b/src/util/meson.build > index b23dba3a9851..eece1cefef6a 100644 > --- a/src/util/meson.build > +++ b/src/util/meson.build > @@ -102,7 +102,7 @@ libmesa_util = static_library( > 'mesa_util', > [files_mesa_util, format_srgb], > include_directories : inc_common, > - dependencies : [dep_zlib, dep_clock, dep_thread], > + dependencies : [dep_zlib, dep_clock, dep_thread, dep_atomic], > c_args : [c_msvc_compat_args, c_vis_args], > build_by_default : false > ) > -- > 2.16.2 > > Hi I had this issue when building a 32bit Mesa on x86-64 when using Clang, 64bit was fine. Will this work for Clang too and if so can a similar change be made for autotools? I'm waiting for a change to Meson that'll allow me to specify a 32bit llvm-config to test this on Meson with 32bit Thanks Mike
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev