diff options
Diffstat (limited to 'llvm-core/clang-common')
13 files changed, 352 insertions, 11 deletions
diff --git a/llvm-core/clang-common/Manifest b/llvm-core/clang-common/Manifest index bf9c25406e41..3804fbbfcdf2 100644 --- a/llvm-core/clang-common/Manifest +++ b/llvm-core/clang-common/Manifest @@ -17,5 +17,7 @@ DIST llvm-project-21.1.6.src.tar.xz 158947864 BLAKE2B eeda7b9903ef59319ad22e5e3a DIST llvm-project-21.1.6.src.tar.xz.sig 119 BLAKE2B 2e3de87f4adb181740cfc8a5f8de3e6f4090f50d2f0dfa2670b27c0a6dde296b399ee017b5f6220aa80581a16c81afb5c96454d69dac8ce246713570470956b8 SHA512 637cc9f778f8303e80985469c3102573a9cf6264093b1a83fb494e34b5cb444f76cbb7d6d497d44b05250d56e25ec27dd9df685e0b78b23bb71e4bcd05a8facf DIST llvm-project-21.1.7.src.tar.xz 158956584 BLAKE2B dc9738fdde764d520f0e6d615295133a96833935b38239ea2ec6dffe72558d01332905fa265a55eb105ab4c4f88f37d5b3427126b1f7c788dc266add581cdf25 SHA512 ae30a53ed929df979849f7433bf705bc3d540aa9e12a02a175eb2483d1a56f9ca1203c9b67795f6e84cf2407c28d46d5d5351b290d8735adb5206103fee6f379 DIST llvm-project-21.1.7.src.tar.xz.sig 438 BLAKE2B be4808a0888b088df0be4edaa7d49361dee717508d4438ad09c18b00752cd7a14ef56f5f18e3e4306a9ace95d9da7ed6904c998eb8a386577f21049bf5b6c0ce SHA512 d02b09c77abd537eb24d6d43470f962c80a9ec6ccc03ac0efc950d90dbdec5b94dd6abad18143890ff85cee2bdeb7bcf1dac2a576ffcab8ef053d8526417bdcc +DIST llvm-project-21.1.8.src.tar.xz 158958576 BLAKE2B 0d3d4ee920f8e5db50e98152616f16004c74df0e7313cc86d893428fb7b1c875109988a5e40ea6f2e5d0fef53c7bfe2fc2b69e84807f6eb440b03afa1b228a36 SHA512 cae4c44e7bf678071723da63ad5839491d717a7233e7f4791aa408207f3ea42f52de939ad15189b112c02a0770f1bb8d59bae6ad31ef53417a6eea7770fe52ab +DIST llvm-project-21.1.8.src.tar.xz.sig 119 BLAKE2B cffc1825f5778a3e3c128ec3e856ff6ee50687319d621cdf42e895abf67e05cc51cb7493308e2b506ab60dbdbaca7aa75eb9f78d91d42c81f9682a36f4042e9d SHA512 10f58eff58ed6e701d0f123b15e68c82ab8cbdf99b1c86c0d83e3b8553e90ea51055e30327e8e442ded57c8f503e2a2de9ee075e9c28b5ba815a0f8922f8671c DIST llvm-project-21c4c1502e3383988ba77eac75b13da7b9426957.tar.gz 254650569 BLAKE2B aaa8fffbe3b8ddcffa232c6cd078d33efc0f23453fd79b2ae71a0760b35da2ad17ffaed95d99c2548904468767d9f95af2ca4a59245e1ddf51a6612bda61cda4 SHA512 40a97c53cf7825b5c1e6867df74fa22e3b786a2ec9bcb478e1af0e6a165c582316c3c75b12f4704227b8e95cce91ab110acb10f2d8f30bc82319d6af4d201956 DIST llvm-project-8401a8d0be7671fb5089f850a34dc92ad4a2eb12.tar.gz 254694831 BLAKE2B edac68e2b57124504262d68d1fabbb2161af023c2b9f96f304ce220e3d84249e2a2c1137c83bcfb15f6f082b68ef24a775150e5f435ec14d0f471c51ec438346 SHA512 a35f918fc3363df20fecac5820595060acd9fa0bce2cc3f696603192100a63ff4d31f6ba6ac98ad13f62b01c0789f3cce2ecbe4b9c0095d2bf02d2b24971d973 diff --git a/llvm-core/clang-common/clang-common-15.0.7-r10.ebuild b/llvm-core/clang-common/clang-common-15.0.7-r10.ebuild index c7c9564a643a..755dceddbf2f 100644 --- a/llvm-core/clang-common/clang-common-15.0.7-r10.ebuild +++ b/llvm-core/clang-common/clang-common-15.0.7-r10.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld llvm-libunwind hardened diff --git a/llvm-core/clang-common/clang-common-16.0.6-r6.ebuild b/llvm-core/clang-common/clang-common-16.0.6-r6.ebuild index 32317177f706..6ee0b8dc2563 100644 --- a/llvm-core/clang-common/clang-common-16.0.6-r6.ebuild +++ b/llvm-core/clang-common/clang-common-16.0.6-r6.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-17.0.6-r10.ebuild b/llvm-core/clang-common/clang-common-17.0.6-r10.ebuild index 4e946488dde3..0338e9faf42e 100644 --- a/llvm-core/clang-common/clang-common-17.0.6-r10.ebuild +++ b/llvm-core/clang-common/clang-common-17.0.6-r10.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-17.0.6-r9.ebuild b/llvm-core/clang-common/clang-common-17.0.6-r9.ebuild index 8c0320404e9e..62b812c2cf48 100644 --- a/llvm-core/clang-common/clang-common-17.0.6-r9.ebuild +++ b/llvm-core/clang-common/clang-common-17.0.6-r9.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-18.1.8-r3.ebuild b/llvm-core/clang-common/clang-common-18.1.8-r3.ebuild index fcb0eb34f959..20611bc156a9 100644 --- a/llvm-core/clang-common/clang-common-18.1.8-r3.ebuild +++ b/llvm-core/clang-common/clang-common-18.1.8-r3.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-19.1.7.ebuild b/llvm-core/clang-common/clang-common-19.1.7.ebuild index 7cf25758cc1e..090d17b3f756 100644 --- a/llvm-core/clang-common/clang-common-19.1.7.ebuild +++ b/llvm-core/clang-common/clang-common-19.1.7.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-20.1.8-r1.ebuild b/llvm-core/clang-common/clang-common-20.1.8-r1.ebuild index 74eb74926f8b..fcd13386358b 100644 --- a/llvm-core/clang-common/clang-common-20.1.8-r1.ebuild +++ b/llvm-core/clang-common/clang-common-20.1.8-r1.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet emacs hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-20.1.8.ebuild b/llvm-core/clang-common/clang-common-20.1.8.ebuild index 82f3f541ed91..a75cae47544e 100644 --- a/llvm-core/clang-common/clang-common-20.1.8.ebuild +++ b/llvm-core/clang-common/clang-common-20.1.8.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-21.1.5.ebuild b/llvm-core/clang-common/clang-common-21.1.5.ebuild index 668afb0e71de..12c019253c53 100644 --- a/llvm-core/clang-common/clang-common-21.1.5.ebuild +++ b/llvm-core/clang-common/clang-common-21.1.5.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet emacs hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-21.1.6.ebuild b/llvm-core/clang-common/clang-common-21.1.6.ebuild index 668afb0e71de..12c019253c53 100644 --- a/llvm-core/clang-common/clang-common-21.1.6.ebuild +++ b/llvm-core/clang-common/clang-common-21.1.6.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet emacs hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-21.1.7.ebuild b/llvm-core/clang-common/clang-common-21.1.7.ebuild index 668afb0e71de..12c019253c53 100644 --- a/llvm-core/clang-common/clang-common-21.1.7.ebuild +++ b/llvm-core/clang-common/clang-common-21.1.7.ebuild @@ -10,7 +10,7 @@ HOMEPAGE="https://llvm.org/" LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~ppc-macos ~x64-macos" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos" IUSE=" default-compiler-rt default-libcxx default-lld bootstrap-prefix cet emacs hardened llvm-libunwind diff --git a/llvm-core/clang-common/clang-common-21.1.8.ebuild b/llvm-core/clang-common/clang-common-21.1.8.ebuild new file mode 100644 index 000000000000..12c019253c53 --- /dev/null +++ b/llvm-core/clang-common/clang-common-21.1.8.ebuild @@ -0,0 +1,339 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit bash-completion-r1 elisp-common 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" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos" +IUSE=" + default-compiler-rt default-libcxx default-lld + bootstrap-prefix cet emacs hardened llvm-libunwind +" + +PDEPEND=" + default-compiler-rt? ( + llvm-runtimes/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-runtimes/clang-runtime[default-compiler-rt(-)?,default-libcxx(-)?,default-lld(-)?,llvm-libunwind(-)?] + emacs? ( >=app-editors/emacs-26.3:* ) +" +IDEPEND=" + !default-compiler-rt? ( sys-devel/gcc-config ) + !default-libcxx? ( sys-devel/gcc-config ) +" +BDEPEND=" + emacs? ( >=app-editors/emacs-26.3:* ) +" + +LLVM_COMPONENTS=( clang/utils clang/tools/clang-format ) +llvm.org_set_globals + +SITEFILE="50clang-gentoo.el" + +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_compile() { + default + use emacs && elisp-compile ../tools/clang-format/clang-format.el +} + +src_install() { + newbashcomp bash-autocomplete.sh clang + + insinto /etc/clang + newins - gentoo-runtimes.cfg <<-EOF + # This file is initially generated by llvm-runtimes/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 + + if use emacs ; then + elisp-install clang ../tools/clang-format/clang-format.{el,elc} + elisp-make-site-file "${SITEFILE}" clang + 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 +} + +pkg_postinst() { + use emacs && elisp-site-regen +} + +pkg_postrm() { + use emacs && elisp-site-regen +} |
