diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-12-12 02:01:24 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-12-12 02:01:24 +0000 |
commit | 39c32f4d5dca9f6293fccb69e9d50baf494c8de4 (patch) | |
tree | ec772fdf23a7279a60e9063b01c2dc909741a197 /llvm-runtimes/offload | |
parent | 494ca58c9f5243dd4b56557aa8c41bce76e95ec3 (diff) |
gentoo auto-resync : 12:12:2024 - 02:01:23
Diffstat (limited to 'llvm-runtimes/offload')
-rw-r--r-- | llvm-runtimes/offload/Manifest | 4 | ||||
-rw-r--r-- | llvm-runtimes/offload/metadata.xml | 13 | ||||
-rw-r--r-- | llvm-runtimes/offload/offload-20.0.0.9999.ebuild | 147 | ||||
-rw-r--r-- | llvm-runtimes/offload/offload-20.0.0_pre20241207.ebuild | 152 |
4 files changed, 316 insertions, 0 deletions
diff --git a/llvm-runtimes/offload/Manifest b/llvm-runtimes/offload/Manifest new file mode 100644 index 000000000000..ddaf663d0599 --- /dev/null +++ b/llvm-runtimes/offload/Manifest @@ -0,0 +1,4 @@ +DIST llvm-project-32f7f0010bca99ee4bd917f57272733fb2bf3bd9.tar.gz 223983502 BLAKE2B fd3e6b0b795abc42568ef98fa774d927029c18838a5d0f34eaa66c37976444a63f2fc5d883f3bf3a98533f51e387936f1c659230f31c757d26153425696a16cd SHA512 65a345ad5b77c627008f759947e5e9f28a62c8992d7146113e0446e5849feaf9088c15c8b22ca0824af5b927d6a417f5326258b489fb8ccea78ec9e0e0fe8fba +EBUILD offload-20.0.0.9999.ebuild 3745 BLAKE2B c83224e4b837481682439d576e42024e2caab14c068943fdb60997f8dd8c305279c2d1b1e3b1953b77f4840a1df723bde7ffba367ca45e1dc896f321610ba2b7 SHA512 78bc62063fa73cfbe02eed2f2491b597e8be1618221b794403f1299dc3e65706b356bdfbaf82d6d88a7044055a423029e85a951d5e3459ce617cf801e1f26f3d +EBUILD offload-20.0.0_pre20241207.ebuild 4098 BLAKE2B c51babc0900e4f8640140590a177ae855b6b64a62f9d18b2fe03ef0f576c596f363cd4505c843c9a0a257e2906eedba73bc2c27682bccb00dac08e0d2f641945 SHA512 33a224a18cbc45b9195b0b9729a2b57121bdb1aa297ba3a394306e1edb3794ac805c260c86bbf01662c6cd80dbafb571a578ceaaf4cf6b8b1bb7205ec423bb91 +MISC metadata.xml 379 BLAKE2B 2b4c75d4ec6e126d887b736ea978c4b34683a347252f408c9d1f5f55c6c1bead7b7f9533812806f816538d8abaa00ded4d439dbe626d3f2cf09b78a3674e41bd SHA512 d49054d4b5a1a051d83f1ef397a7925fb36ee3092668d134e6ed5c1218bf5d67a43145b689709677643da070a783ec9f8705b37f15587475829fe185634af1d4 diff --git a/llvm-runtimes/offload/metadata.xml b/llvm-runtimes/offload/metadata.xml new file mode 100644 index 000000000000..d13785bbe1b6 --- /dev/null +++ b/llvm-runtimes/offload/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>llvm@gentoo.org</email> + </maintainer> + <use> + <flag name="ompt">Enable OpenMP Tools Interface support</flag> + </use> + <upstream> + <remote-id type="github">llvm/llvm-project</remote-id> + </upstream> +</pkgmetadata> diff --git a/llvm-runtimes/offload/offload-20.0.0.9999.ebuild b/llvm-runtimes/offload/offload-20.0.0.9999.ebuild new file mode 100644 index 000000000000..66a73775d296 --- /dev/null +++ b/llvm-runtimes/offload/offload-20.0.0.9999.ebuild @@ -0,0 +1,147 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit cmake flag-o-matic llvm.org python-any-r1 toolchain-funcs + +DESCRIPTION="OpenMP offloading support" +HOMEPAGE="https://openmp.llvm.org" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="0/${LLVM_SOABI}" +IUSE="+debug ompt test llvm_targets_AMDGPU llvm_targets_NVPTX" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-libs/libffi:= + ~llvm-core/llvm-${PV} + ~llvm-runtimes/openmp-${PV}[ompt?] + llvm_targets_AMDGPU? ( dev-libs/rocr-runtime:= ) +" +DEPEND=" + ${RDEPEND} +" +# tests: +# - dev-python/lit provides the test runner +# - llvm-core/llvm provide test utils (e.g. FileCheck) +# - llvm-core/clang provides the compiler to run tests +BDEPEND=" + dev-lang/perl + virtual/pkgconfig + llvm_targets_AMDGPU? ( llvm-core/clang ) + llvm_targets_NVPTX? ( llvm-core/clang ) + test? ( + $(python_gen_any_dep ' + dev-python/lit[${PYTHON_USEDEP}] + ') + llvm-core/clang + ) +" +# TODO: can it be fixed to compile with gcc? +BDEPEND+=" + llvm-core/clang +" + +LLVM_COMPONENTS=( offload cmake runtimes/cmake libc/shared ) +LLVM_TEST_COMPONENTS=( openmp/cmake ) +llvm.org_set_globals + +pkg_pretend() { + if [[ ${LLVM_ALLOW_GPU_TESTING} ]]; then + ewarn "LLVM_ALLOW_GPU_TESTING set. This package will run tests against your" + ewarn "GPU if it is supported. Note that these tests may be flaky, fail or" + ewarn "hang, or even cause your GPU to crash (requiring a reboot)." + fi +} + +pkg_setup() { + if use test; then + python-any-r1_pkg_setup + fi +} + +src_configure() { + # TODO + local -x CC=${CHOST}-clang + local -x CXX=${CHOST}-clang++ + strip-unsupported-flags + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + local libdir="$(get_libdir)" + local ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi) + local ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi) + local plugins="host" + local gpus= + local build_devicertl=FALSE + + if has "${CHOST%%-*}" aarch64 powerpc64le x86_64; then + if use llvm_targets_AMDGPU; then + plugins+=";amdgpu" + build_devicertl=TRUE + gpus+="amdgpu" + fi + if use llvm_targets_NVPTX; then + plugins+=";cuda" + build_devicertl=TRUE + gpus+="nvptx" + fi + [[ ${gpus} == amdgpunvptx ]] && gpus=all + fi + + local mycmakeargs=( + -DOFFLOAD_LIBDIR_SUFFIX="${libdir#lib}" + -DLIBOMPTARGET_PLUGINS_TO_BUILD="${plugins}" + -DLIBOMPTARGET_OMPT_SUPPORT="$(usex ompt)" + -DLIBOMPTARGET_BUILD_DEVICERTL_BCLIB="${build_devicertl}" + + # this breaks building static target libs + -DBUILD_SHARED_LIBS=OFF + + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}" + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}" + ) + + [[ ! ${LLVM_ALLOW_GPU_TESTING} ]] && mycmakeargs+=( + # prevent trying to access the GPU + -DLIBOMPTARGET_AMDGPU_ARCH=LIBOMPTARGET_AMDGPU_ARCH-NOTFOUND + -DLIBOMPTARGET_NVPTX_ARCH=LIBOMPTARGET_NVPTX_ARCH-NOTFOUND + ) + [[ -n ${gpus} ]] && mycmakeargs+=( + -DLIBOMPTARGET_DEVICE_ARCHITECTURES="${gpus}" + ) + use test && mycmakeargs+=( + # this project does not use standard LLVM cmake macros + -DOPENMP_LLVM_LIT_EXECUTABLE="${EPREFIX}/usr/bin/lit" + -DOPENMP_LIT_ARGS="$(get_lit_flags)" + + -DOPENMP_TEST_C_COMPILER="$(type -P "${CHOST}-clang")" + -DOPENMP_TEST_CXX_COMPILER="$(type -P "${CHOST}-clang++")" + ) + + cmake_src_configure + + if [[ -z ${gpus} ]]; then + # clang requires libomptarget.devicertl.a, but it can be empty + > "${BUILD_DIR}"/libomptarget.devicertl.a || die + fi +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + + cmake_build check-offload +} + +src_install() { + cmake_src_install + + if [[ ! -f ${ED}/usr/$(get_libdir)/libomptarget.devicertl.a ]] + then + dolib.a "${BUILD_DIR}"/libomptarget.devicertl.a + fi +} diff --git a/llvm-runtimes/offload/offload-20.0.0_pre20241207.ebuild b/llvm-runtimes/offload/offload-20.0.0_pre20241207.ebuild new file mode 100644 index 000000000000..d84cc7993b0f --- /dev/null +++ b/llvm-runtimes/offload/offload-20.0.0_pre20241207.ebuild @@ -0,0 +1,152 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit cmake flag-o-matic llvm.org python-any-r1 toolchain-funcs + +DESCRIPTION="OpenMP offloading support" +HOMEPAGE="https://openmp.llvm.org" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="0/${LLVM_SOABI}" +IUSE="+debug ompt test llvm_targets_AMDGPU llvm_targets_NVPTX" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-libs/libffi:= + ~llvm-core/llvm-${PV} + ~llvm-runtimes/openmp-${PV}[ompt?] + llvm_targets_AMDGPU? ( dev-libs/rocr-runtime:= ) +" +DEPEND=" + ${RDEPEND} +" +# tests: +# - dev-python/lit provides the test runner +# - llvm-core/llvm provide test utils (e.g. FileCheck) +# - llvm-core/clang provides the compiler to run tests +BDEPEND=" + dev-lang/perl + virtual/pkgconfig + llvm_targets_AMDGPU? ( llvm-core/clang ) + llvm_targets_NVPTX? ( llvm-core/clang ) + test? ( + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/lit[${PYTHON_USEDEP}] + ') + llvm-core/clang + ) +" +# TODO: can it be fixed to compile with gcc? +BDEPEND+=" + llvm-core/clang +" + +LLVM_COMPONENTS=( offload cmake runtimes/cmake libc/shared ) +LLVM_TEST_COMPONENTS=( openmp/cmake ) +llvm.org_set_globals + +pkg_pretend() { + if [[ ${LLVM_ALLOW_GPU_TESTING} ]]; then + ewarn "LLVM_ALLOW_GPU_TESTING set. This package will run tests against your" + ewarn "GPU if it is supported. Note that these tests may be flaky, fail or" + ewarn "hang, or even cause your GPU to crash (requiring a reboot)." + fi +} + +pkg_setup() { + if use test; then + python-any-r1_pkg_setup + fi +} + +src_configure() { + # TODO + local -x CC=${CHOST}-clang + local -x CXX=${CHOST}-clang++ + strip-unsupported-flags + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + local libdir="$(get_libdir)" + local ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi) + local ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi) + local plugins="host" + local gpus= + local build_devicertl=FALSE + + if has "${CHOST%%-*}" aarch64 powerpc64le x86_64; then + if use llvm_targets_AMDGPU; then + plugins+=";amdgpu" + build_devicertl=TRUE + gpus+=";gfx700;gfx701;gfx801;gfx803;gfx900;gfx902;gfx906" + gpus+=";gfx908;gfx90a;gfx90c;gfx940;gfx941;gfx942;gfx950" + gpus+=";gfx1010;gfx1012;gfx1030;gfx1031;gfx1032;gfx1033" + gpus+=";gfx1034;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102" + gpus+=";gfx1103;gfx1150;gfx1151;gfx1152;gfx1153" + fi + if use llvm_targets_NVPTX; then + plugins+=";cuda" + build_devicertl=TRUE + gpus+=";sm_35;sm_37;sm_50;sm_52;sm_53;sm_60;sm_61;sm_62" + gpus+=";sm_70;sm_72;sm_75;sm_80;sm_86;sm_87;sm_89;sm_90" + fi + fi + + local mycmakeargs=( + -DOFFLOAD_LIBDIR_SUFFIX="${libdir#lib}" + -DLIBOMPTARGET_PLUGINS_TO_BUILD="${plugins}" + -DLIBOMPTARGET_OMPT_SUPPORT="$(usex ompt)" + -DLIBOMPTARGET_BUILD_DEVICERTL_BCLIB="${build_devicertl}" + + # this breaks building static target libs + -DBUILD_SHARED_LIBS=OFF + + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}" + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}" + ) + + [[ ! ${LLVM_ALLOW_GPU_TESTING} ]] && mycmakeargs+=( + # prevent trying to access the GPU + -DLIBOMPTARGET_AMDGPU_ARCH=LIBOMPTARGET_AMDGPU_ARCH-NOTFOUND + -DLIBOMPTARGET_NVPTX_ARCH=LIBOMPTARGET_NVPTX_ARCH-NOTFOUND + ) + [[ -n ${gpus} ]] && mycmakeargs+=( + -DLIBOMPTARGET_DEVICE_ARCHITECTURES="${gpus}" + ) + use test && mycmakeargs+=( + # this project does not use standard LLVM cmake macros + -DOPENMP_LLVM_LIT_EXECUTABLE="${EPREFIX}/usr/bin/lit" + -DOPENMP_LIT_ARGS="$(get_lit_flags)" + + -DOPENMP_TEST_C_COMPILER="$(type -P "${CHOST}-clang")" + -DOPENMP_TEST_CXX_COMPILER="$(type -P "${CHOST}-clang++")" + ) + + cmake_src_configure + + if [[ -z ${gpus} ]]; then + # clang requires libomptarget.devicertl.a, but it can be empty + > "${BUILD_DIR}"/libomptarget.devicertl.a || die + fi +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + + cmake_build check-offload +} + +src_install() { + cmake_src_install + + if [[ ! -f ${ED}/usr/$(get_libdir)/libomptarget.devicertl.a ]] + then + dolib.a "${BUILD_DIR}"/libomptarget.devicertl.a + fi +} |