Skip to content
Open
Show file tree
Hide file tree
Changes from 7 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
190 changes: 190 additions & 0 deletions sys-devel/DPC++/DPC++-7.2.0.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{11..15} )
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
KEYWORDS="~amd64"

# 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//./-}"
RELEASE_VER="v${PV}"

if [[ -z "${KEYWORDS}" ]]; then
SYCL_COMPILER_VERSION="${PV//./}"
MY_VER="${NIGHTLY_VER}"
else
# should be taken from timestamp of tag yyyymmdd
SYCL_COMPILER_VERSION="20261014"
MY_VER="${RELEASE_VER}"
fi

# 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/${MY_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-${MY_VER#v}"
CMAKE_USE_DIR="${S}/llvm"
BUILD_DIR="${S}/build"

LICENSE="Apache-2.0 MIT"
SLOT="0/9" # Based on libsycl.so

IUSE="cuda hip test jit debug +zstd cpu +default-lld"
REQUIRED_USE="
"
RESTRICT="!test? ( test )"

BDEPEND="virtual/pkgconfig"

DEPEND="
dev-libs/boost:=
>=dev-libs/level-zero-1.32.0:=
dev-libs/intel-compute-runtime
dev-libs/opencl-icd-loader
>=dev-util/opencl-headers-2025.06.13
>=dev-util/spirv-headers-1.4.357.0
dev-util/spirv-tools
media-libs/libva
dev-build/libtool
>=dev-cpp/parallel-hashmap-1.3.12
cuda? ( dev-util/nvidia-cuda-toolkit:=[profiler] )
hip? ( dev-util/hip:= )
zstd? ( app-arch/zstd )
"
RDEPEND="${DEPEND}"

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

src_configure() {
Comment thread
Emimendoza marked this conversation as resolved.
Resolved
cp "${BROOT}/usr/share/gnuconfig/config.guess" llvm/cmake/ || die
filter-lto
Comment thread
Emimendoza marked this conversation as resolved.
Resolved
local buildbot_flags=(
--print-cmake-flags
-s "${S}"
-o "${BUILD_DIR}"
--no-assertions
--llvm-external-projects lld
)
use cpu && buildbot_flags+=( --native_cpu )
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}"
-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
-DSYCL_COMPILER_VERSION="${SYCL_COMPILER_VERSION}"
)

use default-lld && mycmakeargs+=( -DCLANG_DEFAULT_LINKER=lld )
use doc && mycmakeargs+=( -DSPHINX_WARNINGS_AS_ERRORS=OFF )

if use hip; then
mycmakeargs+=(
-DUR_HIP_ROCM_DIR="$(hipconfig -R)"
-DUR_HIP_LIB_DIR="$(hipconfig -R)/$(get_libdir)"
)
fi

if use zstd; then
mycmakeargs+=(
-DLLVM_ENABLE_ZSTD=FORCE_ON
-DLLVM_USE_STATIC_ZSTD=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 docs/all

# Finish compiling
cmake_src_compile
# Despite the above, the install step still builds files
cmake_build install
}

src_test() {
cmake_build check
}

src_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++-7.2.0-emhash-5e131ba09a5290823fe71099d9c35eb5df5345b6.tar.gz 3614337 BLAKE2B 8e3b17d17d4d8295a652137f20ba6bf08239d16cfab9921046d6bacb5ccfc4bc5ecdee9bbef69dc87e1a691e2f4bed65cf297a20629f0105757dec9e53309978 SHA512 5d558f7eda89c91cd576a67b82adf888f9119a3315583f04dd0b9dc405a9700b6ccd780d4b7db83ec9491cf6321b617a1ce35650404dccea58cd0bc7128f29b1
DIST DPC++-7.2.0-unified-memory-framework-1.1.0.tar.gz 572576 BLAKE2B 4780460a9b849ed16c711f818d351de227c7a7bb390e1e418571fd7609287c511b4dfac8838999d9bdfae41bdeae763877b91102e2615016bebe5fa5a724f4c5 SHA512 6071ebe111c5c7c7079cfaf927479b2da17ac7669efb79f589cc12d3bab2c1acb16d4e09c2076109dcfb5bdb90327952fafbc4d3cbc5b5adb9130aa4d30a1731
DIST DPC++-7.2.0-vc-intrinsics-4fc83e12979096db72c129bd432238d5ca397e4d.tar.gz 157032 BLAKE2B 8d060f606d197ba806908325687befe076dd32e2e515adb622ec7f80e20563b4c202f04edcf0e6063a8cdb6275c569b9bb6087ca1f684f22e8e994ba977aae24 SHA512 e87c163dc01fefd10840342ea52449869619384c57ba36f7514860448c0c5d5cec7fe5d926945f661d5889beefcc3e01693ba71033c88bcbcd4380bec22bbea0
DIST DPC++-7.2.0.tar.gz 305230357 BLAKE2B 5fd942167ab62d313918a424a36caa63d0ff818dd3122c958c1e49f82f8ee5e3337de8cc38bc7038c68ec1df7dbf4bc59d58ff99073e2e8389b14af03af5ef76 SHA512 858b4c3d5d4a70ee68d9d80d2d87136fe91136292f19c0c4d14541a28c191c4fe9c75cb3ca78ef47697fd5090f65d215a9c9fc0d3602797a8ed35cb2062b883e
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))))

3 changes: 3 additions & 0 deletions sys-devel/DPC++/metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
<use>
<flag name="cuda">use the cuda backend</flag>
<flag name="esimd_emulator">enable ESIMD CPU emulation</flag>
<flag name="cpu">use the cpu backend</flag>
<flag name="hip">use the HIP backend</flag>
<flag name="jit">enable kernel JIT compiler for HIP and CUDA</flag>
<flag name="default-lld">use lld as the default linker for dpc++</flag>
</use>
</pkgmetadata>