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: Sat, 25 Sep 2021 07:45:59
Message-Id: 1632555924.bd337401c91d4b5cfb369b19e8bbe847237d6146.mgorny@gentoo
1 commit: bd337401c91d4b5cfb369b19e8bbe847237d6146
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sat Sep 25 07:01:54 2021 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Sat Sep 25 07:45:24 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bd337401
7
8 sys-devel/llvm: Bump to 13.0.0_rc4
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-devel/llvm/Manifest | 2 +
13 sys-devel/llvm/llvm-13.0.0_rc4.ebuild | 511 ++++++++++++++++++++++++++++++++++
14 2 files changed, 513 insertions(+)
15
16 diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
17 index 14eb822842a..f40f4233511 100644
18 --- a/sys-devel/llvm/Manifest
19 +++ b/sys-devel/llvm/Manifest
20 @@ -6,9 +6,11 @@ DIST llvm-gentoo-patchset-11.1.0-1.tar.xz 4032 BLAKE2B e69138a422e315b31a3d9c11f
21 DIST llvm-gentoo-patchset-12.0.1.tar.xz 5280 BLAKE2B 963d005bc7b636570be90eb841ac5bcaeb927538cc7de27683167111a17d6496677c7517de2ecfaf14b5d8ac22bad357be490b8a2ed9aba502fd5f447ecc99e9 SHA512 fc7c38e671555751650299c3a8bee44d5c7f26e11b68d5538c507fb7fe9ff2d349bdcd43bce90a448a747f082d523b3849d6bcda5e3ae2e998edcb926d6aa249
22 DIST llvm-gentoo-patchset-13.0.0-rc2.tar.xz 5556 BLAKE2B e6c7ecfe8f842edc4d4f30a20c66973519182ecb46e21fb20b6c5fcb6d54cdef830fcb120a405b77f1332e3557acbbbbfa99170b20d17f137e0a63b2d0dc1258 SHA512 ddeaf1d07f0ba893ce93e5fe1eff1c0716769a7879fc503c397f4db7becb363f94747f59b6d53c204df73a93954fb0ca5aae6ad544ce55c964c4bf441a410cd2
23 DIST llvm-gentoo-patchset-13.0.0-rc3.tar.xz 5012 BLAKE2B 5399feeffe73e8fbd099c8058f1cc41e2fcb2feb446acc1394589c0397167786895d328d45ff481fb30605f215774b9e51e332124c0b071e969a2f01c5943c04 SHA512 d4fb2b08e253d9fa89070045282b4309ca9938011bf7f9b5364cc69c5030ff9353abb1624895b4bfeef2cd8e2f8c9b9f93fc8196f98dc0970457bca7787270c9
24 +DIST llvm-gentoo-patchset-13.0.0-rc4.tar.xz 5016 BLAKE2B 021ba4e67904e4cf4dfdf1ecfc1cd1cc860c2f43db97e04c40ca7d95567f6235a27a2a919083c58b89b269eefa2d751cb9c324bda6518c22e9fc01007936a520 SHA512 dce61179dffafc5992fb0e18314bba2d5fbf2f0470a491bc1ffc036274b65d0a1de741b23e2de32e873250c856a53707e06f8c560bd29f8a54a6ae0c74267f43
25 DIST llvm-gentoo-patchset-9999-1.tar.xz 4032 BLAKE2B b9413484dafed8ae0c68c2c164b45fd07bb8d5d0898f03abe118fd2120ffcb1fb6c949de9649a97c2e8105f24b9d131a725c67c0a502ca4d4d192c1a0d65f49d SHA512 e64449eeaf756c5bd945109937b84ba4bd8a015222bd792d39cf3947871e87571a4ca57814790e51544cb05ad4c2d1f044e818e4caaac7c2e2a02cb1aa290fcc
26 DIST llvmorg-10.0.1.tar.gz 120880730 BLAKE2B 30f19f56c4d1f6abcda5fec76256219d1e3c8a6ff1a1f152f94bfe362c07884339fe571ff7fe903ed3b3deb150b2fa868c387887a0dea2930dc08b81db71a5b1 SHA512 48078fff9293a87f1a973f3348f79506f04c3da774295f5eb67d74dd2d1aa94f0973f8ced3f4ab9e8339902071f82c603b43d5608ad7227046c4da769c5d2151
27 DIST llvmorg-11.1.0.tar.gz 122776532 BLAKE2B ca842ff4afff8f44c82b5e7383962a9c45ca1c93b64fa4c6ebcd70a1d3849dbad2b8e4e24fba02d144c6266d7fab3607ebc6999b28c229cb35256cf40f26a985 SHA512 9a8ce022a935eed42fa71a224f2a207122aadcbef58ee855fdb4825f879e7d028e4dcff22c19b9d336db1c8bf63fb84372d44981acf84615f757e54306c92b81
28 DIST llvmorg-12.0.1.tar.gz 134259748 BLAKE2B f41de787bc73ff2edfda1b22cc8602be6f65f37dd9e4c8888533cfa8c3ccdcf4f108aaab9de23ab0ab987966eb160f2a553a0bdff99461e71ddd5bfcd086090d SHA512 6eb0dc18e2c25935fabfdfc48b0114be0939158dfdef7b85b395fe2e71042672446af0e68750aae003c9847d10d1f63316fe95d3df738d18f249174292b1b9e1
29 DIST llvmorg-13.0.0-rc2.tar.gz 147267736 BLAKE2B 153bf7320f2aa911112d366ffc79f7110cb04f135c2a8b176c263f0a75eb768206d9bd462893d45504b0e58aa9e127fdcafb02300eab1666e4616aa654d457dd SHA512 a01baf3eaa02f02af42bfcf6dcf24f166351bf1c09601495617c81e41def23210573bad40a344270f40c5deb881d06863536abac2a6481930766a6a56335fb44
30 DIST llvmorg-13.0.0-rc3.tar.gz 147281901 BLAKE2B 640065a2f32dc48edf084d776cb6b950fae86c2a204999e2eec67f93b57615df40adec19785099b0ef2fe11837c3304794ec3585289a5b5051a557618c63c749 SHA512 1401d5a4d6bb5c930d74b9cfbc8e792872f721aab7d7f0c819e2ba5cf47fb818d160c1f71784fba69827f3c9b7414aa91a585d2b813c1851b4799f9d62cebc46
31 +DIST llvmorg-13.0.0-rc4.tar.gz 147286367 BLAKE2B a43c54b8bb379b0374f99ae07066d7ba4ae2a83dfdb61390101c736f91dc44aa07a88778551aaaf903033562b2a0a863ea6b27392b700c9cddc74e2c7899cad1 SHA512 8ccaaea21ec4fe3c4b4446d3a7cae36a47ed196f407d341da45824bcefefffd3c412c0c5c27670ceaba1458bc53107273f9d3aec2de261b6b82c6d209b45b14d
32
33 diff --git a/sys-devel/llvm/llvm-13.0.0_rc4.ebuild b/sys-devel/llvm/llvm-13.0.0_rc4.ebuild
34 new file mode 100644
35 index 00000000000..ee6e126425c
36 --- /dev/null
37 +++ b/sys-devel/llvm/llvm-13.0.0_rc4.ebuild
38 @@ -0,0 +1,511 @@
39 +# Copyright 1999-2021 Gentoo Authors
40 +# Distributed under the terms of the GNU General Public License v2
41 +
42 +EAPI=7
43 +
44 +PYTHON_COMPAT=( python3_{8..10} )
45 +inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \
46 + toolchain-funcs
47 +
48 +DESCRIPTION="Low Level Virtual Machine"
49 +HOMEPAGE="https://llvm.org/"
50 +
51 +# Additional licenses:
52 +# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
53 +# 2. xxhash: BSD.
54 +# 3. MD5 code: public-domain.
55 +# 4. ConvertUTF.h: TODO.
56 +
57 +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc"
58 +SLOT="$(ver_cut 1)"
59 +KEYWORDS=""
60 +IUSE="debug doc exegesis gold libedit +libffi ncurses test xar xml z3
61 + kernel_Darwin"
62 +RESTRICT="!test? ( test )"
63 +
64 +RDEPEND="
65 + sys-libs/zlib:0=[${MULTILIB_USEDEP}]
66 + exegesis? ( dev-libs/libpfm:= )
67 + gold? ( >=sys-devel/binutils-2.31.1-r4:*[plugins] )
68 + libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
69 + libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
70 + ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
71 + xar? ( app-arch/xar )
72 + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
73 + z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] )"
74 +DEPEND="${RDEPEND}
75 + gold? ( sys-libs/binutils-libs )"
76 +BDEPEND="
77 + dev-lang/perl
78 + >=dev-util/cmake-3.16
79 + sys-devel/gnuconfig
80 + kernel_Darwin? (
81 + <sys-libs/libcxx-$(ver_cut 1-3).9999
82 + >=sys-devel/binutils-apple-5.1
83 + )
84 + doc? ( $(python_gen_any_dep '
85 + dev-python/recommonmark[${PYTHON_USEDEP}]
86 + dev-python/sphinx[${PYTHON_USEDEP}]
87 + ') )
88 + libffi? ( virtual/pkgconfig )
89 + ${PYTHON_DEPS}"
90 +# There are no file collisions between these versions but having :0
91 +# installed means llvm-config there will take precedence.
92 +RDEPEND="${RDEPEND}
93 + !sys-devel/llvm:0"
94 +PDEPEND="sys-devel/llvm-common
95 + gold? ( >=sys-devel/llvmgold-${SLOT} )"
96 +
97 +LLVM_COMPONENTS=( llvm )
98 +LLVM_MANPAGES=build
99 +LLVM_PATCHSET=${PV/_/-}
100 +LLVM_USE_TARGETS=provide
101 +llvm.org_set_globals
102 +
103 +python_check_deps() {
104 + use doc || return 0
105 +
106 + has_version -b "dev-python/recommonmark[${PYTHON_USEDEP}]" &&
107 + has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]"
108 +}
109 +
110 +check_live_ebuild() {
111 + local prod_targets=(
112 + $(sed -n -e '/set(LLVM_ALL_TARGETS/,/)/p' CMakeLists.txt \
113 + | tail -n +2 | head -n -1)
114 + )
115 + local all_targets=(
116 + lib/Target/*/
117 + )
118 + all_targets=( "${all_targets[@]#lib/Target/}" )
119 + all_targets=( "${all_targets[@]%/}" )
120 +
121 + local exp_targets=() i
122 + for i in "${all_targets[@]}"; do
123 + has "${i}" "${prod_targets[@]}" || exp_targets+=( "${i}" )
124 + done
125 +
126 + if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
127 + eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!"
128 + eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
129 + eqawarn "Expected: ${exp_targets[*]}"
130 + eqawarn
131 + fi
132 +
133 + if [[ ${prod_targets[*]} != ${ALL_LLVM_PRODUCTION_TARGETS[*]} ]]; then
134 + eqawarn "ALL_LLVM_PRODUCTION_TARGETS is outdated!"
135 + eqawarn " Have: ${ALL_LLVM_PRODUCTION_TARGETS[*]}"
136 + eqawarn "Expected: ${prod_targets[*]}"
137 + fi
138 +}
139 +
140 +check_distribution_components() {
141 + if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
142 + local all_targets=() my_targets=() l
143 + cd "${BUILD_DIR}" || die
144 +
145 + while read -r l; do
146 + if [[ ${l} == install-*-stripped:* ]]; then
147 + l=${l#install-}
148 + l=${l%%-stripped*}
149 +
150 + case ${l} in
151 + # shared libs
152 + LLVM|LLVMgold)
153 + ;;
154 + # TableGen lib + deps
155 + LLVMDemangle|LLVMSupport|LLVMTableGen)
156 + ;;
157 + # static libs
158 + LLVM*)
159 + continue
160 + ;;
161 + # meta-targets
162 + distribution|llvm-libraries)
163 + continue
164 + ;;
165 + # used only w/ USE=doc
166 + docs-llvm-html)
167 + use doc || continue
168 + ;;
169 + esac
170 +
171 + all_targets+=( "${l}" )
172 + fi
173 + done < <(ninja -t targets all)
174 +
175 + while read -r l; do
176 + my_targets+=( "${l}" )
177 + done < <(get_distribution_components $"\n")
178 +
179 + local add=() remove=()
180 + for l in "${all_targets[@]}"; do
181 + if ! has "${l}" "${my_targets[@]}"; then
182 + add+=( "${l}" )
183 + fi
184 + done
185 + for l in "${my_targets[@]}"; do
186 + if ! has "${l}" "${all_targets[@]}"; then
187 + remove+=( "${l}" )
188 + fi
189 + done
190 +
191 + if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
192 + eqawarn "get_distribution_components() is outdated!"
193 + eqawarn " Add: ${add[*]}"
194 + eqawarn "Remove: ${remove[*]}"
195 + fi
196 + cd - >/dev/null || die
197 + fi
198 +}
199 +
200 +src_prepare() {
201 + # disable use of SDK on OSX, bug #568758
202 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
203 +
204 + # Update config.guess to support more systems
205 + cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die
206 +
207 + # Verify that the live ebuild is up-to-date
208 + check_live_ebuild
209 +
210 + llvm.org_src_prepare
211 +}
212 +
213 +# Is LLVM being linked against libc++?
214 +is_libcxx_linked() {
215 + local code='#include <ciso646>
216 +#if defined(_LIBCPP_VERSION)
217 + HAVE_LIBCXX
218 +#endif
219 +'
220 + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
221 +
222 + [[ ${out} == *HAVE_LIBCXX* ]]
223 +}
224 +
225 +get_distribution_components() {
226 + local sep=${1-;}
227 +
228 + local out=(
229 + # shared libs
230 + LLVM
231 + LTO
232 + Remarks
233 +
234 + # tools
235 + llvm-config
236 +
237 + # common stuff
238 + cmake-exports
239 + llvm-headers
240 +
241 + # libraries needed for clang-tblgen
242 + LLVMDemangle
243 + LLVMSupport
244 + LLVMTableGen
245 + )
246 +
247 + if multilib_is_native_abi; then
248 + out+=(
249 + # utilities
250 + llvm-tblgen
251 + FileCheck
252 + llvm-PerfectShuffle
253 + count
254 + not
255 + yaml-bench
256 +
257 + # tools
258 + bugpoint
259 + dsymutil
260 + llc
261 + lli
262 + lli-child-target
263 + llvm-addr2line
264 + llvm-ar
265 + llvm-as
266 + llvm-bcanalyzer
267 + llvm-bitcode-strip
268 + llvm-c-test
269 + llvm-cat
270 + llvm-cfi-verify
271 + llvm-config
272 + llvm-cov
273 + llvm-cvtres
274 + llvm-cxxdump
275 + llvm-cxxfilt
276 + llvm-cxxmap
277 + llvm-diff
278 + llvm-dis
279 + llvm-dlltool
280 + llvm-dwarfdump
281 + llvm-dwp
282 + llvm-exegesis
283 + llvm-extract
284 + llvm-gsymutil
285 + llvm-ifs
286 + llvm-install-name-tool
287 + llvm-jitlink
288 + llvm-jitlink-executor
289 + llvm-lib
290 + llvm-libtool-darwin
291 + llvm-link
292 + llvm-lipo
293 + llvm-lto
294 + llvm-lto2
295 + llvm-mc
296 + llvm-mca
297 + llvm-ml
298 + llvm-modextract
299 + llvm-mt
300 + llvm-nm
301 + llvm-objcopy
302 + llvm-objdump
303 + llvm-opt-report
304 + llvm-otool
305 + llvm-pdbutil
306 + llvm-profdata
307 + llvm-profgen
308 + llvm-ranlib
309 + llvm-rc
310 + llvm-readelf
311 + llvm-readobj
312 + llvm-reduce
313 + llvm-rtdyld
314 + llvm-sim
315 + llvm-size
316 + llvm-split
317 + llvm-stress
318 + llvm-strings
319 + llvm-strip
320 + llvm-symbolizer
321 + llvm-tapi-diff
322 + llvm-undname
323 + llvm-windres
324 + llvm-xray
325 + obj2yaml
326 + opt
327 + sancov
328 + sanstats
329 + split-file
330 + verify-uselistorder
331 + yaml2obj
332 +
333 + # python modules
334 + opt-viewer
335 + )
336 +
337 + if llvm_are_manpages_built; then
338 + out+=(
339 + # manpages
340 + docs-dsymutil-man
341 + docs-llvm-dwarfdump-man
342 + docs-llvm-man
343 + )
344 + fi
345 + use doc && out+=(
346 + docs-llvm-html
347 + )
348 +
349 + use gold && out+=(
350 + LLVMgold
351 + )
352 + fi
353 +
354 + printf "%s${sep}" "${out[@]}"
355 +}
356 +
357 +multilib_src_configure() {
358 + local ffi_cflags ffi_ldflags
359 + if use libffi; then
360 + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
361 + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
362 + fi
363 +
364 + local libdir=$(get_libdir)
365 + local mycmakeargs=(
366 + # disable appending VCS revision to the version to improve
367 + # direct cache hit ratio
368 + -DLLVM_APPEND_VC_REV=OFF
369 + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
370 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
371 +
372 + -DBUILD_SHARED_LIBS=OFF
373 + -DLLVM_BUILD_LLVM_DYLIB=ON
374 + -DLLVM_LINK_LLVM_DYLIB=ON
375 + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
376 +
377 + # cheap hack: LLVM combines both anyway, and the only difference
378 + # is that the former list is explicitly verified at cmake time
379 + -DLLVM_TARGETS_TO_BUILD=""
380 + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
381 + -DLLVM_BUILD_TESTS=$(usex test)
382 +
383 + -DLLVM_ENABLE_FFI=$(usex libffi)
384 + -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
385 + -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
386 + -DLLVM_ENABLE_LIBXML2=$(usex xml)
387 + -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
388 + -DLLVM_ENABLE_LIBPFM=$(usex exegesis)
389 + -DLLVM_ENABLE_EH=ON
390 + -DLLVM_ENABLE_RTTI=ON
391 + -DLLVM_ENABLE_Z3_SOLVER=$(usex z3)
392 +
393 + -DLLVM_HOST_TRIPLE="${CHOST}"
394 +
395 + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
396 + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
397 + # used only for llvm-objdump tool
398 + -DLLVM_HAVE_LIBXAR=$(multilib_native_usex xar 1 0)
399 +
400 + -DPython3_EXECUTABLE="${PYTHON}"
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 + -DLLVM_ENABLE_LIBCXX=ON
413 + )
414 + fi
415 +
416 +# Note: go bindings have no CMake rules at the moment
417 +# but let's kill the check in case they are introduced
418 +# if ! multilib_is_native_abi || ! use go; then
419 + mycmakeargs+=(
420 + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
421 + )
422 +# fi
423 +
424 + use test && mycmakeargs+=(
425 + -DLLVM_LIT_ARGS="$(get_lit_flags)"
426 + )
427 +
428 + if multilib_is_native_abi; then
429 + local build_docs=OFF
430 + if llvm_are_manpages_built; then
431 + build_docs=ON
432 + mycmakeargs+=(
433 + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
434 + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
435 + -DSPHINX_WARNINGS_AS_ERRORS=OFF
436 + )
437 + fi
438 +
439 + mycmakeargs+=(
440 + -DLLVM_BUILD_DOCS=${build_docs}
441 + -DLLVM_ENABLE_OCAMLDOC=OFF
442 + -DLLVM_ENABLE_SPHINX=${build_docs}
443 + -DLLVM_ENABLE_DOXYGEN=OFF
444 + -DLLVM_INSTALL_UTILS=ON
445 + )
446 + use gold && mycmakeargs+=(
447 + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
448 + )
449 + fi
450 +
451 + if tc-is-cross-compiler; then
452 + local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
453 + [[ -x "${tblgen}" ]] \
454 + || die "${tblgen} not found or usable"
455 + mycmakeargs+=(
456 + -DCMAKE_CROSSCOMPILING=ON
457 + -DLLVM_TABLEGEN="${tblgen}"
458 + )
459 + fi
460 +
461 + # workaround BMI bug in gcc-7 (fixed in 7.4)
462 + # https://bugs.gentoo.org/649880
463 + # apply only to x86, https://bugs.gentoo.org/650506
464 + if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
465 + [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
466 + then
467 + local CFLAGS="${CFLAGS} -mno-bmi"
468 + local CXXFLAGS="${CXXFLAGS} -mno-bmi"
469 + fi
470 +
471 + # LLVM can have very high memory consumption while linking,
472 + # exhausting the limit on 32-bit linker executable
473 + use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
474 +
475 + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
476 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
477 + cmake_src_configure
478 +
479 + multilib_is_native_abi && check_distribution_components
480 +}
481 +
482 +multilib_src_compile() {
483 + cmake_build distribution
484 +
485 + pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
486 + pax-mark m "${BUILD_DIR}"/bin/lli
487 + pax-mark m "${BUILD_DIR}"/bin/lli-child-target
488 +
489 + if use test; then
490 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
491 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
492 + pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
493 + fi
494 +}
495 +
496 +multilib_src_test() {
497 + # respect TMPDIR!
498 + local -x LIT_PRESERVES_TMP=1
499 + cmake_build check
500 +}
501 +
502 +src_install() {
503 + local MULTILIB_CHOST_TOOLS=(
504 + /usr/lib/llvm/${SLOT}/bin/llvm-config
505 + )
506 +
507 + local MULTILIB_WRAPPED_HEADERS=(
508 + /usr/include/llvm/Config/llvm-config.h
509 + )
510 +
511 + local LLVM_LDPATHS=()
512 + multilib-minimal_src_install
513 +
514 + # move wrapped headers back
515 + mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
516 +}
517 +
518 +multilib_src_install() {
519 + DESTDIR=${D} cmake_build install-distribution
520 +
521 + # move headers to /usr/include for wrapping
522 + rm -rf "${ED}"/usr/include || die
523 + mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
524 +
525 + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
526 +}
527 +
528 +multilib_src_install_all() {
529 + local revord=$(( 9999 - ${SLOT} ))
530 + newenvd - "60llvm-${revord}" <<-_EOF_
531 + PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
532 + # we need to duplicate it in ROOTPATH for Portage to respect...
533 + ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
534 + MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
535 + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
536 + _EOF_
537 +
538 + docompress "/usr/lib/llvm/${SLOT}/share/man"
539 + llvm_install_manpages
540 +}
541 +
542 +pkg_postinst() {
543 + elog "You can find additional opt-viewer utility scripts in:"
544 + elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/opt-viewer"
545 + elog "To use these scripts, you will need Python along with the following"
546 + elog "packages:"
547 + elog " dev-python/pygments (for opt-viewer)"
548 + elog " dev-python/pyyaml (for all of them)"
549 +}