diff mbox

mesa: Fix build when cross compiling with clang

Message ID 20160730045046.6664-1-raj.khem@gmail.com
State Accepted
Commit 69e9b190ff0e8b963bbaea8365917218cf3c2558
Headers show

Commit Message

Khem Raj July 30, 2016, 4:50 a.m. UTC
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 .../mesa/files/clang-compile-PR89599.patch         | 116 +++++++++++++++++++++
 .../mesa/files/disable-asm-on-non-gcc.patch        |  29 ++++++
 meta/recipes-graphics/mesa/mesa_12.0.1.bb          |   2 +
 3 files changed, 147 insertions(+)
 create mode 100644 meta/recipes-graphics/mesa/files/clang-compile-PR89599.patch
 create mode 100644 meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch
diff mbox

Patch

diff --git a/meta/recipes-graphics/mesa/files/clang-compile-PR89599.patch b/meta/recipes-graphics/mesa/files/clang-compile-PR89599.patch
new file mode 100644
index 0000000..48bd325
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/clang-compile-PR89599.patch
@@ -0,0 +1,116 @@ 
+From 5ec140c17b54c25920091501b665b9aa809cc5e8 Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Mon, 11 Jul 2016 10:44:25 -0700
+Subject: mapi: Massage code to allow clang to compile.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+According to https://llvm.org/bugs/show_bug.cgi?id=19778#c3 this code
+was violating the spec, resulting in it failing to compile.
+
+Cc: mesa-stable@lists.freedesktop.org
+Co-authored-by: Tomasz Paweł Gajc <tpgxyz@gmail.com>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89599
+Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
+
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+diff --git a/configure.ac b/configure.ac
+index 3799d8d..1ca8359 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -226,6 +226,7 @@ AX_GCC_FUNC_ATTRIBUTE([packed])
+ AX_GCC_FUNC_ATTRIBUTE([pure])
+ AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
+ AX_GCC_FUNC_ATTRIBUTE([unused])
++AX_GCC_FUNC_ATTRIBUTE([visibility])
+ AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
+ AX_GCC_FUNC_ATTRIBUTE([weak])
+ 
+diff --git a/src/mapi/entry_x86-64_tls.h b/src/mapi/entry_x86-64_tls.h
+index 38faccc..c5262a1 100644
+--- a/src/mapi/entry_x86-64_tls.h
++++ b/src/mapi/entry_x86-64_tls.h
+@@ -25,6 +25,11 @@
+  *    Chia-I Wu <olv@lunarg.com>
+  */
+ 
++#ifdef HAVE_FUNC_ATTRIBUTE_VISIBIITY
++#define HIDDEN __attribute__((visibility("hidden")))
++#else
++#define HIDDEN
++#endif
+ 
+ __asm__(".text\n"
+         ".balign 32\n"
+@@ -54,8 +59,8 @@ entry_patch_public(void)
+ {
+ }
+ 
+-static char
+-x86_64_entry_start[];
++extern char
++x86_64_entry_start[] HIDDEN;
+ 
+ mapi_func
+ entry_get_public(int slot)
+diff --git a/src/mapi/entry_x86_tls.h b/src/mapi/entry_x86_tls.h
+index 46d2ece..231b409 100644
+--- a/src/mapi/entry_x86_tls.h
++++ b/src/mapi/entry_x86_tls.h
+@@ -27,6 +27,12 @@
+ 
+ #include <string.h>
+ 
++#ifdef HAVE_FUNC_ATTRIBUTE_VISIBIITY
++#define HIDDEN __attribute__((visibility("hidden")))
++#else
++#define HIDDEN
++#endif
++
+ __asm__(".text");
+ 
+ __asm__("x86_current_tls:\n\t"
+@@ -71,8 +77,8 @@ __asm__(".text");
+ extern unsigned long
+ x86_current_tls();
+ 
+-static char x86_entry_start[];
+-static char x86_entry_end[];
++extern char x86_entry_start[] HIDDEN;
++extern char x86_entry_end[] HIDDEN;
+ 
+ void
+ entry_patch_public(void)
+diff --git a/src/mapi/entry_x86_tsd.h b/src/mapi/entry_x86_tsd.h
+index ea7bacb..03d9735 100644
+--- a/src/mapi/entry_x86_tsd.h
++++ b/src/mapi/entry_x86_tsd.h
+@@ -25,6 +25,11 @@
+  *    Chia-I Wu <olv@lunarg.com>
+  */
+ 
++#ifdef HAVE_FUNC_ATTRIBUTE_VISIBIITY
++#define HIDDEN __attribute__((visibility("hidden")))
++#else
++#define HIDDEN
++#endif
+ 
+ #define X86_ENTRY_SIZE 32
+ 
+@@ -58,8 +63,8 @@ __asm__(".balign 32\n"
+ #include <string.h>
+ #include "u_execmem.h"
+ 
+-static const char x86_entry_start[];
+-static const char x86_entry_end[];
++extern const char x86_entry_start[] HIDDEN;
++extern const char x86_entry_end[] HIDDEN;
+ 
+ void
+ entry_patch_public(void)
+-- 
+cgit v0.10.2
+
diff --git a/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch b/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch
new file mode 100644
index 0000000..d2d6755
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch
@@ -0,0 +1,29 @@ 
+Configure checks for compiler to be gcc and then it enables asm_offsets
+generation. see
+
+https://cgit.freedesktop.org/mesa/mesa/commit/?id=73c9b4b0e05fc66629ba250846948dc55c0e7a0d
+
+However, we missed the check when enabling this on cross compilation
+when architecture for both host and target is x86
+
+Fixes errors like
+./gen_matypes > matypes.h
+/bin/bash: ./gen_matypes: No such file or directory
+
+-Khem
+
+Upstream-Status: Submitted
+
+Index: mesa-12.0.1/configure.ac
+===================================================================
+--- mesa-12.0.1.orig/configure.ac
++++ mesa-12.0.1/configure.ac
+@@ -732,7 +732,7 @@ test "x$enable_asm" = xno && AC_MSG_RESU
+ if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
+     case "$host_cpu" in
+     i?86 | x86_64 | amd64)
+-        if test "x$host_cpu" != "x$target_cpu"; then
++        if test "x$host_cpu" != "x$target_cpu" -o "x$acv_mesa_CLANG" = xyes; then
+             enable_asm=no
+             AC_MSG_RESULT([no, cross compiling])
+         fi
diff --git a/meta/recipes-graphics/mesa/mesa_12.0.1.bb b/meta/recipes-graphics/mesa/mesa_12.0.1.bb
index ad872b3..80189e3 100644
--- a/meta/recipes-graphics/mesa/mesa_12.0.1.bb
+++ b/meta/recipes-graphics/mesa/mesa_12.0.1.bb
@@ -2,6 +2,8 @@  require ${BPN}.inc
 
 SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/mesa-${PV}.tar.xz \
            file://replace_glibc_check_with_linux.patch \
+           file://clang-compile-PR89599.patch \
+           file://disable-asm-on-non-gcc.patch \
 "
 
 SRC_URI[md5sum] = "972fd5ad5a63aeabf173fb9adefc6522"