commit:     61d7e4919bfe1549ede7153efe859fa60ebe9294
Author:     Marek Szuba <marecki <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 19 14:35:47 2017 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Tue Dec 19 14:38:24 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=61d7e491

dev-libs/beignet: fix multilib libdir detection for LLVM-4+

By default Beignet CMake scripts look for LLVM parameters using
llvm-config regardless of target architecture. For multilib builds on
amd64 against >=sys-devel/llvm-4.0.0 this resulted in the linker being
passed the abi_x86_64 libdir in abi_x86_32 mode, causing "file in wrong
format" errors and build failures.

We now work around this issue by having Beignet's FindLLVM.cmake look
for ${CHOST}-llvm-config instead. Hopefully there will be an official
upstream fix for this at some point.

Closes: https://bugs.gentoo.org/638078
Package-Manager: Portage-2.3.13, Repoman-2.3.3

 dev-libs/beignet/beignet-1.3.2.ebuild                   |  1 +
 .../beignet-1.3.2_cmake-llvm-config-multilib.patch      | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/dev-libs/beignet/beignet-1.3.2.ebuild 
b/dev-libs/beignet/beignet-1.3.2.ebuild
index 16ff04d93f8..95092d080dc 100644
--- a/dev-libs/beignet/beignet-1.3.2.ebuild
+++ b/dev-libs/beignet/beignet-1.3.2.ebuild
@@ -40,6 +40,7 @@ DEPEND="${COMMON}
 
 PATCHES=(
        "${FILESDIR}"/no-debian-multiarch.patch
+       "${FILESDIR}"/${PN}-1.3.2_cmake-llvm-config-multilib.patch
        "${FILESDIR}"/${PN}-1.3.1-oclicd_no_upstream_icdfile.patch
        "${FILESDIR}"/${PN}-1.2.0_no-hardcoded-cflags.patch
        "${FILESDIR}"/llvm-terminfo.patch

diff --git 
a/dev-libs/beignet/files/beignet-1.3.2_cmake-llvm-config-multilib.patch 
b/dev-libs/beignet/files/beignet-1.3.2_cmake-llvm-config-multilib.patch
new file mode 100644
index 00000000000..5add6a1bbda
--- /dev/null
+++ b/dev-libs/beignet/files/beignet-1.3.2_cmake-llvm-config-multilib.patch
@@ -0,0 +1,17 @@
+--- a/CMake/FindLLVM.cmake
++++ b/CMake/FindLLVM.cmake
+@@ -8,12 +8,12 @@
+ # LLVM_FOUND       - True if llvm found.
+ if (LLVM_INSTALL_DIR)
+   find_program(LLVM_CONFIG_EXECUTABLE
+-               NAMES llvm-config-37 llvm-config-3.7 llvm-config-36 
llvm-config-3.6 llvm-config-38 llvm-config-3.8 llvm-config-39 llvm-config-3.9 
llvm-config llvm-config-35 llvm-config-3.5 llvm-config-34 llvm-config-3.4
++               NAMES $ENV{CHOST}-llvm-config
+                DOC "llvm-config executable"
+                PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH)
+ else (LLVM_INSTALL_DIR)
+   find_program(LLVM_CONFIG_EXECUTABLE
+-               NAMES llvm-config-37 llvm-config-3.7 llvm-config-36 
llvm-config-3.6 llvm-config-38 llvm-config-3.8 llvm-config-39 llvm-config-3.9 
llvm-config llvm-config-35 llvm-config-3.5 llvm-config-34 llvm-config-3.4
++               NAMES $ENV{CHOST}-llvm-config
+                DOC "llvm-config executable")
+ endif (LLVM_INSTALL_DIR)
+ 

Reply via email to