diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-09-11 12:30:55 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-09-11 12:30:55 +0100 |
commit | 65a36438d5b824f80023c282dadc3fcd5736b526 (patch) | |
tree | 12aedb23736e7cceba662d217cdd7f0f2a2662ba /sys-devel/clang-common | |
parent | add278b9601ff9e4af091c91c851ee46a185be8f (diff) |
gentoo auto-resync : 11:09:2024 - 12:30:54
Diffstat (limited to 'sys-devel/clang-common')
-rw-r--r-- | sys-devel/clang-common/Manifest | 2 | ||||
-rw-r--r-- | sys-devel/clang-common/clang-common-20.0.0_pre20240910.ebuild | 304 |
2 files changed, 306 insertions, 0 deletions
diff --git a/sys-devel/clang-common/Manifest b/sys-devel/clang-common/Manifest index 037a6f8b5bb5..5f8ce43892ff 100644 --- a/sys-devel/clang-common/Manifest +++ b/sys-devel/clang-common/Manifest @@ -9,6 +9,7 @@ DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b8577 DIST llvm-project-19.1.0-rc4.src.tar.xz 141255904 BLAKE2B c693dc94aeb4b59ad4a05a426037075449535c398cbc1ae9b4371d42ea0962b267a3be8af93f4fe47b21c11964fbea6e8eb662225e6f79b20bbc35e706588435 SHA512 826978a596b26040124f2ceba858f91031f78faca22f32de2eea1a4d299a849dcb1fffdfb01601adc39d733dd0cdee43b21af05159d45dcebc842f6b6b540ba8 DIST llvm-project-19.1.0-rc4.src.tar.xz.sig 438 BLAKE2B aef02737285d2faa1b21cec1a32fff6e776ac4bb5c4fd6f26d3d1a9b9244ed1fc0a1eb786a444a6549dda8683485f67964b4d4e48393e1780e7938ee0d94348a SHA512 5b9dcbf232229fdd87824bc87d0ad4ebd54127c9288708fb3304166422d378b77a843d7c5d8258850a0de59310c24e65042d636a5314e2af8513627a43bdb6e8 DIST llvm-project-5500e21942f7047344b6fee62d3e08c0ba2f9182.tar.gz 219148250 BLAKE2B 61880a13086c46ac9a9f8326b1e007146afb1662a0a223703fe36a91da230d5708b368f1177e76ac13c1e5a30f620c4ce6346484a0a67a0f011a816bba4d13f9 SHA512 a6d4fcae960b450be2abd2da485cea638b73290b17ceeabf560651d614f55925f86ee6f76a116262d8a1ff70ba699468cb4cf4c32015e26540ba6e47c58db1b7 +DIST llvm-project-bece0d7517bd0a036dc8a319514e4a8a5c497dee.tar.gz 218241938 BLAKE2B 7ac08a21ab2899823683dc700bd2f6226e22653f5be553fe0278868f9fa0d8946fabe6aae40f68cfd14e019b1a3795affb64bf41ebcc949394b73a90e7cd019c SHA512 8893512dcbc1171d2c91aeb0aa9e5fd424474c4d6b5215fb1a078dc8757ab2d404b55ed90709e09368e0794c8306f489be8339d5c502dd6c2ef1852e24636e85 EBUILD clang-common-15.0.7-r8.ebuild 5482 BLAKE2B 20e8744166a852b4dbc233f128807e60bb204f14558d2cc1691b1a87777be2775d1a6c82a108945f795b02919bc47bf213b1a85e45f423c49a6009aed0fbbc3b SHA512 bf1f5cdf47c6772266117e9545994dcfb27cfd263a5e7749604106686d8e56b8b45ddab7073d6baf73e966304162f3aad755075c11dbb16bb42b88fa78e6face EBUILD clang-common-16.0.6-r4.ebuild 5726 BLAKE2B de26b88570bf487a2be2a59f4551c8e61b940fb84b0dc3cb5be1884252672782700b657fb63c0b7ac247ec2092b236a550b51273f73ec19fab7db6eeda0ff94e SHA512 9f2778fbb89d578e162b36c7a692219533437d9fbec407422e7aff1b11d942f09c8cf0edb5c5bd37bbf34523b1f947b418f954b632d769f836baa7d2493bc527 EBUILD clang-common-17.0.6-r5.ebuild 9010 BLAKE2B cbb5c5094ca6e99fc9ce1734acf02e2e35b792173f84b71e19b25e687f7a93a6fca31e4461fc580d92c0eadabe1400359bec3938fc0cba2cac9bc28a4b8d66be SHA512 ea66877912d34f11a0b788a0d188caf03a5c06098507e7bbb3fa609f594d7b9397ac8fa21c7b502238e36b1ede7bf32dc173b9a6d74a3be1e5d3f25babac9165 @@ -17,4 +18,5 @@ EBUILD clang-common-18.1.8-r1.ebuild 9157 BLAKE2B 14774bfe075203448411b3d83aceba EBUILD clang-common-19.1.0_rc4.ebuild 9042 BLAKE2B 7fc18661a55e2c223cc3c4e6c8477a913a0ed025b013f4407e58682f00f389cc2961c8cd5ee20d13e75b51f1c8a0b79569a0bb35da6a2028703f9fee553ed4c0 SHA512 212b4035d367e465de90d6b89c81388e45023257aec550dfe81c7ca71ea0a8d59b2ece092c8cbc4b5eadf4d29a3fbde6a49e6fdbce3fde8ccd1300dc7fafdf58 EBUILD clang-common-20.0.0.9999.ebuild 9042 BLAKE2B 7fc18661a55e2c223cc3c4e6c8477a913a0ed025b013f4407e58682f00f389cc2961c8cd5ee20d13e75b51f1c8a0b79569a0bb35da6a2028703f9fee553ed4c0 SHA512 212b4035d367e465de90d6b89c81388e45023257aec550dfe81c7ca71ea0a8d59b2ece092c8cbc4b5eadf4d29a3fbde6a49e6fdbce3fde8ccd1300dc7fafdf58 EBUILD clang-common-20.0.0_pre20240830.ebuild 9042 BLAKE2B 7fc18661a55e2c223cc3c4e6c8477a913a0ed025b013f4407e58682f00f389cc2961c8cd5ee20d13e75b51f1c8a0b79569a0bb35da6a2028703f9fee553ed4c0 SHA512 212b4035d367e465de90d6b89c81388e45023257aec550dfe81c7ca71ea0a8d59b2ece092c8cbc4b5eadf4d29a3fbde6a49e6fdbce3fde8ccd1300dc7fafdf58 +EBUILD clang-common-20.0.0_pre20240910.ebuild 9042 BLAKE2B 7fc18661a55e2c223cc3c4e6c8477a913a0ed025b013f4407e58682f00f389cc2961c8cd5ee20d13e75b51f1c8a0b79569a0bb35da6a2028703f9fee553ed4c0 SHA512 212b4035d367e465de90d6b89c81388e45023257aec550dfe81c7ca71ea0a8d59b2ece092c8cbc4b5eadf4d29a3fbde6a49e6fdbce3fde8ccd1300dc7fafdf58 MISC metadata.xml 1248 BLAKE2B d9c542ec74a08857a87a42927feef909c343b5b672145e471ebc69753a3f93432d2ae93ed2659a67d504e2c5ff4212640e4208b173d96e5a173a1043766b66f8 SHA512 eb6d4be1dfbdf6b70b774d42493f6b3015472d5e4bba9386254f6e4ae92307169fe1ac6f0f613d452a9c21c6d61ed57ab50efb54813146983f4d6809b32ddacb diff --git a/sys-devel/clang-common/clang-common-20.0.0_pre20240910.ebuild b/sys-devel/clang-common/clang-common-20.0.0_pre20240910.ebuild new file mode 100644 index 000000000000..090a45690818 --- /dev/null +++ b/sys-devel/clang-common/clang-common-20.0.0_pre20240910.ebuild @@ -0,0 +1,304 @@ +# Copyright 1999-2024 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=" + sys-devel/clang:* + default-compiler-rt? ( + sys-devel/clang-runtime[compiler-rt] + llvm-libunwind? ( sys-libs/llvm-libunwind[static-libs] ) + !llvm-libunwind? ( sys-libs/libunwind[static-libs] ) + ) + !default-compiler-rt? ( sys-devel/gcc ) + default-libcxx? ( >=sys-libs/libcxx-${PV}[static-libs] ) + !default-libcxx? ( sys-devel/gcc ) + default-lld? ( >=sys-devel/lld-${PV} ) + !default-lld? ( sys-devel/binutils ) +" +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 "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 +} + +_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 sys-devel/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(__STDC_HOSTED__) && __STDC_HOSTED__ == 1 + # define __GENTOO_NOT_FREESTANDING 1 + # else + # define __GENTOO_NOT_FREESTANDING 0 + # endif + # + # if defined(__OPTIMIZE__) && __OPTIMIZE__ > 0 && __GENTOO_NOT_FREESTANDING > 0 + # if !defined(__SANITIZE_ADDRESS__) && !__GENTOO_HAS_FEATURE(address_sanitizer) && !__GENTOO_HAS_FEATURE(memory_sanitizer) + # define _FORTIFY_SOURCE ${fortify_level} + # endif + # endif + # undef __GENTOO_HAS_FEATURE + # undef __GENTOO_NOT_FREESTANDING + #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 + -Wl,-rpath,${EPREFIX}/usr/lib + -L ${EPREFIX}/usr/lib + -isystem ${EPREFIX}/usr/include + -isysroot ${EPREFIX}/MacOSX.sdk + 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 + EOF + fi + 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 +} |