Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/llvm/
Date: Wed, 06 Jan 2021 21:24:03
Message-Id: 1609968213.74eb02810c5ef4a5c04c5ac8d59d9d7be726e232.mgorny@gentoo
1 commit: 74eb02810c5ef4a5c04c5ac8d59d9d7be726e232
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jan 6 17:18:41 2021 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Wed Jan 6 21:23:33 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=74eb0281
7
8 sys-devel/llvm: Remove 11.0.1 RCs and live
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-devel/llvm/Manifest | 2 -
13 sys-devel/llvm/llvm-11.0.1.9999.ebuild | 516 ---------------------------------
14 sys-devel/llvm/llvm-11.0.1_rc1.ebuild | 516 ---------------------------------
15 sys-devel/llvm/llvm-11.0.1_rc2.ebuild | 516 ---------------------------------
16 4 files changed, 1550 deletions(-)
17
18 diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
19 index ed767c4ebf3..4f4d8ff6083 100644
20 --- a/sys-devel/llvm/Manifest
21 +++ b/sys-devel/llvm/Manifest
22 @@ -3,7 +3,5 @@ DIST llvm-11.0.0-manpages.tar.bz2 179592 BLAKE2B d03dff5e7426f4c648d6112dee0fa7a
23 DIST llvm-9.0.0-manpages.tar.bz2 158546 BLAKE2B eed6235698a0b5993affe305f7fd22cd4cf444adf931275a1685f2049a5f17cf2933907577d9ce142348a3c579769b0436aa2b5a9a953958504125a8c3e83b7d SHA512 64c8d18061eb2870b379a1df485be0b61eac07cb10b3f97347b54b2ee326faa63437ca04466776be282e120dd3f6147e14fffdd38ca370db85748fe5eb54d764
24 DIST llvmorg-10.0.1.tar.gz 120880730 BLAKE2B 30f19f56c4d1f6abcda5fec76256219d1e3c8a6ff1a1f152f94bfe362c07884339fe571ff7fe903ed3b3deb150b2fa868c387887a0dea2930dc08b81db71a5b1 SHA512 48078fff9293a87f1a973f3348f79506f04c3da774295f5eb67d74dd2d1aa94f0973f8ced3f4ab9e8339902071f82c603b43d5608ad7227046c4da769c5d2151
25 DIST llvmorg-11.0.0.tar.gz 122743665 BLAKE2B 3f95570240789fd68ddb747df817f5c6cdc9da40911bbe9ee3531c15ada9165e5002b1c2f778cf8735858485ea05a8754e3d3a5f4b15bdd6cb33d64a14692984 SHA512 b6d38871ccce0e086e27d35e42887618d68e57d8274735c59e3eabc42dee352412489296293f8d5169fe0044936345915ee7da61ebdc64ec10f7737f6ecd90f2
26 -DIST llvmorg-11.0.1-rc1.tar.gz 122777435 BLAKE2B 23b520d33cf4b641027ee52bb10c6171d60356c9167d5b94012929e6e547c526cda1a6177c295ed19592dfb83b020f63b2cef4cabc70ce9a2a8e098fe654a3cd SHA512 605c7bbff1610f335be8ea4f1204df797fed21185a54c77565f6ff2d00794d1967e9c5fab7c87633e242f2f999bdffb76da83f756d261c1ca476114599409ae1
27 -DIST llvmorg-11.0.1-rc2.tar.gz 122793330 BLAKE2B 5d42f7bd7ba253ac3ca08cf9901c79db5b51b86f0f66c8e63f4f9808ca5fb72cacccfad098b4f6701a34b0d77bdd66fe3839a3962a251eae53776240a2e13b06 SHA512 acda5a5be38cc8aae730c34cd1bb8f29a82e2ed3dd9734ca293ff092d5b30c8c255ab3054245b8f6ed541d5dbf8bc674b744bb2f81788db8826f69a204dda0c3
28 DIST llvmorg-11.0.1.tar.gz 122790338 BLAKE2B 0130996b4a8c4d9f757136fd7fb318068c9bfdc565060dec0d4336480c4ab66c4ae3185a7fdb05f13cf9ee8fd4123b09df938881b75d6e5d3689595114b7e32a SHA512 f5e6ef0b3111aae08a89cd01adb2ff4abfa9ef779c68b9190421d0447efd25c2cc00e5aae9f4764805f5fa31434866043d1510ae7389817e28ae53a5442e2fdf
29 DIST llvmorg-9.0.1.tar.gz 113193320 BLAKE2B b86e405f2b8e00436045fd409fe19cdde75c797b1192c62a22b5ec75e6b4dc8e874a0f33008dc31562445e4cbe53a992b6f48c684255a6a1ef261e595b8b161f SHA512 fa88beeaae94b6d0cd9b5ba38658d0ffed8004035d7d8a4f95c3d31a709b88b581ae9bd7761333c8e5375c44b8f6be01768b5a3be901163159d7e6c43b71da59
30
31 diff --git a/sys-devel/llvm/llvm-11.0.1.9999.ebuild b/sys-devel/llvm/llvm-11.0.1.9999.ebuild
32 deleted file mode 100644
33 index 40ecd173e2d..00000000000
34 --- a/sys-devel/llvm/llvm-11.0.1.9999.ebuild
35 +++ /dev/null
36 @@ -1,516 +0,0 @@
37 -# Copyright 1999-2021 Gentoo Authors
38 -# Distributed under the terms of the GNU General Public License v2
39 -
40 -EAPI=7
41 -
42 -PYTHON_COMPAT=( python3_{6..9} )
43 -inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \
44 - toolchain-funcs
45 -
46 -DESCRIPTION="Low Level Virtual Machine"
47 -HOMEPAGE="https://llvm.org/"
48 -
49 -# Those are in lib/Targets, without explicit CMakeLists.txt mention
50 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC VE )
51 -# Keep in sync with CMakeLists.txt
52 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
53 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
54 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
55 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
56 -
57 -# Additional licenses:
58 -# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
59 -# 2. xxhash: BSD.
60 -# 3. MD5 code: public-domain.
61 -# 4. ConvertUTF.h: TODO.
62 -
63 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc"
64 -SLOT="$(ver_cut 1)"
65 -KEYWORDS=""
66 -IUSE="debug doc exegesis gold libedit +libffi ncurses test xar xml z3
67 - kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
68 -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )"
69 -RESTRICT="!test? ( test )"
70 -
71 -RDEPEND="
72 - sys-libs/zlib:0=[${MULTILIB_USEDEP}]
73 - exegesis? ( dev-libs/libpfm:= )
74 - gold? ( >=sys-devel/binutils-2.31.1-r4:*[plugins] )
75 - libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
76 - libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
77 - ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
78 - xar? ( app-arch/xar )
79 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
80 - z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] )"
81 -DEPEND="${RDEPEND}
82 - gold? ( sys-libs/binutils-libs )"
83 -BDEPEND="
84 - dev-lang/perl
85 - >=dev-util/cmake-3.16
86 - sys-devel/gnuconfig
87 - kernel_Darwin? (
88 - <sys-libs/libcxx-$(ver_cut 1-3).9999
89 - >=sys-devel/binutils-apple-5.1
90 - )
91 - doc? ( $(python_gen_any_dep '
92 - dev-python/recommonmark[${PYTHON_USEDEP}]
93 - dev-python/sphinx[${PYTHON_USEDEP}]
94 - ') )
95 - libffi? ( virtual/pkgconfig )
96 - ${PYTHON_DEPS}"
97 -# There are no file collisions between these versions but having :0
98 -# installed means llvm-config there will take precedence.
99 -RDEPEND="${RDEPEND}
100 - !sys-devel/llvm:0"
101 -PDEPEND="sys-devel/llvm-common
102 - gold? ( >=sys-devel/llvmgold-${SLOT} )"
103 -
104 -LLVM_COMPONENTS=( llvm )
105 -LLVM_MANPAGES=build
106 -llvm.org_set_globals
107 -
108 -python_check_deps() {
109 - use doc || return 0
110 -
111 - has_version -b "dev-python/recommonmark[${PYTHON_USEDEP}]" &&
112 - has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]"
113 -}
114 -
115 -check_live_ebuild() {
116 - local prod_targets=(
117 - $(sed -n -e '/set(LLVM_ALL_TARGETS/,/)/p' CMakeLists.txt \
118 - | tail -n +2 | head -n -1)
119 - )
120 - local all_targets=(
121 - lib/Target/*/
122 - )
123 - all_targets=( "${all_targets[@]#lib/Target/}" )
124 - all_targets=( "${all_targets[@]%/}" )
125 -
126 - local exp_targets=() i
127 - for i in "${all_targets[@]}"; do
128 - has "${i}" "${prod_targets[@]}" || exp_targets+=( "${i}" )
129 - done
130 - # reorder
131 - all_targets=( "${prod_targets[@]}" "${exp_targets[@]}" )
132 -
133 - if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
134 - eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!"
135 - eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
136 - eqawarn "Expected: ${exp_targets[*]}"
137 - eqawarn
138 - fi
139 -
140 - if [[ ${all_targets[*]} != ${ALL_LLVM_TARGETS[*]#llvm_targets_} ]]; then
141 - eqawarn "ALL_LLVM_TARGETS is outdated!"
142 - eqawarn " Have: ${ALL_LLVM_TARGETS[*]#llvm_targets_}"
143 - eqawarn "Expected: ${all_targets[*]}"
144 - fi
145 -}
146 -
147 -check_distribution_components() {
148 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
149 - local all_targets=() my_targets=() l
150 - cd "${BUILD_DIR}" || die
151 -
152 - while read -r l; do
153 - if [[ ${l} == install-*-stripped:* ]]; then
154 - l=${l#install-}
155 - l=${l%%-stripped*}
156 -
157 - case ${l} in
158 - # shared libs
159 - LLVM|LLVMgold)
160 - ;;
161 - # TableGen lib + deps
162 - LLVMDemangle|LLVMSupport|LLVMTableGen)
163 - ;;
164 - # static libs
165 - LLVM*)
166 - continue
167 - ;;
168 - # meta-targets
169 - distribution|llvm-libraries)
170 - continue
171 - ;;
172 - # used only w/ USE=doc
173 - docs-llvm-html)
174 - use doc || continue
175 - ;;
176 - esac
177 -
178 - all_targets+=( "${l}" )
179 - fi
180 - done < <(ninja -t targets all)
181 -
182 - while read -r l; do
183 - my_targets+=( "${l}" )
184 - done < <(get_distribution_components $"\n")
185 -
186 - local add=() remove=()
187 - for l in "${all_targets[@]}"; do
188 - if ! has "${l}" "${my_targets[@]}"; then
189 - add+=( "${l}" )
190 - fi
191 - done
192 - for l in "${my_targets[@]}"; do
193 - if ! has "${l}" "${all_targets[@]}"; then
194 - remove+=( "${l}" )
195 - fi
196 - done
197 -
198 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
199 - eqawarn "get_distribution_components() is outdated!"
200 - eqawarn " Add: ${add[*]}"
201 - eqawarn "Remove: ${remove[*]}"
202 - fi
203 - cd - >/dev/null || die
204 - fi
205 -}
206 -
207 -src_prepare() {
208 - # Fix llvm-config for shared linking and sane flags
209 - # https://bugs.gentoo.org/show_bug.cgi?id=565358
210 - eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
211 -
212 - # disable use of SDK on OSX, bug #568758
213 - sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
214 -
215 - # Update config.guess to support more systems
216 - cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die
217 -
218 - # Verify that the live ebuild is up-to-date
219 - check_live_ebuild
220 -
221 - llvm.org_src_prepare
222 -}
223 -
224 -# Is LLVM being linked against libc++?
225 -is_libcxx_linked() {
226 - local code='#include <ciso646>
227 -#if defined(_LIBCPP_VERSION)
228 - HAVE_LIBCXX
229 -#endif
230 -'
231 - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
232 -
233 - [[ ${out} == *HAVE_LIBCXX* ]]
234 -}
235 -
236 -get_distribution_components() {
237 - local sep=${1-;}
238 -
239 - local out=(
240 - # shared libs
241 - LLVM
242 - LTO
243 - Remarks
244 -
245 - # tools
246 - llvm-config
247 -
248 - # common stuff
249 - cmake-exports
250 - llvm-headers
251 -
252 - # libraries needed for clang-tblgen
253 - LLVMDemangle
254 - LLVMSupport
255 - LLVMTableGen
256 - )
257 -
258 - if multilib_is_native_abi; then
259 - out+=(
260 - # utilities
261 - llvm-tblgen
262 - FileCheck
263 - llvm-PerfectShuffle
264 - count
265 - not
266 - yaml-bench
267 -
268 - # tools
269 - bugpoint
270 - dsymutil
271 - llc
272 - lli
273 - lli-child-target
274 - llvm-addr2line
275 - llvm-ar
276 - llvm-as
277 - llvm-bcanalyzer
278 - llvm-c-test
279 - llvm-cat
280 - llvm-cfi-verify
281 - llvm-config
282 - llvm-cov
283 - llvm-cvtres
284 - llvm-cxxdump
285 - llvm-cxxfilt
286 - llvm-cxxmap
287 - llvm-diff
288 - llvm-dis
289 - llvm-dlltool
290 - llvm-dwarfdump
291 - llvm-dwp
292 - llvm-elfabi
293 - llvm-exegesis
294 - llvm-extract
295 - llvm-gsymutil
296 - llvm-ifs
297 - llvm-install-name-tool
298 - llvm-jitlink
299 - llvm-lib
300 - llvm-link
301 - llvm-lipo
302 - llvm-lto
303 - llvm-lto2
304 - llvm-mc
305 - llvm-mca
306 - llvm-ml
307 - llvm-modextract
308 - llvm-mt
309 - llvm-nm
310 - llvm-objcopy
311 - llvm-objdump
312 - llvm-opt-report
313 - llvm-pdbutil
314 - llvm-profdata
315 - llvm-ranlib
316 - llvm-rc
317 - llvm-readelf
318 - llvm-readobj
319 - llvm-reduce
320 - llvm-rtdyld
321 - llvm-size
322 - llvm-split
323 - llvm-stress
324 - llvm-strings
325 - llvm-strip
326 - llvm-symbolizer
327 - llvm-undname
328 - llvm-xray
329 - obj2yaml
330 - opt
331 - sancov
332 - sanstats
333 - verify-uselistorder
334 - yaml2obj
335 -
336 - # python modules
337 - opt-viewer
338 - )
339 -
340 - if llvm_are_manpages_built; then
341 - out+=(
342 - # manpages
343 - docs-dsymutil-man
344 - docs-llvm-dwarfdump-man
345 - docs-llvm-man
346 - )
347 - fi
348 - use doc && out+=(
349 - docs-llvm-html
350 - )
351 -
352 - use gold && out+=(
353 - LLVMgold
354 - )
355 - fi
356 -
357 - printf "%s${sep}" "${out[@]}"
358 -}
359 -
360 -multilib_src_configure() {
361 - local ffi_cflags ffi_ldflags
362 - if use libffi; then
363 - ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
364 - ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
365 - fi
366 -
367 - local libdir=$(get_libdir)
368 - local mycmakeargs=(
369 - # disable appending VCS revision to the version to improve
370 - # direct cache hit ratio
371 - -DLLVM_APPEND_VC_REV=OFF
372 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
373 - -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
374 -
375 - -DBUILD_SHARED_LIBS=OFF
376 - -DLLVM_BUILD_LLVM_DYLIB=ON
377 - -DLLVM_LINK_LLVM_DYLIB=ON
378 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
379 -
380 - # cheap hack: LLVM combines both anyway, and the only difference
381 - # is that the former list is explicitly verified at cmake time
382 - -DLLVM_TARGETS_TO_BUILD=""
383 - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
384 - -DLLVM_BUILD_TESTS=$(usex test)
385 -
386 - -DLLVM_ENABLE_FFI=$(usex libffi)
387 - -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
388 - -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
389 - -DLLVM_ENABLE_LIBXML2=$(usex xml)
390 - -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
391 - -DLLVM_ENABLE_LIBPFM=$(usex exegesis)
392 - -DLLVM_ENABLE_EH=ON
393 - -DLLVM_ENABLE_RTTI=ON
394 - -DLLVM_ENABLE_Z3_SOLVER=$(usex z3)
395 -
396 - -DLLVM_HOST_TRIPLE="${CHOST}"
397 -
398 - -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
399 - -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
400 - # used only for llvm-objdump tool
401 - -DHAVE_LIBXAR=$(multilib_native_usex xar 1 0)
402 -
403 - -DPython3_EXECUTABLE="${PYTHON}"
404 -
405 - # disable OCaml bindings (now in dev-ml/llvm-ocaml)
406 - -DOCAMLFIND=NO
407 - )
408 -
409 - if is_libcxx_linked; then
410 - # Smart hack: alter version suffix -> SOVERSION when linking
411 - # against libc++. This way we won't end up mixing LLVM libc++
412 - # libraries with libstdc++ clang, and the other way around.
413 - mycmakeargs+=(
414 - -DLLVM_VERSION_SUFFIX="libcxx"
415 - -DLLVM_ENABLE_LIBCXX=ON
416 - )
417 - fi
418 -
419 -# Note: go bindings have no CMake rules at the moment
420 -# but let's kill the check in case they are introduced
421 -# if ! multilib_is_native_abi || ! use go; then
422 - mycmakeargs+=(
423 - -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
424 - )
425 -# fi
426 -
427 - use test && mycmakeargs+=(
428 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
429 - )
430 -
431 - if multilib_is_native_abi; then
432 - local build_docs=OFF
433 - if llvm_are_manpages_built; then
434 - build_docs=ON
435 - mycmakeargs+=(
436 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
437 - -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
438 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
439 - )
440 - fi
441 -
442 - mycmakeargs+=(
443 - -DLLVM_BUILD_DOCS=${build_docs}
444 - -DLLVM_ENABLE_OCAMLDOC=OFF
445 - -DLLVM_ENABLE_SPHINX=${build_docs}
446 - -DLLVM_ENABLE_DOXYGEN=OFF
447 - -DLLVM_INSTALL_UTILS=ON
448 - )
449 - use gold && mycmakeargs+=(
450 - -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
451 - )
452 - fi
453 -
454 - if tc-is-cross-compiler; then
455 - local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
456 - [[ -x "${tblgen}" ]] \
457 - || die "${tblgen} not found or usable"
458 - mycmakeargs+=(
459 - -DCMAKE_CROSSCOMPILING=ON
460 - -DLLVM_TABLEGEN="${tblgen}"
461 - )
462 - fi
463 -
464 - # workaround BMI bug in gcc-7 (fixed in 7.4)
465 - # https://bugs.gentoo.org/649880
466 - # apply only to x86, https://bugs.gentoo.org/650506
467 - if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
468 - [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
469 - then
470 - local CFLAGS="${CFLAGS} -mno-bmi"
471 - local CXXFLAGS="${CXXFLAGS} -mno-bmi"
472 - fi
473 -
474 - # LLVM can have very high memory consumption while linking,
475 - # exhausting the limit on 32-bit linker executable
476 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
477 -
478 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
479 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
480 - cmake_src_configure
481 -
482 - multilib_is_native_abi && check_distribution_components
483 -}
484 -
485 -multilib_src_compile() {
486 - cmake_build distribution
487 -
488 - pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
489 - pax-mark m "${BUILD_DIR}"/bin/lli
490 - pax-mark m "${BUILD_DIR}"/bin/lli-child-target
491 -
492 - if use test; then
493 - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
494 - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
495 - pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
496 - fi
497 -}
498 -
499 -multilib_src_test() {
500 - # respect TMPDIR!
501 - local -x LIT_PRESERVES_TMP=1
502 - cmake_build check
503 -}
504 -
505 -src_install() {
506 - local MULTILIB_CHOST_TOOLS=(
507 - /usr/lib/llvm/${SLOT}/bin/llvm-config
508 - )
509 -
510 - local MULTILIB_WRAPPED_HEADERS=(
511 - /usr/include/llvm/Config/llvm-config.h
512 - )
513 -
514 - local LLVM_LDPATHS=()
515 - multilib-minimal_src_install
516 -
517 - # move wrapped headers back
518 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
519 -}
520 -
521 -multilib_src_install() {
522 - DESTDIR=${D} cmake_build install-distribution
523 -
524 - # move headers to /usr/include for wrapping
525 - rm -rf "${ED}"/usr/include || die
526 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
527 -
528 - LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
529 -}
530 -
531 -multilib_src_install_all() {
532 - local revord=$(( 9999 - ${SLOT} ))
533 - newenvd - "60llvm-${revord}" <<-_EOF_
534 - PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
535 - # we need to duplicate it in ROOTPATH for Portage to respect...
536 - ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
537 - MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
538 - LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
539 - _EOF_
540 -
541 - docompress "/usr/lib/llvm/${SLOT}/share/man"
542 - llvm_install_manpages
543 -}
544 -
545 -pkg_postinst() {
546 - elog "You can find additional opt-viewer utility scripts in:"
547 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/opt-viewer"
548 - elog "To use these scripts, you will need Python along with the following"
549 - elog "packages:"
550 - elog " dev-python/pygments (for opt-viewer)"
551 - elog " dev-python/pyyaml (for all of them)"
552 -}
553
554 diff --git a/sys-devel/llvm/llvm-11.0.1_rc1.ebuild b/sys-devel/llvm/llvm-11.0.1_rc1.ebuild
555 deleted file mode 100644
556 index 40ecd173e2d..00000000000
557 --- a/sys-devel/llvm/llvm-11.0.1_rc1.ebuild
558 +++ /dev/null
559 @@ -1,516 +0,0 @@
560 -# Copyright 1999-2021 Gentoo Authors
561 -# Distributed under the terms of the GNU General Public License v2
562 -
563 -EAPI=7
564 -
565 -PYTHON_COMPAT=( python3_{6..9} )
566 -inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \
567 - toolchain-funcs
568 -
569 -DESCRIPTION="Low Level Virtual Machine"
570 -HOMEPAGE="https://llvm.org/"
571 -
572 -# Those are in lib/Targets, without explicit CMakeLists.txt mention
573 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC VE )
574 -# Keep in sync with CMakeLists.txt
575 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
576 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
577 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
578 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
579 -
580 -# Additional licenses:
581 -# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
582 -# 2. xxhash: BSD.
583 -# 3. MD5 code: public-domain.
584 -# 4. ConvertUTF.h: TODO.
585 -
586 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc"
587 -SLOT="$(ver_cut 1)"
588 -KEYWORDS=""
589 -IUSE="debug doc exegesis gold libedit +libffi ncurses test xar xml z3
590 - kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
591 -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )"
592 -RESTRICT="!test? ( test )"
593 -
594 -RDEPEND="
595 - sys-libs/zlib:0=[${MULTILIB_USEDEP}]
596 - exegesis? ( dev-libs/libpfm:= )
597 - gold? ( >=sys-devel/binutils-2.31.1-r4:*[plugins] )
598 - libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
599 - libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
600 - ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
601 - xar? ( app-arch/xar )
602 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
603 - z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] )"
604 -DEPEND="${RDEPEND}
605 - gold? ( sys-libs/binutils-libs )"
606 -BDEPEND="
607 - dev-lang/perl
608 - >=dev-util/cmake-3.16
609 - sys-devel/gnuconfig
610 - kernel_Darwin? (
611 - <sys-libs/libcxx-$(ver_cut 1-3).9999
612 - >=sys-devel/binutils-apple-5.1
613 - )
614 - doc? ( $(python_gen_any_dep '
615 - dev-python/recommonmark[${PYTHON_USEDEP}]
616 - dev-python/sphinx[${PYTHON_USEDEP}]
617 - ') )
618 - libffi? ( virtual/pkgconfig )
619 - ${PYTHON_DEPS}"
620 -# There are no file collisions between these versions but having :0
621 -# installed means llvm-config there will take precedence.
622 -RDEPEND="${RDEPEND}
623 - !sys-devel/llvm:0"
624 -PDEPEND="sys-devel/llvm-common
625 - gold? ( >=sys-devel/llvmgold-${SLOT} )"
626 -
627 -LLVM_COMPONENTS=( llvm )
628 -LLVM_MANPAGES=build
629 -llvm.org_set_globals
630 -
631 -python_check_deps() {
632 - use doc || return 0
633 -
634 - has_version -b "dev-python/recommonmark[${PYTHON_USEDEP}]" &&
635 - has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]"
636 -}
637 -
638 -check_live_ebuild() {
639 - local prod_targets=(
640 - $(sed -n -e '/set(LLVM_ALL_TARGETS/,/)/p' CMakeLists.txt \
641 - | tail -n +2 | head -n -1)
642 - )
643 - local all_targets=(
644 - lib/Target/*/
645 - )
646 - all_targets=( "${all_targets[@]#lib/Target/}" )
647 - all_targets=( "${all_targets[@]%/}" )
648 -
649 - local exp_targets=() i
650 - for i in "${all_targets[@]}"; do
651 - has "${i}" "${prod_targets[@]}" || exp_targets+=( "${i}" )
652 - done
653 - # reorder
654 - all_targets=( "${prod_targets[@]}" "${exp_targets[@]}" )
655 -
656 - if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
657 - eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!"
658 - eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
659 - eqawarn "Expected: ${exp_targets[*]}"
660 - eqawarn
661 - fi
662 -
663 - if [[ ${all_targets[*]} != ${ALL_LLVM_TARGETS[*]#llvm_targets_} ]]; then
664 - eqawarn "ALL_LLVM_TARGETS is outdated!"
665 - eqawarn " Have: ${ALL_LLVM_TARGETS[*]#llvm_targets_}"
666 - eqawarn "Expected: ${all_targets[*]}"
667 - fi
668 -}
669 -
670 -check_distribution_components() {
671 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
672 - local all_targets=() my_targets=() l
673 - cd "${BUILD_DIR}" || die
674 -
675 - while read -r l; do
676 - if [[ ${l} == install-*-stripped:* ]]; then
677 - l=${l#install-}
678 - l=${l%%-stripped*}
679 -
680 - case ${l} in
681 - # shared libs
682 - LLVM|LLVMgold)
683 - ;;
684 - # TableGen lib + deps
685 - LLVMDemangle|LLVMSupport|LLVMTableGen)
686 - ;;
687 - # static libs
688 - LLVM*)
689 - continue
690 - ;;
691 - # meta-targets
692 - distribution|llvm-libraries)
693 - continue
694 - ;;
695 - # used only w/ USE=doc
696 - docs-llvm-html)
697 - use doc || continue
698 - ;;
699 - esac
700 -
701 - all_targets+=( "${l}" )
702 - fi
703 - done < <(ninja -t targets all)
704 -
705 - while read -r l; do
706 - my_targets+=( "${l}" )
707 - done < <(get_distribution_components $"\n")
708 -
709 - local add=() remove=()
710 - for l in "${all_targets[@]}"; do
711 - if ! has "${l}" "${my_targets[@]}"; then
712 - add+=( "${l}" )
713 - fi
714 - done
715 - for l in "${my_targets[@]}"; do
716 - if ! has "${l}" "${all_targets[@]}"; then
717 - remove+=( "${l}" )
718 - fi
719 - done
720 -
721 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
722 - eqawarn "get_distribution_components() is outdated!"
723 - eqawarn " Add: ${add[*]}"
724 - eqawarn "Remove: ${remove[*]}"
725 - fi
726 - cd - >/dev/null || die
727 - fi
728 -}
729 -
730 -src_prepare() {
731 - # Fix llvm-config for shared linking and sane flags
732 - # https://bugs.gentoo.org/show_bug.cgi?id=565358
733 - eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
734 -
735 - # disable use of SDK on OSX, bug #568758
736 - sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
737 -
738 - # Update config.guess to support more systems
739 - cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die
740 -
741 - # Verify that the live ebuild is up-to-date
742 - check_live_ebuild
743 -
744 - llvm.org_src_prepare
745 -}
746 -
747 -# Is LLVM being linked against libc++?
748 -is_libcxx_linked() {
749 - local code='#include <ciso646>
750 -#if defined(_LIBCPP_VERSION)
751 - HAVE_LIBCXX
752 -#endif
753 -'
754 - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
755 -
756 - [[ ${out} == *HAVE_LIBCXX* ]]
757 -}
758 -
759 -get_distribution_components() {
760 - local sep=${1-;}
761 -
762 - local out=(
763 - # shared libs
764 - LLVM
765 - LTO
766 - Remarks
767 -
768 - # tools
769 - llvm-config
770 -
771 - # common stuff
772 - cmake-exports
773 - llvm-headers
774 -
775 - # libraries needed for clang-tblgen
776 - LLVMDemangle
777 - LLVMSupport
778 - LLVMTableGen
779 - )
780 -
781 - if multilib_is_native_abi; then
782 - out+=(
783 - # utilities
784 - llvm-tblgen
785 - FileCheck
786 - llvm-PerfectShuffle
787 - count
788 - not
789 - yaml-bench
790 -
791 - # tools
792 - bugpoint
793 - dsymutil
794 - llc
795 - lli
796 - lli-child-target
797 - llvm-addr2line
798 - llvm-ar
799 - llvm-as
800 - llvm-bcanalyzer
801 - llvm-c-test
802 - llvm-cat
803 - llvm-cfi-verify
804 - llvm-config
805 - llvm-cov
806 - llvm-cvtres
807 - llvm-cxxdump
808 - llvm-cxxfilt
809 - llvm-cxxmap
810 - llvm-diff
811 - llvm-dis
812 - llvm-dlltool
813 - llvm-dwarfdump
814 - llvm-dwp
815 - llvm-elfabi
816 - llvm-exegesis
817 - llvm-extract
818 - llvm-gsymutil
819 - llvm-ifs
820 - llvm-install-name-tool
821 - llvm-jitlink
822 - llvm-lib
823 - llvm-link
824 - llvm-lipo
825 - llvm-lto
826 - llvm-lto2
827 - llvm-mc
828 - llvm-mca
829 - llvm-ml
830 - llvm-modextract
831 - llvm-mt
832 - llvm-nm
833 - llvm-objcopy
834 - llvm-objdump
835 - llvm-opt-report
836 - llvm-pdbutil
837 - llvm-profdata
838 - llvm-ranlib
839 - llvm-rc
840 - llvm-readelf
841 - llvm-readobj
842 - llvm-reduce
843 - llvm-rtdyld
844 - llvm-size
845 - llvm-split
846 - llvm-stress
847 - llvm-strings
848 - llvm-strip
849 - llvm-symbolizer
850 - llvm-undname
851 - llvm-xray
852 - obj2yaml
853 - opt
854 - sancov
855 - sanstats
856 - verify-uselistorder
857 - yaml2obj
858 -
859 - # python modules
860 - opt-viewer
861 - )
862 -
863 - if llvm_are_manpages_built; then
864 - out+=(
865 - # manpages
866 - docs-dsymutil-man
867 - docs-llvm-dwarfdump-man
868 - docs-llvm-man
869 - )
870 - fi
871 - use doc && out+=(
872 - docs-llvm-html
873 - )
874 -
875 - use gold && out+=(
876 - LLVMgold
877 - )
878 - fi
879 -
880 - printf "%s${sep}" "${out[@]}"
881 -}
882 -
883 -multilib_src_configure() {
884 - local ffi_cflags ffi_ldflags
885 - if use libffi; then
886 - ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
887 - ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
888 - fi
889 -
890 - local libdir=$(get_libdir)
891 - local mycmakeargs=(
892 - # disable appending VCS revision to the version to improve
893 - # direct cache hit ratio
894 - -DLLVM_APPEND_VC_REV=OFF
895 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
896 - -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
897 -
898 - -DBUILD_SHARED_LIBS=OFF
899 - -DLLVM_BUILD_LLVM_DYLIB=ON
900 - -DLLVM_LINK_LLVM_DYLIB=ON
901 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
902 -
903 - # cheap hack: LLVM combines both anyway, and the only difference
904 - # is that the former list is explicitly verified at cmake time
905 - -DLLVM_TARGETS_TO_BUILD=""
906 - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
907 - -DLLVM_BUILD_TESTS=$(usex test)
908 -
909 - -DLLVM_ENABLE_FFI=$(usex libffi)
910 - -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
911 - -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
912 - -DLLVM_ENABLE_LIBXML2=$(usex xml)
913 - -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
914 - -DLLVM_ENABLE_LIBPFM=$(usex exegesis)
915 - -DLLVM_ENABLE_EH=ON
916 - -DLLVM_ENABLE_RTTI=ON
917 - -DLLVM_ENABLE_Z3_SOLVER=$(usex z3)
918 -
919 - -DLLVM_HOST_TRIPLE="${CHOST}"
920 -
921 - -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
922 - -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
923 - # used only for llvm-objdump tool
924 - -DHAVE_LIBXAR=$(multilib_native_usex xar 1 0)
925 -
926 - -DPython3_EXECUTABLE="${PYTHON}"
927 -
928 - # disable OCaml bindings (now in dev-ml/llvm-ocaml)
929 - -DOCAMLFIND=NO
930 - )
931 -
932 - if is_libcxx_linked; then
933 - # Smart hack: alter version suffix -> SOVERSION when linking
934 - # against libc++. This way we won't end up mixing LLVM libc++
935 - # libraries with libstdc++ clang, and the other way around.
936 - mycmakeargs+=(
937 - -DLLVM_VERSION_SUFFIX="libcxx"
938 - -DLLVM_ENABLE_LIBCXX=ON
939 - )
940 - fi
941 -
942 -# Note: go bindings have no CMake rules at the moment
943 -# but let's kill the check in case they are introduced
944 -# if ! multilib_is_native_abi || ! use go; then
945 - mycmakeargs+=(
946 - -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
947 - )
948 -# fi
949 -
950 - use test && mycmakeargs+=(
951 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
952 - )
953 -
954 - if multilib_is_native_abi; then
955 - local build_docs=OFF
956 - if llvm_are_manpages_built; then
957 - build_docs=ON
958 - mycmakeargs+=(
959 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
960 - -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
961 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
962 - )
963 - fi
964 -
965 - mycmakeargs+=(
966 - -DLLVM_BUILD_DOCS=${build_docs}
967 - -DLLVM_ENABLE_OCAMLDOC=OFF
968 - -DLLVM_ENABLE_SPHINX=${build_docs}
969 - -DLLVM_ENABLE_DOXYGEN=OFF
970 - -DLLVM_INSTALL_UTILS=ON
971 - )
972 - use gold && mycmakeargs+=(
973 - -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
974 - )
975 - fi
976 -
977 - if tc-is-cross-compiler; then
978 - local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
979 - [[ -x "${tblgen}" ]] \
980 - || die "${tblgen} not found or usable"
981 - mycmakeargs+=(
982 - -DCMAKE_CROSSCOMPILING=ON
983 - -DLLVM_TABLEGEN="${tblgen}"
984 - )
985 - fi
986 -
987 - # workaround BMI bug in gcc-7 (fixed in 7.4)
988 - # https://bugs.gentoo.org/649880
989 - # apply only to x86, https://bugs.gentoo.org/650506
990 - if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
991 - [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
992 - then
993 - local CFLAGS="${CFLAGS} -mno-bmi"
994 - local CXXFLAGS="${CXXFLAGS} -mno-bmi"
995 - fi
996 -
997 - # LLVM can have very high memory consumption while linking,
998 - # exhausting the limit on 32-bit linker executable
999 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
1000 -
1001 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
1002 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
1003 - cmake_src_configure
1004 -
1005 - multilib_is_native_abi && check_distribution_components
1006 -}
1007 -
1008 -multilib_src_compile() {
1009 - cmake_build distribution
1010 -
1011 - pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
1012 - pax-mark m "${BUILD_DIR}"/bin/lli
1013 - pax-mark m "${BUILD_DIR}"/bin/lli-child-target
1014 -
1015 - if use test; then
1016 - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
1017 - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
1018 - pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
1019 - fi
1020 -}
1021 -
1022 -multilib_src_test() {
1023 - # respect TMPDIR!
1024 - local -x LIT_PRESERVES_TMP=1
1025 - cmake_build check
1026 -}
1027 -
1028 -src_install() {
1029 - local MULTILIB_CHOST_TOOLS=(
1030 - /usr/lib/llvm/${SLOT}/bin/llvm-config
1031 - )
1032 -
1033 - local MULTILIB_WRAPPED_HEADERS=(
1034 - /usr/include/llvm/Config/llvm-config.h
1035 - )
1036 -
1037 - local LLVM_LDPATHS=()
1038 - multilib-minimal_src_install
1039 -
1040 - # move wrapped headers back
1041 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
1042 -}
1043 -
1044 -multilib_src_install() {
1045 - DESTDIR=${D} cmake_build install-distribution
1046 -
1047 - # move headers to /usr/include for wrapping
1048 - rm -rf "${ED}"/usr/include || die
1049 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
1050 -
1051 - LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
1052 -}
1053 -
1054 -multilib_src_install_all() {
1055 - local revord=$(( 9999 - ${SLOT} ))
1056 - newenvd - "60llvm-${revord}" <<-_EOF_
1057 - PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
1058 - # we need to duplicate it in ROOTPATH for Portage to respect...
1059 - ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
1060 - MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
1061 - LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
1062 - _EOF_
1063 -
1064 - docompress "/usr/lib/llvm/${SLOT}/share/man"
1065 - llvm_install_manpages
1066 -}
1067 -
1068 -pkg_postinst() {
1069 - elog "You can find additional opt-viewer utility scripts in:"
1070 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/opt-viewer"
1071 - elog "To use these scripts, you will need Python along with the following"
1072 - elog "packages:"
1073 - elog " dev-python/pygments (for opt-viewer)"
1074 - elog " dev-python/pyyaml (for all of them)"
1075 -}
1076
1077 diff --git a/sys-devel/llvm/llvm-11.0.1_rc2.ebuild b/sys-devel/llvm/llvm-11.0.1_rc2.ebuild
1078 deleted file mode 100644
1079 index 40ecd173e2d..00000000000
1080 --- a/sys-devel/llvm/llvm-11.0.1_rc2.ebuild
1081 +++ /dev/null
1082 @@ -1,516 +0,0 @@
1083 -# Copyright 1999-2021 Gentoo Authors
1084 -# Distributed under the terms of the GNU General Public License v2
1085 -
1086 -EAPI=7
1087 -
1088 -PYTHON_COMPAT=( python3_{6..9} )
1089 -inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \
1090 - toolchain-funcs
1091 -
1092 -DESCRIPTION="Low Level Virtual Machine"
1093 -HOMEPAGE="https://llvm.org/"
1094 -
1095 -# Those are in lib/Targets, without explicit CMakeLists.txt mention
1096 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC VE )
1097 -# Keep in sync with CMakeLists.txt
1098 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
1099 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
1100 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
1101 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
1102 -
1103 -# Additional licenses:
1104 -# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
1105 -# 2. xxhash: BSD.
1106 -# 3. MD5 code: public-domain.
1107 -# 4. ConvertUTF.h: TODO.
1108 -
1109 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc"
1110 -SLOT="$(ver_cut 1)"
1111 -KEYWORDS=""
1112 -IUSE="debug doc exegesis gold libedit +libffi ncurses test xar xml z3
1113 - kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
1114 -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )"
1115 -RESTRICT="!test? ( test )"
1116 -
1117 -RDEPEND="
1118 - sys-libs/zlib:0=[${MULTILIB_USEDEP}]
1119 - exegesis? ( dev-libs/libpfm:= )
1120 - gold? ( >=sys-devel/binutils-2.31.1-r4:*[plugins] )
1121 - libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
1122 - libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
1123 - ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
1124 - xar? ( app-arch/xar )
1125 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
1126 - z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] )"
1127 -DEPEND="${RDEPEND}
1128 - gold? ( sys-libs/binutils-libs )"
1129 -BDEPEND="
1130 - dev-lang/perl
1131 - >=dev-util/cmake-3.16
1132 - sys-devel/gnuconfig
1133 - kernel_Darwin? (
1134 - <sys-libs/libcxx-$(ver_cut 1-3).9999
1135 - >=sys-devel/binutils-apple-5.1
1136 - )
1137 - doc? ( $(python_gen_any_dep '
1138 - dev-python/recommonmark[${PYTHON_USEDEP}]
1139 - dev-python/sphinx[${PYTHON_USEDEP}]
1140 - ') )
1141 - libffi? ( virtual/pkgconfig )
1142 - ${PYTHON_DEPS}"
1143 -# There are no file collisions between these versions but having :0
1144 -# installed means llvm-config there will take precedence.
1145 -RDEPEND="${RDEPEND}
1146 - !sys-devel/llvm:0"
1147 -PDEPEND="sys-devel/llvm-common
1148 - gold? ( >=sys-devel/llvmgold-${SLOT} )"
1149 -
1150 -LLVM_COMPONENTS=( llvm )
1151 -LLVM_MANPAGES=build
1152 -llvm.org_set_globals
1153 -
1154 -python_check_deps() {
1155 - use doc || return 0
1156 -
1157 - has_version -b "dev-python/recommonmark[${PYTHON_USEDEP}]" &&
1158 - has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]"
1159 -}
1160 -
1161 -check_live_ebuild() {
1162 - local prod_targets=(
1163 - $(sed -n -e '/set(LLVM_ALL_TARGETS/,/)/p' CMakeLists.txt \
1164 - | tail -n +2 | head -n -1)
1165 - )
1166 - local all_targets=(
1167 - lib/Target/*/
1168 - )
1169 - all_targets=( "${all_targets[@]#lib/Target/}" )
1170 - all_targets=( "${all_targets[@]%/}" )
1171 -
1172 - local exp_targets=() i
1173 - for i in "${all_targets[@]}"; do
1174 - has "${i}" "${prod_targets[@]}" || exp_targets+=( "${i}" )
1175 - done
1176 - # reorder
1177 - all_targets=( "${prod_targets[@]}" "${exp_targets[@]}" )
1178 -
1179 - if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
1180 - eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!"
1181 - eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
1182 - eqawarn "Expected: ${exp_targets[*]}"
1183 - eqawarn
1184 - fi
1185 -
1186 - if [[ ${all_targets[*]} != ${ALL_LLVM_TARGETS[*]#llvm_targets_} ]]; then
1187 - eqawarn "ALL_LLVM_TARGETS is outdated!"
1188 - eqawarn " Have: ${ALL_LLVM_TARGETS[*]#llvm_targets_}"
1189 - eqawarn "Expected: ${all_targets[*]}"
1190 - fi
1191 -}
1192 -
1193 -check_distribution_components() {
1194 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
1195 - local all_targets=() my_targets=() l
1196 - cd "${BUILD_DIR}" || die
1197 -
1198 - while read -r l; do
1199 - if [[ ${l} == install-*-stripped:* ]]; then
1200 - l=${l#install-}
1201 - l=${l%%-stripped*}
1202 -
1203 - case ${l} in
1204 - # shared libs
1205 - LLVM|LLVMgold)
1206 - ;;
1207 - # TableGen lib + deps
1208 - LLVMDemangle|LLVMSupport|LLVMTableGen)
1209 - ;;
1210 - # static libs
1211 - LLVM*)
1212 - continue
1213 - ;;
1214 - # meta-targets
1215 - distribution|llvm-libraries)
1216 - continue
1217 - ;;
1218 - # used only w/ USE=doc
1219 - docs-llvm-html)
1220 - use doc || continue
1221 - ;;
1222 - esac
1223 -
1224 - all_targets+=( "${l}" )
1225 - fi
1226 - done < <(ninja -t targets all)
1227 -
1228 - while read -r l; do
1229 - my_targets+=( "${l}" )
1230 - done < <(get_distribution_components $"\n")
1231 -
1232 - local add=() remove=()
1233 - for l in "${all_targets[@]}"; do
1234 - if ! has "${l}" "${my_targets[@]}"; then
1235 - add+=( "${l}" )
1236 - fi
1237 - done
1238 - for l in "${my_targets[@]}"; do
1239 - if ! has "${l}" "${all_targets[@]}"; then
1240 - remove+=( "${l}" )
1241 - fi
1242 - done
1243 -
1244 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
1245 - eqawarn "get_distribution_components() is outdated!"
1246 - eqawarn " Add: ${add[*]}"
1247 - eqawarn "Remove: ${remove[*]}"
1248 - fi
1249 - cd - >/dev/null || die
1250 - fi
1251 -}
1252 -
1253 -src_prepare() {
1254 - # Fix llvm-config for shared linking and sane flags
1255 - # https://bugs.gentoo.org/show_bug.cgi?id=565358
1256 - eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
1257 -
1258 - # disable use of SDK on OSX, bug #568758
1259 - sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
1260 -
1261 - # Update config.guess to support more systems
1262 - cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die
1263 -
1264 - # Verify that the live ebuild is up-to-date
1265 - check_live_ebuild
1266 -
1267 - llvm.org_src_prepare
1268 -}
1269 -
1270 -# Is LLVM being linked against libc++?
1271 -is_libcxx_linked() {
1272 - local code='#include <ciso646>
1273 -#if defined(_LIBCPP_VERSION)
1274 - HAVE_LIBCXX
1275 -#endif
1276 -'
1277 - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
1278 -
1279 - [[ ${out} == *HAVE_LIBCXX* ]]
1280 -}
1281 -
1282 -get_distribution_components() {
1283 - local sep=${1-;}
1284 -
1285 - local out=(
1286 - # shared libs
1287 - LLVM
1288 - LTO
1289 - Remarks
1290 -
1291 - # tools
1292 - llvm-config
1293 -
1294 - # common stuff
1295 - cmake-exports
1296 - llvm-headers
1297 -
1298 - # libraries needed for clang-tblgen
1299 - LLVMDemangle
1300 - LLVMSupport
1301 - LLVMTableGen
1302 - )
1303 -
1304 - if multilib_is_native_abi; then
1305 - out+=(
1306 - # utilities
1307 - llvm-tblgen
1308 - FileCheck
1309 - llvm-PerfectShuffle
1310 - count
1311 - not
1312 - yaml-bench
1313 -
1314 - # tools
1315 - bugpoint
1316 - dsymutil
1317 - llc
1318 - lli
1319 - lli-child-target
1320 - llvm-addr2line
1321 - llvm-ar
1322 - llvm-as
1323 - llvm-bcanalyzer
1324 - llvm-c-test
1325 - llvm-cat
1326 - llvm-cfi-verify
1327 - llvm-config
1328 - llvm-cov
1329 - llvm-cvtres
1330 - llvm-cxxdump
1331 - llvm-cxxfilt
1332 - llvm-cxxmap
1333 - llvm-diff
1334 - llvm-dis
1335 - llvm-dlltool
1336 - llvm-dwarfdump
1337 - llvm-dwp
1338 - llvm-elfabi
1339 - llvm-exegesis
1340 - llvm-extract
1341 - llvm-gsymutil
1342 - llvm-ifs
1343 - llvm-install-name-tool
1344 - llvm-jitlink
1345 - llvm-lib
1346 - llvm-link
1347 - llvm-lipo
1348 - llvm-lto
1349 - llvm-lto2
1350 - llvm-mc
1351 - llvm-mca
1352 - llvm-ml
1353 - llvm-modextract
1354 - llvm-mt
1355 - llvm-nm
1356 - llvm-objcopy
1357 - llvm-objdump
1358 - llvm-opt-report
1359 - llvm-pdbutil
1360 - llvm-profdata
1361 - llvm-ranlib
1362 - llvm-rc
1363 - llvm-readelf
1364 - llvm-readobj
1365 - llvm-reduce
1366 - llvm-rtdyld
1367 - llvm-size
1368 - llvm-split
1369 - llvm-stress
1370 - llvm-strings
1371 - llvm-strip
1372 - llvm-symbolizer
1373 - llvm-undname
1374 - llvm-xray
1375 - obj2yaml
1376 - opt
1377 - sancov
1378 - sanstats
1379 - verify-uselistorder
1380 - yaml2obj
1381 -
1382 - # python modules
1383 - opt-viewer
1384 - )
1385 -
1386 - if llvm_are_manpages_built; then
1387 - out+=(
1388 - # manpages
1389 - docs-dsymutil-man
1390 - docs-llvm-dwarfdump-man
1391 - docs-llvm-man
1392 - )
1393 - fi
1394 - use doc && out+=(
1395 - docs-llvm-html
1396 - )
1397 -
1398 - use gold && out+=(
1399 - LLVMgold
1400 - )
1401 - fi
1402 -
1403 - printf "%s${sep}" "${out[@]}"
1404 -}
1405 -
1406 -multilib_src_configure() {
1407 - local ffi_cflags ffi_ldflags
1408 - if use libffi; then
1409 - ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
1410 - ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
1411 - fi
1412 -
1413 - local libdir=$(get_libdir)
1414 - local mycmakeargs=(
1415 - # disable appending VCS revision to the version to improve
1416 - # direct cache hit ratio
1417 - -DLLVM_APPEND_VC_REV=OFF
1418 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
1419 - -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
1420 -
1421 - -DBUILD_SHARED_LIBS=OFF
1422 - -DLLVM_BUILD_LLVM_DYLIB=ON
1423 - -DLLVM_LINK_LLVM_DYLIB=ON
1424 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
1425 -
1426 - # cheap hack: LLVM combines both anyway, and the only difference
1427 - # is that the former list is explicitly verified at cmake time
1428 - -DLLVM_TARGETS_TO_BUILD=""
1429 - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
1430 - -DLLVM_BUILD_TESTS=$(usex test)
1431 -
1432 - -DLLVM_ENABLE_FFI=$(usex libffi)
1433 - -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
1434 - -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
1435 - -DLLVM_ENABLE_LIBXML2=$(usex xml)
1436 - -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
1437 - -DLLVM_ENABLE_LIBPFM=$(usex exegesis)
1438 - -DLLVM_ENABLE_EH=ON
1439 - -DLLVM_ENABLE_RTTI=ON
1440 - -DLLVM_ENABLE_Z3_SOLVER=$(usex z3)
1441 -
1442 - -DLLVM_HOST_TRIPLE="${CHOST}"
1443 -
1444 - -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
1445 - -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
1446 - # used only for llvm-objdump tool
1447 - -DHAVE_LIBXAR=$(multilib_native_usex xar 1 0)
1448 -
1449 - -DPython3_EXECUTABLE="${PYTHON}"
1450 -
1451 - # disable OCaml bindings (now in dev-ml/llvm-ocaml)
1452 - -DOCAMLFIND=NO
1453 - )
1454 -
1455 - if is_libcxx_linked; then
1456 - # Smart hack: alter version suffix -> SOVERSION when linking
1457 - # against libc++. This way we won't end up mixing LLVM libc++
1458 - # libraries with libstdc++ clang, and the other way around.
1459 - mycmakeargs+=(
1460 - -DLLVM_VERSION_SUFFIX="libcxx"
1461 - -DLLVM_ENABLE_LIBCXX=ON
1462 - )
1463 - fi
1464 -
1465 -# Note: go bindings have no CMake rules at the moment
1466 -# but let's kill the check in case they are introduced
1467 -# if ! multilib_is_native_abi || ! use go; then
1468 - mycmakeargs+=(
1469 - -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
1470 - )
1471 -# fi
1472 -
1473 - use test && mycmakeargs+=(
1474 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
1475 - )
1476 -
1477 - if multilib_is_native_abi; then
1478 - local build_docs=OFF
1479 - if llvm_are_manpages_built; then
1480 - build_docs=ON
1481 - mycmakeargs+=(
1482 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
1483 - -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
1484 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
1485 - )
1486 - fi
1487 -
1488 - mycmakeargs+=(
1489 - -DLLVM_BUILD_DOCS=${build_docs}
1490 - -DLLVM_ENABLE_OCAMLDOC=OFF
1491 - -DLLVM_ENABLE_SPHINX=${build_docs}
1492 - -DLLVM_ENABLE_DOXYGEN=OFF
1493 - -DLLVM_INSTALL_UTILS=ON
1494 - )
1495 - use gold && mycmakeargs+=(
1496 - -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
1497 - )
1498 - fi
1499 -
1500 - if tc-is-cross-compiler; then
1501 - local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
1502 - [[ -x "${tblgen}" ]] \
1503 - || die "${tblgen} not found or usable"
1504 - mycmakeargs+=(
1505 - -DCMAKE_CROSSCOMPILING=ON
1506 - -DLLVM_TABLEGEN="${tblgen}"
1507 - )
1508 - fi
1509 -
1510 - # workaround BMI bug in gcc-7 (fixed in 7.4)
1511 - # https://bugs.gentoo.org/649880
1512 - # apply only to x86, https://bugs.gentoo.org/650506
1513 - if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
1514 - [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
1515 - then
1516 - local CFLAGS="${CFLAGS} -mno-bmi"
1517 - local CXXFLAGS="${CXXFLAGS} -mno-bmi"
1518 - fi
1519 -
1520 - # LLVM can have very high memory consumption while linking,
1521 - # exhausting the limit on 32-bit linker executable
1522 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
1523 -
1524 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
1525 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
1526 - cmake_src_configure
1527 -
1528 - multilib_is_native_abi && check_distribution_components
1529 -}
1530 -
1531 -multilib_src_compile() {
1532 - cmake_build distribution
1533 -
1534 - pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
1535 - pax-mark m "${BUILD_DIR}"/bin/lli
1536 - pax-mark m "${BUILD_DIR}"/bin/lli-child-target
1537 -
1538 - if use test; then
1539 - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
1540 - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
1541 - pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
1542 - fi
1543 -}
1544 -
1545 -multilib_src_test() {
1546 - # respect TMPDIR!
1547 - local -x LIT_PRESERVES_TMP=1
1548 - cmake_build check
1549 -}
1550 -
1551 -src_install() {
1552 - local MULTILIB_CHOST_TOOLS=(
1553 - /usr/lib/llvm/${SLOT}/bin/llvm-config
1554 - )
1555 -
1556 - local MULTILIB_WRAPPED_HEADERS=(
1557 - /usr/include/llvm/Config/llvm-config.h
1558 - )
1559 -
1560 - local LLVM_LDPATHS=()
1561 - multilib-minimal_src_install
1562 -
1563 - # move wrapped headers back
1564 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
1565 -}
1566 -
1567 -multilib_src_install() {
1568 - DESTDIR=${D} cmake_build install-distribution
1569 -
1570 - # move headers to /usr/include for wrapping
1571 - rm -rf "${ED}"/usr/include || die
1572 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
1573 -
1574 - LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
1575 -}
1576 -
1577 -multilib_src_install_all() {
1578 - local revord=$(( 9999 - ${SLOT} ))
1579 - newenvd - "60llvm-${revord}" <<-_EOF_
1580 - PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
1581 - # we need to duplicate it in ROOTPATH for Portage to respect...
1582 - ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
1583 - MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
1584 - LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
1585 - _EOF_
1586 -
1587 - docompress "/usr/lib/llvm/${SLOT}/share/man"
1588 - llvm_install_manpages
1589 -}
1590 -
1591 -pkg_postinst() {
1592 - elog "You can find additional opt-viewer utility scripts in:"
1593 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/opt-viewer"
1594 - elog "To use these scripts, you will need Python along with the following"
1595 - elog "packages:"
1596 - elog " dev-python/pygments (for opt-viewer)"
1597 - elog " dev-python/pyyaml (for all of them)"
1598 -}