1 |
commit: f6b57af58d4fed1bb3144aa11e12abc7652754cd |
2 |
Author: Marek Szuba <marecki <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Jul 11 10:06:08 2018 +0000 |
4 |
Commit: Marek Szuba <marecki <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Jul 11 10:07:37 2018 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f6b57af5 |
7 |
|
8 |
dev-libs/beignet: support LLVM-6 |
9 |
|
10 |
Uses an unofficial patch from Arch Linux. Seems to work fine. |
11 |
|
12 |
Suggested-by: Hanno Meyer-Thurow <h.mth <AT> web.de> |
13 |
Closes: https://bugs.gentoo.org/show_bug.cgi?id=658794 |
14 |
Package-Manager: Portage-2.3.40, Repoman-2.3.9 |
15 |
|
16 |
dev-libs/beignet/beignet-1.3.2-r1.ebuild | 106 +++++++++++++++++++++++ |
17 |
dev-libs/beignet/files/beignet-1.3.2_llvm6.patch | 27 ++++++ |
18 |
2 files changed, 133 insertions(+) |
19 |
|
20 |
diff --git a/dev-libs/beignet/beignet-1.3.2-r1.ebuild b/dev-libs/beignet/beignet-1.3.2-r1.ebuild |
21 |
new file mode 100644 |
22 |
index 00000000000..c562b68c13b |
23 |
--- /dev/null |
24 |
+++ b/dev-libs/beignet/beignet-1.3.2-r1.ebuild |
25 |
@@ -0,0 +1,106 @@ |
26 |
+# Copyright 1999-2018 Gentoo Foundation |
27 |
+# Distributed under the terms of the GNU General Public License v2 |
28 |
+ |
29 |
+EAPI=6 |
30 |
+ |
31 |
+PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} ) |
32 |
+CMAKE_BUILD_TYPE="Release" |
33 |
+ |
34 |
+inherit python-any-r1 cmake-multilib flag-o-matic llvm toolchain-funcs |
35 |
+ |
36 |
+DESCRIPTION="OpenCL implementation for Intel GPUs" |
37 |
+HOMEPAGE="https://01.org/beignet" |
38 |
+ |
39 |
+LICENSE="LGPL-2.1+" |
40 |
+SLOT="0" |
41 |
+IUSE="ocl-icd ocl20" |
42 |
+ |
43 |
+if [[ "${PV}" == "9999" ]]; then |
44 |
+ inherit git-r3 |
45 |
+ EGIT_REPO_URI="https://anongit.freedesktop.org/git/beignet.git" |
46 |
+ KEYWORDS="" |
47 |
+else |
48 |
+ KEYWORDS="~amd64" |
49 |
+ SRC_URI="https://01.org/sites/default/files/${P}-source.tar.gz" |
50 |
+ S=${WORKDIR}/Beignet-${PV}-Source |
51 |
+fi |
52 |
+ |
53 |
+COMMON="media-libs/mesa[${MULTILIB_USEDEP}] |
54 |
+ <sys-devel/clang-6.0.9999:=[${MULTILIB_USEDEP}] |
55 |
+ >=x11-libs/libdrm-2.4.70[video_cards_intel,${MULTILIB_USEDEP}] |
56 |
+ x11-libs/libXext[${MULTILIB_USEDEP}] |
57 |
+ x11-libs/libXfixes[${MULTILIB_USEDEP}]" |
58 |
+RDEPEND="${COMMON} |
59 |
+ app-eselect/eselect-opencl" |
60 |
+DEPEND="${COMMON} |
61 |
+ ${PYTHON_DEPS} |
62 |
+ ocl-icd? ( dev-libs/ocl-icd ) |
63 |
+ virtual/pkgconfig" |
64 |
+ |
65 |
+LLVM_MAX_SLOT=6 |
66 |
+ |
67 |
+PATCHES=( |
68 |
+ "${FILESDIR}"/no-debian-multiarch.patch |
69 |
+ "${FILESDIR}"/${PN}-1.3.2_cmake-llvm-config-multilib.patch |
70 |
+ "${FILESDIR}"/${PN}-1.3.2_llvm6.patch |
71 |
+ "${FILESDIR}"/${PN}-1.3.1-oclicd_no_upstream_icdfile.patch |
72 |
+ "${FILESDIR}"/${PN}-1.2.0_no-hardcoded-cflags.patch |
73 |
+ "${FILESDIR}"/llvm-terminfo.patch |
74 |
+) |
75 |
+ |
76 |
+DOCS=( |
77 |
+ docs/. |
78 |
+) |
79 |
+ |
80 |
+pkg_pretend() { |
81 |
+ if [[ ${MERGE_TYPE} != "binary" ]]; then |
82 |
+ if tc-is-gcc; then |
83 |
+ if [[ $(gcc-major-version) -eq 4 ]] && [[ $(gcc-minor-version) -lt 6 ]]; then |
84 |
+ eerror "Compilation with gcc older than 4.6 is not supported" |
85 |
+ die "Too old gcc found." |
86 |
+ fi |
87 |
+ fi |
88 |
+ fi |
89 |
+} |
90 |
+ |
91 |
+pkg_setup() { |
92 |
+ llvm_pkg_setup |
93 |
+ python_setup |
94 |
+} |
95 |
+ |
96 |
+src_prepare() { |
97 |
+ # See Bug #593968 |
98 |
+ append-flags -fPIC |
99 |
+ |
100 |
+ cmake-utils_src_prepare |
101 |
+ # We cannot run tests because they require permissions to access |
102 |
+ # the hardware, and building them is very time-consuming. |
103 |
+ cmake_comment_add_subdirectory utests |
104 |
+} |
105 |
+ |
106 |
+multilib_src_configure() { |
107 |
+ VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}" |
108 |
+ |
109 |
+ local mycmakeargs=( |
110 |
+ -DCMAKE_INSTALL_PREFIX="${VENDOR_DIR}" |
111 |
+ -DOCLICD_COMPAT=$(usex ocl-icd) |
112 |
+ $(usex ocl20 "" "-DENABLE_OPENCL_20=OFF") |
113 |
+ ) |
114 |
+ |
115 |
+ cmake-utils_src_configure |
116 |
+} |
117 |
+ |
118 |
+multilib_src_install() { |
119 |
+ VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}" |
120 |
+ |
121 |
+ cmake-utils_src_install |
122 |
+ |
123 |
+ insinto /etc/OpenCL/vendors/ |
124 |
+ echo "${VENDOR_DIR}/lib/${PN}/libcl.so" > "${PN}-${ABI}.icd" || die "Failed to generate ICD file" |
125 |
+ doins "${PN}-${ABI}.icd" |
126 |
+ |
127 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so.1 |
128 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so |
129 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so.1 |
130 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so |
131 |
+} |
132 |
|
133 |
diff --git a/dev-libs/beignet/files/beignet-1.3.2_llvm6.patch b/dev-libs/beignet/files/beignet-1.3.2_llvm6.patch |
134 |
new file mode 100644 |
135 |
index 00000000000..be3ccbc4432 |
136 |
--- /dev/null |
137 |
+++ b/dev-libs/beignet/files/beignet-1.3.2_llvm6.patch |
138 |
@@ -0,0 +1,27 @@ |
139 |
+--- a/backend/src/llvm/llvm_to_gen.cpp |
140 |
++++ b/backend/src/llvm/llvm_to_gen.cpp |
141 |
+@@ -322,7 +322,11 @@ namespace gbe |
142 |
+ DataLayout DL(&mod); |
143 |
+ |
144 |
+ gbeDiagnosticContext dc; |
145 |
++#if LLVM_VERSION_MAJOR >= 6 |
146 |
++ mod.getContext().setDiagnosticHandlerCallBack(&gbeDiagnosticHandler,&dc); |
147 |
++#else |
148 |
+ mod.getContext().setDiagnosticHandler(&gbeDiagnosticHandler,&dc); |
149 |
++#endif |
150 |
+ |
151 |
+ #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
152 |
+ mod.setDataLayout(DL); |
153 |
+--- a/backend/src/llvm/llvm_unroll.cpp |
154 |
++++ b/backend/src/llvm/llvm_unroll.cpp |
155 |
+@@ -205,7 +205,9 @@ namespace gbe { |
156 |
+ if (parentTripCount != 0 && currTripCount * parentTripCount > 32) { |
157 |
+ //Don't change the unrollID if doesn't force unroll. |
158 |
+ //setUnrollID(parentL, false); |
159 |
+-#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
160 |
++#if LLVM_VERSION_MAJOR >= 6 |
161 |
++ loopInfo.erase(parentL); |
162 |
++#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
163 |
+ loopInfo.markAsRemoved(parentL); |
164 |
+ #else |
165 |
+ LPM.deleteLoopFromQueue(parentL); |