diff options
Diffstat (limited to 'sys-devel')
21 files changed, 1728 insertions, 243 deletions
diff --git a/sys-devel/Manifest.gz b/sys-devel/Manifest.gz Binary files differindex 5f7c56d7fba3..302ecb59ae21 100644 --- a/sys-devel/Manifest.gz +++ b/sys-devel/Manifest.gz diff --git a/sys-devel/bpf-toolchain/Manifest b/sys-devel/bpf-toolchain/Manifest index 781be6009421..7724ba087e12 100644 --- a/sys-devel/bpf-toolchain/Manifest +++ b/sys-devel/bpf-toolchain/Manifest @@ -1,6 +1,4 @@ DIST binutils-2.43.1.tar.xz 28174300 BLAKE2B c4cd765cea326cd00b5cfe306e2937d820603b42f07a714ceb1349d36ddba0d45c3e125599dadf290d97954035c381781067155600ed87066e494cb9c4b34b45 SHA512 20977ad17729141a2c26d358628f44a0944b84dcfefdec2ba029c2d02f40dfc41cc91c0631044560d2bd6f9a51e1f15846b4b311befbe14f1239f14ff7d57824 -DIST binutils-2.43.tar.xz 28175768 BLAKE2B 28b0a04a28273b76eab2d00e00160be889f155f77f5a9d8759ef8dce505c97e97641bf7ec70b92b731b520570a02b06e04e8215b068fcb1bb2573e9ef24732d9 SHA512 93e063163e54d6a6ee2bd48dc754270bf757a3635b49a702ed6b310e929e94063958512d191e66beaf44275f7ea60865dbde138b624626739679fcc306b133bb DIST gcc-14.2.0.tar.xz 92306460 BLAKE2B 87baf2a06dfa75d8fb6cd62c747ef1f57d3b9bbbe33a360d9ed3de4b4dbeaa8d920504c67e409bd9863414202c14fd854b46108e984418171205119216d03d3b SHA512 932bdef0cda94bacedf452ab17f103c0cb511ff2cec55e9112fc0328cbf1d803b42595728ea7b200e0a057c03e85626f937012e49a7515bc5dd256b2bf4bc396 -EBUILD bpf-toolchain-14.2.0-r2.ebuild 6452 BLAKE2B 2ce7aa3cbe5c72659934616ca9bdb1d2ee394deddeb9f730d416e27a7a6a319dd55c173e603913085f988df1eae6dbe335fec74fb895a94b57364b94cc72ee16 SHA512 72c5a45e713899b1a26d05afd9b47b69425b4e05252365f91faf3fea9663169aabe28609773e05da82cc71d711f4ba7fec23272ef57b9600f39ece9ca322ed2e EBUILD bpf-toolchain-14.2.0_p1.ebuild 6458 BLAKE2B 9a40a9fa4e26c1383fc122802e5a501523ec4e3a15e1ec56c203c54ee39398946c937ed415245e15111f2bd324279af26660498661a20dcba62217681b19a501 SHA512 eaadfd4312e698e0928dc199186a337b6c3e6756e4c2147dab003bd157e392d3315c54469bd3c0abb7641438f1b52dd5ae545660248d40b2299c3fbaa3b0f8a3 MISC metadata.xml 599 BLAKE2B c41d219a2ba989105be860668dae9a75ed7283924017bc5f452853325f7800d90f87f3acd8c56c51efbc150a45d630f20dff2867a73753e4a71fef2cc5adea04 SHA512 c0e7d480106f9803602288191de6b5295d80c8f4da7458dd1630dcb40ea67cf0e1258865bd7be646306b60700c991ed15c487d54c083f2a65717ac46c27a70de diff --git a/sys-devel/bpf-toolchain/bpf-toolchain-14.2.0-r2.ebuild b/sys-devel/bpf-toolchain/bpf-toolchain-14.2.0-r2.ebuild deleted file mode 100644 index 0099d684a602..000000000000 --- a/sys-devel/bpf-toolchain/bpf-toolchain-14.2.0-r2.ebuild +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit edo flag-o-matic toolchain-funcs - -# Versioning is just the GCC version in full (so may include a snapshot -# date). Unlike dev-util/mingw64-toolchain, which this ebuild was heavily -# inspired by, there's no "third component" here to version on, just -# GCC + binutils. -# -# Do _p1++ rather than revbump on Binutils changes -# Not using Gentoo patchsets for simplicity, their changes are mostly unneeded here. -GCC_PV=${PV/_p/-} -BINUTILS_PV=2.43 - -DESCRIPTION="All-in-one bpf toolchain for building DTrace and systemd without crossdev" -HOMEPAGE=" - https://gcc.gnu.org/ - https://sourceware.org/binutils/ - https://gcc.gnu.org/wiki/BPFBackEnd -" -SRC_URI=" - mirror://gnu/binutils/binutils-${BINUTILS_PV}.tar.xz -" -if [[ ${GCC_PV} == *-* ]]; then - SRC_URI+=" mirror://gcc/snapshots/${GCC_PV}/gcc-${GCC_PV}.tar.xz" -else - SRC_URI+=" - mirror://gcc/gcc-${GCC_PV}/gcc-${GCC_PV}.tar.xz - mirror://gnu/gcc/gcc-${GCC_PV}/gcc-${GCC_PV}.tar.xz - " -fi -S="${WORKDIR}" - -# l1:binutils+gcc, l2:gcc(libraries) -LICENSE=" - GPL-3+ - LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) -" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" -IUSE="+bin-symlinks custom-cflags +strip" - -RDEPEND=" - dev-libs/gmp:= - dev-libs/mpc:= - dev-libs/mpfr:= - sys-libs/zlib:= - virtual/libiconv - bin-symlinks? ( - !cross-bpf-unknown-none/binutils - !cross-bpf-unknown-none/gcc - ) -" -DEPEND="${RDEPEND}" - -PATCHES=() - -pkg_pretend() { - [[ ${MERGE_TYPE} == binary ]] && return - - tc-is-cross-compiler && - die "cross-compilation of the toolchain itself is unsupported" -} - -src_prepare() { - # rename directories to simplify both patching and the ebuild - mv binutils{-${BINUTILS_PV},} || die - mv gcc{-${GCC_PV},} || die - - default -} - -src_compile() { - # src_compile is kept similar to dev-util/mingw64-toolchain - # at least for now for ease of comparison etc. - # - # not great but do everything in src_compile given bootstrapping - # process needs to be done in steps of configure+compile+install - # (done modular to have most package-specific things in one place) - - CTARGET=bpf-unknown-none - - BPFT_D=${T}/root # moved to ${D} in src_install - local bpftdir=/usr/lib/${PN} - local prefix=${EPREFIX}${bpftdir} - local sysroot=${BPFT_D}${prefix} - local -x PATH=${sysroot}/bin:${PATH} - - use custom-cflags || strip-flags # fancy flags are not realistic here - - # global configure flags - local conf=( - --build=${CBUILD:-${CHOST}} - --target=${CTARGET} - --{doc,info,man}dir=/.skip # let the real binutils+gcc handle docs - MAKEINFO=: #922230 - ) - - # binutils - local conf_binutils=( - --prefix="${prefix}" - --host=${CHOST} - --disable-cet - --disable-default-execstack - --disable-nls - --disable-shared - --with-system-zlib - --without-debuginfod - --without-msgpack - --without-zstd - ) - - # gcc (minimal -- if need more, disable only in stage1 / enable in stage3) - local conf_gcc=( - --prefix="${prefix}" - --host=${CHOST} - --disable-bootstrap - --disable-cc1 - --disable-cet - --disable-gcov #843989 - --disable-gomp - --disable-nls # filename collisions - --disable-libcc1 - --disable-libquadmath - --disable-libsanitizer - --disable-libssp - --disable-libvtv - --disable-shared - --disable-werror - --enable-languages=c - --with-gcc-major-version-only - --with-system-zlib - --without-isl - --without-zstd - --disable-multilib - ) - - # libstdc++ may misdetect sys/sdt.h on systemtap-enabled system and fail - # (not passed in conf_gcc above given it is lost in sub-configure calls) - local -x glibcxx_cv_sys_sdt_h=no - - # bpft-build <path/package-name> - # -> ./configure && make && make install && bpft-package() - # passes conf and conf_package to configure, and users can add options - # through environment with e.g. - # BPFT_BINUTILS_CONF="--some-option" - # EXTRA_ECONF="--global-option" (generic naming for if not reading this) - bpft-build() { - local id=${1##*/} - local build_dir=${WORKDIR}/${1}-build - - # econf is not allowed in src_compile and its defaults are - # mostly unused here, so use configure directly - local conf=( "${WORKDIR}/${1}"/configure "${conf[@]}" ) - - local -n conf_id=conf_${id} - [[ ${conf_id@a} == *a* ]] && conf+=( "${conf_id[@]}" ) - - local -n extra_id=BPFT_${id^^}_CONF - conf+=( ${EXTRA_ECONF} ${extra_id} ) - - einfo "Building ${id} in ${build_dir} ..." - - mkdir -p "${build_dir}" || die - pushd "${build_dir}" >/dev/null || die - - edo "${conf[@]}" - emake MAKEINFO=: V=1 - # -j1 to match bug #906155, other packages may be fragile too - emake -j1 MAKEINFO=: V=1 DESTDIR="${BPFT_D}" install - - declare -f bpft-${id} >/dev/null && edo bpft-${id} - - popd >/dev/null || die - } - - # build with same ordering that crossdev would do - bpft-build binutils - bpft-build gcc - - if use bin-symlinks; then - mkdir -p -- "${BPFT_D}${EPREFIX}"/usr/bin/ || die - local bin - for bin in "${sysroot}"/bin/*; do - ln -rs -- "${bin}" "${BPFT_D}${EPREFIX}"/usr/bin/ || die - done - fi - - # Delete libdep.a, which has a colliding name and is useless for bpf, - # which does not make use of cross-library dependencies: the libdep.a - # for the native binutils will do. - rm -f ${sysroot}/lib/bfd-plugins/libdep.a || die - - # portage doesn't know the right strip executable to use for CTARGET - # and it can lead to .a mangling, notably with 32bit (breaks toolchain) - dostrip -x ${bpftdir}/{${CTARGET}/lib{,32},lib/gcc/${CTARGET}} - - # TODO: Check if this is worth doing, it may not be - if use strip; then - einfo "Stripping ${CTARGET} static libraries ..." - find "${sysroot}"/{,lib/gcc/}${CTARGET} -type f -name '*.a' \ - -exec ${CTARGET}-strip --strip-unneeded {} + || die - fi -} - -src_install() { - mv "${BPFT_D}${EPREFIX}"/* "${ED}" || die - - find "${ED}" -type f -name '*.la' -delete || die -} - -pkg_postinst() { - use bin-symlinks && has_version dev-util/shadowman && [[ ! ${ROOT} ]] && - eselect compiler-shadow update all - - if [[ ! ${REPLACING_VERSIONS} ]]; then - elog "Note that this package is primarily intended for DTrace, systemd, and related" - elog "packages to depend on without needing a manual crossdev setup." - elog - elog "Settings are oriented only for what these need and simplicity." - elog "Use sys-devel/crossdev if need full toolchain/customization:" - elog " https://wiki.gentoo.org/wiki/Crossdev" - fi -} - -pkg_postrm() { - use bin-symlinks && has_version dev-util/shadowman && [[ ! ${ROOT} ]] && - eselect compiler-shadow clean all -} diff --git a/sys-devel/clang-common/Manifest b/sys-devel/clang-common/Manifest index df284395f6bd..0b71d0138541 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-rc3.src.tar.xz 141250388 BLAKE2B 6530bede000d2e4b8ce10b445bfc1f81dc25c2d7121fc953581cd9b6989b3ba197707cd79d3c7b94c055bf2e21b0d07ab3cb401d3f73d22eefba6da4b71dca7b SHA512 3ee4eab848e5e38c396e6f5addf5eb42570d451fc8e7cd77150dc5542f8f710f4a9db51836f7a799996dd1b8194defe4d58efe7c19e5d5e1c5f3dbdda94c0cf3 DIST llvm-project-19.1.0-rc3.src.tar.xz.sig 438 BLAKE2B 86bad4d4fb805340096473bc603d7a3483f030f62b6f52b64d12c33561fbbb999c2ab69cc94857a32747492c846a5ab631a84da200b03475fd401335373bbccf SHA512 ef0fd2e3e7069fbfd410cbcf71294d1b7182456330ff151348058b5cb0f292edaecb9dcbf613ee4fc979214a23bd3bb8077d71e674635359da36b938dc143266 DIST llvm-project-503907dc505db1e439e7061113bf84dd105f2e35.tar.gz 218750576 BLAKE2B 40904dbf62cffe9cb757cc1382a765d5c89791948e86bfa4fbdc5a78ebc11cc82588bc730e6c5c84b6d84922cd32290df0146733a013ffa4e408b8a7c2313a1f SHA512 a121cca2ef49c6b25f137e66d23d332d2f9e3bd0d349b1202b6869f7c85a141aecfe20a6c4d4eff84e32a243216740f20114968589207d39df229daf6443ba0d +DIST llvm-project-5500e21942f7047344b6fee62d3e08c0ba2f9182.tar.gz 219148250 BLAKE2B 61880a13086c46ac9a9f8326b1e007146afb1662a0a223703fe36a91da230d5708b368f1177e76ac13c1e5a30f620c4ce6346484a0a67a0f011a816bba4d13f9 SHA512 a6d4fcae960b450be2abd2da485cea638b73290b17ceeabf560651d614f55925f86ee6f76a116262d8a1ff70ba699468cb4cf4c32015e26540ba6e47c58db1b7 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 9151 BLAKE2B 43a8bcc9b07107ab5a743722d04afc EBUILD clang-common-19.1.0_rc3.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_pre20240822.ebuild 9042 BLAKE2B 7fc18661a55e2c223cc3c4e6c8477a913a0ed025b013f4407e58682f00f389cc2961c8cd5ee20d13e75b51f1c8a0b79569a0bb35da6a2028703f9fee553ed4c0 SHA512 212b4035d367e465de90d6b89c81388e45023257aec550dfe81c7ca71ea0a8d59b2ece092c8cbc4b5eadf4d29a3fbde6a49e6fdbce3fde8ccd1300dc7fafdf58 +EBUILD clang-common-20.0.0_pre20240830.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_pre20240830.ebuild b/sys-devel/clang-common/clang-common-20.0.0_pre20240830.ebuild new file mode 100644 index 000000000000..090a45690818 --- /dev/null +++ b/sys-devel/clang-common/clang-common-20.0.0_pre20240830.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 +} diff --git a/sys-devel/clang-runtime/Manifest b/sys-devel/clang-runtime/Manifest index 5a364d4c542d..51a7feabd24d 100644 --- a/sys-devel/clang-runtime/Manifest +++ b/sys-devel/clang-runtime/Manifest @@ -5,4 +5,5 @@ EBUILD clang-runtime-18.1.8.ebuild 1448 BLAKE2B be376aab09a0268444784d1a0bcb5902 EBUILD clang-runtime-19.1.0_rc3.ebuild 1339 BLAKE2B 4a5ee8a332faf2da21256df048867b1458a5ccb2d733d00ee3788bfbc28b3daf4ce2ae2455ab03c9ebb192d964feae2cd5806b5fef23eaa9401d57b35386aa57 SHA512 fac3e259b5a7b5e105b3d5fd2f8e9a9b6236642867e4c4a67106ec999dfaf0a30a97a3905685043a0ab9f38b15b7b8a5a814a97921e37029b9d0beac7ba7085a EBUILD clang-runtime-20.0.0.9999.ebuild 1339 BLAKE2B 4a5ee8a332faf2da21256df048867b1458a5ccb2d733d00ee3788bfbc28b3daf4ce2ae2455ab03c9ebb192d964feae2cd5806b5fef23eaa9401d57b35386aa57 SHA512 fac3e259b5a7b5e105b3d5fd2f8e9a9b6236642867e4c4a67106ec999dfaf0a30a97a3905685043a0ab9f38b15b7b8a5a814a97921e37029b9d0beac7ba7085a EBUILD clang-runtime-20.0.0_pre20240822.ebuild 1339 BLAKE2B 4a5ee8a332faf2da21256df048867b1458a5ccb2d733d00ee3788bfbc28b3daf4ce2ae2455ab03c9ebb192d964feae2cd5806b5fef23eaa9401d57b35386aa57 SHA512 fac3e259b5a7b5e105b3d5fd2f8e9a9b6236642867e4c4a67106ec999dfaf0a30a97a3905685043a0ab9f38b15b7b8a5a814a97921e37029b9d0beac7ba7085a +EBUILD clang-runtime-20.0.0_pre20240830.ebuild 1339 BLAKE2B 4a5ee8a332faf2da21256df048867b1458a5ccb2d733d00ee3788bfbc28b3daf4ce2ae2455ab03c9ebb192d964feae2cd5806b5fef23eaa9401d57b35386aa57 SHA512 fac3e259b5a7b5e105b3d5fd2f8e9a9b6236642867e4c4a67106ec999dfaf0a30a97a3905685043a0ab9f38b15b7b8a5a814a97921e37029b9d0beac7ba7085a MISC metadata.xml 661 BLAKE2B 24688c511713ea102b83c71d226d519981b3aee0e05ef7a56d6a80be829efd843194e45cb4fd801f0bb976b6f1976386d6a2b05d2bc907fe2aa42b22b85b7d1f SHA512 2b5ab8783c90795f2e7d1673d876048ed9745f4911fb7a860df56deac13a6dfeba4581a84562eae54eff757c45042ca3fab75c7800313ae61df9ce69780a9294 diff --git a/sys-devel/clang-runtime/clang-runtime-20.0.0_pre20240830.ebuild b/sys-devel/clang-runtime/clang-runtime-20.0.0_pre20240830.ebuild new file mode 100644 index 000000000000..323c0b62c062 --- /dev/null +++ b/sys-devel/clang-runtime/clang-runtime-20.0.0_pre20240830.ebuild @@ -0,0 +1,39 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-build toolchain-funcs + +DESCRIPTION="Meta-ebuild for clang runtime libraries" +HOMEPAGE="https://clang.llvm.org/" + +LICENSE="metapackage" +SLOT="${PV%%.*}" +IUSE="+compiler-rt libcxx openmp +sanitize" +REQUIRED_USE="sanitize? ( compiler-rt )" + +RDEPEND=" + compiler-rt? ( + ~sys-libs/compiler-rt-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + sanitize? ( + ~sys-libs/compiler-rt-sanitizers-${PV}:${SLOT}[abi_x86_32(+)?,abi_x86_64(+)?] + ) + ) + libcxx? ( >=sys-libs/libcxx-${PV}[${MULTILIB_USEDEP}] ) + openmp? ( >=sys-libs/libomp-${PV}[${MULTILIB_USEDEP}] ) +" + +pkg_pretend() { + if tc-is-clang; then + ewarn "You seem to be using clang as a system compiler. As of clang-16," + ewarn "upstream has turned a few warnings that commonly occur during" + ewarn "configure script runs into errors by default. This causes some" + ewarn "configure tests to start failing, sometimes resulting in silent" + ewarn "breakage, missing functionality or runtime misbehavior. It is" + ewarn "not yet clear whether the change will remain or be reverted." + ewarn + ewarn "For more information, please see:" + ewarn "https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213" + fi +} diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest index 9c1d19b5283e..976d3aa242c6 100644 --- a/sys-devel/clang/Manifest +++ b/sys-devel/clang/Manifest @@ -16,6 +16,7 @@ DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b8577 DIST llvm-project-19.1.0-rc3.src.tar.xz 141250388 BLAKE2B 6530bede000d2e4b8ce10b445bfc1f81dc25c2d7121fc953581cd9b6989b3ba197707cd79d3c7b94c055bf2e21b0d07ab3cb401d3f73d22eefba6da4b71dca7b SHA512 3ee4eab848e5e38c396e6f5addf5eb42570d451fc8e7cd77150dc5542f8f710f4a9db51836f7a799996dd1b8194defe4d58efe7c19e5d5e1c5f3dbdda94c0cf3 DIST llvm-project-19.1.0-rc3.src.tar.xz.sig 438 BLAKE2B 86bad4d4fb805340096473bc603d7a3483f030f62b6f52b64d12c33561fbbb999c2ab69cc94857a32747492c846a5ab631a84da200b03475fd401335373bbccf SHA512 ef0fd2e3e7069fbfd410cbcf71294d1b7182456330ff151348058b5cb0f292edaecb9dcbf613ee4fc979214a23bd3bb8077d71e674635359da36b938dc143266 DIST llvm-project-503907dc505db1e439e7061113bf84dd105f2e35.tar.gz 218750576 BLAKE2B 40904dbf62cffe9cb757cc1382a765d5c89791948e86bfa4fbdc5a78ebc11cc82588bc730e6c5c84b6d84922cd32290df0146733a013ffa4e408b8a7c2313a1f SHA512 a121cca2ef49c6b25f137e66d23d332d2f9e3bd0d349b1202b6869f7c85a141aecfe20a6c4d4eff84e32a243216740f20114968589207d39df229daf6443ba0d +DIST llvm-project-5500e21942f7047344b6fee62d3e08c0ba2f9182.tar.gz 219148250 BLAKE2B 61880a13086c46ac9a9f8326b1e007146afb1662a0a223703fe36a91da230d5708b368f1177e76ac13c1e5a30f620c4ce6346484a0a67a0f011a816bba4d13f9 SHA512 a6d4fcae960b450be2abd2da485cea638b73290b17ceeabf560651d614f55925f86ee6f76a116262d8a1ff70ba699468cb4cf4c32015e26540ba6e47c58db1b7 EBUILD clang-15.0.7-r3.ebuild 12523 BLAKE2B 0e3f9d4506a1b98e96ff98ea52f8bb10f8ab4c91db2868f786bb1761a027e73708a10dce904192a9024ef5819ebf66af07ae6dcdc7186d4b2e04e8cc5978fc7a SHA512 7eeb3ab398c79d0931dedffd5c44d4f69b98b8b9717749a5d7373f6fef49fd337579ea2ab1d05e934b8e526d3f5a43a8911abeb32d956bed9c532b32cff0dbe3 EBUILD clang-16.0.6.ebuild 12452 BLAKE2B 446a354b58fc0535b81596a9a3785a4cd5d7b7ad52a461baa3b6b7beacdc12161f62da588cd837b8b9c8f35307b1a2c885b9d01bf8edc4af1b551efaab09ebe8 SHA512 58b5694a7d28a03edd4a71e3a99b0b2678285e616cdaab82bb196f092a8726e9cd3787ab07d724680113b4f6683e89103cab2478e49a85e7b5c75a633fb1ca51 EBUILD clang-17.0.6.ebuild 12151 BLAKE2B 665280844db218824bec2add033e13e14b958ac510fb1b0b7193130a55041a5c802c57aa022a35d65a689c611ca9ed119eaf39c47f581d24f38d9c8655c5f062 SHA512 482ae07e36fb3c593d2051b2034f501fc0c94bdcaeb2a6a0701473d00f16f691c8a1584d4b1773dfd236297a12a42cb4f9443eb5c381dcb10d36f749a432ff1d @@ -23,4 +24,5 @@ EBUILD clang-18.1.8.ebuild 12218 BLAKE2B a8508146967a2807d4bd95734fe52da8194c903 EBUILD clang-19.1.0_rc3.ebuild 11899 BLAKE2B 4ec92be5b4185157408680503931e7bc4c50cb99320a11e2d16598cad5bf8c1f6b30a020e395d652cb2489b9252885ab5fd18672bbfd6adbb84c69a5800be6ce SHA512 a1f20ed323af7a93a9c6d277789f53cc17c9faf60e81bdee8e4e754a52da46cbfa79fde093aea023b83b4f4d3c93add7b170e4af32e65e869e04e4d48204f898 EBUILD clang-20.0.0.9999.ebuild 11943 BLAKE2B a186ad2e553c9fe1f76a659a1bb8d015f777ef76f100d0400b18c755ebfa80380cad8426c27c69255531b2a321b1bd62ea7a22301616133442604398c92c136c SHA512 2f2a4f0dd70bbeffc174a1213733dddfaaf34b5ef247fde9bd4248361d3561227a66ff10aa87ff0a627ac472bea36455ddba50387ebd5d3fdd7e50d4fd751995 EBUILD clang-20.0.0_pre20240822.ebuild 11943 BLAKE2B a186ad2e553c9fe1f76a659a1bb8d015f777ef76f100d0400b18c755ebfa80380cad8426c27c69255531b2a321b1bd62ea7a22301616133442604398c92c136c SHA512 2f2a4f0dd70bbeffc174a1213733dddfaaf34b5ef247fde9bd4248361d3561227a66ff10aa87ff0a627ac472bea36455ddba50387ebd5d3fdd7e50d4fd751995 +EBUILD clang-20.0.0_pre20240830.ebuild 11943 BLAKE2B a186ad2e553c9fe1f76a659a1bb8d015f777ef76f100d0400b18c755ebfa80380cad8426c27c69255531b2a321b1bd62ea7a22301616133442604398c92c136c SHA512 2f2a4f0dd70bbeffc174a1213733dddfaaf34b5ef247fde9bd4248361d3561227a66ff10aa87ff0a627ac472bea36455ddba50387ebd5d3fdd7e50d4fd751995 MISC metadata.xml 1318 BLAKE2B 704c1a64297b25da1b2e0eec23cbdf4791273da1babf23292160b6163d43438e62fe214df7afa09232893599951918440954c17a9bfa0c6f829a7d706f564192 SHA512 4677ad146739dd41e025a2335eec353a3d35ac8db7482948fee611566d84b41c4e6bdd75bc3d78f8933d4d9818a36bf222e1aa89e52f945501ff918479fea3b6 diff --git a/sys-devel/clang/clang-20.0.0_pre20240830.ebuild b/sys-devel/clang/clang-20.0.0_pre20240830.ebuild new file mode 100644 index 000000000000..857f7b1ed5a2 --- /dev/null +++ b/sys-devel/clang/clang-20.0.0_pre20240830.ebuild @@ -0,0 +1,471 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) + +inherit cmake llvm.org llvm-utils multilib multilib-minimal +inherit prefix python-single-r1 toolchain-funcs + +DESCRIPTION="C language family frontend for LLVM" +HOMEPAGE="https://llvm.org/" + +# MSVCSetupApi.h: MIT +# sorttable.js: MIT + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT" +SLOT="${LLVM_MAJOR}/${LLVM_SOABI}" +IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +DEPEND=" + ~sys-devel/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}] + static-analyzer? ( dev-lang/perl:* ) + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] ) +" + +RDEPEND=" + ${PYTHON_DEPS} + ${DEPEND} + >=sys-devel/clang-common-${PV} +" +BDEPEND=" + ${PYTHON_DEPS} + test? ( ~sys-devel/lld-${PV} ) + xml? ( virtual/pkgconfig ) +" +PDEPEND=" + ~sys-devel/clang-runtime-${PV} + sys-devel/clang-toolchain-symlinks:${LLVM_MAJOR} +" + +LLVM_COMPONENTS=( + clang clang-tools-extra cmake +) +LLVM_MANPAGES=1 +LLVM_TEST_COMPONENTS=( + llvm/utils +) +LLVM_USE_TARGETS=llvm +llvm.org_set_globals + +[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( " +BDEPEND+=" + $(python_gen_cond_dep ' + dev-python/myst-parser[${PYTHON_USEDEP}] + dev-python/sphinx[${PYTHON_USEDEP}] + ') +" +[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) " + +# Multilib notes: +# 1. ABI_* flags control ABIs libclang* is built for only. +# 2. clang is always capable of compiling code for all ABIs for enabled +# target. However, you will need appropriate crt* files (installed +# e.g. by sys-devel/gcc and sys-libs/glibc). +# 3. ${CHOST}-clang wrappers are always installed for all ABIs included +# in the current profile (i.e. alike supported by sys-devel/gcc). +# +# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need +# multilib clang* libraries (not runtime, not wrappers). + +src_prepare() { + # create extra parent dir for relative CLANG_RESOURCE_DIR access + mkdir -p x/y || die + BUILD_DIR=${WORKDIR}/x/y/clang + + llvm.org_src_prepare + + # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch) + eprefixify \ + lib/Lex/InitHeaderSearch.cpp \ + lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi +} + +check_distribution_components() { + if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then + local all_targets=() my_targets=() l + cd "${BUILD_DIR}" || die + + while read -r l; do + if [[ ${l} == install-*-stripped:* ]]; then + l=${l#install-} + l=${l%%-stripped*} + + case ${l} in + # meta-targets + clang-libraries|distribution) + continue + ;; + # tools + clang|clangd|clang-*) + ;; + # static libraries + clang*|findAllSymbols) + continue + ;; + # conditional to USE=doc + docs-clang-html|docs-clang-tools-html) + use doc || continue + ;; + esac + + all_targets+=( "${l}" ) + fi + done < <(${NINJA} -t targets all) + + while read -r l; do + my_targets+=( "${l}" ) + done < <(get_distribution_components $"\n") + + local add=() remove=() + for l in "${all_targets[@]}"; do + if ! has "${l}" "${my_targets[@]}"; then + add+=( "${l}" ) + fi + done + for l in "${my_targets[@]}"; do + if ! has "${l}" "${all_targets[@]}"; then + remove+=( "${l}" ) + fi + done + + if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then + eerror "get_distribution_components() is outdated!" + eerror " Add: ${add[*]}" + eerror "Remove: ${remove[*]}" + die "Update get_distribution_components()!" + fi + cd - >/dev/null || die + fi +} + +get_distribution_components() { + local sep=${1-;} + + local out=( + # common stuff + clang-cmake-exports + clang-headers + clang-resource-headers + libclang-headers + + aarch64-resource-headers + arm-common-resource-headers + arm-resource-headers + core-resource-headers + cuda-resource-headers + hexagon-resource-headers + hip-resource-headers + hlsl-resource-headers + mips-resource-headers + opencl-resource-headers + openmp-resource-headers + ppc-htm-resource-headers + ppc-resource-headers + riscv-resource-headers + systemz-resource-headers + utility-resource-headers + ve-resource-headers + webassembly-resource-headers + windows-resource-headers + x86-resource-headers + + # libs + clang-cpp + libclang + ) + + if multilib_is_native_abi; then + out+=( + # common stuff + bash-autocomplete + libclang-python-bindings + + # tools + amdgpu-arch + c-index-test + clang + clang-format + clang-installapi + clang-linker-wrapper + clang-nvlink-wrapper + clang-offload-bundler + clang-offload-packager + clang-refactor + clang-repl + clang-rename + clang-scan-deps + diagtool + hmaptool + nvptx-arch + + # needed for cross-compiling Clang + clang-tblgen + ) + + if use extra; then + out+=( + # extra tools + clang-apply-replacements + clang-change-namespace + clang-doc + clang-include-cleaner + clang-include-fixer + clang-move + clang-pseudo + clang-query + clang-reorder-fields + clang-tidy + clang-tidy-headers + clangd + find-all-symbols + modularize + pp-trace + ) + fi + + if llvm_are_manpages_built; then + out+=( docs-clang-man ) + use extra && out+=( docs-clang-tools-man ) + fi + + if use doc; then + out+=( docs-clang-html ) + use extra && out+=( docs-clang-tools-html ) + fi + + use static-analyzer && out+=( + clang-check + clang-extdef-mapping + scan-build + scan-build-py + scan-view + ) + fi + + printf "%s${sep}" "${out[@]}" +} + +multilib_src_configure() { + llvm_prepend_path "${LLVM_MAJOR}" + + local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" + -DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang" + # relative to bindir + -DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}" + + -DBUILD_SHARED_LIBS=OFF + -DCLANG_LINK_CLANG_DYLIB=ON + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components) + -DCLANG_INCLUDE_TESTS=$(usex test) + + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + + # these are not propagated reliably, so redefine them + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + + # libgomp support fails to find headers without explicit -I + # furthermore, it provides only syntax checking + -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp + + -DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie) + + -DCLANG_ENABLE_LIBXML2=$(usex xml) + -DCLANG_ENABLE_ARCMT=$(usex static-analyzer) + -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer) + # TODO: CLANG_ENABLE_HLSL? + + -DPython3_EXECUTABLE="${PYTHON}" + ) + + if ! use elibc_musl; then + mycmakeargs+=( + -DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double) + ) + fi + + use test && mycmakeargs+=( + -DLLVM_BUILD_TESTS=ON + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + if multilib_is_native_abi; then + local build_docs=OFF + if llvm_are_manpages_built; then + build_docs=ON + mycmakeargs+=( + -DLLVM_BUILD_DOCS=ON + -DLLVM_ENABLE_SPHINX=ON + -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html" + -DSPHINX_WARNINGS_AS_ERRORS=OFF + ) + if use extra; then + mycmakeargs+=( + -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra" + ) + fi + fi + mycmakeargs+=( + -DCLANG_INCLUDE_DOCS=${build_docs} + ) + fi + if multilib_native_use extra; then + mycmakeargs+=( + -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra + -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs} + ) + else + mycmakeargs+=( + -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF + ) + fi + + if [[ -n ${EPREFIX} ]]; then + mycmakeargs+=( + -DGCC_INSTALL_PREFIX="${EPREFIX}/usr" + ) + fi + + if tc-is-cross-compiler; then + has_version -b sys-devel/clang:${LLVM_MAJOR} || + die "sys-devel/clang:${LLVM_MAJOR} is required on the build host." + local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin + mycmakeargs+=( + -DLLVM_TOOLS_BINARY_DIR="${tools_bin}" + -DCLANG_TABLEGEN="${tools_bin}"/clang-tblgen + ) + fi + + # LLVM can have very high memory consumption while linking, + # exhausting the limit on 32-bit linker executable + use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory" + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + cmake_src_configure + + multilib_is_native_abi && check_distribution_components +} + +multilib_src_compile() { + cmake_build distribution +} + +multilib_src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + local test_targets=( check-clang ) + if multilib_native_use extra; then + test_targets+=( + check-clang-tools + check-clangd + ) + fi + cmake_build "${test_targets[@]}" +} + +src_install() { + MULTILIB_WRAPPED_HEADERS=( + /usr/include/clang/Config/config.h + ) + + multilib-minimal_src_install + + # Move runtime headers to /usr/lib/clang, where they belong + mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die + # move (remaining) wrapped headers back + if use extra; then + mv "${T}"/clang-tidy "${ED}"/usr/include/ || die + fi + mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die + + # Apply CHOST and version suffix to clang tools + local clang_tools=( clang clang++ clang-cl clang-cpp ) + local abi i + + # cmake gives us: + # - clang-X + # - clang -> clang-X + # - clang++, clang-cl, clang-cpp -> clang + # we want to have: + # - clang-X + # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X + # - clang, clang++, clang-cl, clang-cpp -> clang*-X + # also in CHOST variant + for i in "${clang_tools[@]:1}"; do + rm "${ED}/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}" || die + dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}" + dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}" + done + + # now create target symlinks for all supported ABIs + for abi in $(get_all_abis); do + local abi_chost=$(get_abi_CHOST "${abi}") + for i in "${clang_tools[@]}"; do + dosym "${i}-${LLVM_MAJOR}" \ + "/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}" + dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \ + "/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}" + done + done +} + +multilib_src_install() { + DESTDIR=${D} cmake_build install-distribution + + # move headers to /usr/include for wrapping & ABI mismatch checks + # (also drop the version suffix from runtime headers) + rm -rf "${ED}"/usr/include || die + mv "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include "${ED}"/usr/include || die + mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die + if multilib_native_use extra; then + # don't wrap clang-tidy headers, the list is too long + # (they're fine for non-native ABI but enabling the targets is problematic) + mv "${ED}"/usr/include/clang-tidy "${T}/" || die + fi +} + +multilib_src_install_all() { + python_fix_shebang "${ED}" + if use static-analyzer; then + python_optimize "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/share/scan-view + fi + + docompress "/usr/lib/llvm/${LLVM_MAJOR}/share/man" + llvm_install_manpages + # match 'html' non-compression + use doc && docompress -x "/usr/share/doc/${PF}/tools-extra" + # +x for some reason; TODO: investigate + use static-analyzer && fperms a-x "/usr/lib/llvm/${LLVM_MAJOR}/share/man/man1/scan-build.1" +} + +pkg_postinst() { + if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then + eselect compiler-shadow update all + fi + + elog "You can find additional utility scripts in:" + elog " ${EROOT}/usr/lib/llvm/${LLVM_MAJOR}/share/clang" + if use extra; then + elog "Some of them are vim integration scripts (with instructions inside)." + elog "The run-clang-tidy.py script requires the following additional package:" + elog " dev-python/pyyaml" + fi +} + +pkg_postrm() { + if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then + eselect compiler-shadow clean all + fi +} diff --git a/sys-devel/dwz/Manifest b/sys-devel/dwz/Manifest index 2bf5f8771a95..0c99fae50827 100644 --- a/sys-devel/dwz/Manifest +++ b/sys-devel/dwz/Manifest @@ -1,3 +1,4 @@ DIST dwz-0.15.tar.xz 150080 BLAKE2B 4ce1722a53cb588cda8195211a26b28d69891ed32cc59e44897270298d033590c79c8c73168dc3b261cb017fc12874a9cbd50db3bfaa0aa7de8ed7cf8a588cca SHA512 43eb4b08c1f529859dc3466697d5ad7e172d6efbf21409530a67a2492ae4acc3734d5134bbd6e07c089ecc358d915871b13e22f6e4f1dd4c3af19ef804f8fcc5 -EBUILD dwz-0.15-r1.ebuild 840 BLAKE2B 89b30929bd5b2139cc8a5675a6bcc77c4189e3815e23b5844c2a8695d2399acd910fbecf7e089582ae56c9a8b3f9aba392759256bcf531b6df6046e3f804347f SHA512 40f5ae4d17d6bcf952b4f774d13eef3d387438505760806f5e6d7532fed36a462a8632eb3f70d094595131a810ba082f5facf8d286efdf2bec5835833a9f83e2 +EBUILD dwz-0.15-r1.ebuild 956 BLAKE2B 3fb11a11462e40e0e0e7def587adb16c32ca1cd78b9142e0cf6534ee907473c3d4f3081e649520185bdb5cfe993ee45d330ecfda564babb76308cabe8423021e SHA512 caaf43ae1107261a09f655ad2c8fa3baa5d3081f56edad2339e1e14d0aea1d380fff36a43ba5b86f16d5f066bfc065c6800257f30bd80252f47545291f189492 +EBUILD dwz-9999.ebuild 963 BLAKE2B 736f7ac3e494d12db8caa8ae9b4011d1e9ba3678fcd0375891f549ae0a00f5069d4c09432fc406d74782679076da5e434f46bffcd86343fda4379d43240210a2 SHA512 1d2526e00c53e10fd3cf1472fc83aac068870ed83afcd6e169fa86af1ac0ddb4489233df1b68024ac20df87efae3383d5af52ccd83422dd2464f340895a43c0f MISC metadata.xml 812 BLAKE2B abd6e645ab8cf502bfb6b90cd5712ff43d22a4e17ed7a2025bfbb16407a907b6b482497ce060ffb55b250a441fcbc495a37cb540b9d1152ed42dbdbbb4b074ca SHA512 7dea9a490d130dc0a03291b01000f38b880be517c13d762a6b6ac82e7313375c0dc5c0506ead51dd6789e72ffc612ade73e734456bfa8696777ede3f90dd6394 diff --git a/sys-devel/dwz/dwz-0.15-r1.ebuild b/sys-devel/dwz/dwz-0.15-r1.ebuild index 07e6062f11f1..6ea8c380f942 100644 --- a/sys-devel/dwz/dwz-0.15-r1.ebuild +++ b/sys-devel/dwz/dwz-0.15-r1.ebuild @@ -7,13 +7,18 @@ inherit toolchain-funcs DESCRIPTION="DWARF optimization and duplicate removal tool" HOMEPAGE="https://sourceware.org/dwz" -SRC_URI="https://sourceware.org/ftp/dwz/releases/${P}.tar.xz" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://sourceware.org/git/dwz.git" + inherit git-r3 +else + SRC_URI="https://sourceware.org/ftp/dwz/releases/${P}.tar.xz" + S="${WORKDIR}/${PN}" -S="${WORKDIR}/${PN}" + KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86" +fi LICENSE="GPL-2+ GPL-3+" SLOT="0" -KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86" IUSE="test" RESTRICT="!test? ( test )" @@ -22,11 +27,13 @@ RDEPEND=" dev-libs/xxhash " DEPEND="${RDEPEND}" -BDEPEND="test? ( - dev-libs/elfutils[utils] - dev-util/dejagnu - dev-debug/gdb -)" +BDEPEND=" + test? ( + dev-debug/gdb + dev-libs/elfutils[utils] + dev-util/dejagnu + ) +" src_prepare() { default diff --git a/sys-devel/dwz/dwz-9999.ebuild b/sys-devel/dwz/dwz-9999.ebuild new file mode 100644 index 000000000000..8ce1dc9e912c --- /dev/null +++ b/sys-devel/dwz/dwz-9999.ebuild @@ -0,0 +1,53 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="DWARF optimization and duplicate removal tool" +HOMEPAGE="https://sourceware.org/dwz" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://sourceware.org/git/dwz.git" + inherit git-r3 +else + SRC_URI="https://sourceware.org/ftp/dwz/releases/${P}.tar.xz" + S="${WORKDIR}/${PN}" + + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +LICENSE="GPL-2+ GPL-3+" +SLOT="0" +IUSE="test" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-libs/elfutils + dev-libs/xxhash +" +DEPEND="${RDEPEND}" +BDEPEND=" + test? ( + dev-debug/gdb + dev-libs/elfutils[utils] + dev-util/dejagnu + ) +" + +src_prepare() { + default + tc-export CC +} + +src_compile() { + emake CFLAGS="${CFLAGS}" srcdir="${S}" +} + +src_test() { + emake CFLAGS="${CFLAGS}" srcdir="${S}" check +} + +src_install() { + emake DESTDIR="${D}" CFLAGS="${CFLAGS}" srcdir="${S}" install +} diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest index 44b1c34adac5..2d8323982f6d 100644 --- a/sys-devel/gcc/Manifest +++ b/sys-devel/gcc/Manifest @@ -15,6 +15,7 @@ DIST gcc-12-20240801.tar.xz 79883084 BLAKE2B 9b50ef282b5d55b2c477e5edd83c70076e0 DIST gcc-12-20240808.tar.xz 79911312 BLAKE2B a4958a9980e043d295df7ac75d4f0ac594b012e756133f20cc99a510d288f0be1b253e10c6ee08da36c881cce1bb545ce028ca2d65ba2e180672c09c377a9553 SHA512 ad57e71315ac4061b528a0ef6217298d545f7b48d1e73c9b543a7594c48bddf61098227aa0ad889aafb80f2532ce26d4a74b24a84c4cfa52e075415c0a512508 DIST gcc-12-20240815.tar.xz 79901552 BLAKE2B 5607c6e801b2defbd7f41d37c262e0fcf8562615c755fd34ddd91fdaf27811587e30ad8428a0fe6185f5a3d16382f40164a1f2be4eead5b9993514949afdb349 SHA512 68703cb8f3bb2f81c048bbe514e1e6669172ceea06ea4db02a3e97f6d51d9924d68898b0f4bdb6d383beb619e0e537bb57c9c4b3cd69fdb1e55173bb363af060 DIST gcc-12-20240822.tar.xz 79887924 BLAKE2B 70312d8d2e474b67d60895eeeee82de151b2e3633435de53a6bc894ec96dc3cbc303a2676e2fddcd429f677ec25958d520807971bf1daa8df08c2f24e9f3de76 SHA512 d74ac04a3aa42c129e88dbbc47119a98e0c213bd36792f383a3716a6f55eaa09f97dfc4991656fed857acb975e427c1bcb443ed777833e3e3a08f18b405cb02f +DIST gcc-12-20240829.tar.xz 79907788 BLAKE2B d50f01fc6dc5962696062d0c5e0c12753e59030dc44e7b04f37a9a58cf675320151ada22f9d2796e15c3aa3d8e130afb4a8ab03112f8eeed5e57ab51c66e5cb4 SHA512 58cfef9a0c8bf40ec8ccbaeff1460c2e97fdfb76931e06e37fe067b14d52a6c0554e5b9706b937e1f1328c18a133ac61837d9ac52ec2591cd16353009b07aa6a DIST gcc-12.3.0-musl-patches-1.tar.xz 3572 BLAKE2B c7bf65f7c9ea8023ddaac821ee2b778622fa310ac72a72b2f7032494a8f304eac86217f9204622e6c21aaef9952bece0d09bc126facd4f42b602927909815ab5 SHA512 babc279fea2c1fd4c018815f2f5630214fd46015ce9f365c28af242681d51818eaca30ce298eddcab1eed5ac5f2759e2b47b2335afab9d722b4469a6d4fec326 DIST gcc-12.3.0-patches-3.tar.xz 14852 BLAKE2B 7a5f1f43063b15f424099afd72096212fbbbc5151ff01f2de15dfb6e7cf274981c8cfaedba9ef61576c9096fb172fc550a7deb5cd7d9366fd249fd5dd3951f76 SHA512 aa89e4c2ae02f4fb42229ad5167f2eaa3a8fae51118645bf07199fe2124b9c83948590662b053d08002ef709fa870ea88315fd4ccbe4441a74e9cb62edcb82fb DIST gcc-12.4.0.tar.xz 83377372 BLAKE2B 0d5aa9995bf53fa2dc976a846240cfb8fafd125ad6c54f45dc9d770215eae3e9ea0db82a9a4f79c51b4d5f8461a1d730c17db6841bc31bd96dba11d9ed7544ae SHA512 5bd29402cad2deb5d9388d0236c7146414d77e5b8d5f1c6c941c7a1f47691c3389f08656d5f6e8e2d6717bf2c81f018d326f632fb468f42925b40bd217fc4853 @@ -27,6 +28,7 @@ DIST gcc-13-20240802.tar.xz 84475340 BLAKE2B e4d5492126745d396194d3bce0b1d64a7cd DIST gcc-13-20240809.tar.xz 84479208 BLAKE2B f551960e9ac11e4769fec2e5dfbb4b0a37c2bbaaa7310231e86d2e8f24548bc3bdbfb9977ff77b03b896b06bcf92b56a4f8f516f4dc7ef8fb6400b44e8dace8d SHA512 648719e9cf4908665164f2a8854371933f09d31def1d32ce58f77c51f64955bfcb8a1232ecf0edbdf7eeaaf5c079bf2b4234c6c3d94c7e741d6945590f4db944 DIST gcc-13-20240816.tar.xz 84492060 BLAKE2B f241e46e797cceca4d69fc626e2e91747c571c89d43c0cd631ecaa9ccabdbe9466078cba28c761527b4140ab994541967999f8bb0b4d30ef44288817169ca9ae SHA512 6b7b0feaf22359043cac89789a3c0477acb637c17c949f01a66dd6ea8c4975844a94c10ec2d56e5695b1ef0873c589c4f3c96fa70ae6a1ffc978d8b319d73f4f DIST gcc-13-20240823.tar.xz 84482552 BLAKE2B e8f4d2fdbfb412ea4431cc0c94512cefc1658f3ea69e5d8d83dd633d4e5e42eda5bd2b7fa878177a47493eddc12bef4cde60d59223810c23ca232a2feed978d1 SHA512 302ee8901055faf26d02fd583d578c766986355e463cb9bd052ba86d0cf6b023f500e49c59817612ceaca9be33808a6bdad09eeaa1c9fcc58ea0917847921eff +DIST gcc-13-20240830.tar.xz 84496796 BLAKE2B af34dc5ec6a38948fce25b60860be2b87a381bb43dd4159fe174d0ea4566d2ca1b1830c3847139336ac34deeaac9d4f80832caf94f25622013f83c3c161e6b65 SHA512 3d8a531145062a22bca483452a08cc5218cb3af9a76828ff706d966c0cd122cf01b61705aa5cceb9364cf0fd0434ad9d32416d079638e1937513ef52d6a3b6dd DIST gcc-13.2.0-musl-patches-2.tar.xz 5292 BLAKE2B c057d6574d03c05854edaa9f3fd40e9149662b04f3ac7a7db3eb078d73a7b535726d1bf52e5b12736dedb2f9898ad731f2e48a6421fcfbf7b90f929dee072fcb SHA512 a691da0c87c443a5e9d23731f4005f27871c5b12bc9102873ffa24d374aa7b9fbd187c4f5635d23fa9ffb17e351e76173c2d3fdf40646e355c4cb314b538de69 DIST gcc-13.2.0-patches-14.tar.xz 46928 BLAKE2B fce23bc5315f35b04a4976550c4b44578944a1b17e40c7553351eeb8a1ef0f3a2538da5a5e1ae6f37b784ff11bbd8a44b8f6eec542be63e34d984dee69e1cd81 SHA512 d7d52bb2915fd89c06b0134bede8db939cadbb1f2dcddf923bee2c3f9f577ff9e5e986b60420d892539edf82867a0d1bd635807814bc618b06a2b37cdaca893a DIST gcc-13.2.0-patches-16.tar.xz 44792 BLAKE2B 0b6b584d68e69685638695596b780249ca0119ad362747a82d886fd10f77ceb05d02e033e906a090c67f44b1977f40df6a95206d81a32dd15e2f5413c6c92496 SHA512 324d9e63d16c35d55edde20de049162c01b0d487b4548d06c49f0da04a761ec255bc5e020cc2e7f60d12f5d129768afdcf7c86a59126f71f388ab375c34be6de @@ -81,6 +83,7 @@ EBUILD gcc-12.4.1_p20240801.ebuild 1608 BLAKE2B 236a5a5573a0a0a6a1da316f33eca0e5 EBUILD gcc-12.4.1_p20240808.ebuild 1608 BLAKE2B 236a5a5573a0a0a6a1da316f33eca0e572201ef02a6de02831e26a832121cff91af62a7d6a58cae3cf56f7e925b89bdf76ee4e24a8d3e894612b00d662fbb513 SHA512 6a4aa46da76b1d2501fc5937d14658ac44efb5981b6d30ba25a88a84879e7a3a4d00370a541be4974bdb881b0c2238f61459dbe8f6295e32fdb391bd70a6e4d4 EBUILD gcc-12.4.1_p20240815.ebuild 1608 BLAKE2B 236a5a5573a0a0a6a1da316f33eca0e572201ef02a6de02831e26a832121cff91af62a7d6a58cae3cf56f7e925b89bdf76ee4e24a8d3e894612b00d662fbb513 SHA512 6a4aa46da76b1d2501fc5937d14658ac44efb5981b6d30ba25a88a84879e7a3a4d00370a541be4974bdb881b0c2238f61459dbe8f6295e32fdb391bd70a6e4d4 EBUILD gcc-12.4.1_p20240822.ebuild 1608 BLAKE2B 236a5a5573a0a0a6a1da316f33eca0e572201ef02a6de02831e26a832121cff91af62a7d6a58cae3cf56f7e925b89bdf76ee4e24a8d3e894612b00d662fbb513 SHA512 6a4aa46da76b1d2501fc5937d14658ac44efb5981b6d30ba25a88a84879e7a3a4d00370a541be4974bdb881b0c2238f61459dbe8f6295e32fdb391bd70a6e4d4 +EBUILD gcc-12.4.1_p20240829.ebuild 1608 BLAKE2B 236a5a5573a0a0a6a1da316f33eca0e572201ef02a6de02831e26a832121cff91af62a7d6a58cae3cf56f7e925b89bdf76ee4e24a8d3e894612b00d662fbb513 SHA512 6a4aa46da76b1d2501fc5937d14658ac44efb5981b6d30ba25a88a84879e7a3a4d00370a541be4974bdb881b0c2238f61459dbe8f6295e32fdb391bd70a6e4d4 EBUILD gcc-12.5.9999.ebuild 1576 BLAKE2B 130ad8310161a8edc11cee748b8ef25c01c6979250f60b75d5e937c644196447f3f14413530e616643321478d7925b17f3c1a3a721a6a237e79b1bbaef512c55 SHA512 a29e571fef4955a146e5ffe79596d24c8780bddf9af4fbb5ca2d18ca1fc17dd2a4a40a08c5eb7a6e15b77a2efb4352d6fd44972e62e7914d192e6ff48b555a77 EBUILD gcc-13.2.0.ebuild 1666 BLAKE2B fa7667d2e80c162e51091525ddb73bb4ced21bff0c797c0b5993742a4dd5764963f40c3d205fc674187d1cb7cd3ca32a1519ed2fb37450743356eb096d36e914 SHA512 4519c19ecf26ba9af0270c70fcc3360b595aaabf037717a17fe1e250962363902328756fab02705c7392207541fa262c3e7b3d4887d69dac3143a6a4f129b17d EBUILD gcc-13.2.1_p20240210.ebuild 1659 BLAKE2B da731616a58d94bf5d5c8dbe354ab411f093ef8630ea3f71b5c81f4ab5db977a755ec2e1ae29118d2fb39b2257e791c9e4363a9dd08eba10d0588cb8f29482a4 SHA512 f61ba946cbfae240ec59a5d61eb5f10409819cec75abb792a017a0452d7c8b19da810d437796cf47bb71c5d05c1a964ea40083d8946bf938008fb99e63d4a3b5 @@ -92,6 +95,7 @@ EBUILD gcc-13.3.1_p20240802.ebuild 1668 BLAKE2B 04c9bd1e3eef8caf2faa0e58f7c7e214 EBUILD gcc-13.3.1_p20240809.ebuild 1668 BLAKE2B 04c9bd1e3eef8caf2faa0e58f7c7e2148b75410506536e3ae76554d0487211b827fbf21e14615f5ab7c1bcbe722e7977c2b25b04ee663c0b734ced15dc8d399c SHA512 8ca9289da9dec52ca40349f0f6d1e320255481f1f67be8666b5c9302e04b1b8bc5ea88567d8aed23ffd61cc5376b804eea536ced01a86837664d03039adab1c5 EBUILD gcc-13.3.1_p20240816.ebuild 1668 BLAKE2B 04c9bd1e3eef8caf2faa0e58f7c7e2148b75410506536e3ae76554d0487211b827fbf21e14615f5ab7c1bcbe722e7977c2b25b04ee663c0b734ced15dc8d399c SHA512 8ca9289da9dec52ca40349f0f6d1e320255481f1f67be8666b5c9302e04b1b8bc5ea88567d8aed23ffd61cc5376b804eea536ced01a86837664d03039adab1c5 EBUILD gcc-13.3.1_p20240823.ebuild 1668 BLAKE2B 04c9bd1e3eef8caf2faa0e58f7c7e2148b75410506536e3ae76554d0487211b827fbf21e14615f5ab7c1bcbe722e7977c2b25b04ee663c0b734ced15dc8d399c SHA512 8ca9289da9dec52ca40349f0f6d1e320255481f1f67be8666b5c9302e04b1b8bc5ea88567d8aed23ffd61cc5376b804eea536ced01a86837664d03039adab1c5 +EBUILD gcc-13.3.1_p20240830.ebuild 1668 BLAKE2B 04c9bd1e3eef8caf2faa0e58f7c7e2148b75410506536e3ae76554d0487211b827fbf21e14615f5ab7c1bcbe722e7977c2b25b04ee663c0b734ced15dc8d399c SHA512 8ca9289da9dec52ca40349f0f6d1e320255481f1f67be8666b5c9302e04b1b8bc5ea88567d8aed23ffd61cc5376b804eea536ced01a86837664d03039adab1c5 EBUILD gcc-13.4.9999.ebuild 1663 BLAKE2B e052ebf91ceddb2e10813f8a17f8f4c384c907aa1419289624dab0d2ca2a6bded63caafa5e9558b5f1cfd72d6a968d7fdb4e896ce78471790446d5143dfa2b51 SHA512 5b511367b5914f83b35680091cae883a75069d4ed9307eddc27511ff01f7f84e458e9e6ee5fb9f9957146a3a17a87a5f0e20353853eccf015c98a979aa1117d1 EBUILD gcc-14.1.1_p20240622.ebuild 1560 BLAKE2B ba3995ef274661709f87fb70ea5de0285ddcfe8ef9608390097c3904f19b480648f9dee0780b8899ee40756c2fec5ae597381b0a372dba6e78cb2b210fa97246 SHA512 ee8a2f773dc57aba592c2ce1df83c2f6ae1f4fa4d9ae38bfe42757c671837cb8086cbe7a4f8d5475a6e2b60c10fd2a9ae36e4711fa918de9b99d4158f46675d0 EBUILD gcc-14.1.1_p20240713.ebuild 1561 BLAKE2B ab7501fa100ec63e037553e14bb448ba7b9254f08ed4493000691c9311fcb1b15eb32d708063dea4d233eef6bbf37d9f161a77d0ce032f0611991d170fba3e5e SHA512 8bafa55a3815ba63f1f3efb1204c2566cb29392efc34f07684b1e6f8b5a8bef11528168b0fc7e2a13dd320b0d54f0f0c9970bfdbd01a6c5ebcd3617963924ffd diff --git a/sys-devel/gcc/gcc-12.4.1_p20240829.ebuild b/sys-devel/gcc/gcc-12.4.1_p20240829.ebuild new file mode 100644 index 000000000000..e645c4d53b77 --- /dev/null +++ b/sys-devel/gcc/gcc-12.4.1_p20240829.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TOOLCHAIN_PATCH_DEV="sam" +PATCH_GCC_VER="12.3.0" +PATCH_VER="3" +MUSL_VER="1" +MUSL_GCC_VER="12.3.0" +PYTHON_COMPAT=( python3_{10..12} ) + +if [[ ${PV} == *.9999 ]] ; then + MY_PV_2=$(ver_cut 2) + MY_PV_3=1 + if [[ ${MY_PV_2} == 0 ]] ; then + MY_PV_2=0 + MY_PV_3=0 + else + MY_PV_2=$((${MY_PV_2} - 1)) + fi + + # e.g. 12.2.9999 -> 12.1.1 + TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} +elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then + # Cheesy hack for RCs + MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) + MY_P=${PN}-${MY_PV} + GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" + TOOLCHAIN_SET_S=no + S="${WORKDIR}"/${MY_P} +fi + +inherit toolchain + +if tc_is_live ; then + # Needs to be after inherit (for now?), bug #830908 + EGIT_BRANCH=releases/gcc-$(ver_cut 1) +elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then + # Don't keyword live ebuilds + #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + :; +fi + +if [[ ${CATEGORY} != cross-* ]] ; then + # Technically only if USE=hardened *too* right now, but no point in complicating it further. + # If GCC is enabling CET by default, we need glibc to be built with support for it. + # bug #830454 + RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" + DEPEND="${RDEPEND}" +fi + +src_prepare() { + local p upstreamed_patches=( + # add them here + ) + for p in "${upstreamed_patches[@]}"; do + rm -v "${WORKDIR}/patch/${p}" || die + done + + toolchain_src_prepare + + eapply_user +} diff --git a/sys-devel/gcc/gcc-13.3.1_p20240830.ebuild b/sys-devel/gcc/gcc-13.3.1_p20240830.ebuild new file mode 100644 index 000000000000..bb142a8fd1d2 --- /dev/null +++ b/sys-devel/gcc/gcc-13.3.1_p20240830.ebuild @@ -0,0 +1,65 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TOOLCHAIN_PATCH_DEV="sam" +PATCH_GCC_VER="13.2.0" +MUSL_GCC_VER="13.2.0" +PATCH_VER="18" +MUSL_VER="2" +PYTHON_COMPAT=( python3_{10..12} ) + +if [[ ${PV} == *.9999 ]] ; then + MY_PV_2=$(ver_cut 2) + MY_PV_3=1 + if [[ ${MY_PV_2} == 0 ]] ; then + MY_PV_2=0 + MY_PV_3=0 + else + MY_PV_2=$((${MY_PV_2} - 1)) + fi + + # e.g. 12.2.9999 -> 12.1.1 + TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} +elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then + # Cheesy hack for RCs + MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) + MY_P=${PN}-${MY_PV} + GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" + TOOLCHAIN_SET_S=no + S="${WORKDIR}"/${MY_P} +fi + +inherit toolchain + +if tc_is_live ; then + # Needs to be after inherit (for now?), bug #830908 + EGIT_BRANCH=releases/gcc-$(ver_cut 1) +elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then + # Don't keyword live ebuilds + #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + :; +fi + +if [[ ${CATEGORY} != cross-* ]] ; then + # Technically only if USE=hardened *too* right now, but no point in complicating it further. + # If GCC is enabling CET by default, we need glibc to be built with support for it. + # bug #830454 + RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" + DEPEND="${RDEPEND}" +fi + +src_prepare() { + local p upstreamed_patches=( + # add them here + ) + for p in "${upstreamed_patches[@]}"; do + rm -v "${WORKDIR}/patch/${p}" || die + done + + toolchain_src_prepare + + eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch + eapply_user +} diff --git a/sys-devel/lld/Manifest b/sys-devel/lld/Manifest index 1b5a2b22b3db..237aa3f0f4bc 100644 --- a/sys-devel/lld/Manifest +++ b/sys-devel/lld/Manifest @@ -10,6 +10,7 @@ DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b8577 DIST llvm-project-19.1.0-rc3.src.tar.xz 141250388 BLAKE2B 6530bede000d2e4b8ce10b445bfc1f81dc25c2d7121fc953581cd9b6989b3ba197707cd79d3c7b94c055bf2e21b0d07ab3cb401d3f73d22eefba6da4b71dca7b SHA512 3ee4eab848e5e38c396e6f5addf5eb42570d451fc8e7cd77150dc5542f8f710f4a9db51836f7a799996dd1b8194defe4d58efe7c19e5d5e1c5f3dbdda94c0cf3 DIST llvm-project-19.1.0-rc3.src.tar.xz.sig 438 BLAKE2B 86bad4d4fb805340096473bc603d7a3483f030f62b6f52b64d12c33561fbbb999c2ab69cc94857a32747492c846a5ab631a84da200b03475fd401335373bbccf SHA512 ef0fd2e3e7069fbfd410cbcf71294d1b7182456330ff151348058b5cb0f292edaecb9dcbf613ee4fc979214a23bd3bb8077d71e674635359da36b938dc143266 DIST llvm-project-503907dc505db1e439e7061113bf84dd105f2e35.tar.gz 218750576 BLAKE2B 40904dbf62cffe9cb757cc1382a765d5c89791948e86bfa4fbdc5a78ebc11cc82588bc730e6c5c84b6d84922cd32290df0146733a013ffa4e408b8a7c2313a1f SHA512 a121cca2ef49c6b25f137e66d23d332d2f9e3bd0d349b1202b6869f7c85a141aecfe20a6c4d4eff84e32a243216740f20114968589207d39df229daf6443ba0d +DIST llvm-project-5500e21942f7047344b6fee62d3e08c0ba2f9182.tar.gz 219148250 BLAKE2B 61880a13086c46ac9a9f8326b1e007146afb1662a0a223703fe36a91da230d5708b368f1177e76ac13c1e5a30f620c4ce6346484a0a67a0f011a816bba4d13f9 SHA512 a6d4fcae960b450be2abd2da485cea638b73290b17ceeabf560651d614f55925f86ee6f76a116262d8a1ff70ba699468cb4cf4c32015e26540ba6e47c58db1b7 EBUILD lld-15.0.7.ebuild 2269 BLAKE2B 322d5608e3acfb87bfb720646404ed405a3113c4faf1059428663a50d5566d7842fcff57ccf3aeb5e97b1a9acd4efd862db2368f130e088944ef4f0faf3c90f8 SHA512 e50d1d99fe18b6aba57c06eb6853f3212be1f7b7f2f3c70dcd226a69a4defc753eafcce77eb74f30eaa31b010fa094738718c1cdb23e584ef6e33eb72e536719 EBUILD lld-16.0.6.ebuild 2324 BLAKE2B 9b849aea16a8188e4da4cfcf0c85fb3e997007e1287ec062aee182c7955c7bc78132e761c2611198c7207283fbe930fbee6bdc9a39b922d6d5387bedadaf1b76 SHA512 a7c3d4c1508e5435ba9f6250c6b2fd3157fb4f2c205a6888736f79fa739c59eec3e901927b53af81de3a3c6d4fa5d576be3eaa6ad45c60e5d952ed4ad9706c2f EBUILD lld-17.0.6.ebuild 2363 BLAKE2B 8ebe513b67f3fb8efd981b97c1f77fe5de2065c363c2b9e99b8836983539fe5637b231e8be2a87713d47b48a49bfde77471ad65fa5166b606df476eca6f94fc1 SHA512 fd63e8600e393ecd95a05a28c8ac0d71b12f5aedcf273f432bea1904165b874ee913afff4aab91c2049aa1eb95c239bca217b84150133b2060f95ea66ce1944e @@ -17,4 +18,5 @@ EBUILD lld-18.1.8.ebuild 2366 BLAKE2B ad9fa5a3af2791ba8f4d976a9f132d1546d75ea8a1 EBUILD lld-19.1.0_rc3.ebuild 2293 BLAKE2B 5825f0a471a50ec1d9e7775a82736f6369fa1e99904b30cf068f0092dce44d4e0c2e76fcb21d70b9ecb1756d19e8482a5ac940bdc25c5a1d58c9aee0c21b5d7b SHA512 86226e5f9aea8a87b022b2def7cef707fc7db0f1e026f4965ec64390708f7e2355c3e1ee991487bd0c6f9f17dc2f129a6b7a2b8abbf1e14fe48dd0e4cd73b1fa EBUILD lld-20.0.0.9999.ebuild 2293 BLAKE2B 5825f0a471a50ec1d9e7775a82736f6369fa1e99904b30cf068f0092dce44d4e0c2e76fcb21d70b9ecb1756d19e8482a5ac940bdc25c5a1d58c9aee0c21b5d7b SHA512 86226e5f9aea8a87b022b2def7cef707fc7db0f1e026f4965ec64390708f7e2355c3e1ee991487bd0c6f9f17dc2f129a6b7a2b8abbf1e14fe48dd0e4cd73b1fa EBUILD lld-20.0.0_pre20240822.ebuild 2293 BLAKE2B 5825f0a471a50ec1d9e7775a82736f6369fa1e99904b30cf068f0092dce44d4e0c2e76fcb21d70b9ecb1756d19e8482a5ac940bdc25c5a1d58c9aee0c21b5d7b SHA512 86226e5f9aea8a87b022b2def7cef707fc7db0f1e026f4965ec64390708f7e2355c3e1ee991487bd0c6f9f17dc2f129a6b7a2b8abbf1e14fe48dd0e4cd73b1fa +EBUILD lld-20.0.0_pre20240830.ebuild 2293 BLAKE2B 5825f0a471a50ec1d9e7775a82736f6369fa1e99904b30cf068f0092dce44d4e0c2e76fcb21d70b9ecb1756d19e8482a5ac940bdc25c5a1d58c9aee0c21b5d7b SHA512 86226e5f9aea8a87b022b2def7cef707fc7db0f1e026f4965ec64390708f7e2355c3e1ee991487bd0c6f9f17dc2f129a6b7a2b8abbf1e14fe48dd0e4cd73b1fa MISC metadata.xml 299 BLAKE2B 2feead2cd1b35b3a43335ddd7711f8181b52bc63ee7166608914260c67528add5251349063afbef4f8cf0ec09b2cd4c3ffdd90f2c14ed60bb69ebc03888f6333 SHA512 cd745c54ab18d25bdaff18582105072574103a36cfe7c175ef740f266d00e9fc6f44c332904d23b911c939cf5bdf52973b388923099d8dd5dfef3c283b5cb685 diff --git a/sys-devel/lld/lld-20.0.0_pre20240830.ebuild b/sys-devel/lld/lld-20.0.0_pre20240830.ebuild new file mode 100644 index 000000000000..79558afa1abe --- /dev/null +++ b/sys-devel/lld/lld-20.0.0_pre20240830.ebuild @@ -0,0 +1,93 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit cmake flag-o-matic llvm.org llvm-utils python-any-r1 toolchain-funcs + +DESCRIPTION="The LLVM linker (link editor)" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="${LLVM_MAJOR}/${LLVM_SOABI}" +IUSE="+debug test zstd" +RESTRICT="!test? ( test )" + +DEPEND=" + ~sys-devel/llvm-${PV}[debug=,zstd=] + sys-libs/zlib:= + zstd? ( app-arch/zstd:= ) +" +RDEPEND=" + ${DEPEND} + !sys-devel/lld:0 +" +BDEPEND=" + sys-devel/llvm:${LLVM_MAJOR} + test? ( + $(python_gen_any_dep ">=dev-python/lit-${PV}[\${PYTHON_USEDEP}]") + ) +" +PDEPEND=" + >=sys-devel/lld-toolchain-symlinks-16-r2:${LLVM_MAJOR} +" + +LLVM_COMPONENTS=( lld cmake libunwind/include/mach-o ) +llvm.org_set_globals + +python_check_deps() { + python_has_version ">=dev-python/lit-${PV}[${PYTHON_USEDEP}]" +} + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_unpack() { + llvm.org_src_unpack + + # Directory ${WORKDIR}/llvm does not exist with USE="-test", + # but LLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" is set below, + # and ${LLVM_MAIN_SRC_DIR}/../libunwind/include is used by build system + # (lld/MachO/CMakeLists.txt) and is expected to be resolvable + # to existent directory ${WORKDIR}/libunwind/include. + mkdir -p "${WORKDIR}/llvm" || die +} + +src_configure() { + llvm_prepend_path "${LLVM_MAJOR}" + + # ODR violations (https://github.com/llvm/llvm-project/issues/83529, bug #922353) + filter-lto + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + use elibc_musl && append-ldflags -Wl,-z,stack-size=2097152 + + local mycmakeargs=( + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" + -DBUILD_SHARED_LIBS=ON + -DLLVM_INCLUDE_TESTS=$(usex test) + -DLLVM_ENABLE_ZLIB=FORCE_ON + -DLLVM_ENABLE_ZSTD=$(usex zstd FORCE_ON OFF) + ) + + use test && mycmakeargs+=( + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + -DPython3_EXECUTABLE="${PYTHON}" + ) + + tc-is-cross-compiler && mycmakeargs+=( + -DLLVM_TABLEGEN_EXE="${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin/llvm-tblgen" + ) + + cmake_src_configure +} + +src_test() { + local -x LIT_PRESERVES_TMP=1 + cmake_build check-lld +} diff --git a/sys-devel/llvm-common/Manifest b/sys-devel/llvm-common/Manifest index 430e0130c0c9..b717dbba4b22 100644 --- a/sys-devel/llvm-common/Manifest +++ b/sys-devel/llvm-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-rc3.src.tar.xz 141250388 BLAKE2B 6530bede000d2e4b8ce10b445bfc1f81dc25c2d7121fc953581cd9b6989b3ba197707cd79d3c7b94c055bf2e21b0d07ab3cb401d3f73d22eefba6da4b71dca7b SHA512 3ee4eab848e5e38c396e6f5addf5eb42570d451fc8e7cd77150dc5542f8f710f4a9db51836f7a799996dd1b8194defe4d58efe7c19e5d5e1c5f3dbdda94c0cf3 DIST llvm-project-19.1.0-rc3.src.tar.xz.sig 438 BLAKE2B 86bad4d4fb805340096473bc603d7a3483f030f62b6f52b64d12c33561fbbb999c2ab69cc94857a32747492c846a5ab631a84da200b03475fd401335373bbccf SHA512 ef0fd2e3e7069fbfd410cbcf71294d1b7182456330ff151348058b5cb0f292edaecb9dcbf613ee4fc979214a23bd3bb8077d71e674635359da36b938dc143266 DIST llvm-project-503907dc505db1e439e7061113bf84dd105f2e35.tar.gz 218750576 BLAKE2B 40904dbf62cffe9cb757cc1382a765d5c89791948e86bfa4fbdc5a78ebc11cc82588bc730e6c5c84b6d84922cd32290df0146733a013ffa4e408b8a7c2313a1f SHA512 a121cca2ef49c6b25f137e66d23d332d2f9e3bd0d349b1202b6869f7c85a141aecfe20a6c4d4eff84e32a243216740f20114968589207d39df229daf6443ba0d +DIST llvm-project-5500e21942f7047344b6fee62d3e08c0ba2f9182.tar.gz 219148250 BLAKE2B 61880a13086c46ac9a9f8326b1e007146afb1662a0a223703fe36a91da230d5708b368f1177e76ac13c1e5a30f620c4ce6346484a0a67a0f011a816bba4d13f9 SHA512 a6d4fcae960b450be2abd2da485cea638b73290b17ceeabf560651d614f55925f86ee6f76a116262d8a1ff70ba699468cb4cf4c32015e26540ba6e47c58db1b7 EBUILD llvm-common-15.0.7.ebuild 1014 BLAKE2B da3b7ec6cd3c1e57758312fb9ea25e693305e1ef72b350eea85fbde5a1e636269d84bd491b6f528aee8a9cb8229f6304b371f99e6ac416c661c6519706b83b61 SHA512 68b9d672372fe71e39f2b8f9d80eb1dcb5138b8b9b961f56a4eeb81b3fc4054448a51a46b3a62547ebb6262425512f39bc146e5f2c3703de10ab520f1594e7a4 EBUILD llvm-common-16.0.6.ebuild 1034 BLAKE2B 1e0a0b6cbb746a7eb45e3f553bc949b69314afc3d913cda004d395e7b322c17f976496eed074cf08718dc2d9efa7f3db81dec4f38394fe6ea2b77793b74f4371 SHA512 8fbb211a6b05d24409642fcb00a4fb798499721cc30c4c5fa2df120ed74d9da7286916cf3788ea26f2cb21e334876417b05a4336fedff99e95d1ebe358f8b311 EBUILD llvm-common-17.0.6.ebuild 1034 BLAKE2B 1e0a0b6cbb746a7eb45e3f553bc949b69314afc3d913cda004d395e7b322c17f976496eed074cf08718dc2d9efa7f3db81dec4f38394fe6ea2b77793b74f4371 SHA512 8fbb211a6b05d24409642fcb00a4fb798499721cc30c4c5fa2df120ed74d9da7286916cf3788ea26f2cb21e334876417b05a4336fedff99e95d1ebe358f8b311 @@ -16,4 +17,5 @@ EBUILD llvm-common-18.1.8.ebuild 1040 BLAKE2B e48cc3f1b8cb1672859d620d637023ddce EBUILD llvm-common-19.1.0_rc3.ebuild 925 BLAKE2B 18510f8adb0e892eb63bdbf8a6154f56e23ed026ee6f0bf05bbccbafea843beb228bf57e14b01525fb0b067fdfa897faadbfd61179844a7c397c7f1d3b6fca64 SHA512 0cff75fcbabf14ba1526201d65b79486aefaf559accf5bd479a3643c4351ac997f6d55b2323328fabc4009e887e1cfe70681df5593c62a5b5bbfffb8312ea22d EBUILD llvm-common-20.0.0.9999.ebuild 925 BLAKE2B 18510f8adb0e892eb63bdbf8a6154f56e23ed026ee6f0bf05bbccbafea843beb228bf57e14b01525fb0b067fdfa897faadbfd61179844a7c397c7f1d3b6fca64 SHA512 0cff75fcbabf14ba1526201d65b79486aefaf559accf5bd479a3643c4351ac997f6d55b2323328fabc4009e887e1cfe70681df5593c62a5b5bbfffb8312ea22d EBUILD llvm-common-20.0.0_pre20240822.ebuild 925 BLAKE2B 18510f8adb0e892eb63bdbf8a6154f56e23ed026ee6f0bf05bbccbafea843beb228bf57e14b01525fb0b067fdfa897faadbfd61179844a7c397c7f1d3b6fca64 SHA512 0cff75fcbabf14ba1526201d65b79486aefaf559accf5bd479a3643c4351ac997f6d55b2323328fabc4009e887e1cfe70681df5593c62a5b5bbfffb8312ea22d +EBUILD llvm-common-20.0.0_pre20240830.ebuild 925 BLAKE2B 18510f8adb0e892eb63bdbf8a6154f56e23ed026ee6f0bf05bbccbafea843beb228bf57e14b01525fb0b067fdfa897faadbfd61179844a7c397c7f1d3b6fca64 SHA512 0cff75fcbabf14ba1526201d65b79486aefaf559accf5bd479a3643c4351ac997f6d55b2323328fabc4009e887e1cfe70681df5593c62a5b5bbfffb8312ea22d MISC metadata.xml 299 BLAKE2B 2feead2cd1b35b3a43335ddd7711f8181b52bc63ee7166608914260c67528add5251349063afbef4f8cf0ec09b2cd4c3ffdd90f2c14ed60bb69ebc03888f6333 SHA512 cd745c54ab18d25bdaff18582105072574103a36cfe7c175ef740f266d00e9fc6f44c332904d23b911c939cf5bdf52973b388923099d8dd5dfef3c283b5cb685 diff --git a/sys-devel/llvm-common/llvm-common-20.0.0_pre20240830.ebuild b/sys-devel/llvm-common/llvm-common-20.0.0_pre20240830.ebuild new file mode 100644 index 000000000000..2d8f35a84179 --- /dev/null +++ b/sys-devel/llvm-common/llvm-common-20.0.0_pre20240830.ebuild @@ -0,0 +1,53 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit elisp-common llvm.org + +DESCRIPTION="Common files shared between multiple slots of LLVM" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0" +IUSE="emacs" + +RDEPEND=" + !sys-devel/llvm:0 +" +BDEPEND=" + emacs? ( >=app-editors/emacs-23.1:* ) +" + +LLVM_COMPONENTS=( llvm/utils ) +llvm.org_set_globals + +SITEFILE="50llvm-gentoo.el" +BYTECOMPFLAGS="-L emacs" + +src_compile() { + default + + use emacs && elisp-compile emacs/*.el +} + +src_install() { + insinto /usr/share/vim/vimfiles + doins -r vim/*/ + # some users may find it useful + newdoc vim/README README.vim + dodoc vim/vimrc + + if use emacs ; then + elisp-install llvm emacs/*.{el,elc} + elisp-make-site-file "${SITEFILE}" llvm + fi +} + +pkg_postinst() { + use emacs && elisp-site-regen +} + +pkg_postrm() { + use emacs && elisp-site-regen +} diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest index c3e0b441cd0e..c71e67be74d5 100644 --- a/sys-devel/llvm/Manifest +++ b/sys-devel/llvm/Manifest @@ -22,6 +22,7 @@ DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b8577 DIST llvm-project-19.1.0-rc3.src.tar.xz 141250388 BLAKE2B 6530bede000d2e4b8ce10b445bfc1f81dc25c2d7121fc953581cd9b6989b3ba197707cd79d3c7b94c055bf2e21b0d07ab3cb401d3f73d22eefba6da4b71dca7b SHA512 3ee4eab848e5e38c396e6f5addf5eb42570d451fc8e7cd77150dc5542f8f710f4a9db51836f7a799996dd1b8194defe4d58efe7c19e5d5e1c5f3dbdda94c0cf3 DIST llvm-project-19.1.0-rc3.src.tar.xz.sig 438 BLAKE2B 86bad4d4fb805340096473bc603d7a3483f030f62b6f52b64d12c33561fbbb999c2ab69cc94857a32747492c846a5ab631a84da200b03475fd401335373bbccf SHA512 ef0fd2e3e7069fbfd410cbcf71294d1b7182456330ff151348058b5cb0f292edaecb9dcbf613ee4fc979214a23bd3bb8077d71e674635359da36b938dc143266 DIST llvm-project-503907dc505db1e439e7061113bf84dd105f2e35.tar.gz 218750576 BLAKE2B 40904dbf62cffe9cb757cc1382a765d5c89791948e86bfa4fbdc5a78ebc11cc82588bc730e6c5c84b6d84922cd32290df0146733a013ffa4e408b8a7c2313a1f SHA512 a121cca2ef49c6b25f137e66d23d332d2f9e3bd0d349b1202b6869f7c85a141aecfe20a6c4d4eff84e32a243216740f20114968589207d39df229daf6443ba0d +DIST llvm-project-5500e21942f7047344b6fee62d3e08c0ba2f9182.tar.gz 219148250 BLAKE2B 61880a13086c46ac9a9f8326b1e007146afb1662a0a223703fe36a91da230d5708b368f1177e76ac13c1e5a30f620c4ce6346484a0a67a0f011a816bba4d13f9 SHA512 a6d4fcae960b450be2abd2da485cea638b73290b17ceeabf560651d614f55925f86ee6f76a116262d8a1ff70ba699468cb4cf4c32015e26540ba6e47c58db1b7 EBUILD llvm-15.0.7-r3.ebuild 12592 BLAKE2B 81cd473990810203c4e8a47ceb0189ed399c869b85fab3181724dbd1429063cdaad1f6b6cb1ab5b392f531b0b4907cc61f266558b873b236f9a3ff439045aa37 SHA512 2321f9e6da93af22d5f074175a6a92b7dcd271e2b9b92128d268dd777a9c3bdd876010740153734e2593b90d26a58d4f784b2256a6b1e18160d13b3c10441fb3 EBUILD llvm-15.0.7-r6.ebuild 12599 BLAKE2B e180c4c343c9ca4e0a69118676cbdfd0787ace210fd638db0cb6a115b05dd1e10142c6dfb088c2d195f340cc81c3b997542c5957bf784ff4df1e7e577d24f440 SHA512 3f3b5a67a2188ae5063a9080abfc9be468a0ced00d2ef865c9ccef9a363d39f781b2be45743bc676dfcb738a3d2894c7e307588ecc7768394d2e11574d82b167 EBUILD llvm-16.0.6-r5.ebuild 12832 BLAKE2B c63736426def1e30266dc43dba9c6b2d47767fde332b0165f53beaec85bed33a2f3cf0cc8f213769bb3167060ea8f940f82a645dd7e2ead39e9c5efad2d59a17 SHA512 33003aa6e8e55a2696c2b0831b83a1bfe947ce25b9b5c6d9035d085f016c134e8f549a28c26a47854fb07e3735432848377f0a50d26654b4bef209e6e63b15f6 @@ -34,4 +35,5 @@ EBUILD llvm-18.1.8-r4.ebuild 13382 BLAKE2B 2d52ad708ed578868b700b97cc581ea732147 EBUILD llvm-19.1.0_rc3.ebuild 13041 BLAKE2B 914b33f85966c0b7ce92bc3ada3219ab7f670af431a69272b5a5b4bc95adc94e8fa8c1da360f0d0ba24a53122e2649beb20b7938d1ecab75db12ea900e65ac23 SHA512 855ef1af58a4288b23604850d1e45742e1ea9e2f584917da7bb41fce5a025d470d344896a376a9a78fe97362607e8a7266b9f76834379b86b8ca6c6b680ad798 EBUILD llvm-20.0.0.9999.ebuild 13152 BLAKE2B 8b157cde59f8cddf7393d5db87992e7154bb733eae7c13cfbd28a195ba0d40ccaa00b5264ba00d1c5d9be452e7d6251c74ecd38a97f49a2ac5b108392de1f2de SHA512 51b5728a89f5ff7d92af282e3b914276ddcd5e301a87d3c73f4504739cad16442271aa404c29b9cf6a0dffabf19ff0ef56c9617e5dfd333dec50118afdadce5c EBUILD llvm-20.0.0_pre20240822.ebuild 13152 BLAKE2B 8b157cde59f8cddf7393d5db87992e7154bb733eae7c13cfbd28a195ba0d40ccaa00b5264ba00d1c5d9be452e7d6251c74ecd38a97f49a2ac5b108392de1f2de SHA512 51b5728a89f5ff7d92af282e3b914276ddcd5e301a87d3c73f4504739cad16442271aa404c29b9cf6a0dffabf19ff0ef56c9617e5dfd333dec50118afdadce5c +EBUILD llvm-20.0.0_pre20240830.ebuild 13152 BLAKE2B 8b157cde59f8cddf7393d5db87992e7154bb733eae7c13cfbd28a195ba0d40ccaa00b5264ba00d1c5d9be452e7d6251c74ecd38a97f49a2ac5b108392de1f2de SHA512 51b5728a89f5ff7d92af282e3b914276ddcd5e301a87d3c73f4504739cad16442271aa404c29b9cf6a0dffabf19ff0ef56c9617e5dfd333dec50118afdadce5c MISC metadata.xml 2835 BLAKE2B 07816d714509d62c0e0a443cc4af1f1f049497de75431f80a981f662b4f2281a16655be3e733a26099d0d814d5ce26d80cee13aa7a4e8d079168846a8e02670f SHA512 292ccb0a05a0239b5b00c6a84be11b4b385900d6467a6a139af03588c61aff9ac0e4bbcd23e89b2a7d7947f7d8cf8ba9323f2539a6c563a338b73f5ac6ffd00f diff --git a/sys-devel/llvm/llvm-20.0.0_pre20240830.ebuild b/sys-devel/llvm/llvm-20.0.0_pre20240830.ebuild new file mode 100644 index 000000000000..d01575f39051 --- /dev/null +++ b/sys-devel/llvm/llvm-20.0.0_pre20240830.ebuild @@ -0,0 +1,554 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) + +inherit cmake flag-o-matic llvm.org multilib-minimal pax-utils python-any-r1 +inherit toolchain-funcs + +DESCRIPTION="Low Level Virtual Machine" +HOMEPAGE="https://llvm.org/" + +# Additional licenses: +# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD. +# 2. xxhash: BSD. +# 3. MD5 code: public-domain. +# 4. ConvertUTF.h: TODO. + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc" +SLOT="${LLVM_MAJOR}/${LLVM_SOABI}" +IUSE=" + +binutils-plugin +debug debuginfod doc exegesis libedit +libffi + test xml z3 zstd +" +RESTRICT="!test? ( test )" + +RDEPEND=" + sys-libs/zlib:0=[${MULTILIB_USEDEP}] + debuginfod? ( + net-misc/curl:= + dev-cpp/cpp-httplib:= + ) + exegesis? ( dev-libs/libpfm:= ) + libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] ) + libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] ) + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] ) + z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] ) + zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] ) +" +DEPEND=" + ${RDEPEND} + binutils-plugin? ( sys-libs/binutils-libs ) +" +BDEPEND=" + ${PYTHON_DEPS} + dev-lang/perl + sys-devel/gnuconfig + kernel_Darwin? ( + <sys-libs/libcxx-${LLVM_VERSION}.9999 + ) + libffi? ( virtual/pkgconfig ) +" +# There are no file collisions between these versions but having :0 +# installed means llvm-config there will take precedence. +RDEPEND=" + ${RDEPEND} + !sys-devel/llvm:0 +" +PDEPEND=" + sys-devel/llvm-common + sys-devel/llvm-toolchain-symlinks:${LLVM_MAJOR} + binutils-plugin? ( >=sys-devel/llvmgold-${LLVM_MAJOR} ) +" + +LLVM_COMPONENTS=( llvm cmake third-party ) +LLVM_MANPAGES=1 +LLVM_USE_TARGETS=provide +llvm.org_set_globals + +[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( " +BDEPEND+=" + $(python_gen_any_dep ' + dev-python/myst-parser[${PYTHON_USEDEP}] + dev-python/sphinx[${PYTHON_USEDEP}] + ') +" +[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) " + +python_check_deps() { + llvm_are_manpages_built || return 0 + + python_has_version -b "dev-python/myst-parser[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]" +} + +check_uptodate() { + local prod_targets=( + $(sed -n -e '/set(LLVM_ALL_TARGETS/,/)/p' CMakeLists.txt \ + | tail -n +2 | head -n -1) + ) + local all_targets=( + lib/Target/*/ + ) + all_targets=( "${all_targets[@]#lib/Target/}" ) + all_targets=( "${all_targets[@]%/}" ) + + local exp_targets=() i + for i in "${all_targets[@]}"; do + has "${i}" "${prod_targets[@]}" || exp_targets+=( "${i}" ) + done + + local outdated + if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then + eerror "ALL_LLVM_EXPERIMENTAL_TARGETS are outdated!" + eerror " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}" + eerror "Expected: ${exp_targets[*]}" + eerror + outdated=1 + fi + + if [[ ${prod_targets[*]} != ${ALL_LLVM_PRODUCTION_TARGETS[*]} ]]; then + eerror "ALL_LLVM_PRODUCTION_TARGETS are outdated!" + eerror " Have: ${ALL_LLVM_PRODUCTION_TARGETS[*]}" + eerror "Expected: ${prod_targets[*]}" + outdated=1 + fi + + [[ ${outdated} ]] && die "Update ALL_LLVM*_TARGETS" +} + +check_distribution_components() { + if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then + local all_targets=() my_targets=() l + cd "${BUILD_DIR}" || die + + while read -r l; do + if [[ ${l} == install-*-stripped:* ]]; then + l=${l#install-} + l=${l%%-stripped*} + + case ${l} in + # shared libs + LLVM|LLVMgold) + ;; + # TableGen lib + deps + LLVMDemangle|LLVMSupport|LLVMTableGen) + ;; + # used by lldb + LLVMDebuginfod) + ;; + # testing libraries + LLVMTestingAnnotations|LLVMTestingSupport) + ;; + # static libs + LLVM*) + continue + ;; + # meta-targets + distribution|llvm-libraries) + continue + ;; + # used only w/ USE=doc + docs-llvm-html) + use doc || continue + ;; + # used only w/ USE=debuginfd + llvm-debuginfod) + use debuginfod || continue + ;; + esac + + all_targets+=( "${l}" ) + fi + done < <(${NINJA} -t targets all) + + while read -r l; do + my_targets+=( "${l}" ) + done < <(get_distribution_components $"\n") + + local add=() remove=() + for l in "${all_targets[@]}"; do + if ! has "${l}" "${my_targets[@]}"; then + add+=( "${l}" ) + fi + done + for l in "${my_targets[@]}"; do + if ! has "${l}" "${all_targets[@]}"; then + remove+=( "${l}" ) + fi + done + + if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then + eerror "get_distribution_components() is outdated!" + eerror " Add: ${add[*]}" + eerror "Remove: ${remove[*]}" + die "Update get_distribution_components()!" + fi + cd - >/dev/null || die + fi +} + +src_prepare() { + # disable use of SDK on OSX, bug #568758 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die + + # Update config.guess to support more systems + cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die + + # Verify that the ebuild is up-to-date + check_uptodate + + llvm.org_src_prepare +} + +get_distribution_components() { + local sep=${1-;} + + local out=( + # shared libs + LLVM + LTO + Remarks + + # tools + llvm-config + + # common stuff + cmake-exports + llvm-headers + + # libraries needed for clang-tblgen + LLVMDemangle + LLVMSupport + LLVMTableGen + + # testing libraries + llvm_gtest + llvm_gtest_main + LLVMTestingAnnotations + LLVMTestingSupport + ) + + if multilib_is_native_abi; then + out+=( + # library used by lldb + LLVMDebuginfod + + # utilities + llvm-tblgen + FileCheck + llvm-PerfectShuffle + count + not + yaml-bench + UnicodeNameMappingGenerator + + # tools + bugpoint + dsymutil + llc + lli + lli-child-target + llvm-addr2line + llvm-ar + llvm-as + llvm-bcanalyzer + llvm-bitcode-strip + llvm-c-test + llvm-cat + llvm-cfi-verify + llvm-cgdata + llvm-config + llvm-cov + llvm-ctxprof-util + llvm-cvtres + llvm-cxxdump + llvm-cxxfilt + llvm-cxxmap + llvm-debuginfo-analyzer + llvm-debuginfod-find + llvm-diff + llvm-dis + llvm-dlltool + llvm-dwarfdump + llvm-dwarfutil + llvm-dwp + llvm-exegesis + llvm-extract + llvm-gsymutil + llvm-ifs + llvm-install-name-tool + llvm-jitlink + llvm-jitlink-executor + llvm-lib + llvm-libtool-darwin + llvm-link + llvm-lipo + llvm-lto + llvm-lto2 + llvm-mc + llvm-mca + llvm-ml + llvm-modextract + llvm-mt + llvm-nm + llvm-objcopy + llvm-objdump + llvm-opt-report + llvm-otool + llvm-pdbutil + llvm-profdata + llvm-profgen + llvm-ranlib + llvm-rc + llvm-readelf + llvm-readobj + llvm-readtapi + llvm-reduce + llvm-remarkutil + llvm-rtdyld + llvm-sim + llvm-size + llvm-split + llvm-stress + llvm-strings + llvm-strip + llvm-symbolizer + llvm-tli-checker + llvm-undname + llvm-windres + llvm-xray + obj2yaml + opt + reduce-chunk-list + sancov + sanstats + split-file + verify-uselistorder + yaml2obj + + # python modules + opt-viewer + ) + + if llvm_are_manpages_built; then + out+=( + # manpages + docs-dsymutil-man + docs-llvm-dwarfdump-man + docs-llvm-man + ) + fi + use doc && out+=( + docs-llvm-html + ) + + use binutils-plugin && out+=( + LLVMgold + ) + use debuginfod && out+=( + llvm-debuginfod + ) + fi + + printf "%s${sep}" "${out[@]}" +} + +multilib_src_configure() { + if use ppc && tc-is-gcc && [[ $(gcc-major-version) -lt 14 ]]; then + # Workaround for bug #880677 + append-flags $(test-flags-CXX -fno-ipa-sra -fno-ipa-modref -fno-ipa-icf) + fi + + # ODR violations (bug #917536, bug #926529). Just do it for GCC for now + # to avoid people grumbling. GCC is, anecdotally, more likely to miscompile + # LLVM with LTO anyway (which is not necessarily its fault). + tc-is-gcc && filter-lto + + local ffi_cflags ffi_ldflags + if use libffi; then + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi) + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi) + fi + + local libdir=$(get_libdir) + local mycmakeargs=( + # disable appending VCS revision to the version to improve + # direct cache hit ratio + -DLLVM_APPEND_VC_REV=OFF + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + + -DBUILD_SHARED_LIBS=OFF + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components) + + # cheap hack: LLVM combines both anyway, and the only difference + # is that the former list is explicitly verified at cmake time + -DLLVM_TARGETS_TO_BUILD="" + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_INCLUDE_BENCHMARKS=OFF + -DLLVM_INCLUDE_TESTS=ON + -DLLVM_BUILD_TESTS=$(usex test) + -DLLVM_INSTALL_GTEST=ON + + -DLLVM_ENABLE_FFI=$(usex libffi) + -DLLVM_ENABLE_LIBEDIT=$(usex libedit) + -DLLVM_ENABLE_LIBXML2=$(usex xml) + -DLLVM_ENABLE_ASSERTIONS=$(usex debug) + -DLLVM_ENABLE_LIBPFM=$(usex exegesis) + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + -DLLVM_ENABLE_Z3_SOLVER=$(usex z3) + -DLLVM_ENABLE_ZLIB=FORCE_ON + -DLLVM_ENABLE_ZSTD=$(usex zstd FORCE_ON OFF) + -DLLVM_ENABLE_CURL=$(usex debuginfod) + -DLLVM_ENABLE_HTTPLIB=$(usex debuginfod) + + -DLLVM_HOST_TRIPLE="${CHOST}" + + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}" + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}" + + -DPython3_EXECUTABLE="${PYTHON}" + + # disable OCaml bindings (now in dev-ml/llvm-ocaml) + -DOCAMLFIND=NO + ) + + local suffix= + if [[ -n ${EGIT_VERSION} && ${EGIT_BRANCH} != release/* ]]; then + # the ABI of the main branch is not stable, so let's include + # the commit id in the SOVERSION to contain the breakage + suffix+="git${EGIT_VERSION::8}" + fi + if [[ $(tc-get-cxx-stdlib) == libc++ ]]; then + # Smart hack: alter version suffix -> SOVERSION when linking + # against libc++. This way we won't end up mixing LLVM libc++ + # libraries with libstdc++ clang, and the other way around. + suffix+="+libcxx" + mycmakeargs+=( + -DLLVM_ENABLE_LIBCXX=ON + ) + fi + mycmakeargs+=( + -DLLVM_VERSION_SUFFIX="${suffix}" + ) + + use test && mycmakeargs+=( + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + if multilib_is_native_abi; then + local build_docs=OFF + if llvm_are_manpages_built; then + build_docs=ON + mycmakeargs+=( + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html" + -DSPHINX_WARNINGS_AS_ERRORS=OFF + ) + fi + + mycmakeargs+=( + -DLLVM_BUILD_DOCS=${build_docs} + -DLLVM_ENABLE_OCAMLDOC=OFF + -DLLVM_ENABLE_SPHINX=${build_docs} + -DLLVM_ENABLE_DOXYGEN=OFF + -DLLVM_INSTALL_UTILS=ON + ) + use binutils-plugin && mycmakeargs+=( + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include + ) + fi + + use kernel_Darwin && mycmakeargs+=( + # Use our libtool instead of looking it up with xcrun + -DCMAKE_LIBTOOL="${EPREFIX}/usr/bin/${CHOST}-libtool" + ) + + # LLVM can have very high memory consumption while linking, + # exhausting the limit on 32-bit linker executable + use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory" + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + cmake_src_configure + + grep -q -E "^CMAKE_PROJECT_VERSION_MAJOR(:.*)?=${LLVM_MAJOR}$" \ + CMakeCache.txt || + die "Incorrect version, did you update _LLVM_MAIN_MAJOR?" + multilib_is_native_abi && check_distribution_components +} + +multilib_src_compile() { + tc-env_build cmake_build distribution + + pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld + pax-mark m "${BUILD_DIR}"/bin/lli + pax-mark m "${BUILD_DIR}"/bin/lli-child-target + + if use test; then + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests + pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests + fi +} + +multilib_src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake_build check +} + +src_install() { + local MULTILIB_CHOST_TOOLS=( + /usr/lib/llvm/${LLVM_MAJOR}/bin/llvm-config + ) + + local MULTILIB_WRAPPED_HEADERS=( + /usr/include/llvm/Config/llvm-config.h + ) + + local LLVM_LDPATHS=() + multilib-minimal_src_install + + # move wrapped headers back + mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die +} + +multilib_src_install() { + DESTDIR=${D} cmake_build install-distribution + + # move headers to /usr/include for wrapping + rm -rf "${ED}"/usr/include || die + mv "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include "${ED}"/usr/include || die + + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)" ) +} + +multilib_src_install_all() { + local revord=$(( 9999 - ${LLVM_MAJOR} )) + newenvd - "60llvm-${revord}" <<-_EOF_ + PATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin" + # we need to duplicate it in ROOTPATH for Portage to respect... + ROOTPATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin" + MANPATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )" + _EOF_ + + docompress "/usr/lib/llvm/${LLVM_MAJOR}/share/man" + llvm_install_manpages +} + +pkg_postinst() { + elog "You can find additional opt-viewer utility scripts in:" + elog " ${EROOT}/usr/lib/llvm/${LLVM_MAJOR}/share/opt-viewer" + elog "To use these scripts, you will need Python along with the following" + elog "packages:" + elog " dev-python/pygments (for opt-viewer)" + elog " dev-python/pyyaml (for all of them)" +} |