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-core/clang-common/
Date: Tue, 29 Jul 2025 19:04:18 +0000 (UTC)	[thread overview]
Message-ID: <1753815838.c5cdf098220e6a426b35d1916f33a495bf51ad33.mgorny@gentoo> (raw)

commit:     c5cdf098220e6a426b35d1916f33a495bf51ad33
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 29 15:40:54 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jul 29 19:03:58 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c5cdf098

llvm-core/clang-common: Add 21.1.0_rc2

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

 llvm-core/clang-common/Manifest                    |   2 +
 .../clang-common/clang-common-21.1.0_rc2.ebuild    | 314 +++++++++++++++++++++
 2 files changed, 316 insertions(+)

diff --git a/llvm-core/clang-common/Manifest b/llvm-core/clang-common/Manifest
index 3d6f3bbda1c0..68c91603377c 100644
--- a/llvm-core/clang-common/Manifest
+++ b/llvm-core/clang-common/Manifest
@@ -15,4 +15,6 @@ 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-rc1.src.tar.xz 158955624 BLAKE2B 6a33d48f41f92cd8731011678afdf4c6f6a4581af04483626c511d1c9410d62788eb660e05cdfe418085509b576c29eec5bb07ae7ddc993e9931287657c11e03 SHA512 7ab3d1bb49bd3c5c9c1490cd865fdef027c25d64bb7f6a2a16c11c311670d08b7a214323ae4781aa0f49973deb0039ebea9d04887089df8dedf65080acdfc871
 DIST llvm-project-21.1.0-rc1.src.tar.xz.sig 438 BLAKE2B d3736b7f4bb6133e542fb3f52d1b76acc2920558e61bbbeeec6e5b7639ca54e229803b27baa4aedd2134c11fb4439064ac36e90c8c1831a503dd1754efee8da6 SHA512 6b9565f270fae4e534a160916bbd01ccd0e1295bf17df13f3be05bed4f058c0e935ba7385aba74a195d3a13868d81f2a0cf4be966b216fc6d7b56002f33eb4a0
+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-b956f049b186fafafebc88b861982644ec3f5291.tar.gz 243231046 BLAKE2B 473de217c29f168101976e0cd8b17f22c4a310c7f5bc7f8301a63d3abe1295fe75819178ff23bc22a475753cba097ef69042b0d40d1d9e3baef159aa9f8bea93 SHA512 0fb567ad5ea357c4aacfda4c256e78098017492a14998a409d4d5f5625384810a108420589ac22e700050fdd695bea870e64d18e7a6c8e8836a581aba263d40a

