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, 29 Nov 2020 08:59:36
Message-Id: 1606639616.455cdd5ec45add84a4f268c83193f99fcb9ff044.mgorny@gentoo
1 commit: 455cdd5ec45add84a4f268c83193f99fcb9ff044
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sun Nov 29 08:46:56 2020 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Sun Nov 29 08:46:56 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=455cdd5e
7
8 sys-devel/llvm: Revert "Remove 10.0.0"
9
10 Reverts: 32db4790cec79912d5db57e17af7f1fa868f81ae
11 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
12
13 sys-devel/llvm/Manifest | 2 +
14 sys-devel/llvm/llvm-10.0.0.ebuild | 429 ++++++++++++++++++++++++++++++++++++++
15 2 files changed, 431 insertions(+)
16
17 diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
18 index 12547e9bcfb..723fd66fce7 100644
19 --- a/sys-devel/llvm/Manifest
20 +++ b/sys-devel/llvm/Manifest
21 @@ -1,6 +1,8 @@
22 +DIST llvm-10.0.0-manpages.tar.bz2 177084 BLAKE2B 16b38e60fce4d67ac602b317ea7089c095d46b9426ba9940041e65d7ab493f85dba2e94a4aeba7b7c52042f23825efcfcd32a57d306aaf05b4307061a5a8a368 SHA512 eac57ad218ff4c2b5a74e453a29192ee6e911152b668d8a9420b59529d5cae8aa241f2485b4a7ea304acbecc7ecb27391a77552080726432c2b7b59b95fc0bd7
23 DIST llvm-10.0.1-manpages.tar.bz2 180157 BLAKE2B ddf5951c8f5a2a8a80726fd713e6c818c852851a2261e904b484afdb67ac55f2ce10976ca2ca5d81fe2bf4806a72cc7b59f4068741306491a4f39065ca8fb56e SHA512 d3c2470dbd0f3143d64b380f7534ebcacdcf4bc4f140a6014283150007fe615ebd86247cf13b2432165a681614849e8eaab69a8d077f7a51e4e040e28ed33ebc
24 DIST llvm-11.0.0-manpages.tar.bz2 179592 BLAKE2B d03dff5e7426f4c648d6112dee0fa7a91edf41584290c94c3f738fc65fa82fc6ef47b49c245fb0e741bdf267fc64534311194c476ece4b447649ba2250e61430 SHA512 1cf598f50c99a85a35b03398e4768cd1eafec9d602f788d401120adb91b3b59965216ed7102da26b7c2af7e1bbca4bca8f1d43bb687fcd8ed418e2f7076bdce4
25 DIST llvm-9.0.0-manpages.tar.bz2 158546 BLAKE2B eed6235698a0b5993affe305f7fd22cd4cf444adf931275a1685f2049a5f17cf2933907577d9ce142348a3c579769b0436aa2b5a9a953958504125a8c3e83b7d SHA512 64c8d18061eb2870b379a1df485be0b61eac07cb10b3f97347b54b2ee326faa63437ca04466776be282e120dd3f6147e14fffdd38ca370db85748fe5eb54d764
26 +DIST llvmorg-10.0.0.tar.gz 120804856 BLAKE2B 6b0254f5b913398cdcf2b2ec1ff219888706d2b79d5296590934714e42ac79f6a6547941ac2b1d2c4e6313dd18b6c7068e748aa6ac033e49fccbf5d355aa8191 SHA512 baa182d62fef1851836013ae8a1a00861ea89769778d67fb97b407a9de664e6c85da2af9c5b3f75d2bf34ff6b00004e531ca7e4b3115a26c0e61c575cf2303a0
27 DIST llvmorg-10.0.1.tar.gz 120880730 BLAKE2B 30f19f56c4d1f6abcda5fec76256219d1e3c8a6ff1a1f152f94bfe362c07884339fe571ff7fe903ed3b3deb150b2fa868c387887a0dea2930dc08b81db71a5b1 SHA512 48078fff9293a87f1a973f3348f79506f04c3da774295f5eb67d74dd2d1aa94f0973f8ced3f4ab9e8339902071f82c603b43d5608ad7227046c4da769c5d2151
28 DIST llvmorg-11.0.0.tar.gz 122743665 BLAKE2B 3f95570240789fd68ddb747df817f5c6cdc9da40911bbe9ee3531c15ada9165e5002b1c2f778cf8735858485ea05a8754e3d3a5f4b15bdd6cb33d64a14692984 SHA512 b6d38871ccce0e086e27d35e42887618d68e57d8274735c59e3eabc42dee352412489296293f8d5169fe0044936345915ee7da61ebdc64ec10f7737f6ecd90f2
29 DIST llvmorg-9.0.1.tar.gz 113193320 BLAKE2B b86e405f2b8e00436045fd409fe19cdde75c797b1192c62a22b5ec75e6b4dc8e874a0f33008dc31562445e4cbe53a992b6f48c684255a6a1ef261e595b8b161f SHA512 fa88beeaae94b6d0cd9b5ba38658d0ffed8004035d7d8a4f95c3d31a709b88b581ae9bd7761333c8e5375c44b8f6be01768b5a3be901163159d7e6c43b71da59
30
31 diff --git a/sys-devel/llvm/llvm-10.0.0.ebuild b/sys-devel/llvm/llvm-10.0.0.ebuild
32 new file mode 100644
33 index 00000000000..5abee337a22
34 --- /dev/null
35 +++ b/sys-devel/llvm/llvm-10.0.0.ebuild
36 @@ -0,0 +1,429 @@
37 +# Copyright 1999-2020 Gentoo Authors
38 +# Distributed under the terms of the GNU General Public License v2
39 +
40 +EAPI=7
41 +
42 +PYTHON_COMPAT=( python3_{6,7,8} )
43 +inherit cmake-utils llvm.org multilib-minimal multiprocessing \
44 + pax-utils python-any-r1 toolchain-funcs
45 +
46 +MANPAGE_P=llvm-10.0.0-manpages
47 +DESCRIPTION="Low Level Virtual Machine"
48 +HOMEPAGE="https://llvm.org/"
49 +SRC_URI="
50 + !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/${MANPAGE_P}.tar.bz2 )"
51 +LLVM_COMPONENTS=( llvm )
52 +llvm.org_set_globals
53 +
54 +# Those are in lib/Targets, without explicit CMakeLists.txt mention
55 +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC AVR )
56 +# Keep in sync with CMakeLists.txt
57 +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
58 + NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
59 + "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
60 +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
61 +
62 +# Additional licenses:
63 +# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
64 +# 2. xxhash: BSD.
65 +# 3. MD5 code: public-domain.
66 +# 4. ConvertUTF.h: TODO.
67 +
68 +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc"
69 +SLOT="$(ver_cut 1)"
70 +KEYWORDS="amd64 arm arm64 ppc64 x86 ~amd64-linux ~ppc-macos ~x64-macos ~x86-macos"
71 +IUSE="debug doc exegesis gold libedit +libffi ncurses test xar xml z3
72 + kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
73 +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )"
74 +RESTRICT="!test? ( test )"
75 +
76 +RDEPEND="
77 + sys-libs/zlib:0=[${MULTILIB_USEDEP}]
78 + exegesis? ( dev-libs/libpfm:= )
79 + gold? (
80 + || (
81 + >=sys-devel/binutils-2.31.1-r4:*[plugins]
82 + <sys-devel/binutils-2.31.1-r4:*[cxx]
83 + )
84 + )
85 + libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
86 + libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
87 + ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
88 + xar? ( app-arch/xar )
89 + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
90 + z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] )"
91 +DEPEND="${RDEPEND}
92 + gold? ( sys-libs/binutils-libs )"
93 +BDEPEND="
94 + dev-lang/perl
95 + sys-devel/gnuconfig
96 + kernel_Darwin? (
97 + <sys-libs/libcxx-$(ver_cut 1-3).9999
98 + >=sys-devel/binutils-apple-5.1
99 + )
100 + doc? ( $(python_gen_any_dep '
101 + dev-python/recommonmark[${PYTHON_USEDEP}]
102 + dev-python/sphinx[${PYTHON_USEDEP}]
103 + ') )
104 + libffi? ( virtual/pkgconfig )
105 + ${PYTHON_DEPS}"
106 +# There are no file collisions between these versions but having :0
107 +# installed means llvm-config there will take precedence.
108 +RDEPEND="${RDEPEND}
109 + !sys-devel/llvm:0"
110 +PDEPEND="sys-devel/llvm-common
111 + gold? ( >=sys-devel/llvmgold-${SLOT} )"
112 +
113 +# least intrusive of all
114 +CMAKE_BUILD_TYPE=RelWithDebInfo
115 +
116 +python_check_deps() {
117 + use doc || return 0
118 +
119 + has_version -b "dev-python/recommonmark[${PYTHON_USEDEP}]" &&
120 + has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]"
121 +}
122 +
123 +src_unpack() {
124 + llvm.org_src_unpack
125 +
126 + if ! use doc; then
127 + ebegin "Unpacking ${MANPAGE_P}.tar.bz2"
128 + tar -xf "${DISTDIR}/${MANPAGE_P}.tar.bz2" || die
129 + eend ${?}
130 + fi
131 +}
132 +
133 +src_prepare() {
134 + # Fix llvm-config for shared linking and sane flags
135 + # https://bugs.gentoo.org/show_bug.cgi?id=565358
136 + eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
137 +
138 + # disable use of SDK on OSX, bug #568758
139 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
140 +
141 + # Update config.guess to support more systems
142 + cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die
143 +
144 + # User patches + QA
145 + cmake-utils_src_prepare
146 +}
147 +
148 +# Is LLVM being linked against libc++?
149 +is_libcxx_linked() {
150 + local code='#include <ciso646>
151 +#if defined(_LIBCPP_VERSION)
152 + HAVE_LIBCXX
153 +#endif
154 +'
155 + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
156 +
157 + [[ ${out} == *HAVE_LIBCXX* ]]
158 +}
159 +
160 +get_distribution_components() {
161 + local sep=${1-;}
162 +
163 + local out=(
164 + # shared libs
165 + LLVM
166 + LTO
167 + Remarks
168 +
169 + # tools
170 + llvm-config
171 +
172 + # common stuff
173 + cmake-exports
174 + llvm-headers
175 +
176 + # libraries needed for clang-tblgen
177 + LLVMDemangle
178 + LLVMSupport
179 + LLVMTableGen
180 + )
181 +
182 + if multilib_is_native_abi; then
183 + out+=(
184 + # utilities
185 + llvm-tblgen
186 + FileCheck
187 + llvm-PerfectShuffle
188 + count
189 + not
190 + yaml-bench
191 +
192 + # tools
193 + bugpoint
194 + dsymutil
195 + llc
196 + lli
197 + lli-child-target
198 + llvm-addr2line
199 + llvm-ar
200 + llvm-as
201 + llvm-bcanalyzer
202 + llvm-c-test
203 + llvm-cat
204 + llvm-cfi-verify
205 + llvm-config
206 + llvm-cov
207 + llvm-cvtres
208 + llvm-cxxdump
209 + llvm-cxxfilt
210 + llvm-cxxmap
211 + llvm-diff
212 + llvm-dis
213 + llvm-dlltool
214 + llvm-dwarfdump
215 + llvm-dwp
216 + llvm-elfabi
217 + llvm-exegesis
218 + llvm-extract
219 + llvm-ifs
220 + llvm-install-name-tool
221 + llvm-jitlink
222 + llvm-lib
223 + llvm-link
224 + llvm-lipo
225 + llvm-lto
226 + llvm-lto2
227 + llvm-mc
228 + llvm-mca
229 + llvm-modextract
230 + llvm-mt
231 + llvm-nm
232 + llvm-objcopy
233 + llvm-objdump
234 + llvm-opt-report
235 + llvm-pdbutil
236 + llvm-profdata
237 + llvm-ranlib
238 + llvm-rc
239 + llvm-readelf
240 + llvm-readobj
241 + llvm-reduce
242 + llvm-rtdyld
243 + llvm-size
244 + llvm-split
245 + llvm-stress
246 + llvm-strings
247 + llvm-strip
248 + llvm-symbolizer
249 + llvm-undname
250 + llvm-xray
251 + obj2yaml
252 + opt
253 + sancov
254 + sanstats
255 + verify-uselistorder
256 + yaml2obj
257 +
258 + # python modules
259 + opt-viewer
260 + )
261 +
262 + use doc && out+=(
263 + docs-dsymutil-man
264 + docs-llvm-dwarfdump-man
265 + docs-llvm-man
266 + docs-llvm-html
267 + )
268 +
269 + use gold && out+=(
270 + LLVMgold
271 + )
272 + fi
273 +
274 + printf "%s${sep}" "${out[@]}"
275 +}
276 +
277 +multilib_src_configure() {
278 + local ffi_cflags ffi_ldflags
279 + if use libffi; then
280 + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
281 + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
282 + fi
283 +
284 + local libdir=$(get_libdir)
285 + local mycmakeargs=(
286 + # disable appending VCS revision to the version to improve
287 + # direct cache hit ratio
288 + -DLLVM_APPEND_VC_REV=OFF
289 + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
290 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
291 +
292 + -DBUILD_SHARED_LIBS=OFF
293 + -DLLVM_BUILD_LLVM_DYLIB=ON
294 + -DLLVM_LINK_LLVM_DYLIB=ON
295 + -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
296 +
297 + # cheap hack: LLVM combines both anyway, and the only difference
298 + # is that the former list is explicitly verified at cmake time
299 + -DLLVM_TARGETS_TO_BUILD=""
300 + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
301 + -DLLVM_BUILD_TESTS=$(usex test)
302 +
303 + -DLLVM_ENABLE_FFI=$(usex libffi)
304 + -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
305 + -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
306 + -DLLVM_ENABLE_LIBXML2=$(usex xml)
307 + -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
308 + -DLLVM_ENABLE_LIBPFM=$(usex exegesis)
309 + -DLLVM_ENABLE_EH=ON
310 + -DLLVM_ENABLE_RTTI=ON
311 + -DLLVM_ENABLE_Z3_SOLVER=$(usex z3)
312 +
313 + -DLLVM_HOST_TRIPLE="${CHOST}"
314 +
315 + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
316 + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
317 + # used only for llvm-objdump tool
318 + -DHAVE_LIBXAR=$(multilib_native_usex xar 1 0)
319 +
320 + # disable OCaml bindings (now in dev-ml/llvm-ocaml)
321 + -DOCAMLFIND=NO
322 + )
323 +
324 + if is_libcxx_linked; then
325 + # Smart hack: alter version suffix -> SOVERSION when linking
326 + # against libc++. This way we won't end up mixing LLVM libc++
327 + # libraries with libstdc++ clang, and the other way around.
328 + mycmakeargs+=(
329 + -DLLVM_VERSION_SUFFIX="libcxx"
330 + )
331 + fi
332 +
333 +# Note: go bindings have no CMake rules at the moment
334 +# but let's kill the check in case they are introduced
335 +# if ! multilib_is_native_abi || ! use go; then
336 + mycmakeargs+=(
337 + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
338 + )
339 +# fi
340 +
341 + use test && mycmakeargs+=(
342 + -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
343 + )
344 +
345 + if multilib_is_native_abi; then
346 + mycmakeargs+=(
347 + -DLLVM_BUILD_DOCS=$(usex doc)
348 + -DLLVM_ENABLE_OCAMLDOC=OFF
349 + -DLLVM_ENABLE_SPHINX=$(usex doc)
350 + -DLLVM_ENABLE_DOXYGEN=OFF
351 + -DLLVM_INSTALL_UTILS=ON
352 + )
353 + use doc && mycmakeargs+=(
354 + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
355 + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
356 + -DSPHINX_WARNINGS_AS_ERRORS=OFF
357 + )
358 + use gold && mycmakeargs+=(
359 + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
360 + )
361 + fi
362 +
363 + if tc-is-cross-compiler; then
364 + local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
365 + [[ -x "${tblgen}" ]] \
366 + || die "${tblgen} not found or usable"
367 + mycmakeargs+=(
368 + -DCMAKE_CROSSCOMPILING=ON
369 + -DLLVM_TABLEGEN="${tblgen}"
370 + )
371 + fi
372 +
373 + # workaround BMI bug in gcc-7 (fixed in 7.4)
374 + # https://bugs.gentoo.org/649880
375 + # apply only to x86, https://bugs.gentoo.org/650506
376 + if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
377 + [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
378 + then
379 + local CFLAGS="${CFLAGS} -mno-bmi"
380 + local CXXFLAGS="${CXXFLAGS} -mno-bmi"
381 + fi
382 +
383 + # LLVM can have very high memory consumption while linking,
384 + # exhausting the limit on 32-bit linker executable
385 + use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
386 +
387 + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
388 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
389 + cmake-utils_src_configure
390 +}
391 +
392 +multilib_src_compile() {
393 + cmake-utils_src_compile
394 +
395 + pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
396 + pax-mark m "${BUILD_DIR}"/bin/lli
397 + pax-mark m "${BUILD_DIR}"/bin/lli-child-target
398 +
399 + if use test; then
400 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
401 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
402 + pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
403 + fi
404 +}
405 +
406 +multilib_src_test() {
407 + # respect TMPDIR!
408 + local -x LIT_PRESERVES_TMP=1
409 + cmake-utils_src_make check
410 +}
411 +
412 +src_install() {
413 + local MULTILIB_CHOST_TOOLS=(
414 + /usr/lib/llvm/${SLOT}/bin/llvm-config
415 + )
416 +
417 + local MULTILIB_WRAPPED_HEADERS=(
418 + /usr/include/llvm/Config/llvm-config.h
419 + )
420 +
421 + local LLVM_LDPATHS=()
422 + multilib-minimal_src_install
423 +
424 + # move wrapped headers back
425 + mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
426 +}
427 +
428 +multilib_src_install() {
429 + DESTDIR=${D} cmake-utils_src_make install-distribution
430 +
431 + # move headers to /usr/include for wrapping
432 + rm -rf "${ED}"/usr/include || die
433 + mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
434 +
435 + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
436 +}
437 +
438 +multilib_src_install_all() {
439 + local revord=$(( 9999 - ${SLOT} ))
440 + newenvd - "60llvm-${revord}" <<-_EOF_
441 + PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
442 + # we need to duplicate it in ROOTPATH for Portage to respect...
443 + ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
444 + MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
445 + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
446 + _EOF_
447 +
448 + # install pre-generated manpages
449 + if ! use doc; then
450 + # (doman does not support custom paths)
451 + insinto "/usr/lib/llvm/${SLOT}/share/man/man1"
452 + doins "${WORKDIR}/${MANPAGE_P}/llvm"/*.1
453 + fi
454 +
455 + docompress "/usr/lib/llvm/${SLOT}/share/man"
456 +}
457 +
458 +pkg_postinst() {
459 + elog "You can find additional opt-viewer utility scripts in:"
460 + elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/opt-viewer"
461 + elog "To use these scripts, you will need Python along with the following"
462 + elog "packages:"
463 + elog " dev-python/pygments (for opt-viewer)"
464 + elog " dev-python/pyyaml (for all of them)"
465 +}