mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-11-09 06:37:10 -08:00
sys-devel/llvm: Remove old
Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
DIST llvm-14.0.6-manpages.tar.bz2 218186 BLAKE2B 4491296e490936a2d7b518e19a0ff6312b89abeef3fbe5da5d0b93bb2add1088ddf64a0b00ec8846062d19b1ad31e53eadee7ce03c9034aab554e183d1baccf6 SHA512 f8328dc2ec1e8d941d47e583ee31fae7bdcebb3f854b5c8a4a84bd19a79bf5427ad204012c81349bc05a291e41cf48e5129b4578bbd5d4490dd01e1c0b5823bf
|
||||
DIST llvm-15.0.7-manpages.tar.bz2 228425 BLAKE2B 573b030a32407cfe241fb2c8c62bed8e7c54f9daf4b8cffdd2d4e5ca2e40b5ec5ed3724475aedf77119be1a4d9de847a989e933d315e6d94908e407a19c98047 SHA512 86d5eeea2757b0a627c8d2d6e70a3265fc0207085f4e473cdd6e8b624c719625dead23fd1737742a1bea27b1c4631ef3e8e3041a1122a85fcb49859e5bfbee49
|
||||
DIST llvm-16.0.1-manpages.tar.bz2 243292 BLAKE2B febf892d91f16f1b320083563ebecd0632e26823e316c62d608f4445979423c597534e75191522202168d76e7aa355bbccff0378e0152e7a0ac14cb95ba7baaf SHA512 0183a421167d8d20bd60306a43d3c4069f87e73615102a7430c2a4bd057c96e7941c91b8d92cfe7b29f2691d517c4a5406052a3a818fcaf1356e0392397c1676
|
||||
DIST llvm-16.0.2-manpages.tar.bz2 245800 BLAKE2B f9672c11710d48d36f2a3508b6473746ad02223eeb9aa282929e2b7b8b89bf76d3c121c1df0ac78c66040b632e4090dad8e2baaf1d9862495eb991b1baa3f9ad SHA512 11183cc818500d7805831c79f77b279af27435304c3464d8f74b1f9dda915365e09d699d221e43f98f8bad8a14498d4a471dc13f9c3afe6d0eaaf7f59661a9fe
|
||||
DIST llvm-16.0.3-manpages.tar.bz2 245859 BLAKE2B ea98ac1a777bb2fe52a576e7a733030e88debc50dbfceb70f20814fd960da6a56d06986272cb2792c86701961e4e39006e5a3aa105eefb8c59e3b99e528078ec SHA512 6669105c9ac66ec0c21ccc788635935b5133b035b97ff31af049ebb8064fa7d257d54c5d9fda79674aa6037668e3ddfd2a09f716dbfd7cd356b0e193242aa9fc
|
||||
DIST llvm-gentoo-patchset-14.0.6-r2.tar.xz 16120 BLAKE2B e12e522fdb7ba505693c679cb09cc8e00e6a954df195c86c2af4dbf1b68334a405b8dcc45f2e28b5e5e0b7e9d5eb7ba907337027927371b7a3b7784ff8aae7e0 SHA512 8a5ea71c30fc0727cc855dd812bbcb6d5f51c80c98eb3d5b80258d5c5eaab1310edc9d53ae63c2ca827abec68e2912c4b69ef0da351ff883fb30545a61e1d09c
|
||||
DIST llvm-gentoo-patchset-15.0.7.tar.xz 19300 BLAKE2B b70e81d744c2eba5cd851e7b690ce8979b3064973f522be7c93bfb541860000a4bc8b17219f8788dfc8a527217dd13946cf7836640698ddd3d4b3fde493dfbf8 SHA512 daffff6ae4a0874aff1a423b4bb36701ecb5a35a36ae91d4ed7fda58b83e50ffcdc30498c84be4711fd3e1f227bf312dbe930019203e0a131944439af2aa94f7
|
||||
@@ -9,10 +7,6 @@ DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f
|
||||
DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6
|
||||
DIST llvm-project-15.0.7.src.tar.xz 110936452 BLAKE2B f3d277e2029157329e5be78b78af36b0826a1dfd9a337992499bf701e33149665bfc47d5e14978e38f342559629a559f8b2ce328705ba34fdf6830f5ae9721a5 SHA512 4836d3603f32e8e54434cbfa8ef33d9d473ac5dc20ebf9c67132653c73f4524931abd1084655eaee5f20bcfcb91bcc4bbc5c4a0b603ad0c9029c556e14dc4c52
|
||||
DIST llvm-project-15.0.7.src.tar.xz.sig 566 BLAKE2B 47dc8c82d86237b80c6d85f83a6c9a6e9e174cf8e7f367b071e0cd9481d7cd408e991337c5624e07f3f370f26387c814f212808575ed1c1b58404d3e3836b7df SHA512 fc6891b440dd1175eb8df3790590af8d36bc92301660f84744ae15123475aeb900a151e6a8e7998ded27ec4d86871903ad0b89cd61164943054c2e3bc8d8beb2
|
||||
DIST llvm-project-16.0.1.src.tar.xz 117990772 BLAKE2B 298189ce6d7245711e5bd3e03fa74d603dda5a458463ca0cb261fe6949290c46a70abbd1ad1c556e08da3adc5df577305e267c1135214b900d78502e39b46bc5 SHA512 98fc11c0ad90d5e5a2cb123b497b89a1583fe7f91b3ff05c335037801ef66cbfab08f6d2eff539f0da238e9685d4bc7a9fb2578e28864fc9e9357b84129cefaa
|
||||
DIST llvm-project-16.0.1.src.tar.xz.sig 566 BLAKE2B 06c03d789e63ab30bba4c56ba9ec91400d804448482d6a7fd395252b3b9166a5ee7a42a94c2074aa0d1809a3327f993d8932211f3fc05ad281db64c17b2a7094 SHA512 f42db28eb8280db06b1c78fa7a7aaea3a79499cecee1a64ce18c49b90c755b3a78fc93f01d1855887c7918ccc927c3b6147cfc916520f05d4cef65381ca6fe60
|
||||
DIST llvm-project-16.0.2.src.tar.xz 117995768 BLAKE2B b329b2b123428f3a966a96f074a75520f07d12fc13ec755403cff2346b23195e6a0c05ca9e789b4cf5b4b3557a922bd41d8dffb6056ee33fbbf2b81001511fae SHA512 4ca76aaaca8812a06a94071e7444a3213d85dca51ea86f6125f854776f69a3e088a92d0621e3911e526f280b35bfb778fb3742c6010d3ed1eba605c08720377c
|
||||
DIST llvm-project-16.0.2.src.tar.xz.sig 566 BLAKE2B 8243748ac27e4eec3cc011371e179e19f1005336f07d956fd358f649d1429c8d0ea22ecc376b1dec9fe3db971467ad1dd63e97bb089885d0e1994eeab26b6fd7 SHA512 dbe9367a259954a38f2369b2f226726162090227f1a5ae8c8809eaae47cad7b3b26c754633e6e5c54cacd6360a504d7ba4c659d9232c1648388d657a2aaad10c
|
||||
DIST llvm-project-16.0.3.src.tar.xz 117998136 BLAKE2B 6117586a117c30515e9a5623ab91d29ba65d33c8041274de0ecdbce08ae4fe1c8c3b120db9ca625f42fdbb2301537b4ffe8f7add701c178282be4f583fa0c8ca SHA512 2eb5eca1cbee92a499d7fba5729b61f31186353bc0545b17eefa300cf2b27c8d9a2f307443b2c1c9fe1b0ba412abf5143fdd4d25aaeb33d975a9a834221d7602
|
||||
DIST llvm-project-16.0.3.src.tar.xz.sig 566 BLAKE2B bbd96268b006fecffd7402452ae7559bd2ea42c7b771999f58893a48d66b1b056b476a7022c70e2ab8f11dba8318ccc141f97a05ece3b9ed3b4405a6890b0c3a SHA512 cdd5e1c2a252ba58f9b7f8687d6cf9a330c188988707bd72f4632a8158a2db9ac180b3936da99b87e7e99886c39cb8517ebbb04b7d1be198e76964e31ec8dc58
|
||||
DIST llvm-project-52882de0e641487329c9e093a90ea3dad01842c8.tar.gz 182953335 BLAKE2B 98682729992d73202e35b540d5d0d87e2acf44e4ab6896a0b6f9ac4a7423f55ad370ae1d7e919a6c86dc7f138a66890ac89b852b03305612d248ab567833f8be SHA512 3685aff0f648e9b477e1e01edebe4799498c21587e2ed5577e2fdef98bb21ea215e206606a11692fbb93a0989fd59fd324faff2c4d97b7afca0851b53f123f05
|
||||
|
||||
@@ -1,517 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{9..11} )
|
||||
inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \
|
||||
toolchain-funcs flag-o-matic
|
||||
|
||||
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}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~ppc-macos ~x64-macos"
|
||||
IUSE="
|
||||
+binutils-plugin debug doc exegesis libedit +libffi ncurses test xar
|
||||
xml z3 zstd
|
||||
"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RDEPEND="
|
||||
sys-libs/zlib:0=[${MULTILIB_USEDEP}]
|
||||
exegesis? ( dev-libs/libpfm:= )
|
||||
libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
|
||||
libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
|
||||
ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
|
||||
xar? ( app-arch/xar )
|
||||
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
|
||||
>=dev-util/cmake-3.16
|
||||
sys-devel/gnuconfig
|
||||
kernel_Darwin? (
|
||||
<sys-libs/libcxx-${LLVM_VERSION}.9999
|
||||
>=sys-devel/binutils-apple-5.1
|
||||
)
|
||||
doc? ( $(python_gen_any_dep '
|
||||
dev-python/recommonmark[${PYTHON_USEDEP}]
|
||||
dev-python/sphinx[${PYTHON_USEDEP}]
|
||||
') )
|
||||
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 )
|
||||
LLVM_TEST_COMPONENTS=( third-party )
|
||||
LLVM_MANPAGES=1
|
||||
LLVM_USE_TARGETS=provide
|
||||
llvm.org_set_globals
|
||||
|
||||
python_check_deps() {
|
||||
use doc || return 0
|
||||
|
||||
python_has_version -b "dev-python/recommonmark[${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
|
||||
|
||||
if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
|
||||
eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!"
|
||||
eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
|
||||
eqawarn "Expected: ${exp_targets[*]}"
|
||||
eqawarn
|
||||
fi
|
||||
|
||||
if [[ ${prod_targets[*]} != ${ALL_LLVM_PRODUCTION_TARGETS[*]} ]]; then
|
||||
eqawarn "ALL_LLVM_PRODUCTION_TARGETS is outdated!"
|
||||
eqawarn " Have: ${ALL_LLVM_PRODUCTION_TARGETS[*]}"
|
||||
eqawarn "Expected: ${prod_targets[*]}"
|
||||
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
|
||||
# shared libs
|
||||
LLVM|LLVMgold)
|
||||
;;
|
||||
# TableGen lib + deps
|
||||
LLVMDemangle|LLVMSupport|LLVMTableGen)
|
||||
;;
|
||||
# static libs
|
||||
LLVM*)
|
||||
continue
|
||||
;;
|
||||
# meta-targets
|
||||
distribution|llvm-libraries)
|
||||
continue
|
||||
;;
|
||||
# used only w/ USE=doc
|
||||
docs-llvm-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
|
||||
eqawarn "get_distribution_components() is outdated!"
|
||||
eqawarn " Add: ${add[*]}"
|
||||
eqawarn "Remove: ${remove[*]}"
|
||||
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
|
||||
)
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
out+=(
|
||||
# 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-config
|
||||
llvm-cov
|
||||
llvm-cvtres
|
||||
llvm-cxxdump
|
||||
llvm-cxxfilt
|
||||
llvm-cxxmap
|
||||
llvm-debuginfo-analyzer
|
||||
llvm-debuginfod
|
||||
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-reduce
|
||||
llvm-remark-size-diff
|
||||
llvm-remarkutil
|
||||
llvm-rtdyld
|
||||
llvm-sim
|
||||
llvm-size
|
||||
llvm-split
|
||||
llvm-stress
|
||||
llvm-strings
|
||||
llvm-strip
|
||||
llvm-symbolizer
|
||||
llvm-tapi-diff
|
||||
llvm-tli-checker
|
||||
llvm-undname
|
||||
llvm-windres
|
||||
llvm-xray
|
||||
obj2yaml
|
||||
opt
|
||||
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
|
||||
)
|
||||
fi
|
||||
|
||||
printf "%s${sep}" "${out[@]}"
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
tc-is-gcc && filter-lto # GCC miscompiles LLVM, bug #873670
|
||||
|
||||
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=$(usex test)
|
||||
-DLLVM_BUILD_TESTS=$(usex test)
|
||||
|
||||
-DLLVM_ENABLE_FFI=$(usex libffi)
|
||||
-DLLVM_ENABLE_LIBEDIT=$(usex libedit)
|
||||
-DLLVM_ENABLE_TERMINFO=$(usex ncurses)
|
||||
-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_ZSTD=$(usex zstd)
|
||||
|
||||
-DLLVM_HOST_TRIPLE="${CHOST}"
|
||||
|
||||
-DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
|
||||
-DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
|
||||
# used only for llvm-objdump tool
|
||||
-DLLVM_HAVE_LIBXAR=$(multilib_native_usex xar 1 0)
|
||||
|
||||
-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
|
||||
|
||||
# workaround BMI bug in gcc-7 (fixed in 7.4)
|
||||
# https://bugs.gentoo.org/649880
|
||||
# apply only to x86, https://bugs.gentoo.org/650506
|
||||
if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
|
||||
[[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
|
||||
then
|
||||
local CFLAGS="${CFLAGS} -mno-bmi"
|
||||
local CXXFLAGS="${CXXFLAGS} -mno-bmi"
|
||||
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
|
||||
|
||||
grep -q -E "^CMAKE_PROJECT_VERSION_MAJOR(:.*)?=${LLVM_MAJOR}$" \
|
||||
CMakeCache.txt ||
|
||||
die "Incorrect version, did you update _LLVM_MASTER_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)"
|
||||
}
|
||||
@@ -1,517 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{9..11} )
|
||||
inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \
|
||||
toolchain-funcs flag-o-matic
|
||||
|
||||
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}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~ppc-macos ~x64-macos"
|
||||
IUSE="
|
||||
+binutils-plugin debug doc exegesis libedit +libffi ncurses test xar
|
||||
xml z3 zstd
|
||||
"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RDEPEND="
|
||||
sys-libs/zlib:0=[${MULTILIB_USEDEP}]
|
||||
exegesis? ( dev-libs/libpfm:= )
|
||||
libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
|
||||
libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
|
||||
ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
|
||||
xar? ( app-arch/xar )
|
||||
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
|
||||
>=dev-util/cmake-3.16
|
||||
sys-devel/gnuconfig
|
||||
kernel_Darwin? (
|
||||
<sys-libs/libcxx-${LLVM_VERSION}.9999
|
||||
>=sys-devel/binutils-apple-5.1
|
||||
)
|
||||
doc? ( $(python_gen_any_dep '
|
||||
dev-python/recommonmark[${PYTHON_USEDEP}]
|
||||
dev-python/sphinx[${PYTHON_USEDEP}]
|
||||
') )
|
||||
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 )
|
||||
LLVM_TEST_COMPONENTS=( third-party )
|
||||
LLVM_MANPAGES=1
|
||||
LLVM_USE_TARGETS=provide
|
||||
llvm.org_set_globals
|
||||
|
||||
python_check_deps() {
|
||||
use doc || return 0
|
||||
|
||||
python_has_version -b "dev-python/recommonmark[${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
|
||||
|
||||
if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
|
||||
eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!"
|
||||
eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
|
||||
eqawarn "Expected: ${exp_targets[*]}"
|
||||
eqawarn
|
||||
fi
|
||||
|
||||
if [[ ${prod_targets[*]} != ${ALL_LLVM_PRODUCTION_TARGETS[*]} ]]; then
|
||||
eqawarn "ALL_LLVM_PRODUCTION_TARGETS is outdated!"
|
||||
eqawarn " Have: ${ALL_LLVM_PRODUCTION_TARGETS[*]}"
|
||||
eqawarn "Expected: ${prod_targets[*]}"
|
||||
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
|
||||
# shared libs
|
||||
LLVM|LLVMgold)
|
||||
;;
|
||||
# TableGen lib + deps
|
||||
LLVMDemangle|LLVMSupport|LLVMTableGen)
|
||||
;;
|
||||
# static libs
|
||||
LLVM*)
|
||||
continue
|
||||
;;
|
||||
# meta-targets
|
||||
distribution|llvm-libraries)
|
||||
continue
|
||||
;;
|
||||
# used only w/ USE=doc
|
||||
docs-llvm-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
|
||||
eqawarn "get_distribution_components() is outdated!"
|
||||
eqawarn " Add: ${add[*]}"
|
||||
eqawarn "Remove: ${remove[*]}"
|
||||
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
|
||||
)
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
out+=(
|
||||
# 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-config
|
||||
llvm-cov
|
||||
llvm-cvtres
|
||||
llvm-cxxdump
|
||||
llvm-cxxfilt
|
||||
llvm-cxxmap
|
||||
llvm-debuginfo-analyzer
|
||||
llvm-debuginfod
|
||||
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-reduce
|
||||
llvm-remark-size-diff
|
||||
llvm-remarkutil
|
||||
llvm-rtdyld
|
||||
llvm-sim
|
||||
llvm-size
|
||||
llvm-split
|
||||
llvm-stress
|
||||
llvm-strings
|
||||
llvm-strip
|
||||
llvm-symbolizer
|
||||
llvm-tapi-diff
|
||||
llvm-tli-checker
|
||||
llvm-undname
|
||||
llvm-windres
|
||||
llvm-xray
|
||||
obj2yaml
|
||||
opt
|
||||
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
|
||||
)
|
||||
fi
|
||||
|
||||
printf "%s${sep}" "${out[@]}"
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
tc-is-gcc && filter-lto # GCC miscompiles LLVM, bug #873670
|
||||
|
||||
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=$(usex test)
|
||||
-DLLVM_BUILD_TESTS=$(usex test)
|
||||
|
||||
-DLLVM_ENABLE_FFI=$(usex libffi)
|
||||
-DLLVM_ENABLE_LIBEDIT=$(usex libedit)
|
||||
-DLLVM_ENABLE_TERMINFO=$(usex ncurses)
|
||||
-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_ZSTD=$(usex zstd)
|
||||
|
||||
-DLLVM_HOST_TRIPLE="${CHOST}"
|
||||
|
||||
-DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
|
||||
-DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
|
||||
# used only for llvm-objdump tool
|
||||
-DLLVM_HAVE_LIBXAR=$(multilib_native_usex xar 1 0)
|
||||
|
||||
-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
|
||||
|
||||
# workaround BMI bug in gcc-7 (fixed in 7.4)
|
||||
# https://bugs.gentoo.org/649880
|
||||
# apply only to x86, https://bugs.gentoo.org/650506
|
||||
if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
|
||||
[[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
|
||||
then
|
||||
local CFLAGS="${CFLAGS} -mno-bmi"
|
||||
local CXXFLAGS="${CXXFLAGS} -mno-bmi"
|
||||
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
|
||||
|
||||
grep -q -E "^CMAKE_PROJECT_VERSION_MAJOR(:.*)?=${LLVM_MAJOR}$" \
|
||||
CMakeCache.txt ||
|
||||
die "Incorrect version, did you update _LLVM_MASTER_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)"
|
||||
}
|
||||
Reference in New Issue
Block a user