commit:     3b0142eada144a18e5d1bc521b36ae274e0056d7
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 21 23:30:48 2020 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Sat Mar 21 23:30:48 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3b0142ea

dev-libs/ocl-icd: tweak for gcc-10, bug #706098

Reported-by: Anthony Parsons
Closes: https://bugs.gentoo.org/706098
Package-Manager: Portage-2.3.94, Repoman-2.3.21
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 dev-libs/ocl-icd/files/ocl-icd-2.2.12-gcc-10.patch | 39 ++++++++++++++++++++++
 dev-libs/ocl-icd/ocl-icd-2.2.12-r1.ebuild          |  2 ++
 2 files changed, 41 insertions(+)

diff --git a/dev-libs/ocl-icd/files/ocl-icd-2.2.12-gcc-10.patch 
b/dev-libs/ocl-icd/files/ocl-icd-2.2.12-gcc-10.patch
new file mode 100644
index 00000000000..64948d5b05e
--- /dev/null
+++ b/dev-libs/ocl-icd/files/ocl-icd-2.2.12-gcc-10.patch
@@ -0,0 +1,39 @@
+https://bugs.gentoo.org/706098
+
+From 4667bddd365bcc1dc66c483835971f0083b44b1d Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <sly...@gentoo.org>
+Date: Wed, 22 Jan 2020 19:38:23 +0000
+Subject: [PATCH] icd_generator.rb: fix build failure against gcc-10
+
+On gcc-10 (and gcc-9 -fno-common) build fails as:
+
+```
+libtool: link: gcc -shared  -fPIC -DPIC  .libs/libdummy_icd.o 
.libs/libdummy_icd_gen.o \
+    -ldl  -g -O2   -Wl,-soname -Wl,libdummycl.so.0 -o .libs/libdummycl.so.0.0.0
+ld: 
.libs/libdummy_icd_gen.o:/home/slyfox/dev/git/ocl-icd/libdummy_icd_gen.h:226:
+  multiple definition of `master_dispatch'; 
.libs/libdummy_icd.o:/home/slyfox/dev/git/ocl-icd/libdummy_icd_gen.h:226: first 
defined here
+```
+
+gcc-10 will change the default from -fcommon to fno-common:
+https://gcc.gnu.org/PR85678.
+
+The error also happens if CFLAGS=-fno-common passed explicitly.
+
+Reported-by: Anthony Parsons
+Bug: https://bugs.gentoo.org/706098
+Signed-off-by: Sergei Trofimovich <sly...@gentoo.org>
+---
+ icd_generator.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/icd_generator.rb
++++ b/icd_generator.rb
+@@ -207,7 +207,7 @@ def self.generate_libdummy_icd_header
+     }
+     libdummy_icd_structures += "};\n\n"
+     libdummy_icd_structures += "#pragma GCC visibility push(hidden)\n\n"
+-    libdummy_icd_structures += "struct _cl_icd_dispatch master_dispatch; \n\n"
++    libdummy_icd_structures += "extern struct _cl_icd_dispatch 
master_dispatch; \n\n"
+     $use_name_in_test.each { |k, f|
+       libdummy_icd_structures += "typeof(#{f}) INT#{f};\n"
+     }

diff --git a/dev-libs/ocl-icd/ocl-icd-2.2.12-r1.ebuild 
b/dev-libs/ocl-icd/ocl-icd-2.2.12-r1.ebuild
index aebd6ac1e7e..3142ef64c65 100644
--- a/dev-libs/ocl-icd/ocl-icd-2.2.12-r1.ebuild
+++ b/dev-libs/ocl-icd/ocl-icd-2.2.12-r1.ebuild
@@ -18,6 +18,8 @@ IUSE="+khronos-headers"
 BDEPEND="${RUBY_DEPS}"
 RDEPEND="app-eselect/eselect-opencl"
 
+PATCHES=("${FILESDIR}"/${P}-gcc-10.patch)
+
 src_prepare() {
        replace-flags -Os -O2 # bug 646122
 

Reply via email to