diff options
53 files changed, 2935 insertions, 143 deletions
diff --git a/dev-debug/lldb/lldb-14.0.6.ebuild b/dev-debug/lldb/lldb-14.0.6.ebuild new file mode 100644 index 0000000..104e55e --- /dev/null +++ b/dev-debug/lldb/lldb-14.0.6.ebuild @@ -0,0 +1,115 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake llvm llvm.org python-single-r1 + +DESCRIPTION="The LLVM debugger" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0" +KEYWORDS="amd64 arm arm64 x86" +IUSE="debug +libedit lzma ncurses +python test +xml" +RESTRICT="test" +REQUIRED_USE=${PYTHON_REQUIRED_USE} + +DEPEND=" + libedit? ( dev-libs/libedit:0= ) + lzma? ( app-arch/xz-utils:= ) + ncurses? ( >=sys-libs/ncurses-5.9-r3:0= ) + xml? ( dev-libs/libxml2:= ) + ~sys-devel/clang-${PV} + ~sys-devel/llvm-${PV} +" +RDEPEND=" + ${DEPEND} + python? ( + $(python_gen_cond_dep ' + dev-python/six[${PYTHON_USEDEP}] + ') + ${PYTHON_DEPS} + ) +" +BDEPEND=" + ${PYTHON_DEPS} + >=dev-util/cmake-3.16 + python? ( + >=dev-lang/swig-3.0.11 + $(python_gen_cond_dep ' + dev-python/six[${PYTHON_USEDEP}] + ') + ) + test? ( + $(python_gen_cond_dep " + ~dev-python/lit-${PV}[\${PYTHON_USEDEP}] + dev-python/psutil[\${PYTHON_USEDEP}] + ") + sys-devel/lld + ) +" + +LLVM_COMPONENTS=( lldb ) +LLVM_TEST_COMPONENTS=( llvm/lib/Testing/Support llvm/utils/unittest ) +llvm.org_set_globals + +pkg_setup() { + LLVM_MAX_SLOT=${PV%%.*} llvm_pkg_setup + python-single-r1_pkg_setup +} + +src_configure() { + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + local mycmakeargs=( + -DLLDB_ENABLE_CURSES=$(usex ncurses) + -DLLDB_ENABLE_LIBEDIT=$(usex libedit) + -DLLDB_ENABLE_PYTHON=$(usex python) + -DLLDB_ENABLE_LZMA=$(usex lzma) + -DLLDB_ENABLE_LIBXML2=$(usex xml) + -DLLDB_USE_SYSTEM_SIX=1 + -DLLVM_ENABLE_TERMINFO=$(usex ncurses) + + -DLLDB_INCLUDE_TESTS=$(usex test) + + -DCLANG_LINK_CLANG_DYLIB=ON + # TODO: fix upstream to detect this properly + -DHAVE_LIBDL=ON + -DHAVE_LIBPTHREAD=ON + + # normally we'd have to set LLVM_ENABLE_TERMINFO, HAVE_TERMINFO + # and TERMINFO_LIBS... so just force FindCurses.cmake to use + # ncurses with complete library set (including autodetection + # of -ltinfo) + -DCURSES_NEED_NCURSES=ON + + -DLLDB_EXTERNAL_CLANG_RESOURCE_DIR="${BROOT}/usr/lib/clang/${PV%_*}" + + -DPython3_EXECUTABLE="${PYTHON}" + ) + use test && mycmakeargs+=( + -DLLVM_BUILD_TESTS=$(usex test) + -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + cmake_src_configure +} + +src_test() { + local -x LIT_PRESERVES_TMP=1 + cmake_build check-lldb-{shell,unit} + # failures + hangs + #use python && cmake_build check-lldb-api +} + +src_install() { + cmake_src_install + find "${D}" -name '*.a' -delete || die + + use python && python_optimize +} diff --git a/dev-libs/libclc/Manifest b/dev-libs/libclc/Manifest new file mode 100644 index 0000000..eba385a --- /dev/null +++ b/dev-libs/libclc/Manifest @@ -0,0 +1,3 @@ +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD libclc-14.0.6.ebuild 1390 BLAKE2B b355a93d63ee4beb5f3782cda8514aa02f16e71563f66bac6fc7a5e3beae40efa1bdbe098f3d83ce775d0458118f19fceb7225f2b5511823c8e56cabdae4f2d8 SHA512 488e5c278fe4b48ec8ce6ccd76d489cf08251ce6e8f8bd417048a80a10e4a5cf72f20462aa8115f72afe1a40dbee02d936680d516dd1c940fd52fe6f55402e69 diff --git a/dev-libs/libclc/libclc-14.0.6.ebuild b/dev-libs/libclc/libclc-14.0.6.ebuild new file mode 100644 index 0000000..5464d12 --- /dev/null +++ b/dev-libs/libclc/libclc-14.0.6.ebuild @@ -0,0 +1,66 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake llvm llvm.org python-any-r1 + +DESCRIPTION="OpenCL C library" +HOMEPAGE="https://libclc.llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( MIT BSD )" +SLOT="0" +KEYWORDS="amd64 x86" +IUSE_VIDEO_CARDS="video_cards_nvidia video_cards_r600 video_cards_radeonsi" +IUSE="${IUSE_VIDEO_CARDS}" +REQUIRED_USE="|| ( ${IUSE_VIDEO_CARDS} )" + +LLVM_MAX_SLOT=14 +BDEPEND=" + ${PYTHON_DEPS} + || ( + sys-devel/clang:14 + sys-devel/clang:13 + ) +" + +LLVM_COMPONENTS=( libclc ) +llvm.org_set_globals + +llvm_check_deps() { + has_version -b "sys-devel/clang:${LLVM_SLOT}" +} + +pkg_setup() { + # we do not need llvm_pkg_setup + python-any-r1_pkg_setup +} + +src_configure() { + local libclc_targets=() + + use video_cards_nvidia && libclc_targets+=( + "nvptx--" + "nvptx64--" + "nvptx--nvidiacl" + "nvptx64--nvidiacl" + ) + use video_cards_r600 && libclc_targets+=( + "r600--" + ) + use video_cards_radeonsi && libclc_targets+=( + "amdgcn--" + "amdgcn-mesa-mesa3d" + "amdgcn--amdhsa" + ) + # TODO: spirv + [[ ${#libclc_targets[@]} ]] || die "libclc target missing!" + + libclc_targets=${libclc_targets[*]} + local mycmakeargs=( + -DLIBCLC_TARGETS_TO_BUILD="${libclc_targets// /;}" + -DLLVM_CONFIG="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + ) + cmake_src_configure +} diff --git a/dev-ml/llvm-ocaml/llvm-ocaml-14.0.6.ebuild b/dev-ml/llvm-ocaml/llvm-ocaml-14.0.6.ebuild new file mode 100644 index 0000000..18b9d19 --- /dev/null +++ b/dev-ml/llvm-ocaml/llvm-ocaml-14.0.6.ebuild @@ -0,0 +1,115 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake llvm llvm.org python-any-r1 + +DESCRIPTION="OCaml bindings for LLVM" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0/${PV}" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="debug test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=dev-lang/ocaml-4.00.0:0= + dev-ml/ocaml-ctypes:= + ~sys-devel/llvm-${PV}:=[debug?] + !sys-devel/llvm[ocaml(-)] +" + +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + ${PYTHON_DEPS} + dev-lang/perl + dev-ml/findlib + >=dev-util/cmake-3.16 +" + +LLVM_COMPONENTS=( llvm cmake third-party ) +LLVM_USE_TARGETS=llvm +llvm.org_set_globals + +pkg_setup() { + LLVM_MAX_SLOT=${PV%%.*} llvm_pkg_setup + python-any-r1_pkg_setup +} + +src_configure() { + local libdir=$(get_libdir) + local mycmakeargs=( + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + + -DBUILD_SHARED_LIBS=OFF + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_OCAML_OUT_OF_TREE=ON + + # cheap hack: LLVM combines both anyway, and the only difference + # is that the former list is explicitly verified at cmake time + -DLLVM_TARGETS_TO_BUILD="" + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_BUILD_TESTS=$(usex test) + + # disable various irrelevant deps and settings + -DLLVM_ENABLE_FFI=OFF + -DLLVM_ENABLE_TERMINFO=OFF + -DHAVE_HISTEDIT_H=NO + -DLLVM_ENABLE_ASSERTIONS=$(usex debug) + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + + -DLLVM_HOST_TRIPLE="${CHOST}" + + -DPython3_EXECUTABLE="${PYTHON}" + + # disable go bindings + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND + + # TODO: ocamldoc + ) + + use test && mycmakeargs+=( + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + # also: custom rules for OCaml do not work for CPPFLAGS + use debug || local -x CFLAGS="${CFLAGS} -DNDEBUG" + cmake_src_configure + + local llvm_libdir=$(llvm-config --libdir) + # an ugly hack; TODO: figure out a way to pass -L to ocaml... + cd "${BUILD_DIR}/${libdir}" || die + ln -s "${llvm_libdir}"/*.so . || die + + if use test; then + local llvm_bindir=$(llvm-config --bindir) + # Force using system-installed tools. + sed -i -e "/llvm_tools_dir/s@\".*\"@\"${llvm_bindir}\"@" \ + "${BUILD_DIR}"/test/lit.site.cfg.py || die + fi +} + +src_compile() { + cmake_build ocaml_all +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake_build check-llvm-bindings-ocaml +} + +src_install() { + DESTDIR="${D}" \ + cmake -P "${BUILD_DIR}"/bindings/ocaml/cmake_install.cmake || die + + dodoc bindings/ocaml/README.txt +} diff --git a/dev-python/clang-python/clang-python-14.0.6.ebuild b/dev-python/clang-python/clang-python-14.0.6.ebuild new file mode 100644 index 0000000..2d5270c --- /dev/null +++ b/dev-python/clang-python/clang-python-14.0.6.ebuild @@ -0,0 +1,47 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit llvm.org python-r1 + +DESCRIPTION="Python bindings for sys-devel/clang" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0" +KEYWORDS="amd64 ~arm arm64 ~x86" +IUSE="test" +RESTRICT="!test? ( test )" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +# The module is opening libclang.so directly, and doing some blasphemy +# on top of it. +DEPEND=" + >=sys-devel/clang-${PV}:* + !sys-devel/llvm:0[clang(-),python(-)] + !sys-devel/clang:0[python(-)] +" +RDEPEND=" + ${DEPEND} + ${PYTHON_DEPS} +" +BDEPEND=" + ${PYTHON_DEPS} +" + +LLVM_COMPONENTS=( clang/bindings/python ) +llvm.org_set_globals + +python_test() { + "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}" +} + +src_test() { + python_foreach_impl python_test +} + +src_install() { + python_foreach_impl python_domodule clang +} diff --git a/dev-python/graph-tool/Manifest b/dev-python/graph-tool/Manifest new file mode 100644 index 0000000..5140f24 --- /dev/null +++ b/dev-python/graph-tool/Manifest @@ -0,0 +1,3 @@ +DIST graph-tool-2.71.tar.xz 14997876 BLAKE2B c23b4729065ebba43ba3501bca63980a40354e2ff6727ea3b663c60521cdf571ab794eb83f9cfb56909d92e3be90ac5d94c7dcd7f6639cb2c2fb9ee5c675697f SHA512 caedba222e499b81d93d51097c526a8a64dd1f3b91141012c67ffe40532f6168294e430887484522f75709828d280f95cc75bc400a886e71bf73d64efd9b7833 +EBUILD graph-tool-2.71.ebuild 1778 BLAKE2B 7249b7e5d6ffbccf5967287ccf3e5ccd24b6e90300485ca623e99bb91e01c8f5316901c01d7b90b0d5468d41331dd73b2503c1339362fe19185eb31bf9cf2ee8 SHA512 75f70b1688eac59bbfadc826c70808bcb9325b23d8c7eae16b6cddffbc66ee372b48e3b96ac41d6d093fd76f0503b7774f2457e4b65a133a393c05ad99ffa9e0 +MISC metadata.xml 318 BLAKE2B f5a87067223b56a1c2f2a89278b2b7b8ab612a1575264999e40a3bb34853cf603a7a11546c7ff9aa4f253beeb09c2fd26abc8fda1c6f2de5bda35069e9f932bc SHA512 b3bf8fc36dd5ae8e8b773cf9a0670fa1c6a2ee3730c9f2980abf5823f52879c5ef87a357c25d025896bd75ced32ffcec82ecdb1f080babc4fe13d2a2b70624b1 diff --git a/dev-python/graph-tool/graph-tool-2.71.ebuild b/dev-python/graph-tool/graph-tool-2.71.ebuild new file mode 100644 index 0000000..933f090 --- /dev/null +++ b/dev-python/graph-tool/graph-tool-2.71.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit check-reqs python-r1 toolchain-funcs + +if [[ ${PV} == *9999 ]]; then + EGIT_REPO_URI="https://git.skewed.de/count0/graph-tool.git" + inherit autotools git-r3 +else + SRC_URI="https://downloads.skewed.de/${PN}/${P}.tar.xz" + KEYWORDS="~amd64" +fi + +DESCRIPTION="An efficient python module for manipulation and statistical analysis of graphs" +HOMEPAGE="https://graph-tool.skewed.de/" + +LICENSE="GPL-3" +SLOT="0" +IUSE="+cairo openmp" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +RDEPEND=" + ${PYTHON_DEPS} + dev-libs/boost:=[context,python,${PYTHON_USEDEP}] + dev-libs/expat + dev-python/numpy[${PYTHON_USEDEP}] + dev-python/scipy[${PYTHON_USEDEP}] + sci-mathematics/cgal:= + dev-python/matplotlib[${PYTHON_USEDEP}] + cairo? ( + dev-cpp/cairomm:0 + dev-python/pycairo[${PYTHON_USEDEP}] + x11-libs/cairo[X] + )" +DEPEND="${RDEPEND} + dev-cpp/sparsehash" +BDEPEND="virtual/pkgconfig" + +# bug 453544 +CHECKREQS_DISK_BUILD="6G" + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + check-reqs_pkg_pretend +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +src_prepare() { + default + [[ ${PV} == *9999 ]] && eautoreconf + python_copy_sources +} + +src_configure() { + my_configure() { + econf \ + --disable-static \ + $(use_enable openmp) \ + $(use_enable cairo) \ + --with-boost-python="boost_${EPYTHON/./}" + } + python_foreach_impl run_in_build_dir my_configure +} + +src_compile() { + python_foreach_impl run_in_build_dir emake +} + +src_install() { + my_python_install() { + default + python_optimize + } + python_foreach_impl run_in_build_dir my_python_install + + find "${ED}" -name '*.la' -delete || die +} diff --git a/dev-python/graph-tool/metadata.xml b/dev-python/graph-tool/metadata.xml new file mode 100644 index 0000000..991e9cc --- /dev/null +++ b/dev-python/graph-tool/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>gerion.entrup@flump.de</email> + <name>Gerion Entrup</name> + </maintainer> + <upstream> + <remote-id type="pypi">graph-tool</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-python/lit/lit-14.0.6.ebuild b/dev-python/lit/lit-14.0.6.ebuild new file mode 100644 index 0000000..61c5fe9 --- /dev/null +++ b/dev-python/lit/lit-14.0.6.ebuild @@ -0,0 +1,42 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{9..10} ) + +inherit distutils-r1 llvm.org + +DESCRIPTION="A stand-alone install of the LLVM suite testing tool" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv sparc x86" +IUSE="test" +RESTRICT="!test? ( test )" + +# Tests require 'FileCheck' and 'not' utilities (from llvm) +BDEPEND=" + test? ( + dev-python/psutil[${PYTHON_USEDEP}] + sys-devel/llvm + ) +" + +LLVM_COMPONENTS=( llvm/utils/lit ) +llvm.org_set_globals + +# TODO: move the manpage generation here (from sys-devel/llvm) + +src_prepare() { + cd "${WORKDIR}" || die + distutils-r1_src_prepare +} + +python_test() { + local -x LIT_PRESERVES_TMP=1 + local litflags=$(get_lit_flags) + ./lit.py ${litflags//;/ } tests || die +} diff --git a/dev-python/ptpython/Manifest b/dev-python/ptpython/Manifest index 5a5e6a0..50b4e14 100644 --- a/dev-python/ptpython/Manifest +++ b/dev-python/ptpython/Manifest @@ -1,3 +1,3 @@ -DIST ptpython-3.0.23.tar.gz 68146 BLAKE2B 7bdfac0ea989f87bcae62d879f277e8d9d661ba85c397691425ac9c9c8ffe9d48e2cccbe9306f2567025d7e4d62a7478cf09f18ebed5e3b2c5a0918c27a2c540 SHA512 e3f7db8060a2b2e5ec9f9cdf7a6aacede447a42ea3d13f08e2cba604dc96ccf6504cd31b45327b144882bb12f0cc272406d501a8de98adc9598ec79dbcaf843e -EBUILD ptpython-3.0.23.ebuild 659 BLAKE2B 6ea14a2290ec3d92ab1d4e4cb1372020a211834934aae2bdfeb6880be617828277a71e05d1e6b83241491c355ed472b621b3e8fe888945c0c2587446319b12a1 SHA512 5efbb5b8c0d661b86fe142375ff9ef534659df1ff336fc48602e664c109d2a3870daab3ea5ed18049c14a273ab718b095a182a3e13d273f7ef2687e191a5efc1 +DIST ptpython-3.0.27.tar.gz 72022 BLAKE2B ec886a3026145d9c990f2940f484cc1c2e6a41581d18276e6d8b8c5589c01fe2a9e63caf8603f30d9dbc2da1bc891fb92d551188cb3f612ab8080392bb27c8bb SHA512 a064fc795ccb005b1aef3840db62ee93c4b92eb1ec981ca7b78af2fedea7da1ed6385ad41b4bc0d1967bc15be73b546a7980605890b753fd3b0c98fefb9955ef +EBUILD ptpython-3.0.27.ebuild 659 BLAKE2B 6ea14a2290ec3d92ab1d4e4cb1372020a211834934aae2bdfeb6880be617828277a71e05d1e6b83241491c355ed472b621b3e8fe888945c0c2587446319b12a1 SHA512 5efbb5b8c0d661b86fe142375ff9ef534659df1ff336fc48602e664c109d2a3870daab3ea5ed18049c14a273ab718b095a182a3e13d273f7ef2687e191a5efc1 MISC metadata.xml 386 BLAKE2B 3c952950b95b3f4b38f23f0ac0c25242cb6b0ce9f115a475a956098c246a59858ade285cb2e4df63019e3e0a9f730ad7911e183d5a9b35697006b18607e62b64 SHA512 99b03e22dd04923f3d25f8e50230bf93055f51096ca5c2c6a2613ea3ce219e0192720e29b9fe43de79768b9ec4e2818a730790f4f62cf468e272b3604ea21a26 diff --git a/dev-python/ptpython/ptpython-3.0.23.ebuild b/dev-python/ptpython/ptpython-3.0.27.ebuild index 127536c..127536c 100644 --- a/dev-python/ptpython/ptpython-3.0.23.ebuild +++ b/dev-python/ptpython/ptpython-3.0.27.ebuild diff --git a/gui-apps/organicmaps/Manifest b/gui-apps/organicmaps/Manifest deleted file mode 100644 index 7eb2d40..0000000 --- a/gui-apps/organicmaps/Manifest +++ /dev/null @@ -1,3 +0,0 @@ -AUX more-3party.patch 1385 BLAKE2B 87b5f151b3923f6324192741e243d095898d024c320add5318015b2e7058f9614ec278386250d98f41febd153f8ff9a1a9cd0e868ad94ca7c0bb449e90462378 SHA512 6e2778874fb6b58f76f99cfbb925881c569c0b25c3b9f7f9d5e7017a476eb4e28b251a36d57c9849b4ccd8c5e63023aa9552dabfc29423a385d1051a65dc8150 -AUX no-dynamic-download.patch 772 BLAKE2B 8b29d12cd648625540e379c7aab2d081b12860822ffb37af362355ad7dece4b0e886eaa6a769ebef3a988f2a2c7b3cdf804f9ec61f70615f4802a1bef0b1e72b SHA512 c4dc8a82e78ba314ae9a1972e72ac1a176c3368307044ab6d975b6f10a8b96f0c385b5c596379608ed92927be20307453729136eec8141efecf3c2bc369867e6 -EBUILD organicmaps-9999.ebuild 2005 BLAKE2B 8c23c2e686b81ce8583939b338a7a2c8a616a3673f9d306db9ffe1e83eda085767f46d9e09bcf0878ad3755bc11d279c11fec80772c115a699880935b02a8c38 SHA512 d5d0827260f03098102fced7e8282d6202973865cc7e2edc97fc10acbd833ba5c2106cc39ca822c4ca108cacc9b627e3d49980e4fcda811cea21ee7ac60d9e24 diff --git a/gui-apps/organicmaps/files/more-3party.patch b/gui-apps/organicmaps/files/more-3party.patch deleted file mode 100644 index b1293e8..0000000 --- a/gui-apps/organicmaps/files/more-3party.patch +++ /dev/null @@ -1,47 +0,0 @@ -From b77c26e242945fe06be94059b87c3c2eebdb78eb Mon Sep 17 00:00:00 2001 -From: Gerion Entrup <gerion.entrup@flump.de> -Date: Fri, 8 Dec 2023 23:45:56 +0100 -Subject: [PATCH] cmake: use some internal libraries without external - alternative - ---- - 3party/CMakeLists.txt | 6 +++--- - base/CMakeLists.txt | 4 +--- - 2 files changed, 4 insertions(+), 6 deletions(-) - -diff --git a/3party/CMakeLists.txt b/3party/CMakeLists.txt -index bd44e1b7b8..4f5cb99807 100644 ---- a/3party/CMakeLists.txt -+++ b/3party/CMakeLists.txt -@@ -34,11 +34,11 @@ else() - - # Add pugixml library. - add_subdirectory(pugixml) -- -- # Add protobuf library. -- add_subdirectory(protobuf) - endif() - -+# Add protobuf library. -+add_subdirectory(protobuf) -+ - add_subdirectory(agg) - add_subdirectory(bsdiff-courgette) - -diff --git a/base/CMakeLists.txt b/base/CMakeLists.txt -index 7e762b242a..0d7d6c5d10 100644 ---- a/base/CMakeLists.txt -+++ b/base/CMakeLists.txt -@@ -111,8 +111,6 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) - find_package(Threads REQUIRED) - target_link_libraries(${PROJECT_NAME} INTERFACE Threads::Threads) - --if (NOT WITH_SYSTEM_PROVIDED_3PARTY) -- target_include_directories(${PROJECT_NAME} PRIVATE "${OMIM_ROOT}/3party/fast_double_parser/include") --endif() -+target_include_directories(${PROJECT_NAME} PRIVATE "${OMIM_ROOT}/3party/fast_double_parser/include") - - omim_add_test_subdirectory(base_tests) --- -2.41.0 - diff --git a/gui-apps/organicmaps/files/no-dynamic-download.patch b/gui-apps/organicmaps/files/no-dynamic-download.patch deleted file mode 100644 index eb7d021..0000000 --- a/gui-apps/organicmaps/files/no-dynamic-download.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/transit/world_feed/world_feed_integration_tests/CMakeLists.txt b/transit/world_feed/world_feed_integration_tests/CMakeLists.txt -index 9f945568d4..ec9755ab09 100644 ---- a/transit/world_feed/world_feed_integration_tests/CMakeLists.txt -+++ b/transit/world_feed/world_feed_integration_tests/CMakeLists.txt -@@ -10,7 +10,9 @@ target_link_libraries(${PROJECT_NAME} - ) - - # This test requires additional data from the other repository --set(TEST_DATA_REPO_URL "https://github.com/organicmaps/world_feed_integration_tests_data.git") -+if(NOT TEST_DATA_REPO_URL) -+ set(TEST_DATA_REPO_URL "https://github.com/organicmaps/world_feed_integration_tests_data.git") -+endif() - set(DESTINATION_FOLDER "${OMIM_DATA_DIR}/world_feed_integration_tests_data/") - - add_custom_command( diff --git a/gui-apps/organicmaps/organicmaps-9999.ebuild b/gui-apps/organicmaps/organicmaps-9999.ebuild deleted file mode 100644 index fcfd194..0000000 --- a/gui-apps/organicmaps/organicmaps-9999.ebuild +++ /dev/null @@ -1,74 +0,0 @@ -EAPI=8 - -inherit git-r3 xdg cmake -EGIT_REPO_URI="https://github.com/${PN}/${PN}.git" -# this URL is to make the tests compile since organicmaps usually dynamically clones the repo -# maybe a better way would be to skip the test -EGIT_WORLD_FEED_REPO_URI="https://github.com/${PN}/world_feed_integration_tests_data.git" -# organicmaps gets more and more system libraries, we use as many -# as currently possible, use submodules for the rest -EGIT_SUBMODULES=( - 3party/harfbuzz/harfbuzz - 3party/fast_double_parser - 3party/just_gtfs - 3party/protobuf/protobuf # wait for https://github.com/organicmaps/organicmaps/pull/6310 - 3party/fast_obj -) - -DESCRIPTION="Offline maps and navigation using OpenStreetMap data" -HOMEPAGE="https://organicmaps.app" - -LICENSE="Apache-2.0" -SLOT="0" - -# depend on sys-libs/zlib[minizip] when it is not pulled in as subproject anymore -RDEPEND=" - dev-cpp/gflags - dev-cpp/gtest - dev-db/sqlite - dev-lang/python - dev-libs/boost - dev-libs/icu - dev-libs/jansson - dev-libs/pugixml - dev-libs/utfcpp - dev-qt/qtpositioning:6 - dev-qt/qtsvg:6 - dev-util/vulkan-headers - media-libs/freetype - sys-libs/zlib -" -DEPEND="${RDEPEND}" - -PATCHES=( "${FILESDIR}"/more-3party.patch "${FILESDIR}"/no-dynamic-download.patch ) - -WORLD_FEED_TESTS_S="${WORKDIR}/world_feed_integration_tests_data-${PV}" - -src_unpack () { - git-r3_fetch - git-r3_checkout - git-r3_fetch "${EGIT_WORLD_FEED_REPO_URI}" - git-r3_checkout "${EGIT_WORLD_FEED_REPO_URI}" "${WORLD_FEED_TESTS_S}" -} - -src_configure() { - # organicmaps wants a ./configure.sh execution. - # However, this setups mainly stuff for Android and XCode builds that we don't need. - # We need just this line here - cp private_default.h private.h || die - - CMAKE_BUILD_TYPE="RelWithDebInfo" - local mycmakeargs=( - -DWITH_SYSTEM_PROVIDED_3PARTY=yes - -DBUILD_SHARED_LIBS=off - -DTEST_DATA_REPO_URL="${WORLD_FEED_TESTS_S}" - ) - cmake_src_configure -} - -pkg_postinst() { - xdg_icon_cache_update - - einfo "For dark mode type in search ?dark" - einfo "For light mode type in search ?light" -} @@ -1,5 +1,5 @@ dev-python/cython -dev-util/meson +dev-build/meson dev-libs/boost dev-python/graph-tool dev-python/pydot diff --git a/sets/vim-dev b/sets/vim-dev index 1594fc0..6cba848 100644 --- a/sets/vim-dev +++ b/sets/vim-dev @@ -3,7 +3,7 @@ dev-lua/StyLua dev-python/debugpy dev-python/python-lsp-server dev-tex/texlab -dev-util/lldb +dev-debug/lldb app-text/ltex-ls dev-util/lua-language-server # not possible to express || dev-lang/rust[rust-analyzer] dev-lang/rust-bin[rust-analyzer] diff --git a/sys-devel/clang-common/Manifest b/sys-devel/clang-common/Manifest new file mode 100644 index 0000000..1d1680b --- /dev/null +++ b/sys-devel/clang-common/Manifest @@ -0,0 +1,3 @@ +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD clang-common-14.0.6.ebuild 541 BLAKE2B 87b158e874cf600e23591a8095e0edb4d30d4482600ef8fe38984e9ba9559e6e2226107cd482f355d950392a6a452e1a8ae79d297d5afc3951a7f1c8f6227b5f SHA512 1bd0481468c278f131ec9f87243927b60a59752f4229450559bf8016e9599155a52593810fcdc1cf0aecd4aa1529e8df300d95123a53de18eb326152caafbbef diff --git a/sys-devel/clang-common/clang-common-14.0.6.ebuild b/sys-devel/clang-common/clang-common-14.0.6.ebuild new file mode 100644 index 0000000..38e08a5 --- /dev/null +++ b/sys-devel/clang-common/clang-common-14.0.6.ebuild @@ -0,0 +1,24 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit bash-completion-r1 llvm.org + +DESCRIPTION="Common files shared between multiple slots of clang" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv sparc x86 ~amd64-linux ~ppc-macos ~x64-macos" + +PDEPEND=" + sys-devel/clang:* +" + +LLVM_COMPONENTS=( clang/utils ) +llvm.org_set_globals + +src_install() { + newbashcomp bash-autocomplete.sh clang +} diff --git a/sys-devel/clang-runtime/Manifest b/sys-devel/clang-runtime/Manifest new file mode 100644 index 0000000..7903053 --- /dev/null +++ b/sys-devel/clang-runtime/Manifest @@ -0,0 +1 @@ +EBUILD clang-runtime-14.0.6.ebuild 760 BLAKE2B 0f6cfb8536569ffe2a09305e71056309690ad1c8e92543e64025bd5e009eac35018ec22b2c0f80c12f3a527cc7e0bfe4ec1bfcb2dd9dea54106abf46b13e5592 SHA512 580efee12fe0e53447f5644fad248ebded8ae6cd8cb5871cb38bb3148091886b6fb9a57ac712d3158d5c3fc38c043b0bfbf62fc550a609752a42c23e605b0ded diff --git a/sys-devel/clang-runtime/clang-runtime-14.0.6.ebuild b/sys-devel/clang-runtime/clang-runtime-14.0.6.ebuild new file mode 100644 index 0000000..9837077 --- /dev/null +++ b/sys-devel/clang-runtime/clang-runtime-14.0.6.ebuild @@ -0,0 +1,26 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-build + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" + +LICENSE="metapackage" +SLOT="$(ver_cut 1-3)" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv sparc x86 ~amd64-linux ~ppc-macos ~x64-macos" +IUSE="+compiler-rt libcxx openmp +sanitize" +REQUIRED_USE="sanitize? ( compiler-rt )" + +RDEPEND=" + compiler-rt? ( + ~sys-libs/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~sys-libs/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=sys-libs/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( >=sys-libs/libomp-${PV}[${MULTILIB_USEDEP}] ) +" diff --git a/sys-devel/clang-toolchain-symlinks/Manifest b/sys-devel/clang-toolchain-symlinks/Manifest new file mode 100644 index 0000000..74135a5 --- /dev/null +++ b/sys-devel/clang-toolchain-symlinks/Manifest @@ -0,0 +1 @@ +EBUILD clang-toolchain-symlinks-14-r2.ebuild 1148 BLAKE2B 8b5d73156c339aa1ce15ded8774f3d2aa9b02d9d410d2f92586cfe42278e53e81234b3f99d52d51c56bc57dac9d9fc295a83bf5e4fea84b9d15f39cf60bb01f2 SHA512 0b9cd3586734912c148f81154d19e46041f61aa92d62ab33a968ed1d2b81381a6f5b73e2716ca3d65ad3bc3ccc6f60b1b6c951901788b3c1cd72e4ffd0e81eb5 diff --git a/sys-devel/clang-toolchain-symlinks/clang-toolchain-symlinks-14-r2.ebuild b/sys-devel/clang-toolchain-symlinks/clang-toolchain-symlinks-14-r2.ebuild new file mode 100644 index 0000000..c53a878 --- /dev/null +++ b/sys-devel/clang-toolchain-symlinks/clang-toolchain-symlinks-14-r2.ebuild @@ -0,0 +1,59 @@ +# Copyright 2022-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib + +DESCRIPTION="Symlinks to use Clang on GCC-free system" +HOMEPAGE="https://wiki.gentoo.org/wiki/Project:LLVM" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV}" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x64-macos" +IUSE="gcc-symlinks multilib-symlinks +native-symlinks" + +# Blocker for bug #872416 +RDEPEND=" + !<sys-devel/gcc-config-2.6 + sys-devel/clang:${SLOT} +" + +src_install() { + local tools=() + + if use native-symlinks; then + tools+=( + cc:clang + cpp:clang-cpp + c++:clang++ + ) + fi + if use gcc-symlinks; then + tools+=( + gcc:clang + g++:clang++ + ) + fi + + local chosts=( "${CHOST}" ) + if use multilib-symlinks; then + local abi + for abi in $(get_all_abis); do + chosts+=( "$(get_abi_CHOST "${abi}")" ) + done + fi + + local chost t + local dest=/usr/lib/llvm/${SLOT}/bin + dodir "${dest}" + for t in "${tools[@]}"; do + dosym "${t#*:}" "${dest}/${t%:*}" + done + for chost in "${chosts[@]}"; do + for t in "${tools[@]}"; do + dosym "${t#*:}" "${dest}/${chost}-${t%:*}" + done + done +} diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest new file mode 100644 index 0000000..fd7b878 --- /dev/null +++ b/sys-devel/clang/Manifest @@ -0,0 +1,6 @@ +DIST llvm-14.0.6-manpages.tar.bz2 218186 BLAKE2B 4491296e490936a2d7b518e19a0ff6312b89abeef3fbe5da5d0b93bb2add1088ddf64a0b00ec8846062d19b1ad31e53eadee7ce03c9034aab554e183d1baccf6 SHA512 f8328dc2ec1e8d941d47e583ee31fae7bdcebb3f854b5c8a4a84bd19a79bf5427ad204012c81349bc05a291e41cf48e5129b4578bbd5d4490dd01e1c0b5823bf +DIST llvm-gentoo-patchset-14.0.6-r4.tar.xz 19360 BLAKE2B 814dd617d237b0bd9c80bdd9d921196b8f93248b731083e79455d4609a05dd15b6847fc227359624abce683ecdaadaefea71dc9b65b7edd1fc3912123fa55054 SHA512 9ac57abc87a63cf31ecd021e6dd44f5f11cd6136fa3b92e89c52a6d13e0ed471f88e6e96160baeac4615eedff7943048a35a98c8d37387894c9c2d1f5df277ce +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD clang-14.0.6-r4.ebuild 11940 BLAKE2B 7bdb569b0a4045d6606568032fb78b6fa8b604805bc89f4e6db8c75e25c3f194e174e2e17d4b9a3266931712d3669ac7054040044ece10826d78e57060484779 SHA512 a6969e583334463ecbd326756b8e9b78a02bf9f42edfee4964cc803b0abbe74d0610213287885a96b95e92855b6a4912b1e990bf5e81673ce6a46d155a2a6384 +MISC metadata.xml 1600 BLAKE2B 8e49e099132445cf695e904acad8a699f3d8c4c1e4cd6ba9d0b97180dfa5b67e9c30b00d1e4cb6cd2f61b27f022accc8d6ee889c6569fc58fbc058186ad216fc SHA512 96b7cf4988ff1fd923ec87311caed458b64888b5acaaf20cc1ad893f2a963158f7f59398f9fd4f9e65cab3df265c0d002048ff874f7a76b94f36377bf9e8f5f6 diff --git a/sys-devel/clang/clang-14.0.6-r4.ebuild b/sys-devel/clang/clang-14.0.6-r4.ebuild new file mode 100644 index 0000000..5228db7 --- /dev/null +++ b/sys-devel/clang/clang-14.0.6-r4.ebuild @@ -0,0 +1,445 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake llvm llvm.org multilib multilib-minimal \ + prefix python-single-r1 toolchain-funcs + +DESCRIPTION="C language family frontend for LLVM" +HOMEPAGE="https://llvm.org/" + +# MSVCSetupApi.h: MIT +# sorttable.js: MIT + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT" +SLOT="$(ver_cut 1)" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x64-macos" +IUSE=" + debug default-compiler-rt default-libcxx default-lld doc + llvm-libunwind +pie +static-analyzer test xml +" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +DEPEND=" + ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}] + static-analyzer? ( dev-lang/perl:* ) + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] ) +" + +RDEPEND=" + ${PYTHON_DEPS} + ${DEPEND} +" +BDEPEND=" + ${PYTHON_DEPS} + >=dev-build/cmake-3.16 + doc? ( $(python_gen_cond_dep ' + dev-python/recommonmark[${PYTHON_USEDEP}] + dev-python/sphinx[${PYTHON_USEDEP}] + ') ) + xml? ( virtual/pkgconfig ) +" +PDEPEND=" + sys-devel/clang-common + ~sys-devel/clang-runtime-${PV} + default-compiler-rt? ( + =sys-libs/compiler-rt-${PV%_*}* + llvm-libunwind? ( sys-libs/llvm-libunwind ) + !llvm-libunwind? ( sys-libs/libunwind ) + ) + default-libcxx? ( >=sys-libs/libcxx-${PV} ) + default-lld? ( sys-devel/lld ) +" + +LLVM_COMPONENTS=( + clang clang-tools-extra cmake + llvm/lib/Transforms/Hello +) +LLVM_MANPAGES=1 +LLVM_TEST_COMPONENTS=( + llvm/lib/Testing/Support + llvm/utils/{lit,llvm-lit,unittest} + llvm/utils/{UpdateTestChecks,update_cc_test_checks.py} +) +LLVM_PATCHSET=${PV}-r4 +LLVM_USE_TARGETS=llvm +llvm.org_set_globals + +# Multilib notes: +# 1. ABI_* flags control ABIs libclang* is built for only. +# 2. clang is always capable of compiling code for all ABIs for enabled +# target. However, you will need appropriate crt* files (installed +# e.g. by sys-devel/gcc and sys-libs/glibc). +# 3. ${CHOST}-clang wrappers are always installed for all ABIs included +# in the current profile (i.e. alike supported by sys-devel/gcc). +# +# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need +# multilib clang* libraries (not runtime, not wrappers). + +pkg_setup() { + LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup + python-single-r1_pkg_setup +} + +src_prepare() { + # create extra parent dir for relative CLANG_RESOURCE_DIR access + mkdir -p x/y || die + BUILD_DIR=${WORKDIR}/x/y/clang + + llvm.org_src_prepare + + # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch) + eprefixify \ + lib/Lex/InitHeaderSearch.cpp \ + lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi +} + +check_distribution_components() { + if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then + local all_targets=() my_targets=() l + cd "${BUILD_DIR}" || die + + while read -r l; do + if [[ ${l} == install-*-stripped:* ]]; then + l=${l#install-} + l=${l%%-stripped*} + + case ${l} in + # meta-targets + clang-libraries|distribution) + continue + ;; + # tools + clang|clangd|clang-*) + ;; + # static libraries + clang*|findAllSymbols) + continue + ;; + # conditional to USE=doc + docs-clang-html|docs-clang-tools-html) + use doc || continue + ;; + esac + + all_targets+=( "${l}" ) + fi + done < <(${NINJA} -t targets all) + + while read -r l; do + my_targets+=( "${l}" ) + done < <(get_distribution_components $"\n") + + local add=() remove=() + for l in "${all_targets[@]}"; do + if ! has "${l}" "${my_targets[@]}"; then + add+=( "${l}" ) + fi + done + for l in "${my_targets[@]}"; do + if ! has "${l}" "${all_targets[@]}"; then + remove+=( "${l}" ) + fi + done + + if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then + eqawarn "get_distribution_components() is outdated!" + eqawarn " Add: ${add[*]}" + eqawarn "Remove: ${remove[*]}" + fi + cd - >/dev/null || die + fi +} + +get_distribution_components() { + local sep=${1-;} + + local out=( + # common stuff + clang-cmake-exports + clang-headers + clang-resource-headers + libclang-headers + + # libs + clang-cpp + libclang + ) + + if multilib_is_native_abi; then + out+=( + # common stuff + bash-autocomplete + libclang-python-bindings + + # tools + c-index-test + clang + clang-format + clang-offload-bundler + clang-offload-wrapper + clang-refactor + clang-repl + clang-rename + clang-scan-deps + diagtool + hmaptool + + # extra tools + clang-apply-replacements + clang-change-namespace + clang-doc + clang-include-fixer + clang-move + clang-query + clang-reorder-fields + clang-tidy + clang-tidy-headers + clangd + find-all-symbols + modularize + pp-trace + ) + + if llvm_are_manpages_built; then + out+=( + # manpages + docs-clang-man + docs-clang-tools-man + ) + fi + + use doc && out+=( + docs-clang-html + docs-clang-tools-html + ) + + use static-analyzer && out+=( + clang-check + clang-extdef-mapping + scan-build + scan-build-py + scan-view + ) + fi + + printf "%s${sep}" "${out[@]}" +} + +multilib_src_configure() { + local llvm_version=$(llvm-config --version) || die + local clang_version=$(ver_cut 1-3 "${llvm_version}") + + local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") + -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm" + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}" + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" + # relative to bindir + -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}" + + -DBUILD_SHARED_LIBS=OFF + -DCLANG_LINK_CLANG_DYLIB=ON + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components) + + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_BUILD_TESTS=$(usex test) + + # these are not propagated reliably, so redefine them + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + + -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml) + # libgomp support fails to find headers without explicit -I + # furthermore, it provides only syntax checking + -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp + + # disable using CUDA to autodetect GPU, just build for all + -DCMAKE_DISABLE_FIND_PACKAGE_CUDA=ON + + # override default stdlib and rtlib + -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "") + -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "") + -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "") + -DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie) + -DCLANG_DEFAULT_UNWINDLIB=$(usex default-compiler-rt libunwind "") + + -DCLANG_ENABLE_ARCMT=$(usex static-analyzer) + -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer) + + -DPython3_EXECUTABLE="${PYTHON}" + ) + use test && mycmakeargs+=( + -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" + -DLLVM_EXTERNAL_LIT="${BUILD_DIR}/bin/llvm-lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + if multilib_is_native_abi; then + local build_docs=OFF + if llvm_are_manpages_built; then + build_docs=ON + mycmakeargs+=( + -DLLVM_BUILD_DOCS=ON + -DLLVM_ENABLE_SPHINX=ON + -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html" + -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra" + -DSPHINX_WARNINGS_AS_ERRORS=OFF + ) + fi + mycmakeargs+=( + -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra + -DCLANG_INCLUDE_DOCS=${build_docs} + -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs} + ) + else + mycmakeargs+=( + -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF + ) + fi + + if [[ -n ${EPREFIX} ]]; then + mycmakeargs+=( + -DGCC_INSTALL_PREFIX="${EPREFIX}/usr" + ) + fi + + if tc-is-cross-compiler; then + [[ -x "/usr/bin/clang-tblgen" ]] \ + || die "/usr/bin/clang-tblgen not found or usable" + mycmakeargs+=( + -DCMAKE_CROSSCOMPILING=ON + -DCLANG_TABLEGEN=/usr/bin/clang-tblgen + ) + fi + + # LLVM can have very high memory consumption while linking, + # exhausting the limit on 32-bit linker executable + use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory" + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + cmake_src_configure + + multilib_is_native_abi && check_distribution_components +} + +multilib_src_compile() { + cmake_build distribution + + # provide a symlink for tests + if [[ ! -L ${WORKDIR}/lib/clang ]]; then + mkdir -p "${WORKDIR}"/lib || die + ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die + fi +} + +multilib_src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake_build check-clang + multilib_is_native_abi && + cmake_build check-clang-tools check-clangd +} + +src_install() { + MULTILIB_WRAPPED_HEADERS=( + /usr/include/clang/Config/config.h + ) + + multilib-minimal_src_install + + # Move runtime headers to /usr/lib/clang, where they belong + mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die + # move (remaining) wrapped headers back + mv "${T}"/clang-tidy "${ED}"/usr/include/ || die + mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die + + # Apply CHOST and version suffix to clang tools + # note: we use two version components here (vs 3 in runtime path) + local llvm_version=$(llvm-config --version) || die + local clang_version=$(ver_cut 1 "${llvm_version}") + local clang_full_version=$(ver_cut 1-3 "${llvm_version}") + local clang_tools=( clang clang++ clang-cl clang-cpp ) + local abi i + + # cmake gives us: + # - clang-X + # - clang -> clang-X + # - clang++, clang-cl, clang-cpp -> clang + # we want to have: + # - clang-X + # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X + # - clang, clang++, clang-cl, clang-cpp -> clang*-X + # also in CHOST variant + for i in "${clang_tools[@]:1}"; do + rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die + dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}" + dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}" + done + + # now create target symlinks for all supported ABIs + for abi in $(get_all_abis); do + local abi_chost=$(get_abi_CHOST "${abi}") + for i in "${clang_tools[@]}"; do + dosym "${i}-${clang_version}" \ + "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}" + dosym "${abi_chost}-${i}-${clang_version}" \ + "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}" + done + done +} + +multilib_src_install() { + DESTDIR=${D} cmake_build install-distribution + + # move headers to /usr/include for wrapping & ABI mismatch checks + # (also drop the version suffix from runtime headers) + rm -rf "${ED}"/usr/include || die + mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die + mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die + if multilib_is_native_abi; then + # don't wrap clang-tidy headers, the list is too long + # (they're fine for non-native ABI but enabling the targets is problematic) + mv "${ED}"/usr/include/clang-tidy "${T}/" || die + fi +} + +multilib_src_install_all() { + python_fix_shebang "${ED}" + if use static-analyzer; then + python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view + fi + + docompress "/usr/lib/llvm/${SLOT}/share/man" + llvm_install_manpages + # match 'html' non-compression + use doc && docompress -x "/usr/share/doc/${PF}/tools-extra" + # +x for some reason; TODO: investigate + use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1" +} + +pkg_postinst() { + if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then + eselect compiler-shadow update all + fi + + elog "You can find additional utility scripts in:" + elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang" + elog "Some of them are vim integration scripts (with instructions inside)." + elog "The run-clang-tidy.py script requires the following additional package:" + elog " dev-python/pyyaml" +} + +pkg_postrm() { + if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then + eselect compiler-shadow clean all + fi +} diff --git a/sys-devel/clang/metadata.xml b/sys-devel/clang/metadata.xml new file mode 100644 index 0000000..909203c --- /dev/null +++ b/sys-devel/clang/metadata.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>gerion.entrup@flump.de</email> + <name>Gerion Entrup</name> + </maintainer> + <longdescription>The goal of the Clang project is to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler. + +Features and Goals + +Some of the goals for the project include the following: + +End-User Features: +Fast compiles and low memory use +Expressive diagnostics +GCC compatibility +Utility and Applications: + +Modular library based architecture +Support diverse clients (refactoring, static analysis, code generation, etc) +Allow tight integration with IDEs +Use the LLVM BSD License +Internal Design and Implementation: + +A real-world, production quality compiler +A simple and hackable code base +A single unified parser for C, Objective C, C++, and Objective C++ +Conformance with C/C++/ObjC and their variants</longdescription> + <use> + <flag name="default-compiler-rt">Use compiler-rt instead of libgcc as the default rtlib for clang</flag> + <flag name="default-libcxx">Use libc++ instead of libstdc++ as the default stdlib for clang</flag> + <flag name="default-lld">Use lld as the default linker for clang</flag> + <flag name="extra">Build extra tools (clangd, clang-tidy and a few more)</flag> + <flag name="ieee-long-double">Use accelerated 128-bit IEEE long double ABI (ppc64le only)</flag> + <flag name="static-analyzer">Install the Clang static analyzer</flag> + </use> + <upstream> + <remote-id type="github">llvm/llvm-project</remote-id> + </upstream> +</pkgmetadata> diff --git a/sys-devel/lld-toolchain-symlinks/Manifest b/sys-devel/lld-toolchain-symlinks/Manifest new file mode 100644 index 0000000..4056942 --- /dev/null +++ b/sys-devel/lld-toolchain-symlinks/Manifest @@ -0,0 +1 @@ +EBUILD lld-toolchain-symlinks-14-r2.ebuild 795 BLAKE2B 0c8e8563cb7d032fd2d49757753acb6833c902babf55d5692661ffca7c380ecd26f08e9ed133dd67e6b4f3ad6e6fcc330b09c95bb86dabbb42d28ea1c2c05385 SHA512 c3160ddff275e15201927911466a839e7a9f06bdc82143207242d88e6e2079d2a8329e70b8a5b6bb905270ba1ab3e5efaf4b2d076bb458b76b3229083db7b4bd diff --git a/sys-devel/lld-toolchain-symlinks/lld-toolchain-symlinks-14-r2.ebuild b/sys-devel/lld-toolchain-symlinks/lld-toolchain-symlinks-14-r2.ebuild new file mode 100644 index 0000000..833ce1b --- /dev/null +++ b/sys-devel/lld-toolchain-symlinks/lld-toolchain-symlinks-14-r2.ebuild @@ -0,0 +1,38 @@ +# Copyright 2022-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib + +DESCRIPTION="Symlinks to use LLD on binutils-free system" +HOMEPAGE="https://wiki.gentoo.org/wiki/Project:LLVM" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV}" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="multilib-symlinks +native-symlinks" + +RDEPEND=" + sys-devel/lld:${SLOT} +" + +src_install() { + use native-symlinks || return + + local chosts=( "${CHOST}" ) + if use multilib-symlinks; then + local abi + for abi in $(get_all_abis); do + chosts+=( "$(get_abi_CHOST "${abi}")" ) + done + fi + + local dest=/usr/lib/llvm/${SLOT}/bin + dodir "${dest}" + dosym ld.lld "${dest}/ld" + for chost in "${chosts[@]}"; do + dosym ld.lld "${dest}/${chost}-ld" + done +} diff --git a/sys-devel/lld/Manifest b/sys-devel/lld/Manifest new file mode 100644 index 0000000..67d6465 --- /dev/null +++ b/sys-devel/lld/Manifest @@ -0,0 +1,3 @@ +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD lld-14.0.6-r1.ebuild 2009 BLAKE2B 4db1dfc9b1997d31cc68240ae0b05afeae5a6b1cb24a0eb2012bc28b2ac8c0da4b532d270d070db5fd401717320a74b006628c19a12c787e2f9ba2dc24eb25b1 SHA512 73b2f0e7b27497ce9037cd10503b328378ff9a2e32cd36e6e264f5423cd05732da4ea2ef97b637fc344a4f3d5d3597c60dda29dba7eb509391c176d32d53a427 diff --git a/sys-devel/lld/lld-14.0.6-r1.ebuild b/sys-devel/lld/lld-14.0.6-r1.ebuild new file mode 100644 index 0000000..c1885a8 --- /dev/null +++ b/sys-devel/lld/lld-14.0.6-r1.ebuild @@ -0,0 +1,80 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake flag-o-matic llvm llvm.org python-any-r1 + +DESCRIPTION="The LLVM linker (link editor)" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="${LLVM_MAJOR}/${LLVM_SOABI}" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv x86" +IUSE="debug test" +RESTRICT="!test? ( test )" + +DEPEND=" + ~sys-devel/llvm-${PV} +" +RDEPEND=" + ${DEPEND} + !sys-devel/lld:0 +" +BDEPEND=" + test? ( + >=dev-util/cmake-3.16 + $(python_gen_any_dep ">=dev-python/lit-${PV}[\${PYTHON_USEDEP}]") + ) +" + +LLVM_COMPONENTS=( lld cmake libunwind/include/mach-o ) +LLVM_TEST_COMPONENTS=( llvm/utils/{lit,unittest} ) +llvm.org_set_globals + +python_check_deps() { + python_has_version ">=dev-python/lit-${PV}[${PYTHON_USEDEP}]" +} + +pkg_setup() { + LLVM_MAX_SLOT=${LLVM_MAJOR} llvm_pkg_setup + use test && python-any-r1_pkg_setup +} + +src_unpack() { + llvm.org_src_unpack + + # Directory ${WORKDIR}/llvm does not exist with USE="-test", + # but LLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" is set below, + # and ${LLVM_MAIN_SRC_DIR}/../libunwind/include is used by build system + # (lld/MachO/CMakeLists.txt) and is expected to be resolvable + # to existent directory ${WORKDIR}/libunwind/include. + mkdir -p "${WORKDIR}/llvm" || die +} + +src_configure() { + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + use elibc_musl && append-ldflags -Wl,-z,stack-size=2097152 + + local mycmakeargs=( + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" + -DBUILD_SHARED_LIBS=ON + -DLLVM_INCLUDE_TESTS=$(usex test) + -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" + ) + use test && mycmakeargs+=( + -DLLVM_BUILD_TESTS=ON + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + -DPython3_EXECUTABLE="${PYTHON}" + ) + cmake_src_configure +} + +src_test() { + local -x LIT_PRESERVES_TMP=1 + cmake_build check-lld +} diff --git a/sys-devel/llvm-common/Manifest b/sys-devel/llvm-common/Manifest new file mode 100644 index 0000000..3fbc9d7 --- /dev/null +++ b/sys-devel/llvm-common/Manifest @@ -0,0 +1,3 @@ +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD llvm-common-14.0.6.ebuild 1015 BLAKE2B b7d52fa0ab83b5c9bf23d397074f4db30926ad3d13bdf0d2082a23f384c3889a7c356ba220b78970d117a8b46793e3d175d0a794859bb6148c4d6e1bc1c9e82e SHA512 b89e5a11a04a66cf2929354ce65d80c201d85ee1aaa55c197b3671904e126ec941ad7110277734563b376ebc7fecec463c270f8cad8609664f025916d3f39bac diff --git a/sys-devel/llvm-common/llvm-common-14.0.6.ebuild b/sys-devel/llvm-common/llvm-common-14.0.6.ebuild new file mode 100644 index 0000000..c8fdea8 --- /dev/null +++ b/sys-devel/llvm-common/llvm-common-14.0.6.ebuild @@ -0,0 +1,54 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit elisp-common llvm.org + +DESCRIPTION="Common files shared between multiple slots of LLVM" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv sparc x86 ~amd64-linux ~ppc-macos ~x64-macos" +IUSE="emacs" + +RDEPEND=" + !sys-devel/llvm:0 +" +BDEPEND=" + emacs? ( >=app-editors/emacs-23.1:* ) +" + +LLVM_COMPONENTS=( llvm/utils ) +llvm.org_set_globals + +SITEFILE="50llvm-gentoo.el" +BYTECOMPFLAGS="-L emacs" + +src_compile() { + default + + use emacs && elisp-compile emacs/*.el +} + +src_install() { + insinto /usr/share/vim/vimfiles + doins -r vim/*/ + # some users may find it useful + newdoc vim/README README.vim + dodoc vim/vimrc + + if use emacs ; then + elisp-install llvm emacs/*.{el,elc} + elisp-make-site-file "${SITEFILE}" llvm + fi +} + +pkg_postinst() { + use emacs && elisp-site-regen +} + +pkg_postrm() { + use emacs && elisp-site-regen +} diff --git a/sys-devel/llvm-toolchain-symlinks/Manifest b/sys-devel/llvm-toolchain-symlinks/Manifest new file mode 100644 index 0000000..2a00b89 --- /dev/null +++ b/sys-devel/llvm-toolchain-symlinks/Manifest @@ -0,0 +1 @@ +EBUILD llvm-toolchain-symlinks-14-r1.ebuild 1044 BLAKE2B 2a32391553acb3a7c61ed02043a97415221ee1e64504fdfaa55199778782d93399469584c6241686a6cce915e120c843a0dc5cd613ee2cade3ae028eb085a403 SHA512 72cf11431660900fd2d44d441da9dd8d1eaa40ee4d537520d91adddb1b622a4a4e9fce9bb4901c3ec49a42719d37b465a3d80af657130af4e3717d3c93605699 diff --git a/sys-devel/llvm-toolchain-symlinks/llvm-toolchain-symlinks-14-r1.ebuild b/sys-devel/llvm-toolchain-symlinks/llvm-toolchain-symlinks-14-r1.ebuild new file mode 100644 index 0000000..4440957 --- /dev/null +++ b/sys-devel/llvm-toolchain-symlinks/llvm-toolchain-symlinks-14-r1.ebuild @@ -0,0 +1,47 @@ +# Copyright 2022-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib + +DESCRIPTION="Symlinks to use LLVM on binutils-free system" +HOMEPAGE="https://wiki.gentoo.org/wiki/Project:LLVM" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV}" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~ppc-macos ~x64-macos" +IUSE="multilib-symlinks +native-symlinks" + +RDEPEND=" + sys-devel/llvm:${SLOT} +" + +src_install() { + use native-symlinks || return + + local tools=( + addr2line ar dlltool nm objcopy objdump ranlib readelf size + strings strip windres + ) + local chosts=( "${CHOST}" ) + if use multilib-symlinks; then + local abi + for abi in $(get_all_abis); do + chosts+=( "$(get_abi_CHOST "${abi}")" ) + done + fi + + local chost t + local dest=/usr/lib/llvm/${SLOT}/bin + dodir "${dest}" + for t in "${tools[@]}"; do + dosym "llvm-${t}" "${dest}/${t}" + done + for chost in "${chosts[@]}"; do + for t in "${tools[@]}"; do + dosym "llvm-${t}" "${dest}/${chost}-${t}" + done + done +} diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest new file mode 100644 index 0000000..274e800 --- /dev/null +++ b/sys-devel/llvm/Manifest @@ -0,0 +1,5 @@ +DIST llvm-14.0.6-manpages.tar.bz2 218186 BLAKE2B 4491296e490936a2d7b518e19a0ff6312b89abeef3fbe5da5d0b93bb2add1088ddf64a0b00ec8846062d19b1ad31e53eadee7ce03c9034aab554e183d1baccf6 SHA512 f8328dc2ec1e8d941d47e583ee31fae7bdcebb3f854b5c8a4a84bd19a79bf5427ad204012c81349bc05a291e41cf48e5129b4578bbd5d4490dd01e1c0b5823bf +DIST llvm-gentoo-patchset-14.0.6-r4.tar.xz 19360 BLAKE2B 814dd617d237b0bd9c80bdd9d921196b8f93248b731083e79455d4609a05dd15b6847fc227359624abce683ecdaadaefea71dc9b65b7edd1fc3912123fa55054 SHA512 9ac57abc87a63cf31ecd021e6dd44f5f11cd6136fa3b92e89c52a6d13e0ed471f88e6e96160baeac4615eedff7943048a35a98c8d37387894c9c2d1f5df277ce +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD llvm-14.0.6-r4.ebuild 12314 BLAKE2B 232f79d657a0004821db9cf9497d2e1506b2790680965f2f9aca101d2994f92f49d1c895dea30bed5d9d8cd3e3b9870006e86e763dcb302f64985f677db37118 SHA512 fbaf5db7974a6b224f96cbf3276d1513b138d3785d8ca0da31177ce65b9d0e6df3fc90d788f99a7ea2351a96759282af9e5b8d4f73675332be34aec19954488a diff --git a/sys-devel/llvm/llvm-14.0.6-r4.ebuild b/sys-devel/llvm/llvm-14.0.6-r4.ebuild new file mode 100644 index 0000000..99ea246 --- /dev/null +++ b/sys-devel/llvm/llvm-14.0.6-r4.ebuild @@ -0,0 +1,516 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \ + toolchain-funcs + +DESCRIPTION="Low Level Virtual Machine" +HOMEPAGE="https://llvm.org/" + +# Additional licenses: +# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD. +# 2. xxhash: BSD. +# 3. MD5 code: public-domain. +# 4. ConvertUTF.h: TODO. + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc" +SLOT="$(ver_cut 1)" +KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86 ~amd64-linux ~ppc-macos ~x64-macos" +IUSE="+binutils-plugin debug doc exegesis libedit +libffi ncurses test xar xml z3" +RESTRICT="!test? ( test )" + +RDEPEND=" + sys-libs/zlib:0=[${MULTILIB_USEDEP}] + exegesis? ( dev-libs/libpfm:= ) + libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] ) + libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] ) + ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] ) + xar? ( app-arch/xar ) + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] ) + z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] ) +" +DEPEND=" + ${RDEPEND} + binutils-plugin? ( sys-libs/binutils-libs ) +" +BDEPEND=" + ${PYTHON_DEPS} + dev-lang/perl + >=dev-build/cmake-3.16 + sys-devel/gnuconfig + kernel_Darwin? ( + <sys-libs/libcxx-$(ver_cut 1-3).9999 + >=sys-devel/binutils-apple-5.1 + ) + doc? ( $(python_gen_any_dep ' + dev-python/recommonmark[${PYTHON_USEDEP}] + dev-python/sphinx[${PYTHON_USEDEP}] + ') ) + libffi? ( virtual/pkgconfig ) + test? ( + sys-apps/which + ) +" +# There are no file collisions between these versions but having :0 +# installed means llvm-config there will take precedence. +RDEPEND=" + ${RDEPEND} + !sys-devel/llvm:0 +" +PDEPEND=" + sys-devel/llvm-common + binutils-plugin? ( >=sys-devel/llvmgold-${SLOT} ) +" + +LLVM_COMPONENTS=( llvm cmake third-party ) +LLVM_MANPAGES=1 +LLVM_PATCHSET=${PV}-r4 +LLVM_USE_TARGETS=provide +llvm.org_set_globals + +python_check_deps() { + use doc || return 0 + + python_has_version -b "dev-python/recommonmark[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]" +} + +check_uptodate() { + local prod_targets=( + $(sed -n -e '/set(LLVM_ALL_TARGETS/,/)/p' CMakeLists.txt \ + | tail -n +2 | head -n -1) + ) + local all_targets=( + lib/Target/*/ + ) + all_targets=( "${all_targets[@]#lib/Target/}" ) + all_targets=( "${all_targets[@]%/}" ) + + local exp_targets=() i + for i in "${all_targets[@]}"; do + has "${i}" "${prod_targets[@]}" || exp_targets+=( "${i}" ) + done + + if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then + eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!" + eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}" + eqawarn "Expected: ${exp_targets[*]}" + eqawarn + fi + + if [[ ${prod_targets[*]} != ${ALL_LLVM_PRODUCTION_TARGETS[*]} ]]; then + eqawarn "ALL_LLVM_PRODUCTION_TARGETS is outdated!" + eqawarn " Have: ${ALL_LLVM_PRODUCTION_TARGETS[*]}" + eqawarn "Expected: ${prod_targets[*]}" + fi +} + +check_distribution_components() { + if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then + local all_targets=() my_targets=() l + cd "${BUILD_DIR}" || die + + while read -r l; do + if [[ ${l} == install-*-stripped:* ]]; then + l=${l#install-} + l=${l%%-stripped*} + + case ${l} in + # shared libs + LLVM|LLVMgold) + ;; + # TableGen lib + deps + LLVMDemangle|LLVMSupport|LLVMTableGen) + ;; + # static libs + LLVM*) + continue + ;; + # meta-targets + distribution|llvm-libraries) + continue + ;; + # used only w/ USE=doc + docs-llvm-html) + use doc || continue + ;; + esac + + all_targets+=( "${l}" ) + fi + done < <(${NINJA} -t targets all) + + while read -r l; do + my_targets+=( "${l}" ) + done < <(get_distribution_components $"\n") + + local add=() remove=() + for l in "${all_targets[@]}"; do + if ! has "${l}" "${my_targets[@]}"; then + add+=( "${l}" ) + fi + done + for l in "${my_targets[@]}"; do + if ! has "${l}" "${all_targets[@]}"; then + remove+=( "${l}" ) + fi + done + + if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then + eqawarn "get_distribution_components() is outdated!" + eqawarn " Add: ${add[*]}" + eqawarn "Remove: ${remove[*]}" + fi + cd - >/dev/null || die + fi +} + +src_prepare() { + # disable use of SDK on OSX, bug #568758 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die + + # Update config.guess to support more systems + cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die + + # Verify that the ebuild is up-to-date + check_uptodate + + llvm.org_src_prepare + + # remove regressing test + # https://github.com/llvm/llvm-project/issues/55761 + rm test/Other/ChangePrinters/DotCfg/print-changed-dot-cfg.ll || die +} + +get_distribution_components() { + local sep=${1-;} + + local out=( + # shared libs + LLVM + LTO + Remarks + + # tools + llvm-config + + # common stuff + cmake-exports + llvm-headers + + # libraries needed for clang-tblgen + LLVMDemangle + LLVMSupport + LLVMTableGen + ) + + if multilib_is_native_abi; then + out+=( + # utilities + llvm-tblgen + FileCheck + llvm-PerfectShuffle + count + not + yaml-bench + + # tools + bugpoint + dsymutil + llc + lli + lli-child-target + llvm-addr2line + llvm-ar + llvm-as + llvm-bcanalyzer + llvm-bitcode-strip + llvm-c-test + llvm-cat + llvm-cfi-verify + llvm-config + llvm-cov + llvm-cvtres + llvm-cxxdump + llvm-cxxfilt + llvm-cxxmap + llvm-debuginfod-find + llvm-diff + llvm-dis + llvm-dlltool + llvm-dwarfdump + llvm-dwp + llvm-exegesis + llvm-extract + llvm-gsymutil + llvm-ifs + llvm-install-name-tool + llvm-jitlink + llvm-jitlink-executor + llvm-lib + llvm-libtool-darwin + llvm-link + llvm-lipo + llvm-lto + llvm-lto2 + llvm-mc + llvm-mca + llvm-ml + llvm-modextract + llvm-mt + llvm-nm + llvm-objcopy + llvm-objdump + llvm-opt-report + llvm-otool + llvm-pdbutil + llvm-profdata + llvm-profgen + llvm-ranlib + llvm-rc + llvm-readelf + llvm-readobj + llvm-reduce + llvm-rtdyld + llvm-sim + llvm-size + llvm-split + llvm-stress + llvm-strings + llvm-strip + llvm-symbolizer + llvm-tapi-diff + llvm-tli-checker + llvm-undname + llvm-windres + llvm-xray + obj2yaml + opt + sancov + sanstats + split-file + verify-uselistorder + yaml2obj + + # python modules + opt-viewer + ) + + if llvm_are_manpages_built; then + out+=( + # manpages + docs-dsymutil-man + docs-llvm-dwarfdump-man + docs-llvm-man + ) + fi + use doc && out+=( + docs-llvm-html + ) + + use binutils-plugin && out+=( + LLVMgold + ) + fi + + printf "%s${sep}" "${out[@]}" +} + +multilib_src_configure() { + local ffi_cflags ffi_ldflags + if use libffi; then + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi) + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi) + fi + local libdir=$(get_libdir) + local mycmakeargs=( + # disable appending VCS revision to the version to improve + # direct cache hit ratio + -DLLVM_APPEND_VC_REV=OFF + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}" + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + + -DBUILD_SHARED_LIBS=OFF + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components) + + # cheap hack: LLVM combines both anyway, and the only difference + # is that the former list is explicitly verified at cmake time + -DLLVM_TARGETS_TO_BUILD="" + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_BUILD_TESTS=$(usex test) + + -DLLVM_ENABLE_FFI=$(usex libffi) + -DLLVM_ENABLE_LIBEDIT=$(usex libedit) + -DLLVM_ENABLE_TERMINFO=$(usex ncurses) + -DLLVM_ENABLE_LIBXML2=$(usex xml) + -DLLVM_ENABLE_ASSERTIONS=$(usex debug) + -DLLVM_ENABLE_LIBPFM=$(usex exegesis) + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + -DLLVM_ENABLE_Z3_SOLVER=$(usex z3) + + -DLLVM_HOST_TRIPLE="${CHOST}" + + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}" + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}" + # used only for llvm-objdump tool + -DLLVM_HAVE_LIBXAR=$(multilib_native_usex xar 1 0) + + -DPython3_EXECUTABLE="${PYTHON}" + + # disable OCaml bindings (now in dev-ml/llvm-ocaml) + -DOCAMLFIND=NO + ) + + if [[ $(tc-get-cxx-stdlib) == libc++ ]]; then + # Smart hack: alter version suffix -> SOVERSION when linking + # against libc++. This way we won't end up mixing LLVM libc++ + # libraries with libstdc++ clang, and the other way around. + mycmakeargs+=( + -DLLVM_VERSION_SUFFIX="libcxx" + -DLLVM_ENABLE_LIBCXX=ON + ) + fi + +# Note: go bindings have no CMake rules at the moment +# but let's kill the check in case they are introduced +# if ! multilib_is_native_abi || ! use go; then + mycmakeargs+=( + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND + ) +# fi + + use test && mycmakeargs+=( + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + if multilib_is_native_abi; then + local build_docs=OFF + if llvm_are_manpages_built; then + build_docs=ON + mycmakeargs+=( + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html" + -DSPHINX_WARNINGS_AS_ERRORS=OFF + ) + fi + + mycmakeargs+=( + -DLLVM_BUILD_DOCS=${build_docs} + -DLLVM_ENABLE_OCAMLDOC=OFF + -DLLVM_ENABLE_SPHINX=${build_docs} + -DLLVM_ENABLE_DOXYGEN=OFF + -DLLVM_INSTALL_UTILS=ON + ) + use binutils-plugin && mycmakeargs+=( + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include + ) + fi + + if tc-is-cross-compiler; then + local tblgen="${BROOT}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen" + [[ -x "${tblgen}" ]] \ + || die "${tblgen} not found or usable" + mycmakeargs+=( + -DCMAKE_CROSSCOMPILING=ON + -DLLVM_TABLEGEN="${tblgen}" + ) + fi + + # workaround BMI bug in gcc-7 (fixed in 7.4) + # https://bugs.gentoo.org/649880 + # apply only to x86, https://bugs.gentoo.org/650506 + if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] && + [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]] + then + local CFLAGS="${CFLAGS} -mno-bmi" + local CXXFLAGS="${CXXFLAGS} -mno-bmi" + fi + + # LLVM can have very high memory consumption while linking, + # exhausting the limit on 32-bit linker executable + use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory" + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + cmake_src_configure + + grep -q -E "^CMAKE_PROJECT_VERSION_MAJOR(:.*)?=$(ver_cut 1)$" \ + CMakeCache.txt || + die "Incorrect version, did you update _LLVM_MASTER_MAJOR?" + multilib_is_native_abi && check_distribution_components +} + +multilib_src_compile() { + cmake_build distribution + + pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld + pax-mark m "${BUILD_DIR}"/bin/lli + pax-mark m "${BUILD_DIR}"/bin/lli-child-target + + if use test; then + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests + pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests + fi +} + +multilib_src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake_build check +} + +src_install() { + local MULTILIB_CHOST_TOOLS=( + /usr/lib/llvm/${SLOT}/bin/llvm-config + ) + + local MULTILIB_WRAPPED_HEADERS=( + /usr/include/llvm/Config/llvm-config.h + ) + + local LLVM_LDPATHS=() + multilib-minimal_src_install + + # move wrapped headers back + mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die +} + +multilib_src_install() { + DESTDIR=${D} cmake_build install-distribution + + # move headers to /usr/include for wrapping + rm -rf "${ED}"/usr/include || die + mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die + + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" ) +} + +multilib_src_install_all() { + local revord=$(( 9999 - ${SLOT} )) + newenvd - "60llvm-${revord}" <<-_EOF_ + PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin" + # we need to duplicate it in ROOTPATH for Portage to respect... + ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin" + MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )" + _EOF_ + + docompress "/usr/lib/llvm/${SLOT}/share/man" + llvm_install_manpages +} + +pkg_postinst() { + elog "You can find additional opt-viewer utility scripts in:" + elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/opt-viewer" + elog "To use these scripts, you will need Python along with the following" + elog "packages:" + elog " dev-python/pygments (for opt-viewer)" + elog " dev-python/pyyaml (for all of them)" +} diff --git a/sys-devel/llvmgold/Manifest b/sys-devel/llvmgold/Manifest new file mode 100644 index 0000000..53e3790 --- /dev/null +++ b/sys-devel/llvmgold/Manifest @@ -0,0 +1 @@ +EBUILD llvmgold-14.ebuild 576 BLAKE2B c9493f322fa0e387411df160c28078a514510e684f01c415a035c93868dd5a16ae718f10af0debe2e1a4112ea0864890a81a89ebf3fefc55ffdc89adc743524f SHA512 7cdb73379b9f6db22abde1f01043e28b8bfd797f3123f77d31ab3166e2c8d72747aad0963e8f6a41a0a01a19ea29eb468d869b5dbc7a35eb016a4a89c57715c3 diff --git a/sys-devel/llvmgold/llvmgold-14.ebuild b/sys-devel/llvmgold/llvmgold-14.ebuild new file mode 100644 index 0000000..484ce44 --- /dev/null +++ b/sys-devel/llvmgold/llvmgold-14.ebuild @@ -0,0 +1,23 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="LLVMgold plugin symlink for autoloading" +HOMEPAGE="https://llvm.org/" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv sparc x86 ~amd64-linux" + +RDEPEND=" + sys-devel/llvm:${PV}[binutils-plugin] + !sys-devel/llvm:0 +" + +src_install() { + dodir "/usr/${CHOST}/binutils-bin/lib/bfd-plugins" + dosym "../../../../lib/llvm/${PV}/$(get_libdir)/LLVMgold.so" \ + "/usr/${CHOST}/binutils-bin/lib/bfd-plugins/LLVMgold.so" +} diff --git a/sys-libs/compiler-rt-sanitizers/Manifest b/sys-libs/compiler-rt-sanitizers/Manifest new file mode 100644 index 0000000..bbe4a35 --- /dev/null +++ b/sys-libs/compiler-rt-sanitizers/Manifest @@ -0,0 +1,4 @@ +DIST llvm-gentoo-patchset-14.0.6-r3.tar.xz 16904 BLAKE2B ebf67455071d6d3744cfc0491b8a33c4c63bfdbcf668565fa0718f6cdb01bced53be9d1cdf6774f6cd8427c07c0ede69503d74cf3574642a6967b38730248ebb SHA512 adc5a3212657d1defa7b720d1a7e9e91586439a34964d44b6897d21be3d208bd15c04bf20502dd7125ef8c368defaeea146eb844ca321be56eebcee52be606a9 +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD compiler-rt-sanitizers-14.0.6.ebuild 6527 BLAKE2B 7432788f8b726b82cd14d04a9fd35d6658d858cece7430bc7314092eba81d9eb27d051fc70e7d7ae3895c26a00d42587a6fd7bbc53284fb073100409f8093fd1 SHA512 403a1a88fd4f9048fc350aece64fe5be8194dd349b667e8dc9d10c99314a0184826c3284e725425f10da3836b1baca2ea9adba47a4ba3cbabc4fa4de39d8b966 diff --git a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-14.0.6.ebuild b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-14.0.6.ebuild new file mode 100644 index 0000000..5c6aff3 --- /dev/null +++ b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-14.0.6.ebuild @@ -0,0 +1,223 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit check-reqs cmake flag-o-matic llvm llvm.org python-any-r1 + +DESCRIPTION="Compiler runtime libraries for clang (sanitizers & xray)" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="$(ver_cut 1-3)" +KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86 ~amd64-linux ~ppc-macos ~x64-macos" +IUSE="+abi_x86_32 abi_x86_64 +clang debug test" +# base targets +IUSE+=" +libfuzzer +memprof +orc +profile +xray" +# sanitizer targets, keep in sync with config-ix.cmake +# NB: ubsan, scudo deliberately match two entries +SANITIZER_FLAGS=( + asan dfsan lsan msan hwasan tsan ubsan safestack cfi scudo + shadowcallstack gwp-asan +) +IUSE+=" ${SANITIZER_FLAGS[@]/#/+}" +REQUIRED_USE=" + || ( ${SANITIZER_FLAGS[*]} libfuzzer orc profile xray ) + test? ( + cfi? ( ubsan ) + gwp-asan? ( scudo ) + ) +" +RESTRICT=" + !clang? ( test ) + !test? ( test ) +" + +LLVM_MAX_SLOT=${SLOT%%.*} +DEPEND=" + sys-devel/llvm:${LLVM_MAX_SLOT} + virtual/libcrypt[abi_x86_32(-)?,abi_x86_64(-)?] +" +BDEPEND=" + >=dev-build/cmake-3.16 + clang? ( sys-devel/clang ) + elibc_glibc? ( net-libs/libtirpc ) + test? ( + !!<sys-apps/sandbox-2.13 + $(python_gen_any_dep ">=dev-python/lit-5[\${PYTHON_USEDEP}]") + =sys-devel/clang-${PV%_*}*:${LLVM_MAX_SLOT} + sys-libs/compiler-rt:${SLOT} + ) + !test? ( + ${PYTHON_DEPS} + ) +" + +LLVM_COMPONENTS=( compiler-rt cmake ) +LLVM_TEST_COMPONENTS=( llvm/lib/Testing/Support llvm/utils/unittest ) +LLVM_PATCHSET=${PV}-r3 +llvm.org_set_globals + +python_check_deps() { + use test || return 0 + python_has_version ">=dev-python/lit-5[${PYTHON_USEDEP}]" +} + +check_space() { + if use test; then + local CHECKREQS_DISK_BUILD=11G + check-reqs_pkg_pretend + fi +} + +pkg_pretend() { + check_space +} + +pkg_setup() { + check_space + llvm_pkg_setup + python-any-r1_pkg_setup +} + +src_prepare() { + sed -i -e 's:-Werror::' lib/tsan/go/buildgo.sh || die + + local flag + for flag in "${SANITIZER_FLAGS[@]}"; do + if ! use "${flag}"; then + local cmake_flag=${flag/-/_} + sed -i -e "/COMPILER_RT_HAS_${cmake_flag^^}/s:TRUE:FALSE:" \ + cmake/config-ix.cmake || die + fi + done + + # TODO: fix these tests to be skipped upstream + if use asan && ! use profile; then + rm test/asan/TestCases/asan_and_llvm_coverage_test.cpp || die + fi + if use ubsan && ! use cfi; then + > test/cfi/CMakeLists.txt || die + fi + + llvm.org_src_prepare +} + +src_configure() { + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + # pre-set since we need to pass it to cmake + BUILD_DIR=${WORKDIR}/compiler-rt_build + + if use clang; then + local -x CC=${CHOST}-clang + local -x CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + local flag want_sanitizer=OFF + for flag in "${SANITIZER_FLAGS[@]}"; do + if use "${flag}"; then + want_sanitizer=ON + break + fi + done + + local mycmakeargs=( + -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}" + # use a build dir structure consistent with install + # this makes it possible to easily deploy test-friendly clang + -DCOMPILER_RT_OUTPUT_DIR="${BUILD_DIR}/lib/clang/${SLOT}" + + -DCOMPILER_RT_INCLUDE_TESTS=$(usex test) + # builtins & crt installed by sys-libs/compiler-rt + -DCOMPILER_RT_BUILD_BUILTINS=OFF + -DCOMPILER_RT_BUILD_CRT=OFF + -DCOMPILER_RT_BUILD_LIBFUZZER=$(usex libfuzzer) + -DCOMPILER_RT_BUILD_MEMPROF=$(usex memprof) + -DCOMPILER_RT_BUILD_ORC=$(usex orc) + -DCOMPILER_RT_BUILD_PROFILE=$(usex profile) + -DCOMPILER_RT_BUILD_SANITIZERS="${want_sanitizer}" + -DCOMPILER_RT_BUILD_XRAY=$(usex xray) + + -DPython3_EXECUTABLE="${PYTHON}" + ) + + if use amd64; then + mycmakeargs+=( + -DCAN_TARGET_i386=$(usex abi_x86_32) + -DCAN_TARGET_x86_64=$(usex abi_x86_64) + ) + fi + + if use test; then + mycmakeargs+=( + -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + + # they are created during src_test() + -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_MAX_SLOT}/bin/clang" + -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_MAX_SLOT}/bin/clang++" + ) + + # same flags are passed for build & tests, so we need to strip + # them down to a subset supported by clang + CC=${EPREFIX}/usr/lib/llvm/${LLVM_MAX_SLOT}/bin/clang \ + CXX=${EPREFIX}/usr/lib/llvm/${LLVM_MAX_SLOT}/bin/clang++ \ + strip-unsupported-flags + fi + + if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then + mycmakeargs+=( + # setting -isysroot is disabled with compiler-rt-prefix-paths.patch + # this allows adding arm64 support using SDK in EPREFIX + -DDARWIN_macosx_CACHED_SYSROOT="${EPREFIX}/MacOSX.sdk" + # Set version based on the SDK in EPREFIX + # This disables i386 for SDK >= 10.15 + # Will error if has_use tsan and SDK < 10.12 + -DDARWIN_macosx_OVERRIDE_SDK_VERSION="$(realpath ${EPREFIX}/MacOSX.sdk | sed -e 's/.*MacOSX\(.*\)\.sdk/\1/')" + # Use our libtool instead of looking it up with xcrun + -DCMAKE_LIBTOOL="${EPREFIX}/usr/bin/${CHOST}-libtool" + ) + fi + + cmake_src_configure + + if use test; then + local sys_dir=( "${EPREFIX}"/usr/lib/clang/${SLOT}/lib/* ) + [[ -e ${sys_dir} ]] || die "Unable to find ${sys_dir}" + [[ ${#sys_dir[@]} -eq 1 ]] || die "Non-deterministic compiler-rt install: ${sys_dir[*]}" + + # copy clang over since resource_dir is located relatively to binary + # therefore, we can put our new libraries in it + mkdir -p "${BUILD_DIR}"/lib/{llvm/${LLVM_MAX_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include} || die + cp "${EPREFIX}"/usr/lib/llvm/${LLVM_MAX_SLOT}/bin/clang{,++} \ + "${BUILD_DIR}"/lib/llvm/${LLVM_MAX_SLOT}/bin/ || die + cp "${EPREFIX}"/usr/lib/clang/${SLOT}/include/*.h \ + "${BUILD_DIR}"/lib/clang/${SLOT}/include/ || die + cp "${sys_dir}"/*builtins*.a \ + "${BUILD_DIR}/lib/clang/${SLOT}/lib/${sys_dir##*/}/" || die + # we also need LLVMgold.so for gold-based tests + if [[ -f ${EPREFIX}/usr/lib/llvm/${LLVM_MAX_SLOT}/$(get_libdir)/LLVMgold.so ]]; then + ln -s "${EPREFIX}"/usr/lib/llvm/${LLVM_MAX_SLOT}/$(get_libdir)/LLVMgold.so \ + "${BUILD_DIR}"/lib/llvm/${LLVM_MAX_SLOT}/$(get_libdir)/ || die + fi + fi +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + # disable sandbox to have it stop clobbering LD_PRELOAD + local -x SANDBOX_ON=0 + # wipe LD_PRELOAD to make ASAN happy + local -x LD_PRELOAD= + # avoid confusing with hardening, upstreamed for >= 16 + # https://github.com/llvm/llvm-project/issues/60394 + local -x CLANG_NO_DEFAULT_CONFIG=1 + + cmake_build check-all +} diff --git a/sys-libs/compiler-rt/Manifest b/sys-libs/compiler-rt/Manifest new file mode 100644 index 0000000..892ad26 --- /dev/null +++ b/sys-libs/compiler-rt/Manifest @@ -0,0 +1,4 @@ +DIST llvm-gentoo-patchset-14.0.6-r2.tar.xz 16120 BLAKE2B e12e522fdb7ba505693c679cb09cc8e00e6a954df195c86c2af4dbf1b68334a405b8dcc45f2e28b5e5e0b7e9d5eb7ba907337027927371b7a3b7784ff8aae7e0 SHA512 8a5ea71c30fc0727cc855dd812bbcb6d5f51c80c98eb3d5b80258d5c5eaab1310edc9d53ae63c2ca827abec68e2912c4b69ef0da351ff883fb30545a61e1d09c +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD compiler-rt-14.0.6-r1.ebuild 4249 BLAKE2B c766c058215042dc6671d00976f4ea24772637d5198912a869ce730fd5e24cf76d17c2775b10319cfc0363cf974f1f1e77110d2167eceb9180fe544db2574736 SHA512 362f44e366b4683c22413ac18e9c299303726d3c02514f51bca68e62bdddc826da609e5ee4a474b4a1402483e005457bfc250480afe4b42ca415e9255f32c8a0 diff --git a/sys-libs/compiler-rt/compiler-rt-14.0.6-r1.ebuild b/sys-libs/compiler-rt/compiler-rt-14.0.6-r1.ebuild new file mode 100644 index 0000000..c8f0ce1 --- /dev/null +++ b/sys-libs/compiler-rt/compiler-rt-14.0.6-r1.ebuild @@ -0,0 +1,151 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake flag-o-matic llvm llvm.org python-any-r1 toolchain-funcs + +DESCRIPTION="Compiler runtime library for clang (built-in part)" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="$(ver_cut 1-3)" +KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86 ~amd64-linux ~ppc-macos ~x64-macos" +IUSE="+abi_x86_32 abi_x86_64 +clang debug test" +RESTRICT="!test? ( test ) !clang? ( test )" + +LLVM_MAX_SLOT=${SLOT%%.*} +DEPEND=" + sys-devel/llvm:${LLVM_MAX_SLOT} +" +BDEPEND=" + >=dev-build/cmake-3.16 + clang? ( sys-devel/clang ) + test? ( + $(python_gen_any_dep ">=dev-python/lit-9.0.1[\${PYTHON_USEDEP}]") + =sys-devel/clang-${PV%_*}*:${LLVM_MAX_SLOT} + ) + !test? ( + ${PYTHON_DEPS} + ) +" + +LLVM_COMPONENTS=( compiler-rt cmake ) +LLVM_PATCHSET=${PV}-r2 +llvm.org_set_globals + +python_check_deps() { + use test || return 0 + python_has_version ">=dev-python/lit-9.0.1[${PYTHON_USEDEP}]" +} + +pkg_pretend() { + if ! use clang && ! tc-is-clang; then + ewarn "Building using a compiler other than clang may result in broken atomics" + ewarn "library. Enable USE=clang unless you have a very good reason not to." + fi +} + +pkg_setup() { + # Darwin Prefix builds do not have llvm installed yet, so rely on + # bootstrap-prefix to set the appropriate path vars to LLVM instead + # of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version sys-devel/llvm; then + llvm_pkg_setup + fi + python-any-r1_pkg_setup +} + +test_compiler() { + $(tc-getCC) ${CFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c - \ + <<<'int main() { return 0; }' &>/dev/null +} + +src_configure() { + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + # pre-set since we need to pass it to cmake + BUILD_DIR=${WORKDIR}/${P}_build + + if use clang; then + # Only do this conditionally to allow overriding with + # e.g. CC=clang-13 in case of breakage + if ! tc-is-clang ; then + local -x CC=${CHOST}-clang + local -x CXX=${CHOST}-clang++ + fi + + strip-unsupported-flags + fi + + if ! test_compiler; then + local nolib_flags=( -nodefaultlibs -lc ) + + if test_compiler "${nolib_flags[@]}"; then + local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}" + ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}" + elif test_compiler "${nolib_flags[@]}" -nostartfiles; then + # Avoiding -nostartfiles earlier on for bug #862540, + # and set available entry symbol for bug #862798. + nolib_flags+=( -nostartfiles -emain ) + + local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}" + ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}" + fi + fi + + local mycmakeargs=( + -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}" + + -DCOMPILER_RT_INCLUDE_TESTS=$(usex test) + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF + -DCOMPILER_RT_BUILD_MEMPROF=OFF + -DCOMPILER_RT_BUILD_ORC=OFF + -DCOMPILER_RT_BUILD_PROFILE=OFF + -DCOMPILER_RT_BUILD_SANITIZERS=OFF + -DCOMPILER_RT_BUILD_XRAY=OFF + + -DPython3_EXECUTABLE="${PYTHON}" + ) + + if use amd64; then + mycmakeargs+=( + -DCAN_TARGET_i386=$(usex abi_x86_32) + -DCAN_TARGET_x86_64=$(usex abi_x86_64) + ) + fi + + if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then + mycmakeargs+=( + # setting -isysroot is disabled with compiler-rt-prefix-paths.patch + # this allows adding arm64 support using SDK in EPREFIX + -DDARWIN_macosx_CACHED_SYSROOT="${EPREFIX}/MacOSX.sdk" + # Set version based on the SDK in EPREFIX. + # This disables i386 for SDK >= 10.15 + -DDARWIN_macosx_OVERRIDE_SDK_VERSION="$(realpath ${EPREFIX}/MacOSX.sdk | sed -e 's/.*MacOSX\(.*\)\.sdk/\1/')" + # Use our libtool instead of looking it up with xcrun + -DCMAKE_LIBTOOL="${EPREFIX}/usr/bin/${CHOST}-libtool" + ) + fi + + if use test; then + mycmakeargs+=( + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + + -DCOMPILER_RT_TEST_COMPILER="${EPREFIX}/usr/lib/llvm/${LLVM_MAX_SLOT}/bin/clang" + -DCOMPILER_RT_TEST_CXX_COMPILER="${EPREFIX}/usr/lib/llvm/${LLVM_MAX_SLOT}/bin/clang++" + ) + fi + + cmake_src_configure +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + + cmake_build check-builtins +} diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest new file mode 100644 index 0000000..3b98580 --- /dev/null +++ b/sys-libs/libcxx/Manifest @@ -0,0 +1,5 @@ +DIST llvm-gentoo-patchset-14.0.6-r2.tar.xz 16120 BLAKE2B e12e522fdb7ba505693c679cb09cc8e00e6a954df195c86c2af4dbf1b68334a405b8dcc45f2e28b5e5e0b7e9d5eb7ba907337027927371b7a3b7784ff8aae7e0 SHA512 8a5ea71c30fc0727cc855dd812bbcb6d5f51c80c98eb3d5b80258d5c5eaab1310edc9d53ae63c2ca827abec68e2912c4b69ef0da351ff883fb30545a61e1d09c +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD libcxx-14.0.6.ebuild 6950 BLAKE2B f4f8068f1b9dd1a8c22abd4acb4206da1dd7bb4eb029723a2edfe8c5db3a6ed74a677ba00c508ff54806a33b60b131ffd4b9729ed0d6d0bf5296a1e53e2ababf SHA512 a602e45046d931f28d2656bd733823d3289a993acd7399c5cd29915e65eb9ae0cb601f2774dad34534299366ecd9c038488e037b13af8b732f254e561f56c592 +MISC metadata.xml 718 BLAKE2B 3cc1e43a6f1ada368cfc0bf8aaf49007f6792062b684ab9299b5180d778b158325b6931169b52dd14e85ae9ad6dc1a03be323b814fb920fe8434ad86425d699c SHA512 c2cef3e481c0c3db7de6de8c0a5aff42a1e7fe81155d99f1f0f0988f6d5ca041f787a27a2dde0073037d59e082e2f6da7eefe1303f1c1837ebc12e8e0d28729f diff --git a/sys-libs/libcxx/libcxx-14.0.6.ebuild b/sys-libs/libcxx/libcxx-14.0.6.ebuild new file mode 100644 index 0000000..6921ede --- /dev/null +++ b/sys-libs/libcxx/libcxx-14.0.6.ebuild @@ -0,0 +1,227 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake-multilib llvm llvm.org python-any-r1 toolchain-funcs + +DESCRIPTION="New implementation of the C++ standard library, targeting C++11" +HOMEPAGE="https://libcxx.llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~riscv sparc x86 ~x64-macos" +IUSE="+libcxxabi +libunwind +static-libs test" +RESTRICT="!test? ( test )" +REQUIRED_USE="libunwind? ( libcxxabi )" + +RDEPEND=" + libcxxabi? ( + ~sys-libs/libcxxabi-${PV}[libunwind=,static-libs?,${MULTILIB_USEDEP}] + ) + !libcxxabi? ( >=sys-devel/gcc-4.7:=[cxx] ) +" +# llvm-6 for new lit options +# clang-3.9.0 installs necessary target symlinks unconditionally +# which removes the need for MULTILIB_USEDEP +DEPEND=" + ${RDEPEND} + >=sys-devel/llvm-6 +" +BDEPEND=" + !test? ( + ${PYTHON_DEPS} + ) + test? ( + >=dev-util/cmake-3.16 + >=sys-devel/clang-3.9.0 + sys-devel/gdb[python] + $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') + ) +" + +LLVM_COMPONENTS=( runtimes libcxx{,abi} llvm/{cmake,utils/llvm-lit} cmake ) +LLVM_PATCHSET=${PV}-r2 +llvm.org_set_globals + +python_check_deps() { + use test || return 0 + python_has_version "dev-python/lit[${PYTHON_USEDEP}]" +} + +pkg_setup() { + # Darwin Prefix builds do not have llvm installed yet, so rely on + # bootstrap-prefix to set the appropriate path vars to LLVM instead + # of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version sys-devel/llvm; then + llvm_pkg_setup + fi + python-any-r1_pkg_setup + + if ! use libcxxabi && ! tc-is-gcc ; then + eerror "To build ${PN} against libsupc++, you have to use gcc. Other" + eerror "compilers are not supported. Please set CC=gcc and CXX=g++" + eerror "and try again." + die + fi +} + +test_compiler() { + $(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c++ - \ + <<<'int main() { return 0; }' &>/dev/null +} + +src_configure() { + # note: we need to do this before multilib kicks in since it will + # alter the CHOST + local cxxabi cxxabi_incs + if use libcxxabi; then + cxxabi=system-libcxxabi + cxxabi_incs="${EPREFIX}/usr/include/libcxxabi" + else + local gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)" + cxxabi=libsupc++ + cxxabi_incs="${gcc_inc};${gcc_inc}/${CHOST}" + fi + + multilib-minimal_src_configure +} + +multilib_src_configure() { + # we want -lgcc_s for unwinder, and for compiler runtime when using + # gcc, clang with gcc runtime (or any unknown compiler) + local extra_libs=() want_gcc_s=ON want_compiler_rt=OFF + if use libunwind; then + # work-around missing -lunwind upstream + extra_libs+=( -lunwind ) + # if we're using libunwind and clang with compiler-rt, we want + # to link to compiler-rt instead of -lgcc_s + if tc-is-clang; then + local compiler_rt=$($(tc-getCC) ${CFLAGS} ${CPPFLAGS} \ + ${LDFLAGS} -print-libgcc-file-name) + if [[ ${compiler_rt} == *libclang_rt* ]]; then + want_gcc_s=OFF + want_compiler_rt=ON + extra_libs+=( "${compiler_rt}" ) + fi + fi + elif [[ ${CHOST} == *-darwin* ]] && tc-is-clang; then + # clang-based darwin prefix disables libunwind useflag during + # bootstrap, because libunwind is not in the prefix yet. + # override the default, though, because clang based libcxx + # should never use gcc_s on Darwin. + want_gcc_s=OFF + # compiler_rt is not available in EPREFIX during bootstrap, + # so we cannot link to it yet anyway, so keep the defaults + # of want_compiler_rt=OFF and extra_libs=() + fi + + # bootstrap: cmake is unhappy if compiler can't link to stdlib + local nolib_flags=( -nodefaultlibs -lc ) + if ! test_compiler; then + if test_compiler "${nolib_flags[@]}"; then + local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}" + ewarn "${CXX} seems to lack runtime, trying with ${nolib_flags[*]}" + fi + fi + + local libdir=$(get_libdir) + local mycmakeargs=( + -DPython3_EXECUTABLE="${PYTHON}" + -DLLVM_ENABLE_RUNTIMES=libcxx + -DLLVM_INCLUDE_TESTS=OFF + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + + -DLIBCXX_ENABLE_SHARED=ON + -DLIBCXX_ENABLE_STATIC=$(usex static-libs) + -DLIBCXX_CXX_ABI=${cxxabi} + -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi_incs} + # we're using our own mechanism for generating linker scripts + -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF + -DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl) + -DLIBCXX_HAS_GCC_S_LIB=${want_gcc_s} + -DLIBCXX_INCLUDE_BENCHMARKS=OFF + -DLIBCXX_INCLUDE_TESTS=$(usex test) + -DLIBCXX_USE_COMPILER_RT=${want_compiler_rt} + -DLIBCXX_HAS_ATOMIC_LIB=${want_gcc_s} + -DLIBCXX_TARGET_TRIPLE="${CHOST}" + -DCMAKE_SHARED_LINKER_FLAGS="${extra_libs[*]} ${LDFLAGS}" + ) + + if use test; then + local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null) + [[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests" + + mycmakeargs+=( + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags);--param=cxx_under_test=${clang_path}" + -DLIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI=ON + -DPython3_EXECUTABLE="${PYTHON}" + ) + fi + cmake_src_configure +} + +multilib_src_test() { + local -x LIT_PRESERVES_TMP=1 + cmake_build check-cxx +} + +# Usage: deps +gen_ldscript() { + local output_format + output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p') + [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )" + + cat <<-END_LDSCRIPT +/* GNU ld script + Include missing dependencies +*/ +${output_format} +GROUP ( $@ ) +END_LDSCRIPT +} + +gen_static_ldscript() { + local libdir=$(get_libdir) + local cxxabi_lib=$(usex libcxxabi "libc++abi.a" "libsupc++.a") + + # Move it first. + mv "${ED}/usr/${libdir}/libc++.a" "${ED}/usr/${libdir}/libc++_static.a" || die + # Generate libc++.a ldscript for inclusion of its dependencies so that + # clang++ -stdlib=libc++ -static works out of the box. + local deps="libc++_static.a ${cxxabi_lib} $(usex libunwind libunwind.a libgcc_eh.a)" + # On Linux/glibc it does not link without libpthread or libdl. It is + # fine on FreeBSD. + use elibc_glibc && deps+=" libpthread.a libdl.a" + + gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.a" || die +} + +gen_shared_ldscript() { + local libdir=$(get_libdir) + # libsupc++ doesn't have a shared version + local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "libsupc++.a") + + mv "${ED}/usr/${libdir}/libc++.so" "${ED}/usr/${libdir}/libc++_shared.so" || die + local deps="libc++_shared.so ${cxxabi_lib} $(usex libunwind libunwind.so libgcc_s.so)" + + gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.so" || die +} + +multilib_src_install() { + cmake_src_install + if [[ ${CHOST} != *-darwin* ]] ; then + gen_shared_ldscript + use static-libs && gen_static_ldscript + fi +} + +pkg_postinst() { + elog "This package (${PN}) is mainly intended as a replacement for the C++" + elog "standard library when using clang." + elog "To use it, instead of libstdc++, use:" + elog " clang++ -stdlib=libc++" + elog "to compile your C++ programs." +} diff --git a/sys-libs/libcxx/metadata.xml b/sys-libs/libcxx/metadata.xml new file mode 100644 index 0000000..7a7eb9b --- /dev/null +++ b/sys-libs/libcxx/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>gerion.entrup@flump.de</email> + <name>Gerion Entrup</name> + </maintainer> + <use> + <flag name="clang">Force building using installed clang (rather + than the default CC/CXX; required for testing).</flag> + <flag name="libcxxabi">Build on top of <pkg>sys-libs/libcxxabi</pkg> instead of gcc's libsupc++ (avoids depending on gcc).</flag> + <flag name="libunwind">Use libunwind instead of libgcc_s for stack unwinding, thus avoiding dependence on gcc.</flag> + </use> + <upstream> + <remote-id type="github">llvm/llvm-project</remote-id> + </upstream> +</pkgmetadata> diff --git a/sys-libs/libcxxabi/Manifest b/sys-libs/libcxxabi/Manifest new file mode 100644 index 0000000..857de33 --- /dev/null +++ b/sys-libs/libcxxabi/Manifest @@ -0,0 +1,4 @@ +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD libcxxabi-14.0.6.ebuild 3386 BLAKE2B 25c436f437060cdc323ff18e34d8694f558f100f81b990077ed584b7cacabb54fcaa74e67c07179d84dbd8e184f51d157b2bc8d2f48efc607985234b716840f2 SHA512 481c84912363d33b8582b61ed655be3dad86038de100c9ecf072f8bb11d850e25aa587fd43bd19dd84c280a968d2950360115f414f61748d726224aade36da6e +MISC metadata.xml 557 BLAKE2B 4f6b0acb7cfdf74971a6fd96051d9f9020141c6117333a8de42bd043935b7bff8d9942faabdf3b1c94597c460393f64eb7d3f7b7d49f39ecfd0094de460f563e SHA512 67a812ef768e681ae77ef6e13bccffcbe53b41e94901f0558b3c7acaf896605ca670c4bb5a690bd9afa3b5a76271341710520a6abc0024c18f437fabde20e847 diff --git a/sys-libs/libcxxabi/libcxxabi-14.0.6.ebuild b/sys-libs/libcxxabi/libcxxabi-14.0.6.ebuild new file mode 100644 index 0000000..32b26c8 --- /dev/null +++ b/sys-libs/libcxxabi/libcxxabi-14.0.6.ebuild @@ -0,0 +1,125 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake-multilib llvm llvm.org python-any-r1 toolchain-funcs + +DESCRIPTION="Low level support for a standard C++ library" +HOMEPAGE="https://libcxxabi.llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~riscv sparc x86 ~x64-macos" +IUSE="+libunwind +static-libs test" +RESTRICT="!test? ( test )" + +RDEPEND=" + libunwind? ( + || ( + >=sys-libs/libunwind-1.0.1-r1[static-libs?,${MULTILIB_USEDEP}] + >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,${MULTILIB_USEDEP}] + ) + ) +" +# llvm-6 for new lit options +DEPEND=" + ${RDEPEND} + >=sys-devel/llvm-6 +" +BDEPEND=" + !test? ( + ${PYTHON_DEPS} + ) + test? ( + >=sys-devel/clang-3.9.0 + $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') + ) +" + +LLVM_COMPONENTS=( runtimes libcxx{abi,} llvm/cmake cmake ) +LLVM_TEST_COMPONENTS=( llvm/utils/llvm-lit ) +llvm.org_set_globals + +python_check_deps() { + use test || return 0 + python_has_version "dev-python/lit[${PYTHON_USEDEP}]" +} + +pkg_setup() { + # darwin prefix builds do not have llvm installed yet, so rely on bootstrap-prefix + # to set the appropriate path vars to LLVM instead of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version sys-devel/llvm; then + llvm_pkg_setup + fi + python-any-r1_pkg_setup +} + +multilib_src_configure() { + # link against compiler-rt instead of libgcc if we are using clang with libunwind + local want_compiler_rt=OFF + if use libunwind && [[ $(tc-get-c-rtlib) == compiler-rt ]]; then + want_compiler_rt=ON + fi + + local libdir=$(get_libdir) + local mycmakeargs=( + -DPython3_EXECUTABLE="${PYTHON}" + -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx" + -DLLVM_INCLUDE_TESTS=OFF + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + -DLIBCXXABI_ENABLE_SHARED=ON + -DLIBCXXABI_ENABLE_STATIC=$(usex static-libs) + -DLIBCXXABI_INCLUDE_TESTS=$(usex test) + -DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind) + -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt} + + # upstream is omitting standard search path for this + # probably because gcc & clang are bundling their own unwind.h + -DLIBCXXABI_LIBUNWIND_INCLUDES="${EPREFIX}"/usr/include + -DLIBCXXABI_TARGET_TRIPLE="${CHOST}" + + -DLIBCXX_LIBDIR_SUFFIX= + -DLIBCXX_ENABLE_SHARED=ON + -DLIBCXX_ENABLE_STATIC=OFF + -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF + -DLIBCXX_CXX_ABI=libcxxabi + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="${WORKDIR}"/libcxxabi/include + -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF + -DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl) + -DLIBCXX_HAS_GCC_S_LIB=OFF + -DLIBCXX_INCLUDE_BENCHMARKS=OFF + -DLIBCXX_INCLUDE_TESTS=OFF + -DLIBCXX_TARGET_TRIPLE="${CHOST}" + ) + if use test; then + local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null) + [[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests" + + mycmakeargs+=( + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags);--param=cxx_under_test=${clang_path}" + -DPython3_EXECUTABLE="${PYTHON}" + ) + fi + cmake_src_configure +} + +multilib_src_compile() { + cmake_build cxxabi +} + +multilib_src_test() { + local -x LIT_PRESERVES_TMP=1 + cmake_build check-cxxabi +} + +multilib_src_install() { + DESTDIR="${D}" cmake_build install-cxxabi +} + +multilib_src_install_all() { + insinto /usr/include/libcxxabi + doins -r "${WORKDIR}"/libcxxabi/include/. +} diff --git a/sys-libs/libcxxabi/metadata.xml b/sys-libs/libcxxabi/metadata.xml new file mode 100644 index 0000000..be8f422 --- /dev/null +++ b/sys-libs/libcxxabi/metadata.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>gerion.entrup@flump.de</email> + <name>Gerion Entrup</name> + </maintainer> + <use> + <flag name="clang">Force building using installed clang (rather + than the default CC/CXX; required for testing).</flag> + <flag name="libunwind">Use libunwind instead of libgcc_s for stack unwinding, thus avoiding dependency on gcc</flag> + </use> + <upstream> + <remote-id type="github">llvm/llvm-project</remote-id> + </upstream> +</pkgmetadata> diff --git a/sys-libs/libomp/Manifest b/sys-libs/libomp/Manifest new file mode 100644 index 0000000..a0137e9 --- /dev/null +++ b/sys-libs/libomp/Manifest @@ -0,0 +1,5 @@ +DIST llvm-gentoo-patchset-14.0.6-r2.tar.xz 16120 BLAKE2B e12e522fdb7ba505693c679cb09cc8e00e6a954df195c86c2af4dbf1b68334a405b8dcc45f2e28b5e5e0b7e9d5eb7ba907337027927371b7a3b7784ff8aae7e0 SHA512 8a5ea71c30fc0727cc855dd812bbcb6d5f51c80c98eb3d5b80258d5c5eaab1310edc9d53ae63c2ca827abec68e2912c4b69ef0da351ff883fb30545a61e1d09c +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD libomp-14.0.6-r1.ebuild 3917 BLAKE2B d92540af690dd622122ad1a4ed2548afa141f1254fbe9a9b3d34286b36f0fa70ccaf915f218c1bea8c68377ea20724db9443d365e2e5f290707f444d3ff47ca5 SHA512 433ae63716103af5aa493c7dbae43f10003cac95abaae579dcb61cba6390da4b9b3fc921e410ba899719bd170fa153a7b3d66c8776c37fd074066173c1fea160 +MISC metadata.xml 963 BLAKE2B fdea4545db21492049061b85eaa7038965183e10aceae7c41daadc1ce10e7e1bcb2e86344659787ee244360b50b51c99e1a348d3acd2185dac80097541a00dd7 SHA512 c279f8e9c2463dc3f6e02856e520105d6f3321b633439bfe7409bfd6e7e43f1450053dc4f6663492caf7077caf3f4ab0f5cf0161631639e3aefa9ff985dc476f diff --git a/sys-libs/libomp/libomp-14.0.6-r1.ebuild b/sys-libs/libomp/libomp-14.0.6-r1.ebuild new file mode 100644 index 0000000..9e03f27 --- /dev/null +++ b/sys-libs/libomp/libomp-14.0.6-r1.ebuild @@ -0,0 +1,145 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit flag-o-matic cmake-multilib linux-info llvm llvm.org python-any-r1 + +DESCRIPTION="OpenMP runtime library for LLVM/clang compiler" +HOMEPAGE="https://openmp.llvm.org" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv x86 ~amd64-linux ~x64-macos" +IUSE=" + cuda debug hwloc offload ompt test + llvm_targets_AMDGPU llvm_targets_NVPTX +" +RESTRICT="!test? ( test )" +# CUDA works only with the x86_64 ABI +REQUIRED_USE=" + cuda? ( llvm_targets_NVPTX ) + offload? ( cuda? ( abi_x86_64 ) ) +" + +RDEPEND=" + hwloc? ( >=sys-apps/hwloc-2.5:0=[${MULTILIB_USEDEP}] ) + offload? ( + virtual/libelf:=[${MULTILIB_USEDEP}] + dev-libs/libffi:=[${MULTILIB_USEDEP}] + ~sys-devel/llvm-${PV}[${MULTILIB_USEDEP}] + cuda? ( dev-util/nvidia-cuda-toolkit:= ) + ) +" +# tests: +# - dev-python/lit provides the test runner +# - sys-devel/llvm provide test utils (e.g. FileCheck) +# - sys-devel/clang provides the compiler to run tests +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + dev-lang/perl + offload? ( + llvm_targets_AMDGPU? ( sys-devel/clang ) + llvm_targets_NVPTX? ( sys-devel/clang ) + virtual/pkgconfig + ) + test? ( + $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') + sys-devel/clang + ) +" + +LLVM_COMPONENTS=( openmp llvm/include ) +LLVM_PATCHSET=${PV}-r2 +llvm.org_set_globals + +python_check_deps() { + python_has_version "dev-python/lit[${PYTHON_USEDEP}]" +} + +kernel_pds_check() { + if use kernel_linux && kernel_is -lt 4 15 && kernel_is -ge 4 13; then + local CONFIG_CHECK="~!SCHED_PDS" + local ERROR_SCHED_PDS="\ +PDS scheduler versions >= 0.98c < 0.98i (e.g. used in kernels >= 4.13-pf11 +< 4.14-pf9) do not implement sched_yield() call which may result in horrible +performance problems with libomp. If you are using one of the specified +kernel versions, you may want to disable the PDS scheduler." + + check_extra_config + fi +} + +pkg_pretend() { + kernel_pds_check +} + +pkg_setup() { + use offload && LLVM_MAX_SLOT=${PV%%.*} llvm_pkg_setup + use test && python-any-r1_pkg_setup +} + +multilib_src_configure() { + # LTO causes issues in other packages building, #870127 + filter-lto + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + local libdir="$(get_libdir)" + local mycmakeargs=( + -DOPENMP_LIBDIR_SUFFIX="${libdir#lib}" + + -DLIBOMP_USE_HWLOC=$(usex hwloc) + -DLIBOMP_OMPT_SUPPORT=$(usex ompt) + + -DOPENMP_ENABLE_LIBOMPTARGET=$(usex offload) + + # do not install libgomp.so & libiomp5.so aliases + -DLIBOMP_INSTALL_ALIASES=OFF + # disable unnecessary hack copying stuff back to srcdir + -DLIBOMP_COPY_EXPORTS=OFF + ) + + if use offload; then + if has "${CHOST%%-*}" aarch64 powerpc64le x86_64; then + mycmakeargs+=( + -DCMAKE_DISABLE_FIND_PACKAGE_CUDA=$(usex !cuda) + -DLIBOMPTARGET_BUILD_AMDGCN_BCLIB=$(usex llvm_targets_AMDGPU) + -DLIBOMPTARGET_BUILD_NVPTX_BCLIB=$(usex llvm_targets_NVPTX) + # a cheap hack to force clang + -DLIBOMPTARGET_NVPTX_CUDA_COMPILER="$(type -P "${CHOST}-clang")" + # upstream defaults to looking for it in clang dir + # this fails when ccache is being used + -DLIBOMPTARGET_NVPTX_BC_LINKER="$(type -P llvm-link)" + ) + else + mycmakeargs+=( + -DCMAKE_DISABLE_FIND_PACKAGE_CUDA=ON + -DLIBOMPTARGET_BUILD_AMDGCN_BCLIB=OFF + -DLIBOMPTARGET_BUILD_NVPTX_BCLIB=OFF + ) + fi + fi + + 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++")" + ) + addpredict /dev/nvidiactl + cmake_src_configure +} + +multilib_src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + + cmake_build check-libomp +} diff --git a/sys-libs/libomp/metadata.xml b/sys-libs/libomp/metadata.xml new file mode 100644 index 0000000..b18c2f1 --- /dev/null +++ b/sys-libs/libomp/metadata.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>gerion.entrup@flump.de</email> + <name>Gerion Entrup</name> + </maintainer> + <use> + <flag name="cuda">Build CUDA offloading plugin (only with USE=offload)</flag> + <flag name="gdb-plugin">Build OMPD GDB plugin</flag> + <flag name="hwloc">Enable CPU affinity support via hwloc</flag> + <flag name="offload">Support offloading OpenMP using libomptarget</flag> + <flag name="ompt">Enable OpenMP Tools Interface support</flag> + </use> + <longdescription>The OpenMP subproject of LLVM is intended to contain all of the components required to build an executing OpenMP program that are outside the compiler itself.</longdescription> + <upstream> + <remote-id type="github">llvm/llvm-project</remote-id> + </upstream> +</pkgmetadata> diff --git a/sys-libs/llvm-libunwind/Manifest b/sys-libs/llvm-libunwind/Manifest new file mode 100644 index 0000000..b4eb482 --- /dev/null +++ b/sys-libs/llvm-libunwind/Manifest @@ -0,0 +1,3 @@ +DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f15e428f22a536a17e5f4e3eb29a003b8a8ec0abe0fa3e072591161d5f30ef7d8867c1ce34d1b341ad858e93c00263499941a99 SHA512 6fc6eeb60fac698702d1aac495fc0161eb7216a1f8db2020af8fccec5837831f7cc20dc2a169bf4f0b5f520748280b4a86621f3697d622aa58faaa45dbfaad13 +DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 +EBUILD llvm-libunwind-14.0.6-r1.ebuild 3161 BLAKE2B ba7b19ed2bc77b52eee0b04d938541d2eb4053b65a641e55e54ebac85adcd432fa60b2b484003890bc96be83d61410bb58c2f3a86f12a7c574044a8e10427db9 SHA512 11854f9ef2a552a96e51c618958e553d4cd4affc78312845a223d0fe6d2ff62e8f8b2b3c29ad4a093b08a6df63b230f21b9ef6b63440058322f6a00f160df3e4 diff --git a/sys-libs/llvm-libunwind/llvm-libunwind-14.0.6-r1.ebuild b/sys-libs/llvm-libunwind/llvm-libunwind-14.0.6-r1.ebuild new file mode 100644 index 0000000..a1133ea --- /dev/null +++ b/sys-libs/llvm-libunwind/llvm-libunwind-14.0.6-r1.ebuild @@ -0,0 +1,119 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit cmake-multilib flag-o-matic llvm llvm.org python-any-r1 toolchain-funcs + +DESCRIPTION="C++ runtime stack unwinder from LLVM" +HOMEPAGE="https://llvm.org/docs/ExceptionHandling.html" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~ppc ppc64 ~riscv sparc x86 ~x64-macos" +IUSE="debug static-libs test" +RESTRICT="!test? ( test )" + +RDEPEND=" + !sys-libs/libunwind +" +# llvm-6 for new lit options +DEPEND=" + >=sys-devel/llvm-6 +" +BDEPEND=" + !test? ( + ${PYTHON_DEPS} + ) + test? ( + >=sys-devel/clang-3.9.0 + $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') + ) +" + +LLVM_COMPONENTS=( runtimes libunwind libcxx llvm/cmake cmake ) +LLVM_TEST_COMPONENTS=( libcxxabi llvm/utils/llvm-lit ) +llvm.org_set_globals + +python_check_deps() { + use test || return 0 + python_has_version "dev-python/lit[${PYTHON_USEDEP}]" +} + +multilib_src_configure() { + local libdir=$(get_libdir) + + # https://github.com/llvm/llvm-project/issues/56825 + # also separately bug #863917 + filter-lto + + # link to compiler-rt + # https://github.com/gentoo/gentoo/pull/21516 + local use_compiler_rt=OFF + [[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON + + local mycmakeargs=( + -DPython3_EXECUTABLE="${PYTHON}" + -DLLVM_ENABLE_RUNTIMES="libunwind" + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + -DLLVM_INCLUDE_TESTS=OFF + -DLIBUNWIND_ENABLE_ASSERTIONS=$(usex debug) + -DLIBUNWIND_ENABLE_STATIC=$(usex static-libs) + -DLIBUNWIND_INCLUDE_TESTS=$(usex test) + -DLIBUNWIND_INSTALL_HEADERS=ON + -DLIBUNWIND_TARGET_TRIPLE="${CHOST}" + + # support non-native unwinding; given it's small enough, + # enable it unconditionally + -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON + + # avoid dependency on libgcc_s if compiler-rt is used + -DLIBUNWIND_USE_COMPILER_RT=${use_compiler_rt} + ) + if use test; then + mycmakeargs+=( + -DLLVM_ENABLE_RUNTIMES="libunwind;libcxxabi;libcxx" + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + -DLIBUNWIND_LIBCXX_PATH="${WORKDIR}/libcxx" + + -DLIBCXXABI_LIBDIR_SUFFIX= + -DLIBCXXABI_ENABLE_SHARED=OFF + -DLIBCXXABI_ENABLE_STATIC=ON + -DLIBCXXABI_USE_LLVM_UNWINDER=ON + -DLIBCXXABI_INCLUDE_TESTS=OFF + + -DLIBCXX_LIBDIR_SUFFIX= + -DLIBCXX_ENABLE_SHARED=OFF + -DLIBCXX_ENABLE_STATIC=ON + -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF + -DLIBCXX_CXX_ABI=libcxxabi + -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF + -DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl) + -DLIBCXX_HAS_GCC_S_LIB=OFF + -DLIBCXX_INCLUDE_TESTS=OFF + -DLIBCXX_INCLUDE_BENCHMARKS=OFF + ) + fi + + cmake_src_configure + + if use test; then + local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null) + [[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests" + + # meh, we need to override the compiler explicitly + sed -e "/%{cxx}/s@, '.*'@, '${clang_path}'@" \ + -i "${BUILD_DIR}"/libunwind/test/lit.site.cfg || die + fi +} + +multilib_src_test() { + local -x LIT_PRESERVES_TMP=1 + cmake_build check-unwind +} + +multilib_src_install() { + DESTDIR=${D} cmake_build install-unwind +} |