summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2018-05-13 17:20:28 -0700
committerKhem Raj <raj.khem@gmail.com>2018-05-13 17:20:28 -0700
commit144c4236d493aaade748a93d1d044be1f7ef6a27 (patch)
tree9944d087f339c07a8aa0c6617e9160472e074e3c
parent5ffb0587e1f70c7bf7624cafa4b67902732f1e1e (diff)
downloadmeta-clang-144c4236d493aaade748a93d1d044be1f7ef6a27.tar.gz
mesa: Link with libatomic and libm
on x86 it fails to link with this error https://lists.freedesktop.org/archives/mesa-dev/2017-May/155499.html and libm is needed for | /usr/src/debug/mesa/2_18.0.2-r0/build/src/util/../../../mesa-18.0.2/src/util/rounding.h:108: undefined reference to `lrintf' Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--recipes-graphics/mesa/mesa/0001-Clang-doesn-t-have-64bit-__atomic-builtins-on-i386.patch79
-rw-r--r--recipes-graphics/mesa/mesa/0002-Add-prototypes-for-64bit-atomics-fallback.patch42
-rw-r--r--recipes-graphics/mesa/mesa_%.bbappend8
3 files changed, 2 insertions, 127 deletions
diff --git a/recipes-graphics/mesa/mesa/0001-Clang-doesn-t-have-64bit-__atomic-builtins-on-i386.patch b/recipes-graphics/mesa/mesa/0001-Clang-doesn-t-have-64bit-__atomic-builtins-on-i386.patch
deleted file mode 100644
index 05c9074..0000000
--- a/recipes-graphics/mesa/mesa/0001-Clang-doesn-t-have-64bit-__atomic-builtins-on-i386.patch
+++ /dev/null
@@ -1,79 +0,0 @@
1From cc580e1c4d2628f8d1fa41c574d0af2498c7b33c Mon Sep 17 00:00:00 2001
2From: Jan Beich <jbeich@freebsd.org>
3Date: Sat, 13 May 2017 11:20:53 +0200
4Subject: [PATCH 1/2] Clang doesn't have 64bit __atomic* builtins on i386
5
6glsl/.libs/libstandalone.a(libmesautil_la-disk_cache.o): In function `disk_cache_remove':
7disk_cache.c:(.text+0x763): undefined reference to `__atomic_fetch_add_8'
8glsl/.libs/libstandalone.a(libmesautil_la-disk_cache.o): In function `cache_put':
9disk_cache.c:(.text+0xabc): undefined reference to `__atomic_fetch_add_8'
10disk_cache.c:(.text+0xec1): undefined reference to `__atomic_fetch_add_8'
11c++: error: linker command failed with exit code 1 (use -v to see invocation)
12
13Signed-off-by: Jan Beich <jbeich@FreeBSD.org>
14---
15 configure.ac | 13 ++++++++++++-
16 src/util/u_atomic.c | 4 ++++
17 2 files changed, 16 insertions(+), 1 deletion(-)
18
19diff --git a/configure.ac b/configure.ac
20index e3babd3909..6554ab7251 100644
21--- a/configure.ac
22+++ b/configure.ac
23@@ -415,13 +415,24 @@ AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPP
24
25 dnl Check if host supports 64-bit atomics
26 dnl note that lack of support usually results in link (not compile) error
27-AC_MSG_CHECKING(whether __sync_add_and_fetch_8 is supported)
28+save_CFLAGS=$CFLAGS
29+if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then
30+ CFLAGS="$CFLAGS -DUSE_GCC_ATOMIC_BUILTINS"
31+ AC_MSG_CHECKING(whether __atomic_fetch_add_8 is supported)
32+else
33+ AC_MSG_CHECKING(whether __sync_add_and_fetch_8 is supported)
34+fi
35 AC_LINK_IFELSE([AC_LANG_SOURCE([[
36 #include <stdint.h>
37 uint64_t v;
38 int main() {
39+#ifdef USE_GCC_ATOMIC_BUILTINS
40+ return __atomic_add_fetch(&v, 1, __ATOMIC_ACQ_REL);
41+#else
42 return __sync_add_and_fetch(&v, (uint64_t)1);
43+#endif
44 }]])], GCC_64BIT_ATOMICS_SUPPORTED=yes, GCC_64BIT_ATOMICS_SUPPORTED=no)
45+CFLAGS=$save_CFLAGS
46 if test "x$GCC_64BIT_ATOMICS_SUPPORTED" != xyes; then
47 DEFINES="$DEFINES -DMISSING_64BIT_ATOMICS"
48 fi
49diff --git a/src/util/u_atomic.c b/src/util/u_atomic.c
50index 44b75fb0c0..691c34cf30 100644
51--- a/src/util/u_atomic.c
52+++ b/src/util/u_atomic.c
53@@ -34,6 +34,7 @@
54
55 static pthread_mutex_t sync_mutex = PTHREAD_MUTEX_INITIALIZER;
56
57+#ifndef USE_GCC_ATOMIC_BUILTINS
58 WEAK uint64_t
59 __sync_add_and_fetch_8(uint64_t *ptr, uint64_t val)
60 {
61@@ -60,6 +61,8 @@ __sync_sub_and_fetch_8(uint64_t *ptr, uint64_t val)
62 return r;
63 }
64
65+#else
66+
67 WEAK uint64_t
68 __atomic_fetch_add_8(uint64_t *ptr, uint64_t val, int memorder)
69 {
70@@ -71,5 +74,6 @@ __atomic_fetch_sub_8(uint64_t *ptr, uint64_t val, int memorder)
71 {
72 return __sync_sub_and_fetch(ptr, val);
73 }
74+#endif /* !USE_GCC_ATOMIC_BUILTINS */
75
76 #endif
77--
782.14.1
79
diff --git a/recipes-graphics/mesa/mesa/0002-Add-prototypes-for-64bit-atomics-fallback.patch b/recipes-graphics/mesa/mesa/0002-Add-prototypes-for-64bit-atomics-fallback.patch
deleted file mode 100644
index 5c05607..0000000
--- a/recipes-graphics/mesa/mesa/0002-Add-prototypes-for-64bit-atomics-fallback.patch
+++ /dev/null
@@ -1,42 +0,0 @@
1From b919db72e6f1b1d98d0c97f9919b7593af11d0ae Mon Sep 17 00:00:00 2001
2From: Jan Beich <jbeich@freebsd.org>
3Date: Sat, 13 May 2017 11:21:12 +0200
4Subject: [PATCH 2/2] Add prototypes for 64bit atomics fallback
5
6u_atomic.c:67:1: error: no previous prototype for function '__atomic_fetch_add_8'
7 [-Werror,-Wmissing-prototypes]
8__atomic_fetch_add_8(uint64_t *ptr, uint64_t val, int memorder)
9^
10u_atomic.c:73:1: error: no previous prototype for function '__atomic_fetch_sub_8'
11 [-Werror,-Wmissing-prototypes]
12__atomic_fetch_sub_8(uint64_t *ptr, uint64_t val, int memorder)
13^
142 errors generated.
15
16Signed-off-by: Jan Beich <jbeich@FreeBSD.org>
17---
18 src/util/u_atomic.c | 8 ++++++++
19 1 file changed, 8 insertions(+)
20
21diff --git a/src/util/u_atomic.c b/src/util/u_atomic.c
22index 691c34cf30..ce600aeeed 100644
23--- a/src/util/u_atomic.c
24+++ b/src/util/u_atomic.c
25@@ -34,6 +34,14 @@
26
27 static pthread_mutex_t sync_mutex = PTHREAD_MUTEX_INITIALIZER;
28
29+#ifdef USE_GCC_ATOMIC_BUILTINS
30+uint64_t __atomic_fetch_add_8(uint64_t *ptr, uint64_t val, int memorder);
31+uint64_t __atomic_fetch_sub_8(uint64_t *ptr, uint64_t val, int memorder);
32+#else
33+uint64_t __sync_add_and_fetch_8(uint64_t *ptr, uint64_t val);
34+uint64_t __sync_sub_and_fetch_8(uint64_t *ptr, uint64_t val);
35+#endif
36+
37 #ifndef USE_GCC_ATOMIC_BUILTINS
38 WEAK uint64_t
39 __sync_add_and_fetch_8(uint64_t *ptr, uint64_t val)
40--
412.14.1
42
diff --git a/recipes-graphics/mesa/mesa_%.bbappend b/recipes-graphics/mesa/mesa_%.bbappend
index 65ef609..b20faf3 100644
--- a/recipes-graphics/mesa/mesa_%.bbappend
+++ b/recipes-graphics/mesa/mesa_%.bbappend
@@ -1,6 +1,2 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 1LDFLAGS_append_toolchain-clang = " -latomic -lm"
2 2DEPENDS_append_toolchain-clang = " libatomic-ops"
3SRC_URI_append_toolchain-clang = "\
4 file://0001-Clang-doesn-t-have-64bit-__atomic-builtins-on-i386.patch \
5 file://0002-Add-prototypes-for-64bit-atomics-fallback.patch \
6"