diff options
author | Michał Górny <mgorny@gentoo.org> | 2022-09-30 15:11:50 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2022-09-30 16:52:15 +0200 |
commit | bf25b57ea645de70edfa0798d7392349a75c222a (patch) | |
tree | 86076ed2ff2999813ab48c8f356de058e4aa85ae | |
parent | sys-libs/llvm-libunwind: Disable cross-unwind in 16.0.0_pre20220930 (diff) | |
download | gentoo-bf25b57e.tar.gz gentoo-bf25b57e.tar.bz2 gentoo-bf25b57e.zip |
sys-devel/clang-common: Install config files for clang 16.x
Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r-- | sys-devel/clang-common/clang-common-16.0.0.9999.ebuild | 76 | ||||
-rw-r--r-- | sys-devel/clang-common/clang-common-16.0.0_pre20220930.ebuild | 76 | ||||
-rw-r--r-- | 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> |