commit:     1d1a2bedaf65d3d3a1b1644acdea082aa1cc269a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Oct  2 07:42:23 2022 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Oct  3 12:36:31 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d1a2bed

sys-devel/clang-common: Backport config support to 15.0.2.9999

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

 .../clang-common/clang-common-15.0.2.9999.ebuild   | 76 +++++++++++++++++++++-
 1 file changed, 75 insertions(+), 1 deletion(-)

diff --git a/sys-devel/clang-common/clang-common-15.0.2.9999.ebuild 
b/sys-devel/clang-common/clang-common-15.0.2.9999.ebuild
index 1285500128bb..67012cf2b988 100644
--- a/sys-devel/clang-common/clang-common-15.0.2.9999.ebuild
+++ b/sys-devel/clang-common/clang-common-15.0.2.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
 }

Reply via email to