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