diff options
Diffstat (limited to 'sys-devel/clang')
-rw-r--r-- | sys-devel/clang/Manifest | 6 | ||||
-rw-r--r-- | sys-devel/clang/clang-10.0.0.9999.ebuild | 4 | ||||
-rw-r--r-- | sys-devel/clang/clang-10.0.0_rc2.ebuild | 397 | ||||
-rw-r--r-- | sys-devel/clang/clang-11.0.0.9999.ebuild | 2 |
4 files changed, 404 insertions, 5 deletions
diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest index 2d17843c804a..3b59699f7f4d 100644 --- a/sys-devel/clang/Manifest +++ b/sys-devel/clang/Manifest @@ -10,10 +10,12 @@ DIST llvm-8.0.1-manpages.tar.bz2 140915 BLAKE2B 13ac9e172728d643dac1d12ac06909b6 DIST llvm-8.0.1.src.tar.xz 30477608 BLAKE2B 4319c837b36111401e3b0f9659b8d875c89463bcc7816df1aefe1e3ff989860bbaa92504718f8e15416cfd9f3491c13777cd5cb661877b237b342b0e515b93f5 SHA512 82e120be5cabdfd5111aebbea68a663fe229c8861d73802d6ab09a3bf48f60de333e07e61f8fb61beaa14ac2bea24fcd74fa6f761acaf62469f536b79fcb1e16 DIST llvm-9.0.0-manpages.tar.bz2 158546 BLAKE2B eed6235698a0b5993affe305f7fd22cd4cf444adf931275a1685f2049a5f17cf2933907577d9ce142348a3c579769b0436aa2b5a9a953958504125a8c3e83b7d SHA512 64c8d18061eb2870b379a1df485be0b61eac07cb10b3f97347b54b2ee326faa63437ca04466776be282e120dd3f6147e14fffdd38ca370db85748fe5eb54d764 DIST llvmorg-10.0.0-rc1.tar.gz 120755822 BLAKE2B a729d37d96ba498cb865c6f708734dccb796b2caabb69167b9aa3b0e12c788f2a5980a048b99d5603da3d26af909fb31f406b4f4743cabae56c45f829a7bf695 SHA512 27137fc700971147c00ded6787eaae9f0bcf98c938fe227a5a559b38d983736f3d086f4ff6772d802c5f48a7d97a97c293261e4af88fcb5a720693b9cb5a4f02 +DIST llvmorg-10.0.0-rc2.tar.gz 120795019 BLAKE2B 6e701eddbd2313e777c7b37dff8455a08d3c599d01055b60afc0319373d4709deb429aac6bf9e80c4d2e2ab8ade03bf5b398b6ccd8882e4bde608d10cdbf2284 SHA512 ee571c9258a2d9fc411964f56b0b92b2e7134349ed21dbe7963eb61ef65da506e0c4f7c69259a3b6cecec23f55d24636608287ee4457ee667031e141f8f09aae DIST llvmorg-9.0.1.tar.gz 113193320 BLAKE2B b86e405f2b8e00436045fd409fe19cdde75c797b1192c62a22b5ec75e6b4dc8e874a0f33008dc31562445e4cbe53a992b6f48c684255a6a1ef261e595b8b161f SHA512 fa88beeaae94b6d0cd9b5ba38658d0ffed8004035d7d8a4f95c3d31a709b88b581ae9bd7761333c8e5375c44b8f6be01768b5a3be901163159d7e6c43b71da59 -EBUILD clang-10.0.0.9999.ebuild 10944 BLAKE2B d0170a2c38baab0f5a5bf554a416919a33c330ceaa1c6af687cbc3b80874cf99cbb40e92f23892f66565d0adaa3a64a63a1883f67b665fb65d6c367a3643d9e0 SHA512 58267d1dded32c55bebca0a870bf6769af0fc659cdfb5a47f1f8574b0c89a4e454befaaa7d33513c7d591fa2a3b84418fc54977d3d648a01b741a3cdb8fa5f3e +EBUILD clang-10.0.0.9999.ebuild 10933 BLAKE2B 2493f62a26fdf0a914689e849607c71d2b4f8cd857ff3fad0ba07aff98ec9ca8ca4e8aeb2f904b753bb318fb872e9a857ddaf22305355595b98603486a03de4f SHA512 afd0c27931c55c4ea5223a5096a2f6ebf1db6f146afed87148b31217e7da81e561362bb615c1342b134af0ed2f6890a46d196c6a594bfc7b72d7d161881601de EBUILD clang-10.0.0_rc1.ebuild 10944 BLAKE2B d0170a2c38baab0f5a5bf554a416919a33c330ceaa1c6af687cbc3b80874cf99cbb40e92f23892f66565d0adaa3a64a63a1883f67b665fb65d6c367a3643d9e0 SHA512 58267d1dded32c55bebca0a870bf6769af0fc659cdfb5a47f1f8574b0c89a4e454befaaa7d33513c7d591fa2a3b84418fc54977d3d648a01b741a3cdb8fa5f3e -EBUILD clang-11.0.0.9999.ebuild 10944 BLAKE2B d0170a2c38baab0f5a5bf554a416919a33c330ceaa1c6af687cbc3b80874cf99cbb40e92f23892f66565d0adaa3a64a63a1883f67b665fb65d6c367a3643d9e0 SHA512 58267d1dded32c55bebca0a870bf6769af0fc659cdfb5a47f1f8574b0c89a4e454befaaa7d33513c7d591fa2a3b84418fc54977d3d648a01b741a3cdb8fa5f3e +EBUILD clang-10.0.0_rc2.ebuild 10930 BLAKE2B 2517d079cb71b072deec0203432ee04fd3513e7c1ba829bbf768ee31ad4cf58711974d25e23fd6c5b2a9f3c7bea8c48ee2426178c3e164d72f8dc6bbf0ffad8c SHA512 1c76228c2e8f7343a0ec3293d0785023be35a84eb208da3dc13ad7521d5eb56a816620a9dd6f503c2e40e731d1b7ed84a30c4a4abf7d5af1057666f074242f7a +EBUILD clang-11.0.0.9999.ebuild 10946 BLAKE2B 6ca912316b58835777e3eeab18a4b288d7d6d41048f8f11992c800a9471520932b949c064fe873c9a5d53d32114b08a74507854dda96aa21afb0d6f169afc080 SHA512 bf8998b44b6277151c29104ec8a48ae2fa2bbb7ab3eb849e8d374aa8bd4d5fb64abd3b8a1eaffeb4015bf3c026f3aaee4d26e33255a8e3958fe77d1ad3c6d086 EBUILD clang-7.1.0.ebuild 10240 BLAKE2B 08dd7cdbd92c674a50e4d84f52fd25bd2c01ca562b819c659ca1973675803478cc7d3e6a8bd5dcff1caac19a02d8ebb4d149685b843b16b4cc1e5f2be1ddf9ef SHA512 1e3ea5ac965f96240faba9e7d01b3745ecb40b124a857fdb27727cda4af8317087bf593f98ced940632149d8fd13e1c9e970b2307abb6b132fe87896f1d004d3 EBUILD clang-8.0.1.ebuild 10138 BLAKE2B a2c91918e468c3f070ba10d7a0478e006c5d23289db387d6ca57ee082a7567ef24ad7af66a3b93e0e8934c69fbcd5a4fefbfbd77ba0ef077776b4110b30a6773 SHA512 da86670ee496b2a1bfe3f99eb7146cd8a85d793f580ae2ebd94bfb65363c6e39c58fb77b3b00c27e5d9bdc70ecb1688154e500506525b019da3f95d356f815e1 EBUILD clang-9.0.1.ebuild 8987 BLAKE2B 33154f9ba06325df93e59f573e829b00ff49ccfd55f9c7520b63b50775b54eb2ee13ce62744840f1ba63f7196e3171cd9146dcb65828b89ab34baa4c48cf748f SHA512 04e27cb57cb02eca753c4cf2d252e6d9d8a65e317bbc30f35aeafff4cea80391befcb52fe166e87d6560d3974f30613d9214dc3ba72803b9c0469ff93e867ec9 diff --git a/sys-devel/clang/clang-10.0.0.9999.ebuild b/sys-devel/clang/clang-10.0.0.9999.ebuild index 03de91fd9e9d..512b1d56a23f 100644 --- a/sys-devel/clang/clang-10.0.0.9999.ebuild +++ b/sys-devel/clang/clang-10.0.0.9999.ebuild @@ -3,7 +3,7 @@ EAPI=7 -PYTHON_COMPAT=( python{2_7,3_{6,7}} ) +PYTHON_COMPAT=( python{2_7,3_{6,7,8}} ) inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \ pax-utils python-single-r1 toolchain-funcs @@ -300,7 +300,7 @@ multilib_src_test() { local -x LIT_PRESERVES_TMP=1 cmake-utils_src_make check-clang multilib_is_native_abi && - cmake-utils_src_make check-clang-tools check-clangd + cmake-utils_src_make check-clang-tools } src_install() { diff --git a/sys-devel/clang/clang-10.0.0_rc2.ebuild b/sys-devel/clang/clang-10.0.0_rc2.ebuild new file mode 100644 index 000000000000..b14ce0461b46 --- /dev/null +++ b/sys-devel/clang/clang-10.0.0_rc2.ebuild @@ -0,0 +1,397 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python{2_7,3_{6,7,8}} ) +inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \ + pax-utils python-single-r1 toolchain-funcs + +DESCRIPTION="C language family frontend for LLVM" +HOMEPAGE="https://llvm.org/" +LLVM_COMPONENTS=( clang clang-tools-extra ) +LLVM_TEST_COMPONENTS=( + llvm/lib/Testing/Support + llvm/utils/{lit,llvm-lit,unittest} +) +llvm.org_set_globals +# We need extra level of indirection for CLANG_RESOURCE_DIR +S=${WORKDIR}/x/y/clang + +# Keep in sync with sys-devel/llvm +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC AVR ) +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 + NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore + "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?} + +# MSVCSetupApi.h: MIT +# sorttable.js: MIT + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT" +SLOT="$(ver_cut 1)" +KEYWORDS="" +IUSE="debug default-compiler-rt default-libcxx doc +static-analyzer + test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}" +REQUIRED_USE="${PYTHON_REQUIRED_USE} + || ( ${ALL_LLVM_TARGETS[*]} )" +RESTRICT="!test? ( test )" + +RDEPEND=" + ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${LLVM_TARGET_USEDEPS// /,},${MULTILIB_USEDEP}] + static-analyzer? ( dev-lang/perl:* ) + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] ) + ${PYTHON_DEPS}" +DEPEND="${RDEPEND}" +BDEPEND=" + doc? ( dev-python/sphinx ) + xml? ( virtual/pkgconfig ) + ${PYTHON_DEPS}" +RDEPEND="${RDEPEND} + !<sys-devel/llvm-4.0.0_rc:0 + !sys-devel/clang:0" +PDEPEND=" + sys-devel/clang-common + ~sys-devel/clang-runtime-${PV} + default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* ) + default-libcxx? ( >=sys-libs/libcxx-${PV} )" + +# least intrusive of all +CMAKE_BUILD_TYPE=RelWithDebInfo + +# 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). + +pkg_setup() { + LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup + python-single-r1_pkg_setup +} + +src_unpack() { + # create extra parent dir for CLANG_RESOURCE_DIR + mkdir -p x/y || die + cd x/y || die + llvm.org_src_unpack + mv clang-tools-extra clang/tools/extra || die +} + +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 + ;; + 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 + eqawarn "get_distribution_components() is outdated!" + eqawarn " Add: ${add[*]}" + eqawarn "Remove: ${remove[*]}" + 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 + + # libs + clang-cpp + libclang + ) + + if multilib_is_native_abi; then + out+=( + # common stuff + bash-autocomplete + libclang-python-bindings + + # tools + c-index-test + clang + clang-format + clang-import-test + clang-offload-bundler + clang-offload-wrapper + clang-refactor + clang-rename + clang-scan-deps + diagtool + hmaptool + + # extra tools + clang-apply-replacements + clang-change-namespace + clang-doc + clang-include-fixer + clang-move + clang-query + clang-reorder-fields + clang-tidy + clangd + find-all-symbols + modularize + pp-trace + ) + + use doc && out+=( + docs-clang-html + docs-clang-man + docs-clang-tools-html + docs-clang-tools-man + ) + + use static-analyzer && out+=( + clang-check + clang-extdef-mapping + scan-build + scan-view + ) + fi + + printf "%s${sep}" "${out[@]}" +} + +multilib_src_configure() { + local llvm_version=$(llvm-config --version) || die + local clang_version=$(ver_cut 1-3 "${llvm_version}") + + local mycmakeargs=( + -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm" + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}" + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" + # relative to bindir + -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}" + + -DBUILD_SHARED_LIBS=OFF + -DCLANG_LINK_CLANG_DYLIB=ON + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components) + + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_BUILD_TESTS=$(usex test) + + # these are not propagated reliably, so redefine them + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + + -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml) + # libgomp support fails to find headers without explicit -I + # furthermore, it provides only syntax checking + -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp + + # override default stdlib and rtlib + -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "") + -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "") + + -DCLANG_ENABLE_ARCMT=$(usex static-analyzer) + -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer) + ) + use test && mycmakeargs+=( + -DLLVM_MAIN_SRC_DIR="${WORKDIR}/x/y/llvm" + -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}" + ) + + if multilib_is_native_abi; then + mycmakeargs+=( + # normally copied from LLVM_INCLUDE_DOCS but the latter + # is lacking value in stand-alone builds + -DCLANG_INCLUDE_DOCS=$(usex doc) + -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc) + ) + use doc && mycmakeargs+=( + -DLLVM_BUILD_DOCS=ON + -DLLVM_ENABLE_SPHINX=ON + -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html" + -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra" + -DSPHINX_WARNINGS_AS_ERRORS=OFF + ) + 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 + [[ -x "/usr/bin/clang-tblgen" ]] \ + || die "/usr/bin/clang-tblgen not found or usable" + mycmakeargs+=( + -DCMAKE_CROSSCOMPILING=ON + -DCLANG_TABLEGEN=/usr/bin/clang-tblgen + ) + fi + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + cmake-utils_src_configure + + multilib_is_native_abi && check_distribution_components +} + +multilib_src_compile() { + cmake-utils_src_compile + + # provide a symlink for tests + if [[ ! -L ${WORKDIR}/lib/clang ]]; then + mkdir -p "${WORKDIR}"/lib || die + ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die + fi +} + +multilib_src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake-utils_src_make check-clang + multilib_is_native_abi && + cmake-utils_src_make check-clang-tools +} + +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 + mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die + + # Apply CHOST and version suffix to clang tools + # note: we use two version components here (vs 3 in runtime path) + local llvm_version=$(llvm-config --version) || die + local clang_version=$(ver_cut 1 "${llvm_version}") + local clang_full_version=$(ver_cut 1-3 "${llvm_version}") + 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/${SLOT}/bin/${i}" || die + dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}" + dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/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}-${clang_version}" \ + "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}" + dosym "${abi_chost}-${i}-${clang_version}" \ + "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}" + done + done + + # Remove unnecessary headers on FreeBSD, bug #417171 + if use kernel_FreeBSD; then + rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die + fi +} + +multilib_src_install() { + DESTDIR=${D} cmake-utils_src_make 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/${SLOT}/include "${ED}"/usr/include || die + mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die +} + +multilib_src_install_all() { + python_fix_shebang "${ED}" + if use static-analyzer; then + python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view + fi + + docompress "/usr/lib/llvm/${SLOT}/share/man" + # 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/${SLOT}/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/${SLOT}/share/clang" + 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" +} + +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/clang/clang-11.0.0.9999.ebuild b/sys-devel/clang/clang-11.0.0.9999.ebuild index 03de91fd9e9d..456493136dfe 100644 --- a/sys-devel/clang/clang-11.0.0.9999.ebuild +++ b/sys-devel/clang/clang-11.0.0.9999.ebuild @@ -3,7 +3,7 @@ EAPI=7 -PYTHON_COMPAT=( python{2_7,3_{6,7}} ) +PYTHON_COMPAT=( python{2_7,3_{6,7,8}} ) inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \ pax-utils python-single-r1 toolchain-funcs |