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: Sun, 01 Jan 2023 21:00:48
Message-Id: 1672606749.c71bd0dfc24b3559e22f6dec4bf8270f1e602613.mgorny@gentoo
1 commit: c71bd0dfc24b3559e22f6dec4bf8270f1e602613
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jan 1 11:57:47 2023 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Sun Jan 1 20:59:09 2023 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c71bd0df
7
8 sys-devel/llvm: Add 16.0.0_pre20230101 snapshot
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-devel/llvm/Manifest | 1 +
13 sys-devel/llvm/llvm-16.0.0_pre20230101.ebuild | 524 ++++++++++++++++++++++++++
14 2 files changed, 525 insertions(+)
15
16 diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
17 index a2eadbc8873c..d72610219b6b 100644
18 --- a/sys-devel/llvm/Manifest
19 +++ b/sys-devel/llvm/Manifest
20 @@ -13,6 +13,7 @@ DIST llvm-project-15.0.5.src.tar.xz 110931004 BLAKE2B d751e3627ee26e60a1a037a4a6
21 DIST llvm-project-15.0.5.src.tar.xz.sig 566 BLAKE2B a6e7204abc912045346a36f2b349e0829a4d5b9efcb230fb0c97caa38d5159ca17ffb47ce0485cbab276a4938ff3a5c05ef9f8b0b75f4c2028d870ee33023431 SHA512 312bc09b54408a9265f8102241089b0f674be0832dd5cb1998ff13dbccbe19324d7060ba2680457118dee96a1ff390b16282677ad825d7230008014ecebe47d5
22 DIST llvm-project-15.0.6.src.tar.xz 112074576 BLAKE2B 74b1aa967c95191fa492f06b3a21930842da0ccbd9995dd33b4c2cf07852bbedcae97041fd5966209b16c63b90c87cc02fb2e858eda13dd9cc0641edcede0f75 SHA512 3311d85f4e02610af52f06e83c8c6d2b93950d24324b831b7afc47c39a20a546d39683a14e1a315da87d226379042de900a3f36a0351053547482af9035ab949
23 DIST llvm-project-15.0.6.src.tar.xz.sig 438 BLAKE2B 3c97dbd55667f52dad964ef71257c36e3075794f5616cfd46de8bf874867e861bf45c0d56cff2d0ad5d4f1b5a1c9b3a395aedcc40bce545ce7f3c84ac75ae3da SHA512 a184103d84f8197a709c6c067fa83ca9290cd06532c487ad2c1fefa423438a1ac3c7f88835a94e3c9f04876e8d5f09afabef15bd8605df38aec6a4118597090c
24 +DIST llvm-project-b20dd2b186fdc76828219b705a2b58f5830f4b9d.tar.gz 175044630 BLAKE2B f9a955e8413b57067fb697792316fb0c1e3eac00b1af208ba5d29db01a9acc96b88c7edca12c43762b1425c71a716a7c74d5d7edad45a442f32ba73f88f548b6 SHA512 5133c32d7856c8280bfeb47c3e5a9c0d8c1c291aad29af93586523110f95b08e582ff416fc6be02241eabfe80c35ad4f0334de5ead2a41bc6504616b1c6fd15a
25 DIST llvm-project-dfc20708bcdf7b4c4bea8595fc4ac8674634d5e6.tar.gz 174878013 BLAKE2B 9c37423ae2a85a9d4a17fba97733cf808ebc98fa1488fb02e8c3e23039511154a220184af1bc6950c857b7d3c528d01e3dde5441c18903f25a7d7b7781e08f9b SHA512 146d6ab53cce257c21ae202b887bbb77b017f883cf26337bd3af29289cd828aabf95c528c6c192473c3cafb7e803940261f32a8fab6130deca01ccd5576c78eb
26 DIST llvm-project-fb792ebaf2114ad11d673cf891ae560e2e604711.tar.gz 174312496 BLAKE2B dd7f30b911ef5049e9e2bff7b2768e31b48b1f4c7acaf159f535fe3deb5aa6630fdf7857c83fffcda1119a38a52101490d2b6cb41cb295bb7dd85cde0445b7ee SHA512 bef15e7d82a2faf8be24f784d3d34ff9b21c8f17256879587ea5471011a32a1eb885e1b020da55aa096f2e0b5fe4bcf9fe8f0f5b5d34f5f386c48899c68fb7d1
27 DIST llvmorg-13.0.1.tar.gz 147290251 BLAKE2B 2a44b012a672501761d0c27c6b3a315b69bfef0cd13b078a7e7d2fccc4a9c8c0f2bee0f164c4271c9106b0a99cb06e8b64986f66253b613336719fb86b82541b SHA512 9a8cb5d11964ba88b7624f19ec861fb28701f23956ea3c92f6ac644332d5f41fde97bd8933dd3ee70ed378058c252fa3a3887c8d1af90d219970c2b27691166f
28
29 diff --git a/sys-devel/llvm/llvm-16.0.0_pre20230101.ebuild b/sys-devel/llvm/llvm-16.0.0_pre20230101.ebuild
30 new file mode 100644
31 index 000000000000..0e4934164443
32 --- /dev/null
33 +++ b/sys-devel/llvm/llvm-16.0.0_pre20230101.ebuild
34 @@ -0,0 +1,524 @@
35 +# Copyright 1999-2023 Gentoo Authors
36 +# Distributed under the terms of the GNU General Public License v2
37 +
38 +EAPI=8
39 +
40 +PYTHON_COMPAT=( python3_{8..11} )
41 +inherit cmake llvm.org multilib-minimal pax-utils python-any-r1 \
42 + toolchain-funcs
43 +
44 +DESCRIPTION="Low Level Virtual Machine"
45 +HOMEPAGE="https://llvm.org/"
46 +
47 +# Additional licenses:
48 +# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
49 +# 2. xxhash: BSD.
50 +# 3. MD5 code: public-domain.
51 +# 4. ConvertUTF.h: TODO.
52 +
53 +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc"
54 +SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
55 +KEYWORDS=""
56 +IUSE="
57 + +binutils-plugin debug doc exegesis libedit +libffi ncurses test xar
58 + xml z3 zstd
59 +"
60 +RESTRICT="!test? ( test )"
61 +
62 +RDEPEND="
63 + sys-libs/zlib:0=[${MULTILIB_USEDEP}]
64 + binutils-plugin? ( >=sys-devel/binutils-2.31.1-r4:*[plugins] )
65 + exegesis? ( dev-libs/libpfm:= )
66 + libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
67 + libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
68 + ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
69 + xar? ( app-arch/xar )
70 + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
71 + z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] )
72 + zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )
73 +"
74 +DEPEND="
75 + ${RDEPEND}
76 + binutils-plugin? ( sys-libs/binutils-libs )
77 +"
78 +BDEPEND="
79 + ${PYTHON_DEPS}
80 + dev-lang/perl
81 + >=dev-util/cmake-3.16
82 + sys-devel/gnuconfig
83 + kernel_Darwin? (
84 + <sys-libs/libcxx-${LLVM_VERSION}.9999
85 + >=sys-devel/binutils-apple-5.1
86 + )
87 + doc? ( $(python_gen_any_dep '
88 + dev-python/recommonmark[${PYTHON_USEDEP}]
89 + dev-python/sphinx[${PYTHON_USEDEP}]
90 + ') )
91 + libffi? ( virtual/pkgconfig )
92 +"
93 +# There are no file collisions between these versions but having :0
94 +# installed means llvm-config there will take precedence.
95 +RDEPEND="
96 + ${RDEPEND}
97 + !sys-devel/llvm:0
98 +"
99 +PDEPEND="
100 + sys-devel/llvm-common
101 + sys-devel/llvm-toolchain-symlinks:${LLVM_MAJOR}
102 + binutils-plugin? ( >=sys-devel/llvmgold-${LLVM_MAJOR} )
103 +"
104 +
105 +LLVM_COMPONENTS=( llvm cmake )
106 +LLVM_TEST_COMPONENTS=( third-party )
107 +LLVM_MANPAGES=1
108 +LLVM_USE_TARGETS=provide
109 +llvm.org_set_globals
110 +
111 +python_check_deps() {
112 + use doc || return 0
113 +
114 + python_has_version -b "dev-python/recommonmark[${PYTHON_USEDEP}]" &&
115 + python_has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]"
116 +}
117 +
118 +check_uptodate() {
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 +
134 + if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
135 + eqawarn "ALL_LLVM_EXPERIMENTAL_TARGETS is outdated!"
136 + eqawarn " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
137 + eqawarn "Expected: ${exp_targets[*]}"
138 + eqawarn
139 + fi
140 +
141 + if [[ ${prod_targets[*]} != ${ALL_LLVM_PRODUCTION_TARGETS[*]} ]]; then
142 + eqawarn "ALL_LLVM_PRODUCTION_TARGETS is outdated!"
143 + eqawarn " Have: ${ALL_LLVM_PRODUCTION_TARGETS[*]}"
144 + eqawarn "Expected: ${prod_targets[*]}"
145 + fi
146 +}
147 +
148 +check_distribution_components() {
149 + if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
150 + local all_targets=() my_targets=() l
151 + cd "${BUILD_DIR}" || die
152 +
153 + while read -r l; do
154 + if [[ ${l} == install-*-stripped:* ]]; then
155 + l=${l#install-}
156 + l=${l%%-stripped*}
157 +
158 + case ${l} in
159 + # shared libs
160 + LLVM|LLVMgold)
161 + ;;
162 + # TableGen lib + deps
163 + LLVMDemangle|LLVMSupport|LLVMTableGen)
164 + ;;
165 + # static libs
166 + LLVM*)
167 + continue
168 + ;;
169 + # meta-targets
170 + distribution|llvm-libraries)
171 + continue
172 + ;;
173 + # used only w/ USE=doc
174 + docs-llvm-html)
175 + use doc || continue
176 + ;;
177 + esac
178 +
179 + all_targets+=( "${l}" )
180 + fi
181 + done < <(${NINJA} -t targets all)
182 +
183 + while read -r l; do
184 + my_targets+=( "${l}" )
185 + done < <(get_distribution_components $"\n")
186 +
187 + local add=() remove=()
188 + for l in "${all_targets[@]}"; do
189 + if ! has "${l}" "${my_targets[@]}"; then
190 + add+=( "${l}" )
191 + fi
192 + done
193 + for l in "${my_targets[@]}"; do
194 + if ! has "${l}" "${all_targets[@]}"; then
195 + remove+=( "${l}" )
196 + fi
197 + done
198 +
199 + if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
200 + eqawarn "get_distribution_components() is outdated!"
201 + eqawarn " Add: ${add[*]}"
202 + eqawarn "Remove: ${remove[*]}"
203 + fi
204 + cd - >/dev/null || die
205 + fi
206 +}
207 +
208 +src_prepare() {
209 + # disable use of SDK on OSX, bug #568758
210 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
211 +
212 + # Update config.guess to support more systems
213 + cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die
214 +
215 + # Verify that the ebuild is up-to-date
216 + check_uptodate
217 +
218 + llvm.org_src_prepare
219 +}
220 +
221 +get_distribution_components() {
222 + local sep=${1-;}
223 +
224 + local out=(
225 + # shared libs
226 + LLVM
227 + LTO
228 + Remarks
229 +
230 + # tools
231 + llvm-config
232 +
233 + # common stuff
234 + cmake-exports
235 + llvm-headers
236 +
237 + # libraries needed for clang-tblgen
238 + LLVMDemangle
239 + LLVMSupport
240 + LLVMTableGen
241 + )
242 +
243 + if multilib_is_native_abi; then
244 + out+=(
245 + # utilities
246 + llvm-tblgen
247 + FileCheck
248 + llvm-PerfectShuffle
249 + count
250 + not
251 + yaml-bench
252 + UnicodeNameMappingGenerator
253 +
254 + # tools
255 + bugpoint
256 + dsymutil
257 + llc
258 + lli
259 + lli-child-target
260 + llvm-addr2line
261 + llvm-ar
262 + llvm-as
263 + llvm-bcanalyzer
264 + llvm-bitcode-strip
265 + llvm-c-test
266 + llvm-cat
267 + llvm-cfi-verify
268 + llvm-config
269 + llvm-cov
270 + llvm-cvtres
271 + llvm-cxxdump
272 + llvm-cxxfilt
273 + llvm-cxxmap
274 + llvm-debuginfo-analyzer
275 + llvm-debuginfod
276 + llvm-debuginfod-find
277 + llvm-diff
278 + llvm-dis
279 + llvm-dlltool
280 + llvm-dwarfdump
281 + llvm-dwarfutil
282 + llvm-dwp
283 + llvm-exegesis
284 + llvm-extract
285 + llvm-gsymutil
286 + llvm-ifs
287 + llvm-install-name-tool
288 + llvm-jitlink
289 + llvm-jitlink-executor
290 + llvm-lib
291 + llvm-libtool-darwin
292 + llvm-link
293 + llvm-lipo
294 + llvm-lto
295 + llvm-lto2
296 + llvm-mc
297 + llvm-mca
298 + llvm-ml
299 + llvm-modextract
300 + llvm-mt
301 + llvm-nm
302 + llvm-objcopy
303 + llvm-objdump
304 + llvm-opt-report
305 + llvm-otool
306 + llvm-pdbutil
307 + llvm-profdata
308 + llvm-profgen
309 + llvm-ranlib
310 + llvm-rc
311 + llvm-readelf
312 + llvm-readobj
313 + llvm-reduce
314 + llvm-remark-size-diff
315 + llvm-remarkutil
316 + llvm-rtdyld
317 + llvm-sim
318 + llvm-size
319 + llvm-split
320 + llvm-stress
321 + llvm-strings
322 + llvm-strip
323 + llvm-symbolizer
324 + llvm-tapi-diff
325 + llvm-tli-checker
326 + llvm-undname
327 + llvm-windres
328 + llvm-xray
329 + obj2yaml
330 + opt
331 + sancov
332 + sanstats
333 + split-file
334 + verify-uselistorder
335 + yaml2obj
336 +
337 + # python modules
338 + opt-viewer
339 + )
340 +
341 + if llvm_are_manpages_built; then
342 + out+=(
343 + # manpages
344 + docs-dsymutil-man
345 + docs-llvm-dwarfdump-man
346 + docs-llvm-man
347 + )
348 + fi
349 + use doc && out+=(
350 + docs-llvm-html
351 + )
352 +
353 + use binutils-plugin && out+=(
354 + LLVMgold
355 + )
356 + fi
357 +
358 + printf "%s${sep}" "${out[@]}"
359 +}
360 +
361 +multilib_src_configure() {
362 + local ffi_cflags ffi_ldflags
363 + if use libffi; then
364 + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
365 + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
366 + fi
367 +
368 + local libdir=$(get_libdir)
369 + local mycmakeargs=(
370 + # disable appending VCS revision to the version to improve
371 + # direct cache hit ratio
372 + -DLLVM_APPEND_VC_REV=OFF
373 + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
374 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
375 +
376 + -DBUILD_SHARED_LIBS=OFF
377 + -DLLVM_BUILD_LLVM_DYLIB=ON
378 + -DLLVM_LINK_LLVM_DYLIB=ON
379 + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
380 +
381 + # cheap hack: LLVM combines both anyway, and the only difference
382 + # is that the former list is explicitly verified at cmake time
383 + -DLLVM_TARGETS_TO_BUILD=""
384 + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
385 + -DLLVM_INCLUDE_BENCHMARKS=OFF
386 + -DLLVM_INCLUDE_TESTS=$(usex test)
387 + -DLLVM_BUILD_TESTS=$(usex test)
388 +
389 + -DLLVM_ENABLE_FFI=$(usex libffi)
390 + -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
391 + -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
392 + -DLLVM_ENABLE_LIBXML2=$(usex xml)
393 + -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
394 + -DLLVM_ENABLE_LIBPFM=$(usex exegesis)
395 + -DLLVM_ENABLE_Z3_SOLVER=$(usex z3)
396 + -DLLVM_ENABLE_ZSTD=$(usex zstd)
397 +
398 + -DLLVM_HOST_TRIPLE="${CHOST}"
399 +
400 + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
401 + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
402 + # used only for llvm-objdump tool
403 + -DLLVM_HAVE_LIBXAR=$(multilib_native_usex xar 1 0)
404 +
405 + -DPython3_EXECUTABLE="${PYTHON}"
406 +
407 + # disable OCaml bindings (now in dev-ml/llvm-ocaml)
408 + -DOCAMLFIND=NO
409 + )
410 +
411 + local suffix=
412 + if [[ -n ${EGIT_VERSION} && ${EGIT_BRANCH} != release/* ]]; then
413 + # the ABI of the main branch is not stable, so let's include
414 + # the commit id in the SOVERSION to contain the breakage
415 + suffix+="git${EGIT_VERSION::8}"
416 + fi
417 + if [[ $(tc-get-cxx-stdlib) == libc++ ]]; then
418 + # Smart hack: alter version suffix -> SOVERSION when linking
419 + # against libc++. This way we won't end up mixing LLVM libc++
420 + # libraries with libstdc++ clang, and the other way around.
421 + suffix+="+libcxx"
422 + mycmakeargs+=(
423 + -DLLVM_ENABLE_LIBCXX=ON
424 + )
425 + fi
426 + mycmakeargs+=(
427 + -DLLVM_VERSION_SUFFIX="${suffix}"
428 + )
429 +
430 + use test && mycmakeargs+=(
431 + -DLLVM_LIT_ARGS="$(get_lit_flags)"
432 + )
433 +
434 + if multilib_is_native_abi; then
435 + local build_docs=OFF
436 + if llvm_are_manpages_built; then
437 + build_docs=ON
438 + mycmakeargs+=(
439 + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
440 + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
441 + -DSPHINX_WARNINGS_AS_ERRORS=OFF
442 + )
443 + fi
444 +
445 + mycmakeargs+=(
446 + -DLLVM_BUILD_DOCS=${build_docs}
447 + -DLLVM_ENABLE_OCAMLDOC=OFF
448 + -DLLVM_ENABLE_SPHINX=${build_docs}
449 + -DLLVM_ENABLE_DOXYGEN=OFF
450 + -DLLVM_INSTALL_UTILS=ON
451 + )
452 + use binutils-plugin && mycmakeargs+=(
453 + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
454 + )
455 + fi
456 +
457 + if tc-is-cross-compiler; then
458 + local tblgen="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/llvm-tblgen"
459 + [[ -x "${tblgen}" ]] \
460 + || die "${tblgen} not found or usable"
461 + mycmakeargs+=(
462 + -DCMAKE_CROSSCOMPILING=ON
463 + -DLLVM_TABLEGEN="${tblgen}"
464 + )
465 + fi
466 +
467 + # workaround BMI bug in gcc-7 (fixed in 7.4)
468 + # https://bugs.gentoo.org/649880
469 + # apply only to x86, https://bugs.gentoo.org/650506
470 + if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
471 + [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
472 + then
473 + local CFLAGS="${CFLAGS} -mno-bmi"
474 + local CXXFLAGS="${CXXFLAGS} -mno-bmi"
475 + fi
476 +
477 + # LLVM can have very high memory consumption while linking,
478 + # exhausting the limit on 32-bit linker executable
479 + use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
480 +
481 + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
482 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
483 + cmake_src_configure
484 +
485 + grep -q -E "^CMAKE_PROJECT_VERSION_MAJOR(:.*)?=${LLVM_MAJOR}$" \
486 + CMakeCache.txt ||
487 + die "Incorrect version, did you update _LLVM_MASTER_MAJOR?"
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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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/${LLVM_MAJOR}/include "${ED}"/usr/include || die
533 +
534 + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)" )
535 +}
536 +
537 +multilib_src_install_all() {
538 + local revord=$(( 9999 - ${LLVM_MAJOR} ))
539 + newenvd - "60llvm-${revord}" <<-_EOF_
540 + PATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin"
541 + # we need to duplicate it in ROOTPATH for Portage to respect...
542 + ROOTPATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin"
543 + MANPATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
544 + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
545 + _EOF_
546 +
547 + docompress "/usr/lib/llvm/${LLVM_MAJOR}/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/${LLVM_MAJOR}/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 +}