diff --git a/llvm-core/clang-common/clang-common-21.1.0_rc2.ebuild b/llvm-core/clang-common/clang-common-21.1.0_rc2.ebuild
new file mode 100644
index 000000000000..af6e46af4529
--- /dev/null
+++ b/llvm-core/clang-common/clang-common-21.1.0_rc2.ebuild
@@ -0,0 +1,314 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit bash-completion-r1 llvm.org multilib
+
+DESCRIPTION="Common files shared between multiple slots of clang"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="
+	default-compiler-rt default-libcxx default-lld
+	bootstrap-prefix cet hardened llvm-libunwind
+"
+
+PDEPEND="
+	default-compiler-rt? (
+		llvm-core/clang-runtime:${LLVM_MAJOR}[compiler-rt]
+		llvm-libunwind? ( llvm-runtimes/libunwind[static-libs] )
+		!llvm-libunwind? ( sys-libs/libunwind[static-libs] )
+	)
+	!default-compiler-rt? ( sys-devel/gcc )
+	default-libcxx? ( >=llvm-runtimes/libcxx-${PV}[static-libs] )
+	!default-libcxx? ( sys-devel/gcc )
+	default-lld? ( >=llvm-core/lld-${PV} )
+	!default-lld? ( sys-devel/binutils )
+"
+# enforce flags on clang-runtime as well to aid transition
+PDEPEND+="
+	llvm-core/clang-runtime[default-compiler-rt(-)?,default-libcxx(-)?,default-lld(-)?,llvm-libunwind(-)?]
+"
+IDEPEND="
+	!default-compiler-rt? ( sys-devel/gcc-config )
+	!default-libcxx? ( sys-devel/gcc-config )
+"
+
+LLVM_COMPONENTS=( clang/utils )
+llvm.org_set_globals
+
+pkg_pretend() {
+	[[ ${CLANG_IGNORE_DEFAULT_RUNTIMES} ]] && return
+
+	local flag missing_flags=()
+	for flag in default-{compiler-rt,libcxx,lld}; do
+		if ! use "${flag}" && has_version "llvm-core/clang[${flag}]"; then
+			missing_flags+=( "${flag}" )
+		fi
+	done
+
+	if [[ ${missing_flags[@]} ]]; then
+		eerror "It seems that you have the following flags set on llvm-core/clang:"
+		eerror
+		eerror "  ${missing_flags[*]}"
+		eerror
+		eerror "The default runtimes are now set via flags on llvm-core/clang-common."
+		eerror "The build is being aborted to prevent breakage.  Please either set"
+		eerror "the respective flags on this ebuild, e.g.:"
+		eerror
+		eerror "  llvm-core/clang-common ${missing_flags[*]}"
+		eerror
+		eerror "or build with CLANG_IGNORE_DEFAULT_RUNTIMES=1."
+		die "Mismatched defaults detected between llvm-core/clang and llvm-core/clang-common"
+	fi
+}
+
+_doclang_cfg() {
+	local triple="${1}"
+
+	local tool
+	for tool in ${triple}-clang{,++}; do
+		newins - "${tool}.cfg" <<-EOF
+			# This configuration file is used by ${tool} driver.
+			@gentoo-common.cfg
+			@gentoo-common-ld.cfg
+		EOF
+		if [[ ${triple} == x86_64* ]]; then
+			cat >> "${ED}/etc/clang/${tool}.cfg" <<-EOF || die
+				@gentoo-cet.cfg
+			EOF
+		fi
+	done
+
+	if use kernel_Darwin; then
+		cat >> "${ED}/etc/clang/${triple}-clang++.cfg" <<-EOF || die
+			-lc++abi
+		EOF
+	fi
+
+	newins - "${triple}-clang-cpp.cfg" <<-EOF
+		# This configuration file is used by the ${triple}-clang-cpp driver.
+		@gentoo-common.cfg
+	EOF
+	if [[ ${triple} == x86_64* ]]; then
+		cat >> "${ED}/etc/clang/${triple}-clang-cpp.cfg" <<-EOF || die
+			@gentoo-cet.cfg
+		EOF
+	fi
+
+	# Install symlinks for triples with other vendor strings since some
+	# programs insist on mangling the triple.
+	local vendor
+	for vendor in gentoo pc unknown; do
+		local vendor_triple="${triple%%-*}-${vendor}-${triple#*-*-}"
+		for tool in clang{,++,-cpp}; do
+			if [[ ! -f "${ED}/etc/clang/${vendor_triple}-${tool}.cfg" ]]; then
+				dosym "${triple}-${tool}.cfg" "/etc/clang/${vendor_triple}-${tool}.cfg"
+			fi
+		done
+	done
+}
+
+doclang_cfg() {
+	local triple="${1}"
+
+	_doclang_cfg ${triple}
+
+	# LLVM may have different arch names in some cases. For example in x86
+	# profiles the triple uses i686, but llvm will prefer i386 if invoked
+	# with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will
+	# be used if invoked through ${CHOST}-clang{,++,-cpp} though.
+	#
+	# To make sure the correct triples are installed,
+	# see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp
+	# and compare with CHOST values in profiles.
+
+	local abi=${triple%%-*}
+	case ${abi} in
+		armv4l|armv4t|armv5tel|armv6j|armv7a)
+			_doclang_cfg ${triple/${abi}/arm}
+			;;
+		i686)
+			_doclang_cfg ${triple/${abi}/i386}
+			;;
+		sparc)
+			_doclang_cfg ${triple/${abi}/sparcel}
+			;;
+		sparc64)
+			_doclang_cfg ${triple/${abi}/sparcv9}
+			;;
+	esac
+}
+
+src_install() {
+	newbashcomp bash-autocomplete.sh clang
+
+	insinto /etc/clang
+	newins - gentoo-runtimes.cfg <<-EOF
+		# This file is initially generated by llvm-core/clang-runtime.
+		# It is used to control the default runtimes using by clang.
+
+		--rtlib=$(usex default-compiler-rt compiler-rt libgcc)
+		--unwindlib=$(usex default-compiler-rt libunwind libgcc)
+		--stdlib=$(usex default-libcxx libc++ libstdc++)
+		-fuse-ld=$(usex default-lld lld bfd)
+	EOF
+
+	newins - gentoo-gcc-install.cfg <<-EOF
+		# This file is maintained by gcc-config.
+		# It is used to specify the selected GCC installation.
+	EOF
+
+	newins - gentoo-common.cfg <<-EOF
+		# This file contains flags common to clang, clang++ and clang-cpp.
+		@gentoo-runtimes.cfg
+		@gentoo-gcc-install.cfg
+		@gentoo-hardened.cfg
+		# bug #870001
+		-include "${EPREFIX}/usr/include/gentoo/maybe-stddefs.h"
+	EOF
+
+	# clang-cpp does not like link args being passed to it when directly
+	# invoked, so use a separate configuration file.
+	newins - gentoo-common-ld.cfg <<-EOF
+		# This file contains flags common to clang and clang++
+		@gentoo-hardened-ld.cfg
+	EOF
+
+	# Baseline hardening (bug #851111)
+	newins - gentoo-hardened.cfg <<-EOF
+		# Some of these options are added unconditionally, regardless of
+		# USE=hardened, for parity with sys-devel/gcc.
+		-Xarch_host -fstack-clash-protection
+		-Xarch_host -fstack-protector-strong
+		-fPIE
+		-include "${EPREFIX}/usr/include/gentoo/fortify.h"
+	EOF
+
+	newins - gentoo-cet.cfg <<-EOF
+		-Xarch_host -fcf-protection=$(usex cet full none)
+	EOF
+
+	if use kernel_Darwin; then
+		newins - gentoo-hardened-ld.cfg <<-EOF
+			# There was -Wl,-z,relro here, but it's not supported on Mac
+			# TODO: investigate whether -bind_at_load or -read_only_stubs will do the job
+		EOF
+	else
+		newins - gentoo-hardened-ld.cfg <<-EOF
+			# Some of these options are added unconditionally, regardless of
+			# USE=hardened, for parity with sys-devel/gcc.
+			-Wl,-z,relro
+			-Wl,-z,now
+		EOF
+	fi
+
+	dodir /usr/include/gentoo
+
+	cat >> "${ED}/usr/include/gentoo/maybe-stddefs.h" <<-EOF || die
+	/* __has_include is an extension, but it's fine, because this is only
+	for Clang anyway. */
+	#if defined __has_include && __has_include (<stdc-predef.h>) && !defined(__GLIBC__)
+	# include <stdc-predef.h>
+	#endif
+	EOF
+
+	local fortify_level=$(usex hardened 3 2)
+	# We have to do this because glibc's headers warn if F_S is set
+	# without optimization and that would at the very least be very noisy
+	# during builds and at worst trigger many -Werror builds.
+	cat >> "${ED}/usr/include/gentoo/fortify.h" <<- EOF || die
+	#ifdef __clang__
+	# pragma clang system_header
+	#endif
+	#ifndef _FORTIFY_SOURCE
+	# if defined(__has_feature)
+	#  define __GENTOO_HAS_FEATURE(x) __has_feature(x)
+	# else
+	#  define __GENTOO_HAS_FEATURE(x) 0
+	# endif
+	#
+	# if !defined(__OPTIMIZE__) || __OPTIMIZE__ == 0
+	# elif !defined(__STDC_HOSTED__) || __STDC_HOSTED__ != 1
+	# elif defined(__SANITIZE_ADDRESS__)
+	# elif __GENTOO_HAS_FEATURE(address_sanitizer)
+	# elif __GENTOO_HAS_FEATURE(hwaddress_sanitizer)
+	# elif __GENTOO_HAS_FEATURE(memory_sanitizer)
+	# elif __GENTOO_HAS_FEATURE(numerical_stability_sanitizer)
+	# elif __GENTOO_HAS_FEATURE(realtime_sanitizer)
+	# elif __GENTOO_HAS_FEATURE(thread_sanitizer)
+	# else
+	#  define _FORTIFY_SOURCE ${fortify_level}
+	# endif
+	#
+	# undef __GENTOO_HAS_FEATURE
+	#endif
+	EOF
+
+	# TODO: Maybe -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST for
+	# non-hardened?
+	if use hardened ; then
+		cat >> "${ED}/etc/clang/gentoo-hardened.cfg" <<-EOF || die
+			# Options below are conditional on USE=hardened.
+			-Xarch_host -D_GLIBCXX_ASSERTIONS
+
+			# Analogue to GLIBCXX_ASSERTIONS
+			# https://libcxx.llvm.org/UsingLibcxx.html#assertions-mode
+			# https://libcxx.llvm.org/Hardening.html#using-hardened-mode
+			-Xarch_host -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE
+		EOF
+
+		cat >> "${ED}/etc/clang/gentoo-hardened-ld.cfg" <<-EOF || die
+			# Options below are conditional on USE=hardened.
+		EOF
+	fi
+
+	# We only install config files for supported ABIs because unprefixed tools
+	# might be used for crosscompilation where e.g. PIE may not be supported.
+	# See bug #912237 and bug #901247. Just ${CHOST} won't do due to bug #912685.
+	local abi
+	for abi in $(get_all_abis); do
+		local abi_chost=$(get_abi_CHOST "${abi}")
+		doclang_cfg "${abi_chost}"
+	done
+
+	if use kernel_Darwin; then
+		cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die
+			# Gentoo Prefix on Darwin
+			-Wl,-search_paths_first
+		EOF
+		if use bootstrap-prefix ; then
+			# bootstrap-prefix is only set during stage2 of bootstrapping
+			# Prefix, where EPREFIX is set to EPREFIX/tmp.
+			# Here we need to point it at the future lib dir of the stage3's
+			# EPREFIX.
+			cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die
+				-Wl,-rpath,${EPREFIX}/../usr/lib
+				-Wl,-L,${EPREFIX}/../usr/lib
+				-isystem ${EPREFIX}/../usr/include
+			EOF
+		fi
+		# Using -Wl,-L instead of -L to trick compiler driver to put it
+		# after -isysroot's internal -L
+		cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die
+			-Wl,-rpath,${EPREFIX}/usr/lib
+			-Wl,-L,${EPREFIX}/usr/lib
+			-isystem ${EPREFIX}/usr/include
+			-isysroot ${EPREFIX}/MacOSX.sdk
+		EOF
+	fi
+}
+
+pkg_preinst() {
+	if has_version -b sys-devel/gcc-config && has_version sys-devel/gcc
+	then
+		local gcc_path=$(gcc-config --get-lib-path 2>/dev/null)
+		if [[ -n ${gcc_path} ]]; then
+			cat >> "${ED}/etc/clang/gentoo-gcc-install.cfg" <<-EOF
+				--gcc-install-dir="${gcc_path%%:*}"
+			EOF
+		fi
+	fi
+}


             reply	other threads:[~2025-07-29 19:05 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-29 19:04 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-core/clang-common/ Michał Górny
2025-10-08 17:28 Michał Górny
2025-10-04  9:16 Michał Górny
2025-10-03 11:43 Michał Górny
2025-10-03 11:39 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-21  2:44 Michał Górny
2025-09-10 11:47 Michał Górny
2025-09-07 19:47 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-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-12 17:09 Michał Górny
2025-08-09  9:47 Michał Górny
2025-08-02 10:29 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 11:02 Arthur Zamarin
2025-06-14  7:15 Michał Górny
2025-06-07 18:05 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-16  9: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-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-16 17:41 Michał Górny
2025-03-11 14:56 Michał Górny
2025-03-05 13:30 Michał Górny
2025-03-05 13:24 Michał Górny
2025-03-05 13:05 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-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-29 21:28 Sam James
2025-01-29 21:25 Sam James
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=1753815838.c5cdf098220e6a426b35d1916f33a495bf51ad33.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