diff options
| author | Michał Górny <mgorny@gentoo.org> | 2025-09-02 16:32:22 +0200 |
|---|---|---|
| committer | Michał Górny <mgorny@gentoo.org> | 2025-09-02 16:32:22 +0200 |
| commit | b8500b6fadfa86d3a8bd2a5953e25e7d56fe8c5d (patch) | |
| tree | cb866d08bf59cf309ccce1b1d5c9a435d5d4e5d2 /llvm-runtimes | |
| parent | 7a05d3b7513afa0cd42488ecf22350fcef9ac1d2 (diff) | |
| download | gentoo-b8500b6fadfa86d3a8bd2a5953e25e7d56fe8c5d.tar.gz gentoo-b8500b6fadfa86d3a8bd2a5953e25e7d56fe8c5d.tar.bz2 gentoo-b8500b6fadfa86d3a8bd2a5953e25e7d56fe8c5d.zip | |
Move {llvm-core → llvm-runtimes}/clang-runtime
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'llvm-runtimes')
11 files changed, 841 insertions, 0 deletions
diff --git a/llvm-runtimes/clang-runtime/clang-runtime-15.0.7.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-15.0.7.ebuild new file mode 100644 index 000000000000..45a3f0c61896 --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-15.0.7.ebuild @@ -0,0 +1,26 @@ +# Copyright 1999-2025 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? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] ) +" diff --git a/llvm-runtimes/clang-runtime/clang-runtime-16.0.6.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-16.0.6.ebuild new file mode 100644 index 000000000000..3db3e487be91 --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-16.0.6.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-build toolchain-funcs + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" + +LICENSE="metapackage" +SLOT="${PV%%.*}" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE="+compiler-rt libcxx openmp +sanitize" +REQUIRED_USE="sanitize? ( compiler-rt )" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] ) +" + +pkg_pretend() { + if tc-is-clang; then + ewarn "You seem to be using clang as a system compiler. As of clang-16," + ewarn "upstream has turned a few warnings that commonly occur during" + ewarn "configure script runs into errors by default. This causes some" + ewarn "configure tests to start failing, sometimes resulting in silent" + ewarn "breakage, missing functionality or runtime misbehavior. It is" + ewarn "not yet clear whether the change will remain or be reverted." + ewarn + ewarn "For more information, please see:" + ewarn "https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213" + fi +} diff --git a/llvm-runtimes/clang-runtime/clang-runtime-17.0.6.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-17.0.6.ebuild new file mode 100644 index 000000000000..3db3e487be91 --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-17.0.6.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-build toolchain-funcs + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" + +LICENSE="metapackage" +SLOT="${PV%%.*}" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE="+compiler-rt libcxx openmp +sanitize" +REQUIRED_USE="sanitize? ( compiler-rt )" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] ) +" + +pkg_pretend() { + if tc-is-clang; then + ewarn "You seem to be using clang as a system compiler. As of clang-16," + ewarn "upstream has turned a few warnings that commonly occur during" + ewarn "configure script runs into errors by default. This causes some" + ewarn "configure tests to start failing, sometimes resulting in silent" + ewarn "breakage, missing functionality or runtime misbehavior. It is" + ewarn "not yet clear whether the change will remain or be reverted." + ewarn + ewarn "For more information, please see:" + ewarn "https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213" + fi +} diff --git a/llvm-runtimes/clang-runtime/clang-runtime-18.1.8.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-18.1.8.ebuild new file mode 100644 index 000000000000..552d0646e540 --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-18.1.8.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-build toolchain-funcs + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" + +LICENSE="metapackage" +SLOT="${PV%%.*}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE="+compiler-rt libcxx openmp +sanitize" +REQUIRED_USE="sanitize? ( compiler-rt )" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] ) +" + +pkg_pretend() { + if tc-is-clang; then + ewarn "You seem to be using clang as a system compiler. As of clang-16," + ewarn "upstream has turned a few warnings that commonly occur during" + ewarn "configure script runs into errors by default. This causes some" + ewarn "configure tests to start failing, sometimes resulting in silent" + ewarn "breakage, missing functionality or runtime misbehavior. It is" + ewarn "not yet clear whether the change will remain or be reverted." + ewarn + ewarn "For more information, please see:" + ewarn "https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213" + fi +} diff --git a/llvm-runtimes/clang-runtime/clang-runtime-19.1.7.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-19.1.7.ebuild new file mode 100644 index 000000000000..7bcb9295b327 --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-19.1.7.ebuild @@ -0,0 +1,31 @@ +# Copyright 1999-2025 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="${PV%%.*}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE="+compiler-rt libcxx offload openmp +sanitize" +REQUIRED_USE="sanitize? ( compiler-rt )" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( + >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] + offload? ( + >=llvm-runtimes/offload-${PV} + ) + ) +" diff --git a/llvm-runtimes/clang-runtime/clang-runtime-20.1.8-r1.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-20.1.8-r1.ebuild new file mode 100644 index 000000000000..0d8e7175a9df --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-20.1.8-r1.ebuild @@ -0,0 +1,127 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib multilib-build + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV%%.*}" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE=" + +compiler-rt libcxx offload openmp +sanitize + default-compiler-rt default-libcxx default-lld llvm-libunwind polly +" +REQUIRED_USE=" + sanitize? ( compiler-rt ) +" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( + >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] + offload? ( + >=llvm-runtimes/offload-${PV} + ) + ) + + llvm-core/clang-common + + ~llvm-core/clang-linker-config-${SLOT}[default-lld(-)?] + ~llvm-runtimes/clang-rtlib-config-${SLOT}[default-compiler-rt(-)?] + ~llvm-runtimes/clang-unwindlib-config-${SLOT}[default-compiler-rt(-)?,llvm-libunwind(-)?] + ~llvm-runtimes/clang-stdlib-config-${SLOT}[default-libcxx(-)?] + + polly? ( ~llvm-core/polly-${PV} ) +" + +_doclang_cfg() { + local triple="${1}" + + local tool + for tool in ${triple}-clang{,++,-cpp}; do + newins - "${tool}.cfg" <<-EOF + # This configuration file is used by ${tool} driver. + @../${tool}.cfg + @gentoo-plugins.cfg + @gentoo-runtimes.cfg + EOF + done + + # Install symlinks for triples with other vendor strings since some + # programs insist on mangling the triple. + local vendor + for vendor in gentoo pc unknown; do + local vendor_triple="${triple%%-*}-${vendor}-${triple#*-*-}" + for tool in clang{,++,-cpp}; do + if [[ ! -f "${ED}/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" ]]; then + dosym "${triple}-${tool}.cfg" "/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" + fi + done + done +} + +doclang_cfg() { + local triple=$(get_abi_CHOST "${abi}") + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + +src_install() { + insinto "/etc/clang/${SLOT}" + newins - gentoo-runtimes.cfg <<-EOF + # This file is initially generated by llvm-runtimes/clang-runtime. + # It is used to control the default runtimes using by clang. + + @gentoo-rtlib.cfg + @gentoo-unwindlib.cfg + @gentoo-stdlib.cfg + @gentoo-linker.cfg + EOF + newins - gentoo-plugins.cfg <<-EOF + # This file is used to load optional LLVM plugins. + EOF + if use polly; then + cat >> "${ED}/etc/clang/${SLOT}/gentoo-plugins.cfg" <<-EOF || die + -fpass-plugin=LLVMPolly.so + -fplugin=LLVMPolly.so + EOF + fi + + multilib_foreach_abi doclang_cfg +} diff --git a/llvm-runtimes/clang-runtime/clang-runtime-20.1.8.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-20.1.8.ebuild new file mode 100644 index 000000000000..6df1a5baf4bf --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-20.1.8.ebuild @@ -0,0 +1,131 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib multilib-build + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV%%.*}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE=" + +compiler-rt libcxx offload openmp +sanitize + default-compiler-rt default-libcxx default-lld llvm-libunwind polly +" +REQUIRED_USE=" + sanitize? ( compiler-rt ) +" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( + >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] + offload? ( + >=llvm-runtimes/offload-${PV} + ) + ) + + llvm-core/clang-common + default-compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + llvm-libunwind? ( llvm-runtimes/libunwind[static-libs] ) + !llvm-libunwind? ( sys-libs/libunwind[static-libs] ) + ) + !default-compiler-rt? ( sys-devel/gcc ) + default-libcxx? ( >=llvm-runtimes/libcxx-${PV}[static-libs] ) + !default-libcxx? ( sys-devel/gcc ) + default-lld? ( ~llvm-core/lld-${PV} ) + !default-lld? ( sys-devel/binutils ) + polly? ( ~llvm-core/polly-${PV} ) +" + +_doclang_cfg() { + local triple="${1}" + + local tool + for tool in ${triple}-clang{,++,-cpp}; do + newins - "${tool}.cfg" <<-EOF + # This configuration file is used by ${tool} driver. + @../${tool}.cfg + @gentoo-plugins.cfg + @gentoo-runtimes.cfg + EOF + done + + # Install symlinks for triples with other vendor strings since some + # programs insist on mangling the triple. + local vendor + for vendor in gentoo pc unknown; do + local vendor_triple="${triple%%-*}-${vendor}-${triple#*-*-}" + for tool in clang{,++,-cpp}; do + if [[ ! -f "${ED}/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" ]]; then + dosym "${triple}-${tool}.cfg" "/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" + fi + done + done +} + +doclang_cfg() { + local triple=$(get_abi_CHOST "${abi}") + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + +src_install() { + insinto "/etc/clang/${SLOT}" + newins - gentoo-runtimes.cfg <<-EOF + # This file is initially generated by llvm-runtimes/clang-runtime. + # It is used to control the default runtimes using by clang. + + --rtlib=$(usex default-compiler-rt compiler-rt libgcc) + --unwindlib=$(usex default-compiler-rt libunwind libgcc) + --stdlib=$(usex default-libcxx libc++ libstdc++) + -fuse-ld=$(usex default-lld lld bfd) + EOF + newins - gentoo-plugins.cfg <<-EOF + # This file is used to load optional LLVM plugins. + EOF + if use polly; then + cat >> "${ED}/etc/clang/${SLOT}/gentoo-plugins.cfg" <<-EOF || die + -fpass-plugin=LLVMPolly.so + -fplugin=LLVMPolly.so + EOF + fi + + multilib_foreach_abi doclang_cfg +} diff --git a/llvm-runtimes/clang-runtime/clang-runtime-21.1.0-r1.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-21.1.0-r1.ebuild new file mode 100644 index 000000000000..0d8e7175a9df --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-21.1.0-r1.ebuild @@ -0,0 +1,127 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib multilib-build + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV%%.*}" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE=" + +compiler-rt libcxx offload openmp +sanitize + default-compiler-rt default-libcxx default-lld llvm-libunwind polly +" +REQUIRED_USE=" + sanitize? ( compiler-rt ) +" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( + >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] + offload? ( + >=llvm-runtimes/offload-${PV} + ) + ) + + llvm-core/clang-common + + ~llvm-core/clang-linker-config-${SLOT}[default-lld(-)?] + ~llvm-runtimes/clang-rtlib-config-${SLOT}[default-compiler-rt(-)?] + ~llvm-runtimes/clang-unwindlib-config-${SLOT}[default-compiler-rt(-)?,llvm-libunwind(-)?] + ~llvm-runtimes/clang-stdlib-config-${SLOT}[default-libcxx(-)?] + + polly? ( ~llvm-core/polly-${PV} ) +" + +_doclang_cfg() { + local triple="${1}" + + local tool + for tool in ${triple}-clang{,++,-cpp}; do + newins - "${tool}.cfg" <<-EOF + # This configuration file is used by ${tool} driver. + @../${tool}.cfg + @gentoo-plugins.cfg + @gentoo-runtimes.cfg + EOF + done + + # Install symlinks for triples with other vendor strings since some + # programs insist on mangling the triple. + local vendor + for vendor in gentoo pc unknown; do + local vendor_triple="${triple%%-*}-${vendor}-${triple#*-*-}" + for tool in clang{,++,-cpp}; do + if [[ ! -f "${ED}/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" ]]; then + dosym "${triple}-${tool}.cfg" "/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" + fi + done + done +} + +doclang_cfg() { + local triple=$(get_abi_CHOST "${abi}") + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + +src_install() { + insinto "/etc/clang/${SLOT}" + newins - gentoo-runtimes.cfg <<-EOF + # This file is initially generated by llvm-runtimes/clang-runtime. + # It is used to control the default runtimes using by clang. + + @gentoo-rtlib.cfg + @gentoo-unwindlib.cfg + @gentoo-stdlib.cfg + @gentoo-linker.cfg + EOF + newins - gentoo-plugins.cfg <<-EOF + # This file is used to load optional LLVM plugins. + EOF + if use polly; then + cat >> "${ED}/etc/clang/${SLOT}/gentoo-plugins.cfg" <<-EOF || die + -fpass-plugin=LLVMPolly.so + -fplugin=LLVMPolly.so + EOF + fi + + multilib_foreach_abi doclang_cfg +} diff --git a/llvm-runtimes/clang-runtime/clang-runtime-21.1.0.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-21.1.0.ebuild new file mode 100644 index 000000000000..128601d32226 --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-21.1.0.ebuild @@ -0,0 +1,131 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib multilib-build + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV%%.*}" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +IUSE=" + +compiler-rt libcxx offload openmp +sanitize + default-compiler-rt default-libcxx default-lld llvm-libunwind polly +" +REQUIRED_USE=" + sanitize? ( compiler-rt ) +" + +RDEPEND=" + compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( + >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] + offload? ( + >=llvm-runtimes/offload-${PV} + ) + ) + + llvm-core/clang-common + default-compiler-rt? ( + ~llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + llvm-libunwind? ( llvm-runtimes/libunwind[static-libs] ) + !llvm-libunwind? ( sys-libs/libunwind[static-libs] ) + ) + !default-compiler-rt? ( sys-devel/gcc ) + default-libcxx? ( >=llvm-runtimes/libcxx-${PV}[static-libs] ) + !default-libcxx? ( sys-devel/gcc ) + default-lld? ( ~llvm-core/lld-${PV} ) + !default-lld? ( sys-devel/binutils ) + polly? ( ~llvm-core/polly-${PV} ) +" + +_doclang_cfg() { + local triple="${1}" + + local tool + for tool in ${triple}-clang{,++,-cpp}; do + newins - "${tool}.cfg" <<-EOF + # This configuration file is used by ${tool} driver. + @../${tool}.cfg + @gentoo-plugins.cfg + @gentoo-runtimes.cfg + EOF + done + + # Install symlinks for triples with other vendor strings since some + # programs insist on mangling the triple. + local vendor + for vendor in gentoo pc unknown; do + local vendor_triple="${triple%%-*}-${vendor}-${triple#*-*-}" + for tool in clang{,++,-cpp}; do + if [[ ! -f "${ED}/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" ]]; then + dosym "${triple}-${tool}.cfg" "/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" + fi + done + done +} + +doclang_cfg() { + local triple=$(get_abi_CHOST "${abi}") + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + +src_install() { + insinto "/etc/clang/${SLOT}" + newins - gentoo-runtimes.cfg <<-EOF + # This file is initially generated by llvm-runtimes/clang-runtime. + # It is used to control the default runtimes using by clang. + + --rtlib=$(usex default-compiler-rt compiler-rt libgcc) + --unwindlib=$(usex default-compiler-rt libunwind libgcc) + --stdlib=$(usex default-libcxx libc++ libstdc++) + -fuse-ld=$(usex default-lld lld bfd) + EOF + newins - gentoo-plugins.cfg <<-EOF + # This file is used to load optional LLVM plugins. + EOF + if use polly; then + cat >> "${ED}/etc/clang/${SLOT}/gentoo-plugins.cfg" <<-EOF || die + -fpass-plugin=LLVMPolly.so + -fplugin=LLVMPolly.so + EOF + fi + + multilib_foreach_abi doclang_cfg +} diff --git a/llvm-runtimes/clang-runtime/clang-runtime-22.ebuild b/llvm-runtimes/clang-runtime/clang-runtime-22.ebuild new file mode 100644 index 000000000000..e9cd830b2b44 --- /dev/null +++ b/llvm-runtimes/clang-runtime/clang-runtime-22.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib multilib-build + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="${PV}" +IUSE=" + +compiler-rt libcxx offload openmp +sanitize + default-compiler-rt default-libcxx default-lld llvm-libunwind polly +" +REQUIRED_USE=" + sanitize? ( compiler-rt ) +" + +RDEPEND=" + compiler-rt? ( + >=llvm-runtimes/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + >=llvm-runtimes/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=llvm-runtimes/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( + >=llvm-runtimes/openmp-${PV}[${MULTILIB_USEDEP}] + offload? ( + >=llvm-runtimes/offload-${PV} + ) + ) + + llvm-core/clang-common + + ~llvm-core/clang-linker-config-${SLOT}[default-lld(-)?] + ~llvm-runtimes/clang-rtlib-config-${SLOT}[default-compiler-rt(-)?] + ~llvm-runtimes/clang-unwindlib-config-${SLOT}[default-compiler-rt(-)?,llvm-libunwind(-)?] + ~llvm-runtimes/clang-stdlib-config-${SLOT}[default-libcxx(-)?] + + polly? ( >=llvm-core/polly-${PV}:${SLOT} ) +" + +_doclang_cfg() { + local triple="${1}" + + local tool + for tool in ${triple}-clang{,++,-cpp}; do + newins - "${tool}.cfg" <<-EOF + # This configuration file is used by ${tool} driver. + @../${tool}.cfg + @gentoo-plugins.cfg + @gentoo-runtimes.cfg + EOF + done + + # Install symlinks for triples with other vendor strings since some + # programs insist on mangling the triple. + local vendor + for vendor in gentoo pc unknown; do + local vendor_triple="${triple%%-*}-${vendor}-${triple#*-*-}" + for tool in clang{,++,-cpp}; do + if [[ ! -f "${ED}/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" ]]; then + dosym "${triple}-${tool}.cfg" "/etc/clang/${SLOT}/${vendor_triple}-${tool}.cfg" + fi + done + done +} + +doclang_cfg() { + local triple=$(get_abi_CHOST "${abi}") + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + +src_install() { + insinto "/etc/clang/${SLOT}" + newins - gentoo-runtimes.cfg <<-EOF + # This file is initially generated by llvm-runtimes/clang-runtime. + # It is used to control the default runtimes using by clang. + + @gentoo-rtlib.cfg + @gentoo-unwindlib.cfg + @gentoo-stdlib.cfg + @gentoo-linker.cfg + EOF + newins - gentoo-plugins.cfg <<-EOF + # This file is used to load optional LLVM plugins. + EOF + if use polly; then + cat >> "${ED}/etc/clang/${SLOT}/gentoo-plugins.cfg" <<-EOF || die + -fpass-plugin=LLVMPolly.so + -fplugin=LLVMPolly.so + EOF + fi + + multilib_foreach_abi doclang_cfg +} diff --git a/llvm-runtimes/clang-runtime/metadata.xml b/llvm-runtimes/clang-runtime/metadata.xml new file mode 100644 index 000000000000..b2327e075049 --- /dev/null +++ b/llvm-runtimes/clang-runtime/metadata.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>llvm@gentoo.org</email> + </maintainer> + <use> + <flag name="compiler-rt">Install <pkg>llvm-runtimes/compiler-rt</pkg> for -rtlib=compiler-rt</flag> + <flag name="libcxx">Install <pkg>llvm-runtimes/libcxx</pkg> for -stdlib=libc++</flag> + <flag name="offload">Install <pkg>llvm-runtimes/offload</pkg> for -fopenmp GPU offloading</flag> + <flag name="openmp">Install <pkg>llvm-runtimes/openmp</pkg> for -fopenmp support</flag> + <flag name="sanitize">Enable compiler-rt sanitizer (-fsanitize*) support</flag> + + <flag name="default-compiler-rt">Use compiler-rt + libunwind 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="polly">Load Polly plugin (you still need -mllvm -polly to use it)</flag> + </use> + <upstream> + <remote-id type="github">llvm/llvm-project</remote-id> + </upstream> +</pkgmetadata> |
