public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2024-12-12  4:38 Sam James
  0 siblings, 0 replies; 24+ messages in thread
From: Sam James @ 2024-12-12  4:38 UTC (permalink / raw
  To: gentoo-commits

commit:     aec36c6fbd87fab890fc4e53fe7c39dee49fdda5
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 12 04:32:34 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Dec 12 04:37:16 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=aec36c6f

llvm-core/clang: drop llvm_prepend_path use

The hackery with PATH here is wrong and it breaks building Clang itself
with a different version of Clang (which is why we're looking at rejigging
how the eclass works/replacing it with llvm-r1.eclass [0]).

As suggested by Matt, use LLVM_CMAKE_DIR instead so that Clang finds
the right version of LLVM to build against without any sort of nonsense
messing with build tooling.

[0] https://public-inbox.gentoo.org/gentoo-dev/d5489fa24ef3d1129540879e628120addb3af8ce.camel <AT> gentoo.org/

Closes: https://bugs.gentoo.org/942314
Closes: https://bugs.gentoo.org/944788
Thanks-to: Matt Whitlock <gentoo <AT> mattwhitlock.name>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 llvm-core/clang/clang-18.1.8-r6.ebuild          | 5 ++---
 llvm-core/clang/clang-19.1.4.ebuild             | 5 ++---
 llvm-core/clang/clang-19.1.5.ebuild             | 5 ++---
 llvm-core/clang/clang-20.0.0.9999.ebuild        | 5 ++---
 llvm-core/clang/clang-20.0.0_pre20241207.ebuild | 5 ++---
 5 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/llvm-core/clang/clang-18.1.8-r6.ebuild b/llvm-core/clang/clang-18.1.8-r6.ebuild
index 52805e3df3fe..ecd51bb5ea94 100644
--- a/llvm-core/clang/clang-18.1.8-r6.ebuild
+++ b/llvm-core/clang/clang-18.1.8-r6.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit cmake llvm.org llvm-utils multilib multilib-minimal
+inherit cmake llvm.org multilib multilib-minimal
 inherit prefix python-single-r1 toolchain-funcs
 
 DESCRIPTION="C language family frontend for LLVM"
@@ -255,12 +255,11 @@ get_distribution_components() {
 }
 
 multilib_src_configure() {
-	llvm_prepend_path "${LLVM_MAJOR}"
-
 	local mycmakeargs=(
 		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
 		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"

diff --git a/llvm-core/clang/clang-19.1.4.ebuild b/llvm-core/clang/clang-19.1.4.ebuild
index 44fb3430d316..3167033c4a45 100644
--- a/llvm-core/clang/clang-19.1.4.ebuild
+++ b/llvm-core/clang/clang-19.1.4.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit cmake llvm.org llvm-utils multilib multilib-minimal
+inherit cmake llvm.org multilib multilib-minimal
 inherit prefix python-single-r1 toolchain-funcs
 
 DESCRIPTION="C language family frontend for LLVM"
@@ -254,12 +254,11 @@ get_distribution_components() {
 }
 
 multilib_src_configure() {
-	llvm_prepend_path "${LLVM_MAJOR}"
-
 	local mycmakeargs=(
 		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
 		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"

diff --git a/llvm-core/clang/clang-19.1.5.ebuild b/llvm-core/clang/clang-19.1.5.ebuild
index dd0c7132c2d2..c994c37fe3eb 100644
--- a/llvm-core/clang/clang-19.1.5.ebuild
+++ b/llvm-core/clang/clang-19.1.5.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit cmake llvm.org llvm-utils multilib multilib-minimal
+inherit cmake llvm.org multilib multilib-minimal
 inherit prefix python-single-r1 toolchain-funcs
 
 DESCRIPTION="C language family frontend for LLVM"
@@ -254,12 +254,11 @@ get_distribution_components() {
 }
 
 multilib_src_configure() {
-	llvm_prepend_path "${LLVM_MAJOR}"
-
 	local mycmakeargs=(
 		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
 		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"

diff --git a/llvm-core/clang/clang-20.0.0.9999.ebuild b/llvm-core/clang/clang-20.0.0.9999.ebuild
index 458b6079f63e..e85ebda1b26b 100644
--- a/llvm-core/clang/clang-20.0.0.9999.ebuild
+++ b/llvm-core/clang/clang-20.0.0.9999.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit cmake llvm.org llvm-utils multilib multilib-minimal
+inherit cmake llvm.org multilib multilib-minimal
 inherit prefix python-single-r1 toolchain-funcs
 
 DESCRIPTION="C language family frontend for LLVM"
@@ -253,12 +253,11 @@ get_distribution_components() {
 }
 
 multilib_src_configure() {
-	llvm_prepend_path "${LLVM_MAJOR}"
-
 	local mycmakeargs=(
 		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
 		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"

diff --git a/llvm-core/clang/clang-20.0.0_pre20241207.ebuild b/llvm-core/clang/clang-20.0.0_pre20241207.ebuild
index 458b6079f63e..e85ebda1b26b 100644
--- a/llvm-core/clang/clang-20.0.0_pre20241207.ebuild
+++ b/llvm-core/clang/clang-20.0.0_pre20241207.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit cmake llvm.org llvm-utils multilib multilib-minimal
+inherit cmake llvm.org multilib multilib-minimal
 inherit prefix python-single-r1 toolchain-funcs
 
 DESCRIPTION="C language family frontend for LLVM"
@@ -253,12 +253,11 @@ get_distribution_components() {
 }
 
 multilib_src_configure() {
-	llvm_prepend_path "${LLVM_MAJOR}"
-
 	local mycmakeargs=(
 		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
 		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2024-12-16  5:57 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2024-12-16  5:57 UTC (permalink / raw
  To: gentoo-commits

commit:     73849b586a7789935786098fe92d09657a83a377
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 15 20:12:10 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Dec 16 05:55:46 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=73849b58

llvm-core/clang: Add 20.0.0_pre20241215 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20241215.ebuild | 463 ++++++++++++++++++++++++
 2 files changed, 464 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 2275aab5b3c4..ba7a320d2592 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -20,3 +20,4 @@ DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e2
 DIST llvm-project-19.1.5.src.tar.xz 141243716 BLAKE2B 228fc66ab688abfc16f31b2cd83163b81ef61604ace21eab69a1776f0dc88cbe8fa831162205849e5be3975a214136399572b4ad1b908986e37b2d38a1a7fa5d SHA512 648854e9c91fdcc5c677ce3800e046f2060b998a45cf9f7eebe02898431b3924f9348b6fc366102cd4fdda72dcb8f32076f98aa69927e0e20b3f1007fba10b22
 DIST llvm-project-19.1.5.src.tar.xz.sig 438 BLAKE2B 1d40a5c5405f99ef86e3360f9ea153afd1ae4001697210fd799a988113e8a3cef39e2c4794edd9332f384d8490f4ce2ab6bee6d98f794f84775807f833b81c0a SHA512 a438c86ce882eb1ac3e50842937068794ed162bb1b7ded68a2fe3ec2ab4f57cc38aee667cfb46afe6da22eef7ed1cb65820a473f63bd5a0dc6aad41df7bfad54
 DIST llvm-project-32f7f0010bca99ee4bd917f57272733fb2bf3bd9.tar.gz 223983502 BLAKE2B fd3e6b0b795abc42568ef98fa774d927029c18838a5d0f34eaa66c37976444a63f2fc5d883f3bf3a98533f51e387936f1c659230f31c757d26153425696a16cd SHA512 65a345ad5b77c627008f759947e5e9f28a62c8992d7146113e0446e5849feaf9088c15c8b22ca0824af5b927d6a417f5326258b489fb8ccea78ec9e0e0fe8fba
+DIST llvm-project-49a5ad8e5714fd404210279303acc97b495d66d0.tar.gz 224456065 BLAKE2B 0077b9d37c479ac6190cc4b897cc35d6f1f3e6a772cd0620bcb1006afc19377e9968e38fb9d9adffe316e85290c9045deecbf9bf62b440c55968634b442edb31 SHA512 45d779eb27c230f656fda47c85127381cab8c8f7f75d77411c6960269f8aad5fa3c99c024a98ab8a349da1c88ad9d892cc82f91a6f344b791b281449031ae49a

diff --git a/llvm-core/clang/clang-20.0.0_pre20241215.ebuild b/llvm-core/clang/clang-20.0.0_pre20241215.ebuild
new file mode 100644
index 000000000000..e85ebda1b26b
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20241215.ebuild
@@ -0,0 +1,463 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2024-12-17 21:37 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2024-12-17 21:37 UTC (permalink / raw
  To: gentoo-commits

commit:     9adbb6b5f9f6871d99f4faca8a3cab72d181da3e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 17 21:34:28 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Dec 17 21:37:12 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9adbb6b5

llvm-core/clang: Add 19.1.6

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest            |   2 +
 llvm-core/clang/clang-19.1.6.ebuild | 464 ++++++++++++++++++++++++++++++++++++
 2 files changed, 466 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index ba7a320d2592..491ae688c83b 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -19,5 +19,7 @@ DIST llvm-project-19.1.4.src.tar.xz 141255156 BLAKE2B b99cd8a96e38dbcfb582ee5d22
 DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e29430bc09ef2b81be763aa5c853793631d7b7fdd65eb4dae7a1e3b4daa15d189c24cd1e14f065f79fdbf75429fa34be9b330e SHA512 3fb4a6c7594cb43680860698dac47062dde30de60f515dcecdad63812ea1edfb2cb209d0a7ac2254589c245a95b7c0f571b582e0d4b97a6ae8242563483ea764
 DIST llvm-project-19.1.5.src.tar.xz 141243716 BLAKE2B 228fc66ab688abfc16f31b2cd83163b81ef61604ace21eab69a1776f0dc88cbe8fa831162205849e5be3975a214136399572b4ad1b908986e37b2d38a1a7fa5d SHA512 648854e9c91fdcc5c677ce3800e046f2060b998a45cf9f7eebe02898431b3924f9348b6fc366102cd4fdda72dcb8f32076f98aa69927e0e20b3f1007fba10b22
 DIST llvm-project-19.1.5.src.tar.xz.sig 438 BLAKE2B 1d40a5c5405f99ef86e3360f9ea153afd1ae4001697210fd799a988113e8a3cef39e2c4794edd9332f384d8490f4ce2ab6bee6d98f794f84775807f833b81c0a SHA512 a438c86ce882eb1ac3e50842937068794ed162bb1b7ded68a2fe3ec2ab4f57cc38aee667cfb46afe6da22eef7ed1cb65820a473f63bd5a0dc6aad41df7bfad54
+DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee584e963b1d5cf06885c59827ee4ac11f93cde5b8e0268fbed560839137de2c495c9da2b889331cd12a8a02958d8e0cbdbed2607 SHA512 d411a6d913d6a1e1f3c16cfc1ce81c1e6292ea370703f55fb67c7af62f02193d53f5ef7823c8679d6f25cbe47b40236fcaf37044ad7cdfada8166efe7eb106b3
+DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
 DIST llvm-project-32f7f0010bca99ee4bd917f57272733fb2bf3bd9.tar.gz 223983502 BLAKE2B fd3e6b0b795abc42568ef98fa774d927029c18838a5d0f34eaa66c37976444a63f2fc5d883f3bf3a98533f51e387936f1c659230f31c757d26153425696a16cd SHA512 65a345ad5b77c627008f759947e5e9f28a62c8992d7146113e0446e5849feaf9088c15c8b22ca0824af5b927d6a417f5326258b489fb8ccea78ec9e0e0fe8fba
 DIST llvm-project-49a5ad8e5714fd404210279303acc97b495d66d0.tar.gz 224456065 BLAKE2B 0077b9d37c479ac6190cc4b897cc35d6f1f3e6a772cd0620bcb1006afc19377e9968e38fb9d9adffe316e85290c9045deecbf9bf62b440c55968634b442edb31 SHA512 45d779eb27c230f656fda47c85127381cab8c8f7f75d77411c6960269f8aad5fa3c99c024a98ab8a349da1c88ad9d892cc82f91a6f344b791b281449031ae49a

diff --git a/llvm-core/clang/clang-19.1.6.ebuild b/llvm-core/clang/clang-19.1.6.ebuild
new file mode 100644
index 000000000000..c994c37fe3eb
--- /dev/null
+++ b/llvm-core/clang/clang-19.1.6.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos"
+IUSE="debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-rename
+			clang-scan-deps
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-pseudo
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2024-12-18 14:07 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2024-12-18 14:07 UTC (permalink / raw
  To: gentoo-commits

commit:     e7ec2441c01711625c04f0eaddefbe6b3d4178bc
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 18 13:24:50 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Dec 18 13:24:50 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e7ec2441

llvm-core/clang: Replace LLVM_CMAKE_DIR with LLVM_ROOT in 19.1.6+

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/clang-19.1.6.ebuild      | 2 +-
 llvm-core/clang/clang-20.0.0.9999.ebuild | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/llvm-core/clang/clang-19.1.6.ebuild b/llvm-core/clang/clang-19.1.6.ebuild
index c994c37fe3eb..3d00c48770d8 100644
--- a/llvm-core/clang/clang-19.1.6.ebuild
+++ b/llvm-core/clang/clang-19.1.6.ebuild
@@ -258,7 +258,7 @@ multilib_src_configure() {
 		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
 		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"

diff --git a/llvm-core/clang/clang-20.0.0.9999.ebuild b/llvm-core/clang/clang-20.0.0.9999.ebuild
index e85ebda1b26b..ffc1eb222985 100644
--- a/llvm-core/clang/clang-20.0.0.9999.ebuild
+++ b/llvm-core/clang/clang-20.0.0.9999.ebuild
@@ -257,7 +257,7 @@ multilib_src_configure() {
 		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
 		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2024-12-21 10:28 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2024-12-21 10:28 UTC (permalink / raw
  To: gentoo-commits

commit:     83676e764908b4c3f2e988e9909b0f5ed5e31e09
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 21 10:10:44 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec 21 10:28:08 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=83676e76

llvm-core/clang: Add 20.0.0_pre20241221 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20241221.ebuild | 463 ++++++++++++++++++++++++
 2 files changed, 464 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 491ae688c83b..96a59dde7145 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -23,3 +23,4 @@ DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee5
 DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
 DIST llvm-project-32f7f0010bca99ee4bd917f57272733fb2bf3bd9.tar.gz 223983502 BLAKE2B fd3e6b0b795abc42568ef98fa774d927029c18838a5d0f34eaa66c37976444a63f2fc5d883f3bf3a98533f51e387936f1c659230f31c757d26153425696a16cd SHA512 65a345ad5b77c627008f759947e5e9f28a62c8992d7146113e0446e5849feaf9088c15c8b22ca0824af5b927d6a417f5326258b489fb8ccea78ec9e0e0fe8fba
 DIST llvm-project-49a5ad8e5714fd404210279303acc97b495d66d0.tar.gz 224456065 BLAKE2B 0077b9d37c479ac6190cc4b897cc35d6f1f3e6a772cd0620bcb1006afc19377e9968e38fb9d9adffe316e85290c9045deecbf9bf62b440c55968634b442edb31 SHA512 45d779eb27c230f656fda47c85127381cab8c8f7f75d77411c6960269f8aad5fa3c99c024a98ab8a349da1c88ad9d892cc82f91a6f344b791b281449031ae49a
+DIST llvm-project-665d79f2e967a5eee6fff93685e45f50cf24cab2.tar.gz 224186302 BLAKE2B 6d4a02b6cfaf53324161c43ed02024f0fea0e7de25a9150cc0168602d7dff3f618026fa8318aa6e03904a9424afa1f12c5eb33bfdfa82e72210f34e5829a7804 SHA512 7482e176b1e2389b0dd0e67271cdb0489e9db0595874408156a034b40d336ecd960c63b89c237ca22eee3650880b0f08a97de14f8a17c918245915d422e568c9

diff --git a/llvm-core/clang/clang-20.0.0_pre20241221.ebuild b/llvm-core/clang/clang-20.0.0_pre20241221.ebuild
new file mode 100644
index 000000000000..ffc1eb222985
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20241221.ebuild
@@ -0,0 +1,463 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2024-12-27 21:25 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2024-12-27 21:25 UTC (permalink / raw
  To: gentoo-commits

commit:     529d29b4dc30ec57b92374213faae659ed0ff495
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 27 20:37:36 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Dec 27 21:24:55 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=529d29b4

llvm-core/clang: Add 20.0.0_pre20241227 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20241227.ebuild | 463 ++++++++++++++++++++++++
 2 files changed, 464 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 96a59dde7145..9563f151c681 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -24,3 +24,4 @@ DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9
 DIST llvm-project-32f7f0010bca99ee4bd917f57272733fb2bf3bd9.tar.gz 223983502 BLAKE2B fd3e6b0b795abc42568ef98fa774d927029c18838a5d0f34eaa66c37976444a63f2fc5d883f3bf3a98533f51e387936f1c659230f31c757d26153425696a16cd SHA512 65a345ad5b77c627008f759947e5e9f28a62c8992d7146113e0446e5849feaf9088c15c8b22ca0824af5b927d6a417f5326258b489fb8ccea78ec9e0e0fe8fba
 DIST llvm-project-49a5ad8e5714fd404210279303acc97b495d66d0.tar.gz 224456065 BLAKE2B 0077b9d37c479ac6190cc4b897cc35d6f1f3e6a772cd0620bcb1006afc19377e9968e38fb9d9adffe316e85290c9045deecbf9bf62b440c55968634b442edb31 SHA512 45d779eb27c230f656fda47c85127381cab8c8f7f75d77411c6960269f8aad5fa3c99c024a98ab8a349da1c88ad9d892cc82f91a6f344b791b281449031ae49a
 DIST llvm-project-665d79f2e967a5eee6fff93685e45f50cf24cab2.tar.gz 224186302 BLAKE2B 6d4a02b6cfaf53324161c43ed02024f0fea0e7de25a9150cc0168602d7dff3f618026fa8318aa6e03904a9424afa1f12c5eb33bfdfa82e72210f34e5829a7804 SHA512 7482e176b1e2389b0dd0e67271cdb0489e9db0595874408156a034b40d336ecd960c63b89c237ca22eee3650880b0f08a97de14f8a17c918245915d422e568c9
+DIST llvm-project-ccfe0de0e1e37ed369c9bf89dd0188ba0afb2e9a.tar.gz 224396427 BLAKE2B 6e13c65d2ba83fdaf2db20a58b878106568406f07f9c2ceb47e4d2572fb041211384ed67c43801764060101ec4a1b04c18bf4097f37512d2751aa5860c1a8dc3 SHA512 ef4512b735568aaa627a7f4e9bac3fc4722db7a2b8bd1610faaf066856be9474fb297fd75b3c0dcc76f60ab35c3110fd329faad3e8d9b75e93844d56f41c03d1

diff --git a/llvm-core/clang/clang-20.0.0_pre20241227.ebuild b/llvm-core/clang/clang-20.0.0_pre20241227.ebuild
new file mode 100644
index 000000000000..ffc1eb222985
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20241227.ebuild
@@ -0,0 +1,463 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2024-12-28 19:35 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2024-12-28 19:35 UTC (permalink / raw
  To: gentoo-commits

commit:     b4680b4d2384b7cbe7f4809f2b4983ab4db1a168
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 28 19:33:20 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec 28 19:33:20 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b4680b4d

llvm-core/clang: Remove old

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   5 -
 llvm-core/clang/clang-19.1.5.ebuild             | 464 ------------------------
 llvm-core/clang/clang-20.0.0_pre20241207.ebuild | 463 -----------------------
 llvm-core/clang/clang-20.0.0_pre20241215.ebuild | 463 -----------------------
 llvm-core/clang/clang-20.0.0_pre20241221.ebuild | 463 -----------------------
 5 files changed, 1858 deletions(-)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 9563f151c681..5bfe53e649c1 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -17,11 +17,6 @@ DIST llvm-project-18.1.8.src.tar.xz 132067260 BLAKE2B a950492f1dbfb874dff63b1ffe
 DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b85774b2edd5d88fdf29f23b88eb0b5130a7a7f0e80549612b025f927e92de4a08ff7c292cff224dbda91a5d598244e98f7ad0fbd SHA512 ddfd1e8a06756759af6cbe488c82a6d6a62ba91f3e8a0eb4cece561321824f5d165b08ed91010588790b76e19790931d2651b24dba8567e3b151d3cb43bec25b
 DIST llvm-project-19.1.4.src.tar.xz 141255156 BLAKE2B b99cd8a96e38dbcfb582ee5d2250268df36fb94fa0fd5b3611484094fbd7962051978334d2c623d2ff5a0209dbb2c6c6492be0146507ae982a7d3e9705a689c5 SHA512 a586f8a41dde5e0d9ca6d8c58e9ef2a2e59b70a86d2e2c46106dc31b5c096bb80af0cdbdb486179e9cc676a540099f49a1c2db9e5e84c50362db1f72e9af6906
 DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e29430bc09ef2b81be763aa5c853793631d7b7fdd65eb4dae7a1e3b4daa15d189c24cd1e14f065f79fdbf75429fa34be9b330e SHA512 3fb4a6c7594cb43680860698dac47062dde30de60f515dcecdad63812ea1edfb2cb209d0a7ac2254589c245a95b7c0f571b582e0d4b97a6ae8242563483ea764
-DIST llvm-project-19.1.5.src.tar.xz 141243716 BLAKE2B 228fc66ab688abfc16f31b2cd83163b81ef61604ace21eab69a1776f0dc88cbe8fa831162205849e5be3975a214136399572b4ad1b908986e37b2d38a1a7fa5d SHA512 648854e9c91fdcc5c677ce3800e046f2060b998a45cf9f7eebe02898431b3924f9348b6fc366102cd4fdda72dcb8f32076f98aa69927e0e20b3f1007fba10b22
-DIST llvm-project-19.1.5.src.tar.xz.sig 438 BLAKE2B 1d40a5c5405f99ef86e3360f9ea153afd1ae4001697210fd799a988113e8a3cef39e2c4794edd9332f384d8490f4ce2ab6bee6d98f794f84775807f833b81c0a SHA512 a438c86ce882eb1ac3e50842937068794ed162bb1b7ded68a2fe3ec2ab4f57cc38aee667cfb46afe6da22eef7ed1cb65820a473f63bd5a0dc6aad41df7bfad54
 DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee584e963b1d5cf06885c59827ee4ac11f93cde5b8e0268fbed560839137de2c495c9da2b889331cd12a8a02958d8e0cbdbed2607 SHA512 d411a6d913d6a1e1f3c16cfc1ce81c1e6292ea370703f55fb67c7af62f02193d53f5ef7823c8679d6f25cbe47b40236fcaf37044ad7cdfada8166efe7eb106b3
 DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
-DIST llvm-project-32f7f0010bca99ee4bd917f57272733fb2bf3bd9.tar.gz 223983502 BLAKE2B fd3e6b0b795abc42568ef98fa774d927029c18838a5d0f34eaa66c37976444a63f2fc5d883f3bf3a98533f51e387936f1c659230f31c757d26153425696a16cd SHA512 65a345ad5b77c627008f759947e5e9f28a62c8992d7146113e0446e5849feaf9088c15c8b22ca0824af5b927d6a417f5326258b489fb8ccea78ec9e0e0fe8fba
-DIST llvm-project-49a5ad8e5714fd404210279303acc97b495d66d0.tar.gz 224456065 BLAKE2B 0077b9d37c479ac6190cc4b897cc35d6f1f3e6a772cd0620bcb1006afc19377e9968e38fb9d9adffe316e85290c9045deecbf9bf62b440c55968634b442edb31 SHA512 45d779eb27c230f656fda47c85127381cab8c8f7f75d77411c6960269f8aad5fa3c99c024a98ab8a349da1c88ad9d892cc82f91a6f344b791b281449031ae49a
-DIST llvm-project-665d79f2e967a5eee6fff93685e45f50cf24cab2.tar.gz 224186302 BLAKE2B 6d4a02b6cfaf53324161c43ed02024f0fea0e7de25a9150cc0168602d7dff3f618026fa8318aa6e03904a9424afa1f12c5eb33bfdfa82e72210f34e5829a7804 SHA512 7482e176b1e2389b0dd0e67271cdb0489e9db0595874408156a034b40d336ecd960c63b89c237ca22eee3650880b0f08a97de14f8a17c918245915d422e568c9
 DIST llvm-project-ccfe0de0e1e37ed369c9bf89dd0188ba0afb2e9a.tar.gz 224396427 BLAKE2B 6e13c65d2ba83fdaf2db20a58b878106568406f07f9c2ceb47e4d2572fb041211384ed67c43801764060101ec4a1b04c18bf4097f37512d2751aa5860c1a8dc3 SHA512 ef4512b735568aaa627a7f4e9bac3fc4722db7a2b8bd1610faaf066856be9474fb297fd75b3c0dcc76f60ab35c3110fd329faad3e8d9b75e93844d56f41c03d1

diff --git a/llvm-core/clang/clang-19.1.5.ebuild b/llvm-core/clang/clang-19.1.5.ebuild
deleted file mode 100644
index c994c37fe3eb..000000000000
--- a/llvm-core/clang/clang-19.1.5.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos"
-IUSE="debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-rename
-			clang-scan-deps
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-pseudo
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.0.0_pre20241207.ebuild b/llvm-core/clang/clang-20.0.0_pre20241207.ebuild
deleted file mode 100644
index e85ebda1b26b..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20241207.ebuild
+++ /dev/null
@@ -1,463 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.0.0_pre20241215.ebuild b/llvm-core/clang/clang-20.0.0_pre20241215.ebuild
deleted file mode 100644
index e85ebda1b26b..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20241215.ebuild
+++ /dev/null
@@ -1,463 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_CMAKE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/cmake"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.0.0_pre20241221.ebuild b/llvm-core/clang/clang-20.0.0_pre20241221.ebuild
deleted file mode 100644
index ffc1eb222985..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20241221.ebuild
+++ /dev/null
@@ -1,463 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-03 15:25 James Le Cuirot
  0 siblings, 0 replies; 24+ messages in thread
From: James Le Cuirot @ 2025-01-03 15:25 UTC (permalink / raw
  To: gentoo-commits

commit:     4481d9d842856499e8fef19430f8fe835e626c48
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  3 13:53:55 2025 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Fri Jan  3 15:24:53 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4481d9d8

llvm-core/clang: Set CLANG_CONFIG_FILE_USER_DIR for per-user config

This is a better way to pass dynamic flags like --sysroot when cross-compiling
than sticking them directly in variables like CC. The HOME directory is
overridden by Portage, so real user config won't interfere with package builds.
For now, the necessary config can be set up in pre_src_unpack, but perhaps we
could come up with something more formal later.

Closes: https://github.com/gentoo/gentoo/pull/39960
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 llvm-core/clang/clang-19.1.6.ebuild             | 3 ++-
 llvm-core/clang/clang-20.0.0.9999.ebuild        | 3 ++-
 llvm-core/clang/clang-20.0.0_pre20241227.ebuild | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/llvm-core/clang/clang-19.1.6.ebuild b/llvm-core/clang/clang-19.1.6.ebuild
index 3d00c48770d8..d21a4ba71610 100644
--- a/llvm-core/clang/clang-19.1.6.ebuild
+++ b/llvm-core/clang/clang-19.1.6.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -260,6 +260,7 @@ multilib_src_configure() {
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
 		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
 

diff --git a/llvm-core/clang/clang-20.0.0.9999.ebuild b/llvm-core/clang/clang-20.0.0.9999.ebuild
index ffc1eb222985..67e6515db8b5 100644
--- a/llvm-core/clang/clang-20.0.0.9999.ebuild
+++ b/llvm-core/clang/clang-20.0.0.9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -259,6 +259,7 @@ multilib_src_configure() {
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
 		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
 

diff --git a/llvm-core/clang/clang-20.0.0_pre20241227.ebuild b/llvm-core/clang/clang-20.0.0_pre20241227.ebuild
index ffc1eb222985..67e6515db8b5 100644
--- a/llvm-core/clang/clang-20.0.0_pre20241227.ebuild
+++ b/llvm-core/clang/clang-20.0.0_pre20241227.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -259,6 +259,7 @@ multilib_src_configure() {
 		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
 		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
 		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
 		# relative to bindir
 		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
 


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-04 15:28 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-04 15:28 UTC (permalink / raw
  To: gentoo-commits

commit:     f03f3d24c779711efe4599314e877da60d7b9f61
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  4 15:07:41 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jan  4 15:27:49 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f03f3d24

llvm-core/clang: Add 20.0.0_pre20250104 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20250104.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 5bfe53e649c1..3dba6f15af11 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -19,4 +19,5 @@ DIST llvm-project-19.1.4.src.tar.xz 141255156 BLAKE2B b99cd8a96e38dbcfb582ee5d22
 DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e29430bc09ef2b81be763aa5c853793631d7b7fdd65eb4dae7a1e3b4daa15d189c24cd1e14f065f79fdbf75429fa34be9b330e SHA512 3fb4a6c7594cb43680860698dac47062dde30de60f515dcecdad63812ea1edfb2cb209d0a7ac2254589c245a95b7c0f571b582e0d4b97a6ae8242563483ea764
 DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee584e963b1d5cf06885c59827ee4ac11f93cde5b8e0268fbed560839137de2c495c9da2b889331cd12a8a02958d8e0cbdbed2607 SHA512 d411a6d913d6a1e1f3c16cfc1ce81c1e6292ea370703f55fb67c7af62f02193d53f5ef7823c8679d6f25cbe47b40236fcaf37044ad7cdfada8166efe7eb106b3
 DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
+DIST llvm-project-2529a8df53af9bc6cecfd6c83404ffa5e89e3370.tar.gz 224493461 BLAKE2B 0d3c757a8f34a9bf6b2ac0ad394cc1f8125cfee534c8bd0c5875eba56fe0171892586ec05b6f1e859e5962f81c76c9a315f60bcda012df73a3bd66709b265038 SHA512 a49fa1da2fd398b279a90292704e30d8ff7163219bfd91c4a80fa5123d957cdef52d2ee41710a8bcbfea3d9a5eec269dfc756584fcc27a495f7f381176de4e69
 DIST llvm-project-ccfe0de0e1e37ed369c9bf89dd0188ba0afb2e9a.tar.gz 224396427 BLAKE2B 6e13c65d2ba83fdaf2db20a58b878106568406f07f9c2ceb47e4d2572fb041211384ed67c43801764060101ec4a1b04c18bf4097f37512d2751aa5860c1a8dc3 SHA512 ef4512b735568aaa627a7f4e9bac3fc4722db7a2b8bd1610faaf066856be9474fb297fd75b3c0dcc76f60ab35c3110fd329faad3e8d9b75e93844d56f41c03d1

diff --git a/llvm-core/clang/clang-20.0.0_pre20250104.ebuild b/llvm-core/clang/clang-20.0.0_pre20250104.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20250104.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-11 18:12 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-11 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     a5b13cffd90da24a9b7bd4f628178bef2b89117b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 11 18:01:39 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jan 11 18:11:54 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a5b13cff

llvm-core/clang: Add 20.0.0_pre20250111 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20250111.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 3dba6f15af11..1a7b5c426f73 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -20,4 +20,5 @@ DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e2
 DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee584e963b1d5cf06885c59827ee4ac11f93cde5b8e0268fbed560839137de2c495c9da2b889331cd12a8a02958d8e0cbdbed2607 SHA512 d411a6d913d6a1e1f3c16cfc1ce81c1e6292ea370703f55fb67c7af62f02193d53f5ef7823c8679d6f25cbe47b40236fcaf37044ad7cdfada8166efe7eb106b3
 DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
 DIST llvm-project-2529a8df53af9bc6cecfd6c83404ffa5e89e3370.tar.gz 224493461 BLAKE2B 0d3c757a8f34a9bf6b2ac0ad394cc1f8125cfee534c8bd0c5875eba56fe0171892586ec05b6f1e859e5962f81c76c9a315f60bcda012df73a3bd66709b265038 SHA512 a49fa1da2fd398b279a90292704e30d8ff7163219bfd91c4a80fa5123d957cdef52d2ee41710a8bcbfea3d9a5eec269dfc756584fcc27a495f7f381176de4e69
+DIST llvm-project-8af4d206e0f979f68925a08f9dffd60a98ce97e2.tar.gz 224825146 BLAKE2B 36e9c8f9615d65fc72beb699c4ce5959676975267a4c4288a01009d26ab84ae411f2855e4e6475957b91ddc21da29251ab22e331395bc9fee0f9bc907a05384a SHA512 ec72cdd7cc6d9bef31ae9295606d18e4935468fe60ab632aced21261d437e76f11d83d0d7199a6028689990260d9155098f7d64e97db0e0af28ea6c75a773bcc
 DIST llvm-project-ccfe0de0e1e37ed369c9bf89dd0188ba0afb2e9a.tar.gz 224396427 BLAKE2B 6e13c65d2ba83fdaf2db20a58b878106568406f07f9c2ceb47e4d2572fb041211384ed67c43801764060101ec4a1b04c18bf4097f37512d2751aa5860c1a8dc3 SHA512 ef4512b735568aaa627a7f4e9bac3fc4722db7a2b8bd1610faaf066856be9474fb297fd75b3c0dcc76f60ab35c3110fd329faad3e8d9b75e93844d56f41c03d1

diff --git a/llvm-core/clang/clang-20.0.0_pre20250111.ebuild b/llvm-core/clang/clang-20.0.0_pre20250111.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20250111.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-15  4:24 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-15  4:24 UTC (permalink / raw
  To: gentoo-commits

commit:     8dba54ed04abccdd1e2db300a8fa591cb00e6f55
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 14 20:01:26 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jan 15 04:23:53 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8dba54ed

llvm-core/clang: Add 19.1.7

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest            |   2 +
 llvm-core/clang/clang-19.1.7.ebuild | 465 ++++++++++++++++++++++++++++++++++++
 2 files changed, 467 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 1a7b5c426f73..fe2b23c48945 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -19,6 +19,8 @@ DIST llvm-project-19.1.4.src.tar.xz 141255156 BLAKE2B b99cd8a96e38dbcfb582ee5d22
 DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e29430bc09ef2b81be763aa5c853793631d7b7fdd65eb4dae7a1e3b4daa15d189c24cd1e14f065f79fdbf75429fa34be9b330e SHA512 3fb4a6c7594cb43680860698dac47062dde30de60f515dcecdad63812ea1edfb2cb209d0a7ac2254589c245a95b7c0f571b582e0d4b97a6ae8242563483ea764
 DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee584e963b1d5cf06885c59827ee4ac11f93cde5b8e0268fbed560839137de2c495c9da2b889331cd12a8a02958d8e0cbdbed2607 SHA512 d411a6d913d6a1e1f3c16cfc1ce81c1e6292ea370703f55fb67c7af62f02193d53f5ef7823c8679d6f25cbe47b40236fcaf37044ad7cdfada8166efe7eb106b3
 DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
+DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
+DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
 DIST llvm-project-2529a8df53af9bc6cecfd6c83404ffa5e89e3370.tar.gz 224493461 BLAKE2B 0d3c757a8f34a9bf6b2ac0ad394cc1f8125cfee534c8bd0c5875eba56fe0171892586ec05b6f1e859e5962f81c76c9a315f60bcda012df73a3bd66709b265038 SHA512 a49fa1da2fd398b279a90292704e30d8ff7163219bfd91c4a80fa5123d957cdef52d2ee41710a8bcbfea3d9a5eec269dfc756584fcc27a495f7f381176de4e69
 DIST llvm-project-8af4d206e0f979f68925a08f9dffd60a98ce97e2.tar.gz 224825146 BLAKE2B 36e9c8f9615d65fc72beb699c4ce5959676975267a4c4288a01009d26ab84ae411f2855e4e6475957b91ddc21da29251ab22e331395bc9fee0f9bc907a05384a SHA512 ec72cdd7cc6d9bef31ae9295606d18e4935468fe60ab632aced21261d437e76f11d83d0d7199a6028689990260d9155098f7d64e97db0e0af28ea6c75a773bcc
 DIST llvm-project-ccfe0de0e1e37ed369c9bf89dd0188ba0afb2e9a.tar.gz 224396427 BLAKE2B 6e13c65d2ba83fdaf2db20a58b878106568406f07f9c2ceb47e4d2572fb041211384ed67c43801764060101ec4a1b04c18bf4097f37512d2751aa5860c1a8dc3 SHA512 ef4512b735568aaa627a7f4e9bac3fc4722db7a2b8bd1610faaf066856be9474fb297fd75b3c0dcc76f60ab35c3110fd329faad3e8d9b75e93844d56f41c03d1

diff --git a/llvm-core/clang/clang-19.1.7.ebuild b/llvm-core/clang/clang-19.1.7.ebuild
new file mode 100644
index 000000000000..d21a4ba71610
--- /dev/null
+++ b/llvm-core/clang/clang-19.1.7.ebuild
@@ -0,0 +1,465 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos"
+IUSE="debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-rename
+			clang-scan-deps
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-pseudo
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-18  8:21 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-18  8:21 UTC (permalink / raw
  To: gentoo-commits

commit:     07230563a2566df83c4e2ccacd685807e10028e8
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 18 07:21:45 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jan 18 07:21:45 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=07230563

llvm-core/clang: Remove old

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   2 -
 llvm-core/clang/clang-20.0.0_pre20241227.ebuild | 464 ------------------------
 llvm-core/clang/clang-20.0.0_pre20250104.ebuild | 464 ------------------------
 3 files changed, 930 deletions(-)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index fe2b23c48945..5bd8f3577039 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -21,6 +21,4 @@ DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee5
 DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
-DIST llvm-project-2529a8df53af9bc6cecfd6c83404ffa5e89e3370.tar.gz 224493461 BLAKE2B 0d3c757a8f34a9bf6b2ac0ad394cc1f8125cfee534c8bd0c5875eba56fe0171892586ec05b6f1e859e5962f81c76c9a315f60bcda012df73a3bd66709b265038 SHA512 a49fa1da2fd398b279a90292704e30d8ff7163219bfd91c4a80fa5123d957cdef52d2ee41710a8bcbfea3d9a5eec269dfc756584fcc27a495f7f381176de4e69
 DIST llvm-project-8af4d206e0f979f68925a08f9dffd60a98ce97e2.tar.gz 224825146 BLAKE2B 36e9c8f9615d65fc72beb699c4ce5959676975267a4c4288a01009d26ab84ae411f2855e4e6475957b91ddc21da29251ab22e331395bc9fee0f9bc907a05384a SHA512 ec72cdd7cc6d9bef31ae9295606d18e4935468fe60ab632aced21261d437e76f11d83d0d7199a6028689990260d9155098f7d64e97db0e0af28ea6c75a773bcc
-DIST llvm-project-ccfe0de0e1e37ed369c9bf89dd0188ba0afb2e9a.tar.gz 224396427 BLAKE2B 6e13c65d2ba83fdaf2db20a58b878106568406f07f9c2ceb47e4d2572fb041211384ed67c43801764060101ec4a1b04c18bf4097f37512d2751aa5860c1a8dc3 SHA512 ef4512b735568aaa627a7f4e9bac3fc4722db7a2b8bd1610faaf066856be9474fb297fd75b3c0dcc76f60ab35c3110fd329faad3e8d9b75e93844d56f41c03d1

diff --git a/llvm-core/clang/clang-20.0.0_pre20241227.ebuild b/llvm-core/clang/clang-20.0.0_pre20241227.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20241227.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.0.0_pre20250104.ebuild b/llvm-core/clang/clang-20.0.0_pre20250104.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20250104.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-18 15:09 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-18 15:09 UTC (permalink / raw
  To: gentoo-commits

commit:     307a28d305ba640f523f9d01b4899b799663f5dd
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 18 15:00:37 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jan 18 15:02:49 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=307a28d3

llvm-core/clang: Add 20.0.0_pre20250118 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20250118.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 5bd8f3577039..190d2934f6f6 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -22,3 +22,4 @@ DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
 DIST llvm-project-8af4d206e0f979f68925a08f9dffd60a98ce97e2.tar.gz 224825146 BLAKE2B 36e9c8f9615d65fc72beb699c4ce5959676975267a4c4288a01009d26ab84ae411f2855e4e6475957b91ddc21da29251ab22e331395bc9fee0f9bc907a05384a SHA512 ec72cdd7cc6d9bef31ae9295606d18e4935468fe60ab632aced21261d437e76f11d83d0d7199a6028689990260d9155098f7d64e97db0e0af28ea6c75a773bcc
+DIST llvm-project-c3a935e3f967f8f22f5db240d145459ee621c1e0.tar.gz 225133913 BLAKE2B ced922010bad14df6bce0dbbb9323ee3cc9d7bf2f764f8c982d134d7a97e38d84b0b81635bbb16031aa1899c744e7c036cec5d1957733bbed7a2f18f89db0b6f SHA512 0ea083defb3c0ecaa5d8d28682f140c68ec6b3ab6cbfc60fc38a9265a8eb88b618c075d6ae03170ed54c5e7dcb3b7003eaacea2fcb115e9864b64a17cea0013d

diff --git a/llvm-core/clang/clang-20.0.0_pre20250118.ebuild b/llvm-core/clang/clang-20.0.0_pre20250118.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20250118.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-22 19:15 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-22 19:15 UTC (permalink / raw
  To: gentoo-commits

commit:     cd9fc030841a9cc3ae7c4e6e2b9f3cb4c5e21db0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 22 16:33:25 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jan 22 19:15:22 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cd9fc030

llvm-core/clang: Add 20.0.0_pre20250122 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20250122.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 190d2934f6f6..0f2443a326e4 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -22,4 +22,5 @@ DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
 DIST llvm-project-8af4d206e0f979f68925a08f9dffd60a98ce97e2.tar.gz 224825146 BLAKE2B 36e9c8f9615d65fc72beb699c4ce5959676975267a4c4288a01009d26ab84ae411f2855e4e6475957b91ddc21da29251ab22e331395bc9fee0f9bc907a05384a SHA512 ec72cdd7cc6d9bef31ae9295606d18e4935468fe60ab632aced21261d437e76f11d83d0d7199a6028689990260d9155098f7d64e97db0e0af28ea6c75a773bcc
+DIST llvm-project-97c3a990f05606cb807faf53bc41302fb62c7980.tar.gz 226261635 BLAKE2B 9dd0bdfaa6ee984747f2d9d8b9606cd8d2e75fa64d45fd7c87227ddca7cffe888a1d932d73c123b25360690fd687554cc333fb3d871ab0e72ddd2b1158bae2e0 SHA512 466ae8aea014fd396f3fd6b77055238a672f012b79f25ed0b215e01f968a56dd4eeaf148d03246701b1ac4cbb8f02a4325142d6e5503fb6231e330c2e49e28e7
 DIST llvm-project-c3a935e3f967f8f22f5db240d145459ee621c1e0.tar.gz 225133913 BLAKE2B ced922010bad14df6bce0dbbb9323ee3cc9d7bf2f764f8c982d134d7a97e38d84b0b81635bbb16031aa1899c744e7c036cec5d1957733bbed7a2f18f89db0b6f SHA512 0ea083defb3c0ecaa5d8d28682f140c68ec6b3ab6cbfc60fc38a9265a8eb88b618c075d6ae03170ed54c5e7dcb3b7003eaacea2fcb115e9864b64a17cea0013d

diff --git a/llvm-core/clang/clang-20.0.0_pre20250122.ebuild b/llvm-core/clang/clang-20.0.0_pre20250122.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20250122.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-25 13:33 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-25 13:33 UTC (permalink / raw
  To: gentoo-commits

commit:     8b35674b1209ddc3763afc1862d776e2b4d8172f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 25 13:07:57 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jan 25 13:32:59 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8b35674b

llvm-core/clang: Add 20.0.0_pre20250125 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-20.0.0_pre20250125.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 0f2443a326e4..3b5175d3198b 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -21,6 +21,7 @@ DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee5
 DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
+DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
 DIST llvm-project-8af4d206e0f979f68925a08f9dffd60a98ce97e2.tar.gz 224825146 BLAKE2B 36e9c8f9615d65fc72beb699c4ce5959676975267a4c4288a01009d26ab84ae411f2855e4e6475957b91ddc21da29251ab22e331395bc9fee0f9bc907a05384a SHA512 ec72cdd7cc6d9bef31ae9295606d18e4935468fe60ab632aced21261d437e76f11d83d0d7199a6028689990260d9155098f7d64e97db0e0af28ea6c75a773bcc
 DIST llvm-project-97c3a990f05606cb807faf53bc41302fb62c7980.tar.gz 226261635 BLAKE2B 9dd0bdfaa6ee984747f2d9d8b9606cd8d2e75fa64d45fd7c87227ddca7cffe888a1d932d73c123b25360690fd687554cc333fb3d871ab0e72ddd2b1158bae2e0 SHA512 466ae8aea014fd396f3fd6b77055238a672f012b79f25ed0b215e01f968a56dd4eeaf148d03246701b1ac4cbb8f02a4325142d6e5503fb6231e330c2e49e28e7
 DIST llvm-project-c3a935e3f967f8f22f5db240d145459ee621c1e0.tar.gz 225133913 BLAKE2B ced922010bad14df6bce0dbbb9323ee3cc9d7bf2f764f8c982d134d7a97e38d84b0b81635bbb16031aa1899c744e7c036cec5d1957733bbed7a2f18f89db0b6f SHA512 0ea083defb3c0ecaa5d8d28682f140c68ec6b3ab6cbfc60fc38a9265a8eb88b618c075d6ae03170ed54c5e7dcb3b7003eaacea2fcb115e9864b64a17cea0013d

diff --git a/llvm-core/clang/clang-20.0.0_pre20250125.ebuild b/llvm-core/clang/clang-20.0.0_pre20250125.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-20.0.0_pre20250125.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-01-31 21:51 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-01-31 21:51 UTC (permalink / raw
  To: gentoo-commits

commit:     dc1195e9bdf61956f90568dff9c5e4b42ff62c11
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 31 19:51:47 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jan 31 21:50:52 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dc1195e9

llvm-core/clang: Remove old

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   5 -
 llvm-core/clang/clang-19.1.6.ebuild             | 465 ------------------------
 llvm-core/clang/clang-20.0.0_pre20250111.ebuild | 464 -----------------------
 llvm-core/clang/clang-20.0.0_pre20250118.ebuild | 464 -----------------------
 llvm-core/clang/clang-20.0.0_pre20250122.ebuild | 464 -----------------------
 5 files changed, 1862 deletions(-)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 3b5175d3198b..7781becc962b 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -17,11 +17,6 @@ DIST llvm-project-18.1.8.src.tar.xz 132067260 BLAKE2B a950492f1dbfb874dff63b1ffe
 DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b85774b2edd5d88fdf29f23b88eb0b5130a7a7f0e80549612b025f927e92de4a08ff7c292cff224dbda91a5d598244e98f7ad0fbd SHA512 ddfd1e8a06756759af6cbe488c82a6d6a62ba91f3e8a0eb4cece561321824f5d165b08ed91010588790b76e19790931d2651b24dba8567e3b151d3cb43bec25b
 DIST llvm-project-19.1.4.src.tar.xz 141255156 BLAKE2B b99cd8a96e38dbcfb582ee5d2250268df36fb94fa0fd5b3611484094fbd7962051978334d2c623d2ff5a0209dbb2c6c6492be0146507ae982a7d3e9705a689c5 SHA512 a586f8a41dde5e0d9ca6d8c58e9ef2a2e59b70a86d2e2c46106dc31b5c096bb80af0cdbdb486179e9cc676a540099f49a1c2db9e5e84c50362db1f72e9af6906
 DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e29430bc09ef2b81be763aa5c853793631d7b7fdd65eb4dae7a1e3b4daa15d189c24cd1e14f065f79fdbf75429fa34be9b330e SHA512 3fb4a6c7594cb43680860698dac47062dde30de60f515dcecdad63812ea1edfb2cb209d0a7ac2254589c245a95b7c0f571b582e0d4b97a6ae8242563483ea764
-DIST llvm-project-19.1.6.src.tar.xz 141248428 BLAKE2B b35ab0c754f28c850ac6fd4ee584e963b1d5cf06885c59827ee4ac11f93cde5b8e0268fbed560839137de2c495c9da2b889331cd12a8a02958d8e0cbdbed2607 SHA512 d411a6d913d6a1e1f3c16cfc1ce81c1e6292ea370703f55fb67c7af62f02193d53f5ef7823c8679d6f25cbe47b40236fcaf37044ad7cdfada8166efe7eb106b3
-DIST llvm-project-19.1.6.src.tar.xz.sig 438 BLAKE2B 1791e98252ab78a9a762ef601ff9edee115385181781c8100f14ec80061d7888ee4c4c519297a0e89b9c7ab2203aa9d5bb3084ea1d0f0024c2acf84826fd370b SHA512 8e79a39a4f54da3579794f9b5a009ea8ee56c7bc1805187274794ce56e81aa492ea93f5c7839a59beedcf7d657acded5ecb75d5803658cce1f9e8f753439c6c4
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
 DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
-DIST llvm-project-8af4d206e0f979f68925a08f9dffd60a98ce97e2.tar.gz 224825146 BLAKE2B 36e9c8f9615d65fc72beb699c4ce5959676975267a4c4288a01009d26ab84ae411f2855e4e6475957b91ddc21da29251ab22e331395bc9fee0f9bc907a05384a SHA512 ec72cdd7cc6d9bef31ae9295606d18e4935468fe60ab632aced21261d437e76f11d83d0d7199a6028689990260d9155098f7d64e97db0e0af28ea6c75a773bcc
-DIST llvm-project-97c3a990f05606cb807faf53bc41302fb62c7980.tar.gz 226261635 BLAKE2B 9dd0bdfaa6ee984747f2d9d8b9606cd8d2e75fa64d45fd7c87227ddca7cffe888a1d932d73c123b25360690fd687554cc333fb3d871ab0e72ddd2b1158bae2e0 SHA512 466ae8aea014fd396f3fd6b77055238a672f012b79f25ed0b215e01f968a56dd4eeaf148d03246701b1ac4cbb8f02a4325142d6e5503fb6231e330c2e49e28e7
-DIST llvm-project-c3a935e3f967f8f22f5db240d145459ee621c1e0.tar.gz 225133913 BLAKE2B ced922010bad14df6bce0dbbb9323ee3cc9d7bf2f764f8c982d134d7a97e38d84b0b81635bbb16031aa1899c744e7c036cec5d1957733bbed7a2f18f89db0b6f SHA512 0ea083defb3c0ecaa5d8d28682f140c68ec6b3ab6cbfc60fc38a9265a8eb88b618c075d6ae03170ed54c5e7dcb3b7003eaacea2fcb115e9864b64a17cea0013d

diff --git a/llvm-core/clang/clang-19.1.6.ebuild b/llvm-core/clang/clang-19.1.6.ebuild
deleted file mode 100644
index d21a4ba71610..000000000000
--- a/llvm-core/clang/clang-19.1.6.ebuild
+++ /dev/null
@@ -1,465 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos"
-IUSE="debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-rename
-			clang-scan-deps
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-pseudo
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.0.0_pre20250111.ebuild b/llvm-core/clang/clang-20.0.0_pre20250111.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20250111.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.0.0_pre20250118.ebuild b/llvm-core/clang/clang-20.0.0_pre20250118.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20250118.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.0.0_pre20250122.ebuild b/llvm-core/clang/clang-20.0.0_pre20250122.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20250122.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-01  8:05 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-02-01  8:05 UTC (permalink / raw
  To: gentoo-commits

commit:     4cda1f4a9dbb02d995dbbf069ba4c8f20beedcdb
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Feb  1 07:59:11 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Feb  1 08:05:41 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4cda1f4a

llvm-core/clang: main is now 21*

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/{clang-20.0.0.9999.ebuild => clang-21.0.0.9999.ebuild} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/llvm-core/clang/clang-20.0.0.9999.ebuild b/llvm-core/clang/clang-21.0.0.9999.ebuild
similarity index 100%
rename from llvm-core/clang/clang-20.0.0.9999.ebuild
rename to llvm-core/clang/clang-21.0.0.9999.ebuild


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-01 13:15 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-02-01 13:15 UTC (permalink / raw
  To: gentoo-commits

commit:     762160bca7071e2a52b95920a57dfad8c84d304c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Feb  1 13:12:41 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Feb  1 13:14:43 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=762160bc

llvm-core/clang: Add 21.0.0_pre20250201 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-21.0.0_pre20250201.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 7781becc962b..34710fbc844c 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -20,3 +20,4 @@ DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e2
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
 DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
+DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23

diff --git a/llvm-core/clang/clang-21.0.0_pre20250201.ebuild b/llvm-core/clang/clang-21.0.0_pre20250201.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-21.0.0_pre20250201.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-02 18:25 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-02-02 18:25 UTC (permalink / raw
  To: gentoo-commits

commit:     fbf3e55149d56e9d72bd155b56c1c16623c41ff7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Feb  2 15:58:45 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Feb  2 18:25:03 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fbf3e551

llvm-core/clang: Add 20.1.0_rc1

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                |   2 +
 llvm-core/clang/clang-20.1.0_rc1.ebuild | 464 ++++++++++++++++++++++++++++++++
 2 files changed, 466 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 34710fbc844c..f2b7f23a295d 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -20,4 +20,6 @@ DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e2
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
 DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
+DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4
+DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c
 DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23

diff --git a/llvm-core/clang/clang-20.1.0_rc1.ebuild b/llvm-core/clang/clang-20.1.0_rc1.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-20.1.0_rc1.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-07 20:08 Arthur Zamarin
  0 siblings, 0 replies; 24+ messages in thread
From: Arthur Zamarin @ 2025-02-07 20:08 UTC (permalink / raw
  To: gentoo-commits

commit:     a8cfbab26b727b950293453a4ab51969365a3672
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Fri Feb  7 20:07:46 2025 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Fri Feb  7 20:07:46 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8cfbab2

llvm-core/clang: Stabilize 19.1.7 arm64, #946879

Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 llvm-core/clang/clang-19.1.7.ebuild | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm-core/clang/clang-19.1.7.ebuild b/llvm-core/clang/clang-19.1.7.ebuild
index c7ee638ea204..159bb5f5a0c9 100644
--- a/llvm-core/clang/clang-19.1.7.ebuild
+++ b/llvm-core/clang/clang-19.1.7.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="https://llvm.org/"
 
 LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
 SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
-KEYWORDS="amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos"
+KEYWORDS="amd64 ~arm arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos"
 IUSE="debug doc +extra ieee-long-double +pie +static-analyzer test xml"
 REQUIRED_USE="${PYTHON_REQUIRED_USE}"
 RESTRICT="!test? ( test )"


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-08 11:51 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-02-08 11:51 UTC (permalink / raw
  To: gentoo-commits

commit:     f81e48654da2549fb2d6b32743ba2e2aaf345bea
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Feb  8 11:48:47 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Feb  8 11:48:47 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f81e4865

llvm-core/clang: Add 21.0.0_pre20250208 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-21.0.0_pre20250208.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index f2b7f23a295d..3869e127708a 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -22,4 +22,5 @@ DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf
 DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
 DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4
 DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c
+DIST llvm-project-6f241e36831927e3aea113cfc017c34fdeda340a.tar.gz 227203285 BLAKE2B 8d5e424c1836acc82ea766cd2cef104593c44d197ebeb64f18dbe74b1b5baeb4bc84084f5b68bd87ac36f7df25689dd2522cb6674a97da4f96f4f10f7bae5b06 SHA512 2b6e4bd6445eabfa3ace9b45d20797c7afc23f4553a8938399aeba227e3b8ca6a53a7d7762925a845bfed031c37af692b9c08180fbab80db2f3166940e560077
 DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23

diff --git a/llvm-core/clang/clang-21.0.0_pre20250208.ebuild b/llvm-core/clang/clang-21.0.0_pre20250208.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-21.0.0_pre20250208.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-11 11:29 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-02-11 11:29 UTC (permalink / raw
  To: gentoo-commits

commit:     b5440ae325f2d8c2eff67d6f687525aac03d262f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 11 10:56:45 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Feb 11 11:29:35 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b5440ae3

llvm-core/clang: Add 21.0.0_pre20250211 snapshot

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   1 +
 llvm-core/clang/clang-21.0.0_pre20250211.ebuild | 464 ++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index 3869e127708a..eabbd80419b2 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -22,5 +22,6 @@ DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf
 DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
 DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4
 DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c
+DIST llvm-project-2cd8207b26ea4269630feba661f68554d7ae3c15.tar.gz 227261597 BLAKE2B 51ce992b651fcf08b7fd520420040803b59f1260947953325400c50bec576c418b162d8ae2d2307e70b885b1185c302a97409bcfe48cdb14b8e1384f4e2dfa9e SHA512 a41749943508ea4a18b47c4e947917b5268544e64372c0c3347f9ab8172a2c229d8b1d813d1e842be1b98aedd624524857ed3bb23fe98ad5f36e7a71581abb4b
 DIST llvm-project-6f241e36831927e3aea113cfc017c34fdeda340a.tar.gz 227203285 BLAKE2B 8d5e424c1836acc82ea766cd2cef104593c44d197ebeb64f18dbe74b1b5baeb4bc84084f5b68bd87ac36f7df25689dd2522cb6674a97da4f96f4f10f7bae5b06 SHA512 2b6e4bd6445eabfa3ace9b45d20797c7afc23f4553a8938399aeba227e3b8ca6a53a7d7762925a845bfed031c37af692b9c08180fbab80db2f3166940e560077
 DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23

diff --git a/llvm-core/clang/clang-21.0.0_pre20250211.ebuild b/llvm-core/clang/clang-21.0.0_pre20250211.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-21.0.0_pre20250211.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-13  7:53 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-02-13  7:53 UTC (permalink / raw
  To: gentoo-commits

commit:     cbddbc036c8ea23d9534554e1169382d115bf5ef
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 13 07:47:57 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Feb 13 07:52:54 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cbddbc03

llvm-core/clang: Add 20.1.0_rc2

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                |   2 +
 llvm-core/clang/clang-20.1.0_rc2.ebuild | 464 ++++++++++++++++++++++++++++++++
 2 files changed, 466 insertions(+)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index eabbd80419b2..e7b4aa677704 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -22,6 +22,8 @@ DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf
 DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
 DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4
 DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c
+DIST llvm-project-20.1.0-rc2.src.tar.xz 147160684 BLAKE2B 6adc1226f022272d78fb0ed361c190d369a2afc53bf868409fe8f4e092d5ffb9894c71870f072bb68162610782f48088468b4a49cdb1bc731d6689c791a5b5e3 SHA512 f303deaec8f25e1b122a7e85df192b6ea10c51472b78a3d14ad9d0b976a533cfbb9164aff0bc99e447e30938cf43363552c5493b4693e1f23291ea7a9b824bbb
+DIST llvm-project-20.1.0-rc2.src.tar.xz.sig 566 BLAKE2B aa91f7be228e51b0f2234bb5e0df173e3ddc90b6db4350a9008c2f8ba53220da6eef0c69778aecac3caecf918a0c54a0d910177ffe7643ad7fc5624a97262b7f SHA512 e5563a8a79b5e9ef26d62dc6d4385c1c86d12a652b4b1e7fc9ce45a2ea66e5118112746a61b439823bf99d65aea82285eabf5e07714eec77e6e5cd02feab82ce
 DIST llvm-project-2cd8207b26ea4269630feba661f68554d7ae3c15.tar.gz 227261597 BLAKE2B 51ce992b651fcf08b7fd520420040803b59f1260947953325400c50bec576c418b162d8ae2d2307e70b885b1185c302a97409bcfe48cdb14b8e1384f4e2dfa9e SHA512 a41749943508ea4a18b47c4e947917b5268544e64372c0c3347f9ab8172a2c229d8b1d813d1e842be1b98aedd624524857ed3bb23fe98ad5f36e7a71581abb4b
 DIST llvm-project-6f241e36831927e3aea113cfc017c34fdeda340a.tar.gz 227203285 BLAKE2B 8d5e424c1836acc82ea766cd2cef104593c44d197ebeb64f18dbe74b1b5baeb4bc84084f5b68bd87ac36f7df25689dd2522cb6674a97da4f96f4f10f7bae5b06 SHA512 2b6e4bd6445eabfa3ace9b45d20797c7afc23f4553a8938399aeba227e3b8ca6a53a7d7762925a845bfed031c37af692b9c08180fbab80db2f3166940e560077
 DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23

diff --git a/llvm-core/clang/clang-20.1.0_rc2.ebuild b/llvm-core/clang/clang-20.1.0_rc2.ebuild
new file mode 100644
index 000000000000..67e6515db8b5
--- /dev/null
+++ b/llvm-core/clang/clang-20.1.0_rc2.ebuild
@@ -0,0 +1,464 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit cmake llvm.org multilib multilib-minimal
+inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
+IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
+	static-analyzer? ( dev-lang/perl:* )
+	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	${DEPEND}
+	>=llvm-core/clang-common-${PV}
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	test? ( ~llvm-core/lld-${PV} )
+	xml? ( virtual/pkgconfig )
+"
+PDEPEND="
+	~llvm-core/clang-runtime-${PV}
+	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
+"
+
+LLVM_COMPONENTS=(
+	clang clang-tools-extra cmake
+)
+LLVM_MANPAGES=1
+LLVM_TEST_COMPONENTS=(
+	llvm/utils
+)
+LLVM_USE_TARGETS=llvm
+llvm.org_set_globals
+
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
+BDEPEND+="
+	$(python_gen_cond_dep '
+		dev-python/myst-parser[${PYTHON_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+	')
+"
+[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
+
+# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
+# multilib clang* libraries (not runtime, not wrappers).
+
+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
+			eerror "get_distribution_components() is outdated!"
+			eerror "   Add: ${add[*]}"
+			eerror "Remove: ${remove[*]}"
+			die "Update get_distribution_components()!"
+		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
+
+		aarch64-resource-headers
+		arm-common-resource-headers
+		arm-resource-headers
+		core-resource-headers
+		cuda-resource-headers
+		hexagon-resource-headers
+		hip-resource-headers
+		hlsl-resource-headers
+		mips-resource-headers
+		opencl-resource-headers
+		openmp-resource-headers
+		ppc-htm-resource-headers
+		ppc-resource-headers
+		riscv-resource-headers
+		systemz-resource-headers
+		utility-resource-headers
+		ve-resource-headers
+		webassembly-resource-headers
+		windows-resource-headers
+		x86-resource-headers
+
+		# libs
+		clang-cpp
+		libclang
+	)
+
+	if multilib_is_native_abi; then
+		out+=(
+			# common stuff
+			bash-autocomplete
+			libclang-python-bindings
+
+			# tools
+			amdgpu-arch
+			c-index-test
+			clang
+			clang-format
+			clang-installapi
+			clang-linker-wrapper
+			clang-nvlink-wrapper
+			clang-offload-bundler
+			clang-offload-packager
+			clang-refactor
+			clang-repl
+			clang-scan-deps
+			clang-sycl-linker
+			diagtool
+			hmaptool
+			nvptx-arch
+
+			# needed for cross-compiling Clang
+			clang-tblgen
+		)
+
+		if use extra; then
+			out+=(
+				# extra tools
+				clang-apply-replacements
+				clang-change-namespace
+				clang-doc
+				clang-include-cleaner
+				clang-include-fixer
+				clang-move
+				clang-query
+				clang-reorder-fields
+				clang-tidy
+				clang-tidy-headers
+				clangd
+				find-all-symbols
+				modularize
+				pp-trace
+			)
+		fi
+
+		if llvm_are_manpages_built; then
+			out+=( docs-clang-man )
+			use extra && out+=( docs-clang-tools-man )
+		fi
+
+		if use doc; then
+			out+=( docs-clang-html )
+			use extra && out+=( docs-clang-tools-html )
+		fi
+
+		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 mycmakeargs=(
+		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
+		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
+		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
+		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
+		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
+		# relative to bindir
+		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
+
+		-DBUILD_SHARED_LIBS=OFF
+		-DCLANG_LINK_CLANG_DYLIB=ON
+		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
+		-DCLANG_INCLUDE_TESTS=$(usex test)
+
+		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
+
+		# these are not propagated reliably, so redefine them
+		-DLLVM_ENABLE_EH=ON
+		-DLLVM_ENABLE_RTTI=ON
+
+		# libgomp support fails to find headers without explicit -I
+		# furthermore, it provides only syntax checking
+		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+
+		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
+
+		-DCLANG_ENABLE_LIBXML2=$(usex xml)
+		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
+		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
+		# TODO: CLANG_ENABLE_HLSL?
+
+		-DPython3_EXECUTABLE="${PYTHON}"
+	)
+
+	if ! use elibc_musl; then
+		mycmakeargs+=(
+			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
+		)
+	fi
+
+	use test && mycmakeargs+=(
+		-DLLVM_BUILD_TESTS=ON
+		-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"
+				-DSPHINX_WARNINGS_AS_ERRORS=OFF
+			)
+			if use extra; then
+				mycmakeargs+=(
+					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
+				)
+			fi
+		fi
+		mycmakeargs+=(
+			-DCLANG_INCLUDE_DOCS=${build_docs}
+		)
+	fi
+	if multilib_native_use extra; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
+			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
+		)
+	else
+		mycmakeargs+=(
+			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
+		)
+	fi
+
+	if tc-is-cross-compiler; then
+		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
+			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
+		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
+		mycmakeargs+=(
+			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
+			-DCLANG_TABLEGEN="${tools_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
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	local test_targets=( check-clang )
+	if multilib_native_use extra; then
+		test_targets+=(
+			check-clang-tools
+			check-clangd
+		)
+	fi
+	cmake_build "${test_targets[@]}"
+}
+
+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
+	if use extra; then
+		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
+	fi
+	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
+
+	# Apply CHOST and version suffix to clang tools
+	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/${LLVM_MAJOR}/bin/${i}" || die
+		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
+		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
+			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
+				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
+	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
+	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
+	fi
+
+	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
+	if use extra; then
+		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"
+	fi
+}
+
+pkg_postrm() {
+	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+		eselect compiler-shadow clean all
+	fi
+}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/
@ 2025-02-15  7:19 Michał Górny
  0 siblings, 0 replies; 24+ messages in thread
From: Michał Górny @ 2025-02-15  7:19 UTC (permalink / raw
  To: gentoo-commits

commit:     82d51dd84a8302a73a9a922bda6ea762faf30915
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Feb 15 07:18:06 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Feb 15 07:18:06 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=82d51dd8

llvm-core/clang: Remove old

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 llvm-core/clang/Manifest                        |   5 -
 llvm-core/clang/clang-20.0.0_pre20250125.ebuild | 464 ------------------------
 llvm-core/clang/clang-20.1.0_rc1.ebuild         | 464 ------------------------
 llvm-core/clang/clang-21.0.0_pre20250201.ebuild | 464 ------------------------
 llvm-core/clang/clang-21.0.0_pre20250208.ebuild | 464 ------------------------
 5 files changed, 1861 deletions(-)

diff --git a/llvm-core/clang/Manifest b/llvm-core/clang/Manifest
index e7b4aa677704..cacc7c44590c 100644
--- a/llvm-core/clang/Manifest
+++ b/llvm-core/clang/Manifest
@@ -19,11 +19,6 @@ DIST llvm-project-19.1.4.src.tar.xz 141255156 BLAKE2B b99cd8a96e38dbcfb582ee5d22
 DIST llvm-project-19.1.4.src.tar.xz.sig 438 BLAKE2B b0925bdb761046d69779e0b035e29430bc09ef2b81be763aa5c853793631d7b7fdd65eb4dae7a1e3b4daa15d189c24cd1e14f065f79fdbf75429fa34be9b330e SHA512 3fb4a6c7594cb43680860698dac47062dde30de60f515dcecdad63812ea1edfb2cb209d0a7ac2254589c245a95b7c0f571b582e0d4b97a6ae8242563483ea764
 DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
 DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
-DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
-DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4
-DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c
 DIST llvm-project-20.1.0-rc2.src.tar.xz 147160684 BLAKE2B 6adc1226f022272d78fb0ed361c190d369a2afc53bf868409fe8f4e092d5ffb9894c71870f072bb68162610782f48088468b4a49cdb1bc731d6689c791a5b5e3 SHA512 f303deaec8f25e1b122a7e85df192b6ea10c51472b78a3d14ad9d0b976a533cfbb9164aff0bc99e447e30938cf43363552c5493b4693e1f23291ea7a9b824bbb
 DIST llvm-project-20.1.0-rc2.src.tar.xz.sig 566 BLAKE2B aa91f7be228e51b0f2234bb5e0df173e3ddc90b6db4350a9008c2f8ba53220da6eef0c69778aecac3caecf918a0c54a0d910177ffe7643ad7fc5624a97262b7f SHA512 e5563a8a79b5e9ef26d62dc6d4385c1c86d12a652b4b1e7fc9ce45a2ea66e5118112746a61b439823bf99d65aea82285eabf5e07714eec77e6e5cd02feab82ce
 DIST llvm-project-2cd8207b26ea4269630feba661f68554d7ae3c15.tar.gz 227261597 BLAKE2B 51ce992b651fcf08b7fd520420040803b59f1260947953325400c50bec576c418b162d8ae2d2307e70b885b1185c302a97409bcfe48cdb14b8e1384f4e2dfa9e SHA512 a41749943508ea4a18b47c4e947917b5268544e64372c0c3347f9ab8172a2c229d8b1d813d1e842be1b98aedd624524857ed3bb23fe98ad5f36e7a71581abb4b
-DIST llvm-project-6f241e36831927e3aea113cfc017c34fdeda340a.tar.gz 227203285 BLAKE2B 8d5e424c1836acc82ea766cd2cef104593c44d197ebeb64f18dbe74b1b5baeb4bc84084f5b68bd87ac36f7df25689dd2522cb6674a97da4f96f4f10f7bae5b06 SHA512 2b6e4bd6445eabfa3ace9b45d20797c7afc23f4553a8938399aeba227e3b8ca6a53a7d7762925a845bfed031c37af692b9c08180fbab80db2f3166940e560077
-DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23

diff --git a/llvm-core/clang/clang-20.0.0_pre20250125.ebuild b/llvm-core/clang/clang-20.0.0_pre20250125.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-20.0.0_pre20250125.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-20.1.0_rc1.ebuild b/llvm-core/clang/clang-20.1.0_rc1.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-20.1.0_rc1.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-21.0.0_pre20250201.ebuild b/llvm-core/clang/clang-21.0.0_pre20250201.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-21.0.0_pre20250201.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}

diff --git a/llvm-core/clang/clang-21.0.0_pre20250208.ebuild b/llvm-core/clang/clang-21.0.0_pre20250208.ebuild
deleted file mode 100644
index 67e6515db8b5..000000000000
--- a/llvm-core/clang/clang-21.0.0_pre20250208.ebuild
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit cmake llvm.org multilib multilib-minimal
-inherit 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="${LLVM_MAJOR}/${LLVM_SOABI}"
-IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
-	static-analyzer? ( dev-lang/perl:* )
-	xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="
-	${PYTHON_DEPS}
-	${DEPEND}
-	>=llvm-core/clang-common-${PV}
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	test? ( ~llvm-core/lld-${PV} )
-	xml? ( virtual/pkgconfig )
-"
-PDEPEND="
-	~llvm-core/clang-runtime-${PV}
-	llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
-"
-
-LLVM_COMPONENTS=(
-	clang clang-tools-extra cmake
-)
-LLVM_MANPAGES=1
-LLVM_TEST_COMPONENTS=(
-	llvm/utils
-)
-LLVM_USE_TARGETS=llvm
-llvm.org_set_globals
-
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
-BDEPEND+="
-	$(python_gen_cond_dep '
-		dev-python/myst-parser[${PYTHON_USEDEP}]
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-"
-[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
-
-# 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 llvm-core/clang[${MULTILIB_USEDEP}] only if you need
-# multilib clang* libraries (not runtime, not wrappers).
-
-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
-			eerror "get_distribution_components() is outdated!"
-			eerror "   Add: ${add[*]}"
-			eerror "Remove: ${remove[*]}"
-			die "Update get_distribution_components()!"
-		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
-
-		aarch64-resource-headers
-		arm-common-resource-headers
-		arm-resource-headers
-		core-resource-headers
-		cuda-resource-headers
-		hexagon-resource-headers
-		hip-resource-headers
-		hlsl-resource-headers
-		mips-resource-headers
-		opencl-resource-headers
-		openmp-resource-headers
-		ppc-htm-resource-headers
-		ppc-resource-headers
-		riscv-resource-headers
-		systemz-resource-headers
-		utility-resource-headers
-		ve-resource-headers
-		webassembly-resource-headers
-		windows-resource-headers
-		x86-resource-headers
-
-		# libs
-		clang-cpp
-		libclang
-	)
-
-	if multilib_is_native_abi; then
-		out+=(
-			# common stuff
-			bash-autocomplete
-			libclang-python-bindings
-
-			# tools
-			amdgpu-arch
-			c-index-test
-			clang
-			clang-format
-			clang-installapi
-			clang-linker-wrapper
-			clang-nvlink-wrapper
-			clang-offload-bundler
-			clang-offload-packager
-			clang-refactor
-			clang-repl
-			clang-scan-deps
-			clang-sycl-linker
-			diagtool
-			hmaptool
-			nvptx-arch
-
-			# needed for cross-compiling Clang
-			clang-tblgen
-		)
-
-		if use extra; then
-			out+=(
-				# extra tools
-				clang-apply-replacements
-				clang-change-namespace
-				clang-doc
-				clang-include-cleaner
-				clang-include-fixer
-				clang-move
-				clang-query
-				clang-reorder-fields
-				clang-tidy
-				clang-tidy-headers
-				clangd
-				find-all-symbols
-				modularize
-				pp-trace
-			)
-		fi
-
-		if llvm_are_manpages_built; then
-			out+=( docs-clang-man )
-			use extra && out+=( docs-clang-tools-man )
-		fi
-
-		if use doc; then
-			out+=( docs-clang-html )
-			use extra && out+=( docs-clang-tools-html )
-		fi
-
-		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 mycmakeargs=(
-		-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-		-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-		-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-		-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang"
-		-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
-		# relative to bindir
-		-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-
-		-DBUILD_SHARED_LIBS=OFF
-		-DCLANG_LINK_CLANG_DYLIB=ON
-		-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-		-DCLANG_INCLUDE_TESTS=$(usex test)
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-
-		# these are not propagated reliably, so redefine them
-		-DLLVM_ENABLE_EH=ON
-		-DLLVM_ENABLE_RTTI=ON
-
-		# libgomp support fails to find headers without explicit -I
-		# furthermore, it provides only syntax checking
-		-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
-		-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-
-		-DCLANG_ENABLE_LIBXML2=$(usex xml)
-		-DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
-		-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
-		# TODO: CLANG_ENABLE_HLSL?
-
-		-DPython3_EXECUTABLE="${PYTHON}"
-	)
-
-	if ! use elibc_musl; then
-		mycmakeargs+=(
-			-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
-		)
-	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_BUILD_TESTS=ON
-		-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"
-				-DSPHINX_WARNINGS_AS_ERRORS=OFF
-			)
-			if use extra; then
-				mycmakeargs+=(
-					-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
-				)
-			fi
-		fi
-		mycmakeargs+=(
-			-DCLANG_INCLUDE_DOCS=${build_docs}
-		)
-	fi
-	if multilib_native_use extra; then
-		mycmakeargs+=(
-			-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-			-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
-		)
-	else
-		mycmakeargs+=(
-			-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		has_version -b llvm-core/clang:${LLVM_MAJOR} ||
-			die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
-		local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
-		mycmakeargs+=(
-			-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-			-DCLANG_TABLEGEN="${tools_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
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	local test_targets=( check-clang )
-	if multilib_native_use extra; then
-		test_targets+=(
-			check-clang-tools
-			check-clangd
-		)
-	fi
-	cmake_build "${test_targets[@]}"
-}
-
-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
-	if use extra; then
-		mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
-	fi
-	mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
-
-	# Apply CHOST and version suffix to clang tools
-	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/${LLVM_MAJOR}/bin/${i}" || die
-		dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
-		dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/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}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
-			dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
-				"/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
-	mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
-	if multilib_native_use extra; 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/${LLVM_MAJOR}/share/scan-view
-	fi
-
-	docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/share/clang"
-	if use extra; then
-		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"
-	fi
-}
-
-pkg_postrm() {
-	if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
-		eselect compiler-shadow clean all
-	fi
-}


^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2025-02-15  7:20 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-04 15:28 [gentoo-commits] repo/gentoo:master commit in: llvm-core/clang/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2025-02-15  7:19 Michał Górny
2025-02-13  7:53 Michał Górny
2025-02-11 11:29 Michał Górny
2025-02-08 11:51 Michał Górny
2025-02-07 20:08 Arthur Zamarin
2025-02-02 18:25 Michał Górny
2025-02-01 13:15 Michał Górny
2025-02-01  8:05 Michał Górny
2025-01-31 21:51 Michał Górny
2025-01-25 13:33 Michał Górny
2025-01-22 19:15 Michał Górny
2025-01-18 15:09 Michał Górny
2025-01-18  8:21 Michał Górny
2025-01-15  4:24 Michał Górny
2025-01-11 18:12 Michał Górny
2025-01-03 15:25 James Le Cuirot
2024-12-28 19:35 Michał Górny
2024-12-27 21:25 Michał Górny
2024-12-21 10:28 Michał Górny
2024-12-18 14:07 Michał Górny
2024-12-17 21:37 Michał Górny
2024-12-16  5:57 Michał Górny
2024-12-12  4:38 Sam James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox