public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: llvm-runtimes/libcxx/
Date: Tue, 12 Aug 2025 17:09:12 +0000 (UTC)	[thread overview]
Message-ID: <1755018538.a6ea9f53f45cfe15d26ee68462a4f187d12f726c.mgorny@gentoo> (raw)

commit:     a6ea9f53f45cfe15d26ee68462a4f187d12f726c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 12 12:23:22 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug 12 17:08:58 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a6ea9f53

llvm-runtimes/libcxx: Add 21.1.0_rc3

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

 llvm-runtimes/libcxx/Manifest                 |   2 +
 llvm-runtimes/libcxx/libcxx-21.1.0_rc3.ebuild | 237 ++++++++++++++++++++++++++
 2 files changed, 239 insertions(+)

diff --git a/llvm-runtimes/libcxx/Manifest b/llvm-runtimes/libcxx/Manifest
index cc2098fd7add..016c1cb37f48 100644
--- a/llvm-runtimes/libcxx/Manifest
+++ b/llvm-runtimes/libcxx/Manifest
@@ -17,5 +17,7 @@ DIST llvm-project-20.1.8.src.tar.xz 147242952 BLAKE2B 7657ac0b26acc5affb1bfc91b9
 DIST llvm-project-20.1.8.src.tar.xz.sig 566 BLAKE2B 85beedfcff1195a974fab2c667b9efd4b715b3480c1b44b1b887fe32c69f72aca0d3b8fb276c03b6cc5a866622f669047aeee5ccb976640b4008ccd31dce77a4 SHA512 d74369bdb4d1b82775161ea53c9c5f3a23ce810f4df5ff617123023f9d8ce720e7d6ecc9e17f8ebd39fd9e7a9de79560abdf2ffe73bcb907a43148d43665d619
 DIST llvm-project-21.1.0-rc2.src.tar.xz 158947868 BLAKE2B 8de20b0bf5219de12240561c3049de09a3253e1ebe33f84533d3f1f2ee9794b09fe2b6aca0b2fb15542b37b901be7bd3e00306cfd266ab59e2703046bcbcaf3d SHA512 0599cbe3d11d9135c355d5c60fdfda98a9689768f41baba0b8981769cc836eba8d226364d601031413c5f43ae1c4dda080ab910d60c983367b438fa32903d173
 DIST llvm-project-21.1.0-rc2.src.tar.xz.sig 438 BLAKE2B 7090c7a98e01e7bf600e4fbb23ad28d2e3bd8e72938863b59c7be8be0de2e1b3e3e2a981955165b833a95992ee086fd525919af7bcd7761073800486b3be3363 SHA512 dbe6cdd544b84d18b51f187e612de8ec05eeb9f1b462b7c4921697aaf6c6b0a00a6f4d3cf320a61cf57a886f11d47049bb5fa817f8bf835991a01b5e4a2d8c0a
+DIST llvm-project-21.1.0-rc3.src.tar.xz 158924056 BLAKE2B 5f3f46a499120c810a944361468cdea64cc29fa41a1c1f4549b1a845e6a36c891cd4af0a9fafda00663f73de61ef2658bf0640b68020cdebb7cb8446ba1cbf09 SHA512 3b84b2c9d8b164983890f797301591b5e20a54adc035b196db9a7f6a19e6ac13fe24d1c7816fe62ac87f853e5b4b9decf177046c43caed8e62ab8e8df574a2ef
+DIST llvm-project-21.1.0-rc3.src.tar.xz.sig 438 BLAKE2B 1a339fe00c27cddc508b369c4007e501266df42fbe0f448df3eecbf853ffa2915a6beef26e69c38169d37c12edcf60ac7c8ca5c0ae671b4c593356ccc6f3e3d5 SHA512 df8b3f747858fbb8c662899e6ea792556405cee2318be125a04e7b94c6dcebbed3ff01890f5e0c52e13b251243cfd1194806cf5ef52b482ae67d68be585574ad
 DIST llvm-project-92164faf17d553359418b9f49c1a41d680d0de49.tar.gz 245033829 BLAKE2B 7bf707e6455259417864a40c53beba4c4a9f6e4cf983671075016b95e537d2c249f97444089734718b5f2c989a2614028bd22142ccadae9c382e66b28758ecab SHA512 bf4105173144e6bb9cdc99ae67b7350228b37eae248c15aae2ce29877a8ee4cb76781a6beff366961fa366d31683b43421d684d019e25f0280735ccd6c22a432
 DIST llvm-project-b075dadbd3e0e928bdeddb3d36af64e8a383e305.tar.gz 244584834 BLAKE2B e6924d5fcc90431bdf859c3d728e44c348fa8ec336967c95fa9d253519c7bf9b3b200048ff8910eea78e5481a11704330ad72960fe753930036f75bca5b163b7 SHA512 80232cd00a2981392cf9fb22daceb164f965d5d5c9edb431226713a5e2f75ba5aaf747329ae5f4b852fd5e7f0be62ad978529080b4dce1bac7af480905b61c3b

diff --git a/llvm-runtimes/libcxx/libcxx-21.1.0_rc3.ebuild b/llvm-runtimes/libcxx/libcxx-21.1.0_rc3.ebuild
new file mode 100644
index 000000000000..aadd7774d65e
--- /dev/null
+++ b/llvm-runtimes/libcxx/libcxx-21.1.0_rc3.ebuild
@@ -0,0 +1,237 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..14} )
+inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
+inherit python-any-r1 toolchain-funcs
+
+DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
+HOMEPAGE="https://libcxx.llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
+SLOT="0"
+IUSE="+clang +libcxxabi +static-libs test"
+REQUIRED_USE="test? ( clang )"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+	libcxxabi? (
+		~llvm-runtimes/libcxxabi-${PV}[static-libs?,${MULTILIB_USEDEP}]
+	)
+	!libcxxabi? ( >=sys-devel/gcc-4.7:=[cxx] )
+"
+DEPEND="
+	${RDEPEND}
+	llvm-core/llvm:${LLVM_MAJOR}
+"
+BDEPEND="
+	clang? (
+		llvm-core/clang:${LLVM_MAJOR}
+	)
+	!test? (
+		${PYTHON_DEPS}
+	)
+	test? (
+		dev-debug/gdb[python]
+		$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
+	)
+"
+
+LLVM_COMPONENTS=(
+	runtimes libcxx{,abi} libc llvm/{cmake,utils/llvm-lit} cmake
+)
+llvm.org_set_globals
+
+python_check_deps() {
+	use test || return 0
+	python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+	python-any-r1_pkg_setup
+
+	if ! use libcxxabi && ! tc-is-gcc ; then
+		eerror "To build ${PN} against libsupc++, you have to use gcc. Other"
+		eerror "compilers are not supported. Please set CC=gcc and CXX=g++"
+		eerror "and try again."
+		die
+	fi
+}
+
+test_compiler() {
+	$(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c++ - \
+		<<<'int main() { return 0; }' &>/dev/null
+}
+
+src_configure() {
+	local install_prefix=${EPREFIX}
+	is_crosspkg && install_prefix+=/usr/${CTARGET}
+
+	# note: we need to do this before multilib kicks in since it will
+	# alter the CHOST
+	local cxxabi cxxabi_incs
+	if use libcxxabi; then
+		cxxabi=system-libcxxabi
+		cxxabi_incs="${install_prefix}/usr/include/c++/v1"
+	else
+		local gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
+		cxxabi=libsupc++
+		cxxabi_incs="${gcc_inc};${gcc_inc}/${CHOST}"
+	fi
+
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	# Workaround for bgo #961153.
+	# TODO: Fix the multilib.eclass, so it sets CTARGET properly.
+	if ! is_crosspkg; then
+		export CTARGET=${CHOST}
+	fi
+
+	if use clang; then
+		llvm_prepend_path -b "${LLVM_MAJOR}"
+		local -x CC=${CTARGET}-clang
+		local -x CXX=${CTARGET}-clang++
+		strip-unsupported-flags
+	fi
+
+	# link to compiler-rt
+	local use_compiler_rt=OFF
+	[[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
+
+	# Scenarios to consider:
+	#
+	# 1. Compiler test works with the default flags.
+	# 2. There is a runtime library, but no stdlib. In that case, leave the
+	#    LDFLAGS untouched, since there is no self-dependency in libc++.
+	# 3. There is no runtime library nor stdlib. In that case, overwrite the
+	#    LDFLAGS.
+	local nostdlib_flags=( -nostdlib --rtlib=compiler-rt -lc )
+	local nort_flags=( -nodefaultlibs -lc )
+	if ! test_compiler && ! test_compiler "${nostdlib_flags[@]}"; then
+		if test_compiler "${nort_flags[@]}"; then
+			local -x LDFLAGS="${LDFLAGS} ${nort_flags[*]}"
+			ewarn "${CXX} seems to lack runtime, trying with ${nort_flags[*]}"
+		fi
+	fi
+
+	local libdir=$(get_libdir)
+	local mycmakeargs=(
+		-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
+
+		-DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
+		-DPython3_EXECUTABLE="${PYTHON}"
+		-DLLVM_ENABLE_RUNTIMES=libcxx
+		-DLLVM_INCLUDE_TESTS=OFF
+		-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
+
+		-DLIBCXX_ENABLE_SHARED=ON
+		-DLIBCXX_ENABLE_STATIC=$(usex static-libs)
+		-DLIBCXX_CXX_ABI=${cxxabi}
+		-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi_incs}
+		# we're using our own mechanism for generating linker scripts
+		-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
+		-DLIBCXX_HAS_MUSL_LIBC=$(llvm_cmake_use_musl)
+		-DLIBCXX_INCLUDE_BENCHMARKS=OFF
+		-DLIBCXX_INCLUDE_TESTS=$(usex test)
+		-DLIBCXX_INSTALL_MODULES=ON
+		-DLIBCXX_USE_COMPILER_RT=${use_compiler_rt}
+		# this is broken with standalone builds, and also meaningless
+		-DLIBCXXABI_USE_LLVM_UNWINDER=OFF
+	)
+	if is_crosspkg; then
+		# Needed to target built libc headers
+		local -x CFLAGS="${CFLAGS} -isystem ${ESYSROOT}/usr/${CTARGET}/usr/include"
+		mycmakeargs+=(
+			# Without this, the compiler will compile a test program
+			# and fail due to no builtins.
+			-DCMAKE_C_COMPILER_WORKS=1
+			-DCMAKE_CXX_COMPILER_WORKS=1
+			# Install inside the cross sysroot.
+			-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
+		)
+	fi
+	if use test; then
+		mycmakeargs+=(
+			-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
+			-DLLVM_LIT_ARGS="$(get_lit_flags)"
+			-DPython3_EXECUTABLE="${PYTHON}"
+		)
+	fi
+	cmake_src_configure
+}
+
+multilib_src_compile() {
+	cmake_src_compile
+	if [[ ${CHOST} != *-darwin* ]] ; then
+		gen_shared_ldscript
+		use static-libs && gen_static_ldscript
+	fi
+}
+
+multilib_src_test() {
+	local -x LIT_PRESERVES_TMP=1
+	cmake_build install-cxx-test-suite-prefix
+	cp "${BUILD_DIR}"/{lib,libcxx/test-suite-install/$(get_libdir)}/libc++_shared.so || die
+	if use static-libs; then
+		cp "${BUILD_DIR}"/{lib,libcxx/test-suite-install/$(get_libdir)}/libc++_static.a || die
+	fi
+	cmake_build check-cxx
+}
+
+multilib_src_install() {
+	cmake_src_install
+	# since we've replaced libc++.{a,so} with ldscripts, now we have to
+	# install the extra symlinks
+	if [[ ${CHOST} != *-darwin* ]] ; then
+		is_crosspkg && into /usr/${CTARGET}
+		dolib.so lib/libc++_shared.so
+		use static-libs && dolib.a lib/libc++_static.a
+	fi
+}
+
+# Usage: deps
+gen_ldscript() {
+	local output_format
+	output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
+	[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"
+
+	cat <<-END_LDSCRIPT
+/* GNU ld script
+   Include missing dependencies
+*/
+${output_format}
+GROUP ( $@ )
+END_LDSCRIPT
+}
+
+gen_static_ldscript() {
+	# Move it first.
+	mv lib/libc++{,_static}.a || die
+	# Generate libc++.a ldscript for inclusion of its dependencies so that
+	# clang++ -stdlib=libc++ -static works out of the box.
+	local deps=(
+		libc++_static.a
+		$(usex libcxxabi libc++abi.a libsupc++.a)
+	)
+	# On Linux/glibc it does not link without libpthread or libdl. It is
+	# fine on FreeBSD.
+	use elibc_glibc && deps+=( libpthread.a libdl.a )
+
+	gen_ldscript "${deps[*]}" > lib/libc++.a || die
+}
+
+gen_shared_ldscript() {
+	# Move it first.
+	mv lib/libc++{,_shared}.so || die
+	local deps=(
+		libc++_shared.so
+		# libsupc++ doesn't have a shared version
+		$(usex libcxxabi libc++abi.so libsupc++.a)
+	)
+
+	gen_ldscript "${deps[*]}" > lib/libc++.so || die
+}


             reply	other threads:[~2025-08-12 17:09 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-12 17:09 Michał Górny [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-10-11 19:54 [gentoo-commits] repo/gentoo:master commit in: llvm-runtimes/libcxx/ Michał Górny
2025-10-09 16:17 Michał Górny
2025-10-08 17:29 Michał Górny
2025-10-04  9:16 Michał Górny
2025-10-03 11:43 Michał Górny
2025-10-01  6:35 Michał Górny
2025-09-24 16:18 Michał Górny
2025-09-24  2:27 Michał Górny
2025-09-23 19:14 Michał Górny
2025-09-10 11:47 Michał Górny
2025-09-07 19:47 Michał Górny
2025-09-02 14:29 Michał Górny
2025-08-31 13:28 Michał Górny
2025-08-27 12:28 Michał Górny
2025-08-26 19:38 Michał Górny
2025-08-26  8:56 Michał Górny
2025-08-24 19:02 Arthur Zamarin
2025-08-24 18:51 Arthur Zamarin
2025-08-24 18:51 Arthur Zamarin
2025-08-21  8:22 Michał Górny
2025-08-21  8:18 Michał Górny
2025-08-16 13:51 Michał Górny
2025-08-15 19:13 Michał Górny
2025-08-09  9:47 Michał Górny
2025-08-06 20:06 Michał Górny
2025-08-06 12:29 Michał Górny
2025-08-06 12:29 Michał Górny
2025-08-02 10:29 Michał Górny
2025-07-29 19:04 Michał Górny
2025-07-26 19:53 Michał Górny
2025-07-22  9:20 Michał Górny
2025-07-20 14:15 Michał Górny
2025-07-20  8:24 Sam James
2025-07-19  6:50 Michał Górny
2025-07-13 20:03 Michał Górny
2025-07-09 18:49 Michał Górny
2025-06-28 15:03 Michał Górny
2025-06-28 14:55 Michał Górny
2025-06-14 14:24 Sam James
2025-06-14 14:12 Michał Górny
2025-06-14 11:02 Arthur Zamarin
2025-06-14  7:15 Michał Górny
2025-06-07 18:05 Michał Górny
2025-06-04 19:53 Michał Górny
2025-05-29 20:22 Michał Górny
2025-05-29  4:22 Michał Górny
2025-05-28 11:54 Michał Górny
2025-05-28 11:54 Michał Górny
2025-05-28 10:50 Michał Górny
2025-05-24 11:56 Michał Górny
2025-05-17 12:59 Michał Górny
2025-05-17  5:31 Michał Górny
2025-05-10 13:03 Michał Górny
2025-05-03 19:42 Michał Górny
2025-05-03 10:07 Michał Górny
2025-04-26 15:59 Michał Górny
2025-04-20 11:50 Michał Górny
2025-04-19  6:29 Michał Górny
2025-04-16 18:34 Michał Górny
2025-04-15 10:15 Michał Górny
2025-04-12 10:21 Michał Górny
2025-04-12 10:19 Arthur Zamarin
2025-04-12  8:59 Michał Górny
2025-04-12  4:57 Michał Górny
2025-04-05 12:24 Michał Górny
2025-04-03 11:29 Michał Górny
2025-03-29 10:27 Michał Górny
2025-03-23 13:46 Arthur Zamarin
2025-03-22 10:43 Michał Górny
2025-03-20 16:50 Michał Górny
2025-03-17 20:13 Michał Górny
2025-03-17 16:29 Michał Górny
2025-03-17  6:22 Michał Górny
2025-03-16 17:41 Michał Górny
2025-03-11 14:56 Michał Górny
2025-03-05 10:13 Michał Górny
2025-03-05  6:25 Michał Górny
2025-03-01 12:58 Michał Górny
2025-03-01  8:34 Michał Górny
2025-02-26 18:55 Michał Górny
2025-02-25 14:03 Michał Górny
2025-02-22 15:19 Michał Górny
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-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-04 15:28 Michał Górny
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-17 21:37 Michał Górny
2024-12-16  5:57 Michał Górny

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1755018538.a6ea9f53f45cfe15d26ee68462a4f187d12f726c.mgorny@gentoo \
    --to=mgorny@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox