diff --git a/sys-devel/DPC++/DPC++-2026.06.18.ebuild b/sys-devel/DPC++/DPC++-2026.06.18.ebuild new file mode 100644 index 00000000000..598c7a1aa39 --- /dev/null +++ b/sys-devel/DPC++/DPC++-2026.06.18.ebuild @@ -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() { + 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_ +} diff --git a/sys-devel/DPC++/Manifest b/sys-devel/DPC++/Manifest index 324ee6cfc1d..63e5b1515fb 100644 --- a/sys-devel/DPC++/Manifest +++ b/sys-devel/DPC++/Manifest @@ -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 diff --git a/sys-devel/DPC++/files/DPC++-6.3.0-buildbot-configure.patch b/sys-devel/DPC++/files/DPC++-6.3.0-buildbot-configure.patch new file mode 100644 index 00000000000..9008d3b28c9 --- /dev/null +++ b/sys-devel/DPC++/files/DPC++-6.3.0-buildbot-configure.patch @@ -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)))) +