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