Skip to content

Commit

Permalink
dev-libs/beignet: do not try enabling OpenCL 2.0 support on unsupport…
Browse files Browse the repository at this point in the history
…ed ABIs

Beignet CMake scripts handle this the right way so let's work with them instead
of against them. Now if USE=ocl20 it will get enabled for abi_x86_64 and
gracefully fall back to 1.2 for the others, whereas USE=-ocl20 still explicitly
disables it for all ABIs.

With many thanks to aballier.

Gentoo-Bug: 622964

Package-Manager: Portage-2.3.6, Repoman-2.3.1
  • Loading branch information
Marek Szuba committed Jun 30, 2017
1 parent 1632a48 commit 0eafd4c
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 1 deletion.
103 changes: 103 additions & 0 deletions dev-libs/beignet/beignet-1.3.1-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

PYTHON_COMPAT=( python{2_7,3_4,3_5} )
CMAKE_BUILD_TYPE="Release"

inherit python-any-r1 cmake-multilib flag-o-matic toolchain-funcs

DESCRIPTION="OpenCL implementation for Intel GPUs"
HOMEPAGE="https://01.org/beignet"

LICENSE="LGPL-2.1+"
SLOT="0"
IUSE="ocl-icd ocl20"

if [[ "${PV}" == "9999" ]]; then
inherit git-r3
EGIT_REPO_URI="git://anongit.freedesktop.org/beignet"
KEYWORDS=""
else
KEYWORDS="~amd64"
SRC_URI="https://01.org/sites/default/files/${P}-source.tar.gz"
S=${WORKDIR}/Beignet-${PV}-Source
fi

COMMON="media-libs/mesa
sys-devel/clang:0=
>=sys-devel/llvm-3.6:0=
ocl20? ( >=sys-devel/llvm-3.9:0= )
>=x11-libs/libdrm-2.4.70[video_cards_intel]
x11-libs/libXext
x11-libs/libXfixes"
RDEPEND="${COMMON}
app-eselect/eselect-opencl"
DEPEND="${COMMON}
${PYTHON_DEPS}
ocl-icd? ( dev-libs/ocl-icd )
virtual/pkgconfig"

PATCHES=(
"${FILESDIR}"/no-debian-multiarch.patch
"${FILESDIR}"/${P}-oclicd_no_upstream_icdfile.patch
"${FILESDIR}"/${PN}-1.2.0_no-hardcoded-cflags.patch
"${FILESDIR}"/llvm-terminfo.patch
)

DOCS=(
docs/.
)

pkg_pretend() {
if [[ ${MERGE_TYPE} != "binary" ]]; then
if tc-is-gcc; then
if [[ $(gcc-major-version) -eq 4 ]] && [[ $(gcc-minor-version) -lt 6 ]]; then
eerror "Compilation with gcc older than 4.6 is not supported"
die "Too old gcc found."
fi
fi
fi
}

pkg_setup() {
python_setup
}

src_prepare() {
# See Bug #593968
append-flags -fPIC

cmake-utils_src_prepare
# We cannot run tests because they require permissions to access
# the hardware, and building them is very time-consuming.
cmake_comment_add_subdirectory utests
}

multilib_src_configure() {
VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}"

local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX="${VENDOR_DIR}"
-DOCLICD_COMPAT=$(usex ocl-icd)
$(usex ocl2 "" "-DENABLE_OPENCL_20=OFF")
)

cmake-utils_src_configure
}

multilib_src_install() {
VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}"

cmake-utils_src_install

insinto /etc/OpenCL/vendors/
echo "${VENDOR_DIR}/lib/${PN}/libcl.so" > "${PN}-${ABI}.icd" || die "Failed to generate ICD file"
doins "${PN}-${ABI}.icd"

dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so.1
dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so
dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so.1
dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so
}
2 changes: 1 addition & 1 deletion dev-libs/beignet/beignet-9999.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ multilib_src_configure() {
local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX="${VENDOR_DIR}"
-DOCLICD_COMPAT=$(usex ocl-icd)
-DENABLE_OPENCL_20=$(usex ocl20)
$(usex ocl2 "" "-DENABLE_OPENCL_20=OFF")
)

cmake-utils_src_configure
Expand Down

0 comments on commit 0eafd4c

Please sign in to comment.