public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [gentoo-commits] repo/gentoo:master commit in: sys-devel/clang-common/
@ 2022-09-30 14:52 99% Michał Górny
  0 siblings, 0 replies; 1+ results
From: Michał Górny @ 2022-09-30 14:52 UTC (permalink / raw
  To: gentoo-commits

commit:     bf25b57ea645de70edfa0798d7392349a75c222a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 30 13:11:50 2022 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 30 14:52:15 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bf25b57e

sys-devel/clang-common: Install config files for clang 16.x

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

 .../clang-common/clang-common-16.0.0.9999.ebuild   | 76 +++++++++++++++++++++-
 .../clang-common-16.0.0_pre20220930.ebuild         | 76 +++++++++++++++++++++-
 sys-devel/clang-common/metadata.xml                |  5 ++
 3 files changed, 155 insertions(+), 2 deletions(-)

diff --git a/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild b/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild
index 1285500128bb..67012cf2b988 100644
--- a/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild
+++ b/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit bash-completion-r1 llvm.org
+inherit bash-completion-r1 llvm.org multilib
 
 DESCRIPTION="Common files shared between multiple slots of clang"
 HOMEPAGE="https://llvm.org/"
@@ -11,14 +11,88 @@ HOMEPAGE="https://llvm.org/"
 LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
 SLOT="0"
 KEYWORDS=""
+IUSE="default-compiler-rt default-libcxx default-lld llvm-libunwind"
 
 PDEPEND="
 	sys-devel/clang:*
+	default-compiler-rt? (
+		=sys-libs/compiler-rt-${PV%_*}*
+		llvm-libunwind? ( sys-libs/llvm-libunwind )
+		!llvm-libunwind? ( sys-libs/libunwind )
+	)
+	default-libcxx? ( >=sys-libs/libcxx-${PV} )
+	default-lld? ( sys-devel/lld )
 "
 
 LLVM_COMPONENTS=( clang/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 "sys-devel/clang[${flag}]"; then
+			missing_flags+=( "${flag}" )
+		fi
+	done
+
+	if [[ ${missing_flags[@]} ]]; then
+		eerror "It seems that you have the following flags set on sys-devel/clang:"
+		eerror
+		eerror "  ${missing_flags[*]}"
+		eerror
+		eerror "The default runtimes are now set via flags on sys-devel/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 "  sys-devel/clang-common ${missing_flags[*]}"
+		eerror
+		eerror "or build with CLANG_IGNORE_DEFAULT_RUNTIMES=1."
+		die "Mismatched defaults detected between sys-devel/clang and sys-devel/clang-common"
+	fi
+}
+
+usec() {
+	usex "default-${1}" "" "# "
+}
+
 src_install() {
 	newbashcomp bash-autocomplete.sh clang
+
+	insinto /etc/clang
+	newins - gentoo-runtimes.cfg <<-EOF
+		# This file is initially generated by sys-devel/clang-runtime.
+		# It is used to control the default runtimes using by clang.
+
+		$(usec compiler-rt)-rtlib=compiler-rt
+		$(usec compiler-rt)-unwindlib=libunwind
+		$(usec libcxx)-stdlib=libc++
+		$(usec lld)-fuse-ld=lld
+	EOF
+
+	newins - gentoo-gcc-install.cfg <<-EOF
+		# This file is maintained by gcc-config.
+		# It is used to specify the selected GCC installation.
+	EOF
+
+	local tool
+	for tool in clang{,++,-cpp}; do
+		newins - "${tool}.cfg" <<-EOF
+			# This configuration file is used by ${tool} driver.
+			@gentoo-runtimes.cfg
+			@gentoo-gcc-install.cfg
+		EOF
+	done
+}
+
+pkg_preinst() {
+	# TODO: move this to gcc-config and call it here?
+
+	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
 }

diff --git a/sys-devel/clang-common/clang-common-16.0.0_pre20220930.ebuild b/sys-devel/clang-common/clang-common-16.0.0_pre20220930.ebuild
index 1285500128bb..67012cf2b988 100644
--- a/sys-devel/clang-common/clang-common-16.0.0_pre20220930.ebuild
+++ b/sys-devel/clang-common/clang-common-16.0.0_pre20220930.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit bash-completion-r1 llvm.org
+inherit bash-completion-r1 llvm.org multilib
 
 DESCRIPTION="Common files shared between multiple slots of clang"
 HOMEPAGE="https://llvm.org/"
@@ -11,14 +11,88 @@ HOMEPAGE="https://llvm.org/"
 LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
 SLOT="0"
 KEYWORDS=""
+IUSE="default-compiler-rt default-libcxx default-lld llvm-libunwind"
 
 PDEPEND="
 	sys-devel/clang:*
+	default-compiler-rt? (
+		=sys-libs/compiler-rt-${PV%_*}*
+		llvm-libunwind? ( sys-libs/llvm-libunwind )
+		!llvm-libunwind? ( sys-libs/libunwind )
+	)
+	default-libcxx? ( >=sys-libs/libcxx-${PV} )
+	default-lld? ( sys-devel/lld )
 "
 
 LLVM_COMPONENTS=( clang/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 "sys-devel/clang[${flag}]"; then
+			missing_flags+=( "${flag}" )
+		fi
+	done
+
+	if [[ ${missing_flags[@]} ]]; then
+		eerror "It seems that you have the following flags set on sys-devel/clang:"
+		eerror
+		eerror "  ${missing_flags[*]}"
+		eerror
+		eerror "The default runtimes are now set via flags on sys-devel/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 "  sys-devel/clang-common ${missing_flags[*]}"
+		eerror
+		eerror "or build with CLANG_IGNORE_DEFAULT_RUNTIMES=1."
+		die "Mismatched defaults detected between sys-devel/clang and sys-devel/clang-common"
+	fi
+}
+
+usec() {
+	usex "default-${1}" "" "# "
+}
+
 src_install() {
 	newbashcomp bash-autocomplete.sh clang
+
+	insinto /etc/clang
+	newins - gentoo-runtimes.cfg <<-EOF
+		# This file is initially generated by sys-devel/clang-runtime.
+		# It is used to control the default runtimes using by clang.
+
+		$(usec compiler-rt)-rtlib=compiler-rt
+		$(usec compiler-rt)-unwindlib=libunwind
+		$(usec libcxx)-stdlib=libc++
+		$(usec lld)-fuse-ld=lld
+	EOF
+
+	newins - gentoo-gcc-install.cfg <<-EOF
+		# This file is maintained by gcc-config.
+		# It is used to specify the selected GCC installation.
+	EOF
+
+	local tool
+	for tool in clang{,++,-cpp}; do
+		newins - "${tool}.cfg" <<-EOF
+			# This configuration file is used by ${tool} driver.
+			@gentoo-runtimes.cfg
+			@gentoo-gcc-install.cfg
+		EOF
+	done
+}
+
+pkg_preinst() {
+	# TODO: move this to gcc-config and call it here?
+
+	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
 }

diff --git a/sys-devel/clang-common/metadata.xml b/sys-devel/clang-common/metadata.xml
index 072910296ca3..31c80b4fb555 100644
--- a/sys-devel/clang-common/metadata.xml
+++ b/sys-devel/clang-common/metadata.xml
@@ -7,4 +7,9 @@
 	<upstream>
 		<remote-id type="github">llvm/llvm-project</remote-id>
 	</upstream>
+	<use>
+		<flag name="default-compiler-rt">Use compiler-rt + libunwind instead of libgcc as the default rtlib for clang</flag>
+		<flag name="default-libcxx">Use libc++ instead of libstdc++ as the default stdlib for clang</flag>
+		<flag name="default-lld">Use lld as the default linker for clang</flag>
+	</use>
 </pkgmetadata>


^ permalink raw reply related	[relevance 99%]

Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2022-09-30 14:52 99% [gentoo-commits] repo/gentoo:master commit in: sys-devel/clang-common/ Michał Górny

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