From 68e10b00a5e0b6a9b3a4b46789efa8a2f881e92b Mon Sep 17 00:00:00 2001 From: Emilio M Date: Fri, 19 Jun 2026 21:34:23 -0400 Subject: [PATCH 1/5] sys-devel/DPC++-2026.06.18 bump level-zero requirement Signed-off-by: Emilio M --- sys-devel/DPC++/DPC++-2026.06.18.ebuild | 228 +++++++++++++++++++ sys-devel/DPC++/Manifest | 4 + sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch | 13 ++ 3 files changed, 245 insertions(+) create mode 100644 sys-devel/DPC++/DPC++-2026.06.18.ebuild create mode 100644 sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch 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..137c2cb6610 --- /dev/null +++ b/sys-devel/DPC++/DPC++-2026.06.18.ebuild @@ -0,0 +1,228 @@ +# 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 +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/6" # Based on libsycl.so +KEYWORDS="~amd64" + +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430 + NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +IUSE="cuda hip test ${ALL_LLVM_TARGETS[*]}" +REQUIRED_USE=" + ?? ( cuda hip ) + cuda? ( llvm_targets_NVPTX ) + hip? ( llvm_targets_AMDGPU ) +" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" + + +DEPEND=" + dev-libs/boost:= + >=dev-libs/level-zero-1.29.0:= + 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-zstd.patch" +) + + +src_configure() { + # Extracted from buildbot/configure.py + local EXTERNAL_PROJECTS="sycl;llvm-spirv;opencl;xpti;xptifw;libdevice;sycl-jit" + local offload_targets="level_zero" + local mycmakeargs=( + -DLLVM_ENABLE_ASSERTIONS=OFF + -DLLVM_APPEND_VC_REV=OFF + -DLLVM_TARGETS_TO_BUILD="SPIRV;${LLVM_TARGETS// /;}" + -DLLVM_EXTERNAL_PROJECTS="${EXTERNAL_PROJECTS}" + -DLLVM_EXTERNAL_SYCL_SOURCE_DIR="${S}/sycl" + -DLLVM_EXTERNAL_SYCL_JIT_SOURCE_DIR="${S}/sycl-jit" + -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR="${S}/llvm-spirv" + -DLLVM_EXTERNAL_XPTI_SOURCE_DIR="${S}/xpti" + -DXPTI_SOURCE_DIR="${S}/xpti" + -DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR="${S}/xptifw" + -DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR="${S}/libdevice" + -DLLVM_ENABLE_PROJECTS="clang;${EXTERNAL_PROJECTS}" + -DLLVM_BUILD_TOOLS=ON + -DSYCL_ENABLE_EXTENSION_JIT=ON + -DSYCL_ENABLE_WERROR=OFF + -DSYCL_INCLUDE_TESTS="$(usex test)" + -DCLANG_INCLUDE_TESTS="$(usex test)" + -DLLVM_INCLUDE_TESTS="$(usex test)" + -DLLVM_SPIRV_INCLUDE_TESTS="$(usex test)" + -DUR_BUILD_TESTS="$(usex test)" + -DLLVM_ENABLE_DOXYGEN="$(usex doc)" + -DLLVM_ENABLE_SPHINX="$(usex doc)" + -DLLVM_USE_SPLIT_DWARF=OFF + -DLLVM_BUILD_DOCS="$(usex doc)" + -DSYCL_ENABLE_XPTI_TRACING=ON + -DXPTI_ENABLE_WERROR=OFF + -DSYCL_ENABLE_BACKENDS="level_zero;level_zero_v2;opencl;$(usev hip);$(usev cuda)" + -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr" + -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}" + # Needed because we're linking against static llvm + -DLIBOMP_USE_STDCPPLIB=ON + # Offload currently broken + -DUR_BUILD_ADAPTER_OFFLOAD=OFF + -DLLVM_ENABLE_RUNTIMES="openmp;compiler-rt" + # Will not build spirv64-intel libomptarget library unless the tests are forced on + -DLIBOMPTARGET_FORCE_LEVELZERO_TESTS=ON + + # The sycl part of the build system insists on installing during compiling + # Install it to some temporary directory + -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}" + -DUR_OFFLOAD_INSTALL_DIR="${BUILD_DIR}/install" + -DUR_OFFLOAD_INCLUDE_DIR="${BUILD_DIR}/install/include" + # Since its built here, it will try to use prev install's version of UMF + -DUR_USE_EXTERNAL_UMF=OFF + # we need to compile llvm as a static library because otherwise libsycl.so crashes at runtime + # because it dlopen's the intel graphics compiler dynlib which pulls in its own llvm dynlib + # If it weren't for that it also might crash because something is pulling in vulkan and mesa's + # vulkan implementation also pulls in its slotted llvm dynlib. + -DLLVM_BUILD_LLVM_DYLIB=OFF + -DBUILD_SHARED_LIBS=OFF + -DLLVM_USE_STATIC_ZSTD=OFF + ) + if [[ $(tc-get-cxx-stdlib) == libc++ ]]; then + mycmakeargs+=( + -DLLVM_ENABLE_LIBCXX=ON + ) + else + mycmakeargs+=( + -DLLVM_ENABLE_LIBCXX=OFF + ) + fi + + if use hip; then + mycmakeargs+=( + -DSYCL_BUILD_PI_HIP_PLATFORM=AMD + -DLIBCLC_GENERATE_REMANGLED_VARIANTS=ON + -DLIBCLC_TARGETS_TO_BUILD=";amdgcn--;amdgcn--amdhsa" + ) + offload_targets+=";amdgpu" + fi + + if use cuda; then + mycmakeargs+=( + -DLIBCLC_GENERATE_REMANGLED_VARIANTS=ON + -DLIBCLC_TARGETS_TO_BUILD=";nvptx64--;nvptx64--nvidiacl" + ) + offload_targets+=";cuda" + fi + + if use doc; then + mycmakeargs+=( -DSPHINX_WARNINGS_AS_ERRORS=OFF ) + fi + mycmakeargs+="-DLIBOMPTARGET_PLUGINS_TO_BUILD=${offload_targets}" + 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" + + # 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-zstd.patch b/sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch new file mode 100644 index 00000000000..563557e0a7c --- /dev/null +++ b/sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch @@ -0,0 +1,13 @@ +diff --git a/sycl/source/CMakeLists.txt b/sycl/source/CMakeLists.txt +index 24a471eacb0f..604ffc59f2eb 100644 +--- a/sycl/source/CMakeLists.txt ++++ b/sycl/source/CMakeLists.txt +@@ -143,7 +143,7 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME) + + if (LLVM_ENABLE_ZSTD) + target_compile_definitions(${LIB_OBJ_NAME} PRIVATE SYCL_RT_ZSTD_AVAILABLE) +- target_link_libraries(${LIB_NAME} PRIVATE ${zstd_STATIC_LIBRARY}) ++ target_link_libraries(${LIB_NAME} PRIVATE ${zstd_LIBRARY}) + target_include_directories(${LIB_OBJ_NAME} PRIVATE ${zstd_INCLUDE_DIR}) + endif() + From 8c77021b4115cdb379198e899b484712ced7ea13 Mon Sep 17 00:00:00 2001 From: Emimendoza Date: Wed, 24 Jun 2026 13:32:46 -0400 Subject: [PATCH 2/5] Update sys-devel/DPC++-2026.06.18.ebuild Co-authored-by: Alexander Puck Neuwirth --- sys-devel/DPC++/DPC++-2026.06.18.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys-devel/DPC++/DPC++-2026.06.18.ebuild b/sys-devel/DPC++/DPC++-2026.06.18.ebuild index 137c2cb6610..5e3c2170703 100644 --- a/sys-devel/DPC++/DPC++-2026.06.18.ebuild +++ b/sys-devel/DPC++/DPC++-2026.06.18.ebuild @@ -48,7 +48,7 @@ BUILD_DIR="${S}/build" LICENSE="Apache-2.0 MIT" SLOT="0/6" # Based on libsycl.so -KEYWORDS="~amd64" +KEYWORDS="" # this is a nightly build and depends on not yet released latest spriv-headers ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430 NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore ) From 55da36376acb67bde6e0d2d3d58eba06eff6f947 Mon Sep 17 00:00:00 2001 From: Emilio M Date: Sun, 12 Jul 2026 08:56:30 -0400 Subject: [PATCH 3/5] fix missing dependancy and using system vc-intrinsics Signed-off-by: Emilio M --- sys-devel/DPC++/DPC++-2026.06.18.ebuild | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys-devel/DPC++/DPC++-2026.06.18.ebuild b/sys-devel/DPC++/DPC++-2026.06.18.ebuild index 5e3c2170703..fbd424cebdb 100644 --- a/sys-devel/DPC++/DPC++-2026.06.18.ebuild +++ b/sys-devel/DPC++/DPC++-2026.06.18.ebuild @@ -69,6 +69,7 @@ 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 @@ -119,6 +120,7 @@ src_configure() { -DXPTI_ENABLE_WERROR=OFF -DSYCL_ENABLE_BACKENDS="level_zero;level_zero_v2;opencl;$(usev hip);$(usev cuda)" -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}" From 14679031f8b498ee49040f1e87aab408d60a668e Mon Sep 17 00:00:00 2001 From: Emimendoza Date: Fri, 17 Jul 2026 08:57:32 -0400 Subject: [PATCH 4/5] Apply suggestions from code review Co-authored-by: Alexander Puck Neuwirth --- sys-devel/DPC++/DPC++-2026.06.18.ebuild | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys-devel/DPC++/DPC++-2026.06.18.ebuild b/sys-devel/DPC++/DPC++-2026.06.18.ebuild index fbd424cebdb..11e24df0ad4 100644 --- a/sys-devel/DPC++/DPC++-2026.06.18.ebuild +++ b/sys-devel/DPC++/DPC++-2026.06.18.ebuild @@ -4,7 +4,7 @@ EAPI=8 PYTHON_COMPAT=( python3_{11..14} ) -inherit cmake python-any-r1 toolchain-funcs +inherit cmake python-any-r1 toolchain-funcs flag-o-matic DOCS_BUILDER="doxygen" DOCS_DIR="build/docs" DOCS_CONFIG_NAME="doxygen.cfg" @@ -88,6 +88,7 @@ PATCHES=( src_configure() { + filter-lto # Extracted from buildbot/configure.py local EXTERNAL_PROJECTS="sycl;llvm-spirv;opencl;xpti;xptifw;libdevice;sycl-jit" local offload_targets="level_zero" From a3d66c94edf775abf7906e3f472fee9c1056f905 Mon Sep 17 00:00:00 2001 From: Emilio M Date: Wed, 22 Jul 2026 19:02:59 -0400 Subject: [PATCH 5/5] streamline DPC++ configuration Signed-off-by: Emilio M --- sys-devel/DPC++/DPC++-2026.06.18.ebuild | 118 +++++------------- .../DPC++-6.3.0-buildbot-configure.patch | 31 +++++ sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch | 13 -- 3 files changed, 60 insertions(+), 102 deletions(-) create mode 100644 sys-devel/DPC++/files/DPC++-6.3.0-buildbot-configure.patch delete mode 100644 sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch diff --git a/sys-devel/DPC++/DPC++-2026.06.18.ebuild b/sys-devel/DPC++/DPC++-2026.06.18.ebuild index 11e24df0ad4..598c7a1aa39 100644 --- a/sys-devel/DPC++/DPC++-2026.06.18.ebuild +++ b/sys-devel/DPC++/DPC++-2026.06.18.ebuild @@ -47,19 +47,11 @@ CMAKE_USE_DIR="${S}/llvm" BUILD_DIR="${S}/build" LICENSE="Apache-2.0 MIT" -SLOT="0/6" # Based on libsycl.so +SLOT="0/9" # Based on libsycl.so KEYWORDS="" # this is a nightly build and depends on not yet released latest spriv-headers -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -IUSE="cuda hip test ${ALL_LLVM_TARGETS[*]}" +IUSE="cuda hip test jit debug" REQUIRED_USE=" - ?? ( cuda hip ) - cuda? ( llvm_targets_NVPTX ) - hip? ( llvm_targets_AMDGPU ) " RESTRICT="!test? ( test )" @@ -83,43 +75,33 @@ DEPEND=" RDEPEND="${DEPEND}" PATCHES=( - "${FILESDIR}/DPC++-6.3.0-zstd.patch" + "${FILESDIR}/DPC++-6.3.0-buildbot-configure.patch" ) src_configure() { filter-lto - # Extracted from buildbot/configure.py - local EXTERNAL_PROJECTS="sycl;llvm-spirv;opencl;xpti;xptifw;libdevice;sycl-jit" - local offload_targets="level_zero" - local mycmakeargs=( - -DLLVM_ENABLE_ASSERTIONS=OFF + 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_TARGETS_TO_BUILD="SPIRV;${LLVM_TARGETS// /;}" - -DLLVM_EXTERNAL_PROJECTS="${EXTERNAL_PROJECTS}" - -DLLVM_EXTERNAL_SYCL_SOURCE_DIR="${S}/sycl" - -DLLVM_EXTERNAL_SYCL_JIT_SOURCE_DIR="${S}/sycl-jit" - -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR="${S}/llvm-spirv" - -DLLVM_EXTERNAL_XPTI_SOURCE_DIR="${S}/xpti" - -DXPTI_SOURCE_DIR="${S}/xpti" - -DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR="${S}/xptifw" - -DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR="${S}/libdevice" - -DLLVM_ENABLE_PROJECTS="clang;${EXTERNAL_PROJECTS}" - -DLLVM_BUILD_TOOLS=ON - -DSYCL_ENABLE_EXTENSION_JIT=ON - -DSYCL_ENABLE_WERROR=OFF - -DSYCL_INCLUDE_TESTS="$(usex test)" - -DCLANG_INCLUDE_TESTS="$(usex test)" - -DLLVM_INCLUDE_TESTS="$(usex test)" - -DLLVM_SPIRV_INCLUDE_TESTS="$(usex test)" - -DUR_BUILD_TESTS="$(usex test)" - -DLLVM_ENABLE_DOXYGEN="$(usex doc)" - -DLLVM_ENABLE_SPHINX="$(usex doc)" - -DLLVM_USE_SPLIT_DWARF=OFF - -DLLVM_BUILD_DOCS="$(usex doc)" - -DSYCL_ENABLE_XPTI_TRACING=ON - -DXPTI_ENABLE_WERROR=OFF - -DSYCL_ENABLE_BACKENDS="level_zero;level_zero_v2;opencl;$(usev hip);$(usev cuda)" -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}" @@ -129,63 +111,20 @@ src_configure() { -DDPCPP_VERSION_MAJOR="${PV_YEAR}" -DDPCPP_VERSION_MINOR="${PV_MONTH}" -DDPCPP_VERSION_PATCH="${PV_DAY}" - # Needed because we're linking against static llvm - -DLIBOMP_USE_STDCPPLIB=ON - # Offload currently broken - -DUR_BUILD_ADAPTER_OFFLOAD=OFF - -DLLVM_ENABLE_RUNTIMES="openmp;compiler-rt" - # Will not build spirv64-intel libomptarget library unless the tests are forced on - -DLIBOMPTARGET_FORCE_LEVELZERO_TESTS=ON - - # The sycl part of the build system insists on installing during compiling - # Install it to some temporary directory + -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}" - -DUR_OFFLOAD_INSTALL_DIR="${BUILD_DIR}/install" - -DUR_OFFLOAD_INCLUDE_DIR="${BUILD_DIR}/install/include" - # Since its built here, it will try to use prev install's version of UMF - -DUR_USE_EXTERNAL_UMF=OFF - # we need to compile llvm as a static library because otherwise libsycl.so crashes at runtime - # because it dlopen's the intel graphics compiler dynlib which pulls in its own llvm dynlib - # If it weren't for that it also might crash because something is pulling in vulkan and mesa's - # vulkan implementation also pulls in its slotted llvm dynlib. - -DLLVM_BUILD_LLVM_DYLIB=OFF - -DBUILD_SHARED_LIBS=OFF - -DLLVM_USE_STATIC_ZSTD=OFF + -DLLVM_USE_SPLIT_DWARF=OFF ) - if [[ $(tc-get-cxx-stdlib) == libc++ ]]; then - mycmakeargs+=( - -DLLVM_ENABLE_LIBCXX=ON - ) - else - mycmakeargs+=( - -DLLVM_ENABLE_LIBCXX=OFF - ) - fi - - if use hip; then - mycmakeargs+=( - -DSYCL_BUILD_PI_HIP_PLATFORM=AMD - -DLIBCLC_GENERATE_REMANGLED_VARIANTS=ON - -DLIBCLC_TARGETS_TO_BUILD=";amdgcn--;amdgcn--amdhsa" - ) - offload_targets+=";amdgpu" - fi - - if use cuda; then - mycmakeargs+=( - -DLIBCLC_GENERATE_REMANGLED_VARIANTS=ON - -DLIBCLC_TARGETS_TO_BUILD=";nvptx64--;nvptx64--nvidiacl" - ) - offload_targets+=";cuda" - fi if use doc; then mycmakeargs+=( -DSPHINX_WARNINGS_AS_ERRORS=OFF ) fi - mycmakeargs+="-DLIBOMPTARGET_PLUGINS_TO_BUILD=${offload_targets}" + + use debug || append-cppflags -DNDEBUG + cmake_src_configure } @@ -219,6 +158,7 @@ src_install() { # 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_ 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)))) + diff --git a/sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch b/sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch deleted file mode 100644 index 563557e0a7c..00000000000 --- a/sys-devel/DPC++/files/DPC++-6.3.0-zstd.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/sycl/source/CMakeLists.txt b/sycl/source/CMakeLists.txt -index 24a471eacb0f..604ffc59f2eb 100644 ---- a/sycl/source/CMakeLists.txt -+++ b/sycl/source/CMakeLists.txt -@@ -143,7 +143,7 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME) - - if (LLVM_ENABLE_ZSTD) - target_compile_definitions(${LIB_OBJ_NAME} PRIVATE SYCL_RT_ZSTD_AVAILABLE) -- target_link_libraries(${LIB_NAME} PRIVATE ${zstd_STATIC_LIBRARY}) -+ target_link_libraries(${LIB_NAME} PRIVATE ${zstd_LIBRARY}) - target_include_directories(${LIB_OBJ_NAME} PRIVATE ${zstd_INCLUDE_DIR}) - endif() -