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