Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 171 additions & 0 deletions sys-devel/DPC++/DPC++-2026.06.18.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{11..14} )
inherit cmake python-any-r1 toolchain-funcs flag-o-matic
DOCS_BUILDER="doxygen"
DOCS_DIR="build/docs"
DOCS_CONFIG_NAME="doxygen.cfg"
DOCS_DEPEND="
media-gfx/graphviz
virtual/latex-base
$(python_gen_any_dep '
dev-python/sphinx[${PYTHON_USEDEP}]
dev-python/recommonmark[${PYTHON_USEDEP}]
dev-python/myst-parser[${PYTHON_USEDEP}]
')
"
inherit docs

# We cannot unbundle this because it has to be compiled with the clang/llvm
# that we are building here. Otherwise we run into problems running the compiler.
#from sycl/llvm/lib/SYCLLowerIR/CMakeLists.txt
VC_INTR_COMMIT="4fc83e12979096db72c129bd432238d5ca397e4d"

# This one can be unbundled I think
UMF_PV="1.1.0"
NIGHTLY_VER="nightly-${PV//./-}"
PV_YEAR=$(ver_cut 1)
PV_MONTH=$(ver_cut 2)
PV_DAY=$(ver_cut 3)

# From sycl/cmake/modules/FetchEmhash.cmake
EMHASH_COMMIT="5e131ba09a5290823fe71099d9c35eb5df5345b6"

DESCRIPTION="oneAPI Data Parallel C++ compiler"
HOMEPAGE="https://github.com/intel/llvm"
SRC_URI="
https://github.com/intel/llvm/archive/refs/tags/${NIGHTLY_VER}.tar.gz -> ${P}.tar.gz
https://github.com/intel/vc-intrinsics/archive/${VC_INTR_COMMIT}.tar.gz -> ${P}-vc-intrinsics-${VC_INTR_COMMIT}.tar.gz
https://github.com/ktprime/emhash/archive/${EMHASH_COMMIT}.tar.gz -> ${P}-emhash-${EMHASH_COMMIT}.tar.gz
https://github.com/oneapi-src/unified-memory-framework/archive/refs/tags/v${UMF_PV}.tar.gz -> ${P}-unified-memory-framework-${UMF_PV}.tar.gz
"
S="${WORKDIR}/llvm-${NIGHTLY_VER}"
CMAKE_USE_DIR="${S}/llvm"
BUILD_DIR="${S}/build"

LICENSE="Apache-2.0 MIT"
SLOT="0/9" # Based on libsycl.so
KEYWORDS="" # this is a nightly build and depends on not yet released latest spriv-headers

IUSE="cuda hip test jit debug"
REQUIRED_USE="
"
RESTRICT="!test? ( test )"

BDEPEND="virtual/pkgconfig"


DEPEND="
dev-libs/boost:=
>=dev-libs/level-zero-1.29.0:=
dev-libs/intel-compute-runtime
dev-libs/opencl-icd-loader
>=dev-util/opencl-headers-2025.06.13
>dev-util/spirv-headers-1.4.350.1-r9999
dev-util/spirv-tools
media-libs/libva
dev-build/libtool
>=dev-cpp/parallel-hashmap-1.3.12
cuda? ( dev-util/nvidia-cuda-toolkit:= )
hip? ( dev-util/hip:= )
"
RDEPEND="${DEPEND}"

PATCHES=(
"${FILESDIR}/DPC++-6.3.0-buildbot-configure.patch"
)


src_configure() {
Comment thread
Emimendoza marked this conversation as resolved.
filter-lto
local buildbot_flags=(
--print-cmake-flags
-s "${S}"
-o "${BUILD_DIR}"
--no-assertions
)
use doc && buildbot_flags+=( --docs )
use cuda && buildbot_flags+=( --cuda )
use hip && buildbot_flags+=( --hip )
use jit || buildbot_flags+=( --disable-jit )

if [[ $(tc-get-cxx-stdlib) == libc++ ]]; then
buildbot_flags+=(
--use-libcxx
)
fi

local mycmakeargs=( $(python3 "${S}/buildbot/configure.py" "${buildbot_flags[@]}") )

mycmakeargs+=(
-DLLVM_APPEND_VC_REV=OFF
-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr"
-DCMAKE_DISABLE_FIND_PACKAGE_LLVMGenXIntrinsics=ON
-DFETCHCONTENT_SOURCE_DIR_VC-INTRINSICS="${WORKDIR}/vc-intrinsics-${VC_INTR_COMMIT}"
-DFETCHCONTENT_SOURCE_DIR_EMHASH="${WORKDIR}/emhash-${EMHASH_COMMIT}"
-DFETCHCONTENT_SOURCE_DIR_UNIFIED-MEMORY-FRAMEWORK="${WORKDIR}/unified-memory-framework-${UMF_PV}"
-DSYCL_COMPILER_VERSION="${PV//./}"
-DDPCPP_VERSION_MAJOR="${PV_YEAR}"
-DDPCPP_VERSION_MINOR="${PV_MONTH}"
-DDPCPP_VERSION_PATCH="${PV_DAY}"
-DUR_USE_EXTERNAL_UMF=OFF
-DCMAKE_INSTALL_PREFIX="${BUILD_DIR}/install"
-DCMAKE_INSTALL_MANDIR="${BUILD_DIR}/install/share/man"
-DCMAKE_INSTALL_INFODIR="${BUILD_DIR}/install/share/info"
-DCMAKE_INSTALL_DOCDIR="${BUILD_DIR}/install/share/doc/${PF}"
-DLLVM_USE_SPLIT_DWARF=OFF
)

if use doc; then
mycmakeargs+=( -DSPHINX_WARNINGS_AS_ERRORS=OFF )
fi

use debug || append-cppflags -DNDEBUG

cmake_src_configure
}

src_compile() {
# Need offload before unified-runtime can be compiled
# cmake_build runtimes/install
# Build sycl (this also installs some stuff already)
cmake_build deploy-sycl-toolchain

use doc && cmake_build doxygen-sycl

# Finish compiling
cmake_src_compile
}

src_test() {
cmake_build check
}

src_install() {
# Finish installing in dummy dir before installing in actual image dir
cmake_build install
einstalldocs

local LLVM_INTEL_DIR="/usr/lib/llvm/intel"
dodir "${LLVM_INTEL_DIR}"

# Copy our temporary directory to the image directory
mv "${BUILD_DIR}/install"/* "${ED}/${LLVM_INTEL_DIR}" || die

# Convienence symlinks
dosym -r "${LLVM_INTEL_DIR}/bin/clang" "/usr/bin/icx"
dosym -r "${LLVM_INTEL_DIR}/bin/clang++" "/usr/bin/icpx"
dosym -r "${LLVM_INTEL_DIR}/bin/clang++" "/usr/bin/dpc++"

# Copied from llvm ebuild, put env file last so we don't overwrite main llvm/clang
newenvd - "60llvm-intel" <<-_EOF_
PATH="${EPREFIX}${LLVM_INTEL_DIR}/bin"
# we need to duplicate it in ROOTPATH for Portage to respect...
ROOTPATH="${EPREFIX}${LLVM_INTEL_DIR}/bin"
MANPATH="${EPREFIX}${LLVM_INTEL_DIR}/share/man"
LDPATH="${EPREFIX}${LLVM_INTEL_DIR}/lib:${EPREFIX}${LLVM_INTEL_DIR}/lib64"
_EOF_
}
4 changes: 4 additions & 0 deletions sys-devel/DPC++/Manifest
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@ DIST DPC++-2022.12-cm-cpu-emulation-2022-08-22.tar.gz 328563 BLAKE2B 86dfbf9163e
DIST DPC++-2022.12-unified-runtime-fd711c920acc4434cb52ff18b078c082d9d7f44d.tar.gz 249206 BLAKE2B 52da2e773e3d617ca1fd491a71c0c9ce0d943f550278339aa9fa14c8997aff26a5cd642a414f4fb2aece198a7d912b7c9092a9d89c7f62f417f43406f73bf4a6 SHA512 356351abe965b5129d0c0ec2c459e950461192762c501b5089d12a1135fd970ff2572ac99255bb743798f890f485621fc21173124d67a9b142d36ac07c09d936
DIST DPC++-2022.12-vc-intrinsics-0.10.0.tar.gz 138920 BLAKE2B a73ccbbc56bff3cf0656eb505b5201db1889dec0c2b608c1a999bb0302a9bc9c275480a2d3aa31e04faed5c827a55aa6d36e4603f4716b5998ed4f2df4ec8850 SHA512 5c9e5eae2da9f4975f9d11249a27751c387dd2a425b40d9ff67890857557cfc503e93f0315329658443d060c48b72fd4eee776d5592f0b9e5cb485d659d55658
DIST DPC++-2022.12.tar.gz 176940515 BLAKE2B ef4ca7096ae18c2ae19c8e781dd120621f59741533d76f3f3739d8d043a11edfff036a45aed187735c5e7fe34d707f2dd85c336b4995ac64acd0f91f1558c4ca SHA512 132c016af101f5fb1f86a77ad7714883adf30803700bcf5349bc5f16618606e6697f920992bb6bd61ddaa8f6c9259eabbc1a163a05249f7731400c7b584fb222
DIST DPC++-2026.06.18-emhash-5e131ba09a5290823fe71099d9c35eb5df5345b6.tar.gz 3614337 BLAKE2B 8e3b17d17d4d8295a652137f20ba6bf08239d16cfab9921046d6bacb5ccfc4bc5ecdee9bbef69dc87e1a691e2f4bed65cf297a20629f0105757dec9e53309978 SHA512 5d558f7eda89c91cd576a67b82adf888f9119a3315583f04dd0b9dc405a9700b6ccd780d4b7db83ec9491cf6321b617a1ce35650404dccea58cd0bc7128f29b1
DIST DPC++-2026.06.18-unified-memory-framework-1.1.0.tar.gz 572576 BLAKE2B 4780460a9b849ed16c711f818d351de227c7a7bb390e1e418571fd7609287c511b4dfac8838999d9bdfae41bdeae763877b91102e2615016bebe5fa5a724f4c5 SHA512 6071ebe111c5c7c7079cfaf927479b2da17ac7669efb79f589cc12d3bab2c1acb16d4e09c2076109dcfb5bdb90327952fafbc4d3cbc5b5adb9130aa4d30a1731
DIST DPC++-2026.06.18-vc-intrinsics-4fc83e12979096db72c129bd432238d5ca397e4d.tar.gz 157032 BLAKE2B 8d060f606d197ba806908325687befe076dd32e2e515adb622ec7f80e20563b4c202f04edcf0e6063a8cdb6275c569b9bb6087ca1f684f22e8e994ba977aae24 SHA512 e87c163dc01fefd10840342ea52449869619384c57ba36f7514860448c0c5d5cec7fe5d926945f661d5889beefcc3e01693ba71033c88bcbcd4380bec22bbea0
DIST DPC++-2026.06.18.tar.gz 300344918 BLAKE2B 44b5be317329b2a77209f50facbfb9f865e21e9effe4a0020d4f8c97a9dedfa64f1dfaedd00246d72158e85451b07e4038c4179ab5307c210f8a1b6fed0ccd68 SHA512 0e706405af102ab81ce14509cfb952760c7da43b008a605cb76c281261869063c68832b4a5f5cc71fb0957488f6c7f4490873460e52b3b069e765d4d3d3c149c
31 changes: 31 additions & 0 deletions sys-devel/DPC++/files/DPC++-6.3.0-buildbot-configure.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
diff --git a/buildbot/configure.py b/buildbot/configure.py
index 4874c0a44557..35b0a15474fe 100644
--- a/buildbot/configure.py
+++ b/buildbot/configure.py
@@ -165,9 +165,6 @@ def do_configure(args, passthrough_args):

cmake_cmd = [
"cmake",
- "-G",
- args.cmake_gen,
- "-DCMAKE_BUILD_TYPE={}".format(args.build_type),
"-DLLVM_ENABLE_ASSERTIONS={}".format(llvm_enable_assertions),
"-DLLVM_TARGETS_TO_BUILD={}".format(llvm_targets_to_build),
"-DLLVM_EXTERNAL_PROJECTS={}".format(llvm_external_projects),
@@ -259,7 +256,6 @@ def do_configure(args, passthrough_args):
cmake_cmd.extend(["-DEXTRA_SECURITY_FLAGS={}".format(args.add_security_flags)])

# Add path to root CMakeLists.txt
- cmake_cmd.append(llvm_dir)

if args.use_libcxx:
cmake_cmd.extend(
@@ -271,7 +267,7 @@ def do_configure(args, passthrough_args):
cmake_cmd += passthrough_args

if args.print_cmake_flags:
- print(" ".join(map(shlex.quote, cmake_cmd[1:])))
+ print(" ".join(cmake_cmd[1:]))
else:
print("[Cmake Command]: {}".format(" ".join(map(shlex.quote, cmake_cmd))))

Loading