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/clang/
Date: Wed, 06 Jan 2021 21:24:01
Message-Id: 1609968210.a8eddca02eba25af102dceea9a82246274ee90ab.mgorny@gentoo
1 commit: a8eddca02eba25af102dceea9a82246274ee90ab
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jan 6 17:18:45 2021 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Wed Jan 6 21:23:30 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8eddca0
7
8 sys-devel/clang: Remove 11.0.1 RCs and live
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-devel/clang/Manifest | 2 -
13 sys-devel/clang/clang-11.0.1.9999.ebuild | 440 -------------------------------
14 sys-devel/clang/clang-11.0.1_rc1.ebuild | 440 -------------------------------
15 sys-devel/clang/clang-11.0.1_rc2.ebuild | 440 -------------------------------
16 4 files changed, 1322 deletions(-)
17
18 diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest
19 index 2fce8c945a8..3fc78aef888 100644
20 --- a/sys-devel/clang/Manifest
21 +++ b/sys-devel/clang/Manifest
22 @@ -4,7 +4,5 @@ DIST llvm-11.0.0-manpages.tar.bz2 179592 BLAKE2B d03dff5e7426f4c648d6112dee0fa7a
23 DIST llvm-9.0.0-manpages.tar.bz2 158546 BLAKE2B eed6235698a0b5993affe305f7fd22cd4cf444adf931275a1685f2049a5f17cf2933907577d9ce142348a3c579769b0436aa2b5a9a953958504125a8c3e83b7d SHA512 64c8d18061eb2870b379a1df485be0b61eac07cb10b3f97347b54b2ee326faa63437ca04466776be282e120dd3f6147e14fffdd38ca370db85748fe5eb54d764
24 DIST llvmorg-10.0.1.tar.gz 120880730 BLAKE2B 30f19f56c4d1f6abcda5fec76256219d1e3c8a6ff1a1f152f94bfe362c07884339fe571ff7fe903ed3b3deb150b2fa868c387887a0dea2930dc08b81db71a5b1 SHA512 48078fff9293a87f1a973f3348f79506f04c3da774295f5eb67d74dd2d1aa94f0973f8ced3f4ab9e8339902071f82c603b43d5608ad7227046c4da769c5d2151
25 DIST llvmorg-11.0.0.tar.gz 122743665 BLAKE2B 3f95570240789fd68ddb747df817f5c6cdc9da40911bbe9ee3531c15ada9165e5002b1c2f778cf8735858485ea05a8754e3d3a5f4b15bdd6cb33d64a14692984 SHA512 b6d38871ccce0e086e27d35e42887618d68e57d8274735c59e3eabc42dee352412489296293f8d5169fe0044936345915ee7da61ebdc64ec10f7737f6ecd90f2
26 -DIST llvmorg-11.0.1-rc1.tar.gz 122777435 BLAKE2B 23b520d33cf4b641027ee52bb10c6171d60356c9167d5b94012929e6e547c526cda1a6177c295ed19592dfb83b020f63b2cef4cabc70ce9a2a8e098fe654a3cd SHA512 605c7bbff1610f335be8ea4f1204df797fed21185a54c77565f6ff2d00794d1967e9c5fab7c87633e242f2f999bdffb76da83f756d261c1ca476114599409ae1
27 -DIST llvmorg-11.0.1-rc2.tar.gz 122793330 BLAKE2B 5d42f7bd7ba253ac3ca08cf9901c79db5b51b86f0f66c8e63f4f9808ca5fb72cacccfad098b4f6701a34b0d77bdd66fe3839a3962a251eae53776240a2e13b06 SHA512 acda5a5be38cc8aae730c34cd1bb8f29a82e2ed3dd9734ca293ff092d5b30c8c255ab3054245b8f6ed541d5dbf8bc674b744bb2f81788db8826f69a204dda0c3
28 DIST llvmorg-11.0.1.tar.gz 122790338 BLAKE2B 0130996b4a8c4d9f757136fd7fb318068c9bfdc565060dec0d4336480c4ab66c4ae3185a7fdb05f13cf9ee8fd4123b09df938881b75d6e5d3689595114b7e32a SHA512 f5e6ef0b3111aae08a89cd01adb2ff4abfa9ef779c68b9190421d0447efd25c2cc00e5aae9f4764805f5fa31434866043d1510ae7389817e28ae53a5442e2fdf
29 DIST llvmorg-9.0.1.tar.gz 113193320 BLAKE2B b86e405f2b8e00436045fd409fe19cdde75c797b1192c62a22b5ec75e6b4dc8e874a0f33008dc31562445e4cbe53a992b6f48c684255a6a1ef261e595b8b161f SHA512 fa88beeaae94b6d0cd9b5ba38658d0ffed8004035d7d8a4f95c3d31a709b88b581ae9bd7761333c8e5375c44b8f6be01768b5a3be901163159d7e6c43b71da59
30
31 diff --git a/sys-devel/clang/clang-11.0.1.9999.ebuild b/sys-devel/clang/clang-11.0.1.9999.ebuild
32 deleted file mode 100644
33 index c5362450b51..00000000000
34 --- a/sys-devel/clang/clang-11.0.1.9999.ebuild
35 +++ /dev/null
36 @@ -1,440 +0,0 @@
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..9} )
43 -inherit cmake llvm llvm.org multilib-minimal pax-utils \
44 - prefix python-single-r1 toolchain-funcs
45 -
46 -DESCRIPTION="C language family frontend for LLVM"
47 -HOMEPAGE="https://llvm.org/"
48 -
49 -# Keep in sync with sys-devel/llvm
50 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC VE )
51 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
52 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
53 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
54 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
55 -
56 -# MSVCSetupApi.h: MIT
57 -# sorttable.js: MIT
58 -
59 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
60 -SLOT="$(ver_cut 1)"
61 -KEYWORDS=""
62 -IUSE="debug default-compiler-rt default-libcxx default-lld
63 - doc +static-analyzer test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
64 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
65 - || ( ${ALL_LLVM_TARGETS[*]} )"
66 -RESTRICT="!test? ( test )"
67 -
68 -RDEPEND="
69 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}]
70 - static-analyzer? ( dev-lang/perl:* )
71 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
72 - ${PYTHON_DEPS}"
73 -for x in "${ALL_LLVM_TARGETS[@]}"; do
74 - RDEPEND+="
75 - ${x}? ( ~sys-devel/llvm-${PV}:${SLOT}[${x}] )"
76 -done
77 -unset x
78 -
79 -DEPEND="${RDEPEND}
80 - test? ( sys-libs/compiler-rt )"
81 -BDEPEND="
82 - >=dev-util/cmake-3.16
83 - doc? ( dev-python/sphinx )
84 - xml? ( virtual/pkgconfig )
85 - ${PYTHON_DEPS}"
86 -RDEPEND="${RDEPEND}
87 - !<sys-devel/llvm-4.0.0_rc:0
88 - !sys-devel/clang:0"
89 -PDEPEND="
90 - sys-devel/clang-common
91 - ~sys-devel/clang-runtime-${PV}
92 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
93 - default-libcxx? ( >=sys-libs/libcxx-${PV} )
94 - default-lld? ( sys-devel/lld )"
95 -
96 -LLVM_COMPONENTS=( clang clang-tools-extra )
97 -LLVM_MANPAGES=build
98 -LLVM_TEST_COMPONENTS=(
99 - llvm/lib/Testing/Support
100 - llvm/utils/{lit,llvm-lit,unittest}
101 - llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
102 -)
103 -llvm.org_set_globals
104 -
105 -# Multilib notes:
106 -# 1. ABI_* flags control ABIs libclang* is built for only.
107 -# 2. clang is always capable of compiling code for all ABIs for enabled
108 -# target. However, you will need appropriate crt* files (installed
109 -# e.g. by sys-devel/gcc and sys-libs/glibc).
110 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
111 -# in the current profile (i.e. alike supported by sys-devel/gcc).
112 -#
113 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
114 -# multilib clang* libraries (not runtime, not wrappers).
115 -
116 -PATCHES=(
117 - "${FILESDIR}"/9999/prefix-dirs.patch
118 -)
119 -
120 -pkg_setup() {
121 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
122 - python-single-r1_pkg_setup
123 -}
124 -
125 -src_prepare() {
126 - # create extra parent dir for relative CLANG_RESOURCE_DIR access
127 - mkdir -p x/y || die
128 - BUILD_DIR=${WORKDIR}/x/y/clang
129 -
130 - llvm.org_src_prepare
131 -
132 - mv ../clang-tools-extra tools/extra || die
133 -
134 - # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
135 - eprefixify \
136 - lib/Frontend/InitHeaderSearch.cpp \
137 - lib/Driver/ToolChains/Darwin.cpp || die
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 - # meta-targets
152 - clang-libraries|distribution)
153 - continue
154 - ;;
155 - # headers for clang-tidy static library
156 - clang-tidy-headers)
157 - continue
158 - ;;
159 - # tools
160 - clang|clangd|clang-*)
161 - ;;
162 - # static libraries
163 - clang*|findAllSymbols)
164 - continue
165 - ;;
166 - # conditional to USE=doc
167 - docs-clang-html|docs-clang-tools-html)
168 - use doc || continue
169 - ;;
170 - esac
171 -
172 - all_targets+=( "${l}" )
173 - fi
174 - done < <(ninja -t targets all)
175 -
176 - while read -r l; do
177 - my_targets+=( "${l}" )
178 - done < <(get_distribution_components $"\n")
179 -
180 - local add=() remove=()
181 - for l in "${all_targets[@]}"; do
182 - if ! has "${l}" "${my_targets[@]}"; then
183 - add+=( "${l}" )
184 - fi
185 - done
186 - for l in "${my_targets[@]}"; do
187 - if ! has "${l}" "${all_targets[@]}"; then
188 - remove+=( "${l}" )
189 - fi
190 - done
191 -
192 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
193 - eqawarn "get_distribution_components() is outdated!"
194 - eqawarn " Add: ${add[*]}"
195 - eqawarn "Remove: ${remove[*]}"
196 - fi
197 - cd - >/dev/null || die
198 - fi
199 -}
200 -
201 -get_distribution_components() {
202 - local sep=${1-;}
203 -
204 - local out=(
205 - # common stuff
206 - clang-cmake-exports
207 - clang-headers
208 - clang-resource-headers
209 - libclang-headers
210 -
211 - # libs
212 - clang-cpp
213 - libclang
214 - )
215 -
216 - if multilib_is_native_abi; then
217 - out+=(
218 - # common stuff
219 - bash-autocomplete
220 - libclang-python-bindings
221 -
222 - # tools
223 - c-index-test
224 - clang
225 - clang-format
226 - clang-offload-bundler
227 - clang-offload-wrapper
228 - clang-refactor
229 - clang-rename
230 - clang-scan-deps
231 - diagtool
232 - hmaptool
233 -
234 - # extra tools
235 - clang-apply-replacements
236 - clang-change-namespace
237 - clang-doc
238 - clang-include-fixer
239 - clang-move
240 - clang-query
241 - clang-reorder-fields
242 - clang-tidy
243 - clangd
244 - find-all-symbols
245 - modularize
246 - pp-trace
247 - )
248 -
249 - if llvm_are_manpages_built; then
250 - out+=(
251 - # manpages
252 - docs-clang-man
253 - docs-clang-tools-man
254 - )
255 - fi
256 -
257 - use doc && out+=(
258 - docs-clang-html
259 - docs-clang-tools-html
260 - )
261 -
262 - use static-analyzer && out+=(
263 - clang-check
264 - clang-extdef-mapping
265 - scan-build
266 - scan-view
267 - )
268 - fi
269 -
270 - printf "%s${sep}" "${out[@]}"
271 -}
272 -
273 -multilib_src_configure() {
274 - local llvm_version=$(llvm-config --version) || die
275 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
276 -
277 - local mycmakeargs=(
278 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
279 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
280 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
281 - # relative to bindir
282 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
283 -
284 - -DBUILD_SHARED_LIBS=OFF
285 - -DCLANG_LINK_CLANG_DYLIB=ON
286 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
287 -
288 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
289 - -DLLVM_BUILD_TESTS=$(usex test)
290 -
291 - # these are not propagated reliably, so redefine them
292 - -DLLVM_ENABLE_EH=ON
293 - -DLLVM_ENABLE_RTTI=ON
294 -
295 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
296 - # libgomp support fails to find headers without explicit -I
297 - # furthermore, it provides only syntax checking
298 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
299 -
300 - # override default stdlib and rtlib
301 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
302 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
303 - -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "")
304 -
305 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
306 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
307 -
308 - -DPython3_EXECUTABLE="${PYTHON}"
309 - )
310 - use test && mycmakeargs+=(
311 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
312 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
313 - )
314 -
315 - if multilib_is_native_abi; then
316 - local build_docs=OFF
317 - if llvm_are_manpages_built; then
318 - build_docs=ON
319 - mycmakeargs+=(
320 - -DLLVM_BUILD_DOCS=ON
321 - -DLLVM_ENABLE_SPHINX=ON
322 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
323 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
324 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
325 - )
326 - fi
327 -
328 - mycmakeargs+=(
329 - # normally copied from LLVM_INCLUDE_DOCS but the latter
330 - # is lacking value in stand-alone builds
331 - -DCLANG_INCLUDE_DOCS=${build_docs}
332 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
333 - )
334 - else
335 - mycmakeargs+=(
336 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
337 - )
338 - fi
339 -
340 - if [[ -n ${EPREFIX} ]]; then
341 - mycmakeargs+=(
342 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
343 - )
344 - fi
345 -
346 - if tc-is-cross-compiler; then
347 - [[ -x "/usr/bin/clang-tblgen" ]] \
348 - || die "/usr/bin/clang-tblgen not found or usable"
349 - mycmakeargs+=(
350 - -DCMAKE_CROSSCOMPILING=ON
351 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
352 - )
353 - fi
354 -
355 - # LLVM can have very high memory consumption while linking,
356 - # exhausting the limit on 32-bit linker executable
357 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
358 -
359 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
360 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
361 - cmake_src_configure
362 -
363 - multilib_is_native_abi && check_distribution_components
364 -}
365 -
366 -multilib_src_compile() {
367 - cmake_build distribution
368 -
369 - # provide a symlink for tests
370 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
371 - mkdir -p "${WORKDIR}"/lib || die
372 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
373 - fi
374 -}
375 -
376 -multilib_src_test() {
377 - # respect TMPDIR!
378 - local -x LIT_PRESERVES_TMP=1
379 - cmake_build check-clang
380 - multilib_is_native_abi &&
381 - cmake_build check-clang-tools check-clangd
382 -}
383 -
384 -src_install() {
385 - MULTILIB_WRAPPED_HEADERS=(
386 - /usr/include/clang/Config/config.h
387 - )
388 -
389 - multilib-minimal_src_install
390 -
391 - # Move runtime headers to /usr/lib/clang, where they belong
392 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
393 - # move (remaining) wrapped headers back
394 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
395 -
396 - # Apply CHOST and version suffix to clang tools
397 - # note: we use two version components here (vs 3 in runtime path)
398 - local llvm_version=$(llvm-config --version) || die
399 - local clang_version=$(ver_cut 1 "${llvm_version}")
400 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
401 - local clang_tools=( clang clang++ clang-cl clang-cpp )
402 - local abi i
403 -
404 - # cmake gives us:
405 - # - clang-X
406 - # - clang -> clang-X
407 - # - clang++, clang-cl, clang-cpp -> clang
408 - # we want to have:
409 - # - clang-X
410 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
411 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
412 - # also in CHOST variant
413 - for i in "${clang_tools[@]:1}"; do
414 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
415 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
416 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
417 - done
418 -
419 - # now create target symlinks for all supported ABIs
420 - for abi in $(get_all_abis); do
421 - local abi_chost=$(get_abi_CHOST "${abi}")
422 - for i in "${clang_tools[@]}"; do
423 - dosym "${i}-${clang_version}" \
424 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
425 - dosym "${abi_chost}-${i}-${clang_version}" \
426 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
427 - done
428 - done
429 -
430 - # Remove unnecessary headers on FreeBSD, bug #417171
431 - if use kernel_FreeBSD; then
432 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
433 - fi
434 -}
435 -
436 -multilib_src_install() {
437 - DESTDIR=${D} cmake_build install-distribution
438 -
439 - # move headers to /usr/include for wrapping & ABI mismatch checks
440 - # (also drop the version suffix from runtime headers)
441 - rm -rf "${ED}"/usr/include || die
442 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
443 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
444 -}
445 -
446 -multilib_src_install_all() {
447 - python_fix_shebang "${ED}"
448 - if use static-analyzer; then
449 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
450 - fi
451 -
452 - docompress "/usr/lib/llvm/${SLOT}/share/man"
453 - llvm_install_manpages
454 - # match 'html' non-compression
455 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
456 - # +x for some reason; TODO: investigate
457 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
458 -}
459 -
460 -pkg_postinst() {
461 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
462 - eselect compiler-shadow update all
463 - fi
464 -
465 - elog "You can find additional utility scripts in:"
466 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
467 - elog "Some of them are vim integration scripts (with instructions inside)."
468 - elog "The run-clang-tidy.py script requires the following additional package:"
469 - elog " dev-python/pyyaml"
470 -}
471 -
472 -pkg_postrm() {
473 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
474 - eselect compiler-shadow clean all
475 - fi
476 -}
477
478 diff --git a/sys-devel/clang/clang-11.0.1_rc1.ebuild b/sys-devel/clang/clang-11.0.1_rc1.ebuild
479 deleted file mode 100644
480 index c5362450b51..00000000000
481 --- a/sys-devel/clang/clang-11.0.1_rc1.ebuild
482 +++ /dev/null
483 @@ -1,440 +0,0 @@
484 -# Copyright 1999-2020 Gentoo Authors
485 -# Distributed under the terms of the GNU General Public License v2
486 -
487 -EAPI=7
488 -
489 -PYTHON_COMPAT=( python3_{6..9} )
490 -inherit cmake llvm llvm.org multilib-minimal pax-utils \
491 - prefix python-single-r1 toolchain-funcs
492 -
493 -DESCRIPTION="C language family frontend for LLVM"
494 -HOMEPAGE="https://llvm.org/"
495 -
496 -# Keep in sync with sys-devel/llvm
497 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC VE )
498 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
499 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
500 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
501 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
502 -
503 -# MSVCSetupApi.h: MIT
504 -# sorttable.js: MIT
505 -
506 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
507 -SLOT="$(ver_cut 1)"
508 -KEYWORDS=""
509 -IUSE="debug default-compiler-rt default-libcxx default-lld
510 - doc +static-analyzer test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
511 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
512 - || ( ${ALL_LLVM_TARGETS[*]} )"
513 -RESTRICT="!test? ( test )"
514 -
515 -RDEPEND="
516 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}]
517 - static-analyzer? ( dev-lang/perl:* )
518 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
519 - ${PYTHON_DEPS}"
520 -for x in "${ALL_LLVM_TARGETS[@]}"; do
521 - RDEPEND+="
522 - ${x}? ( ~sys-devel/llvm-${PV}:${SLOT}[${x}] )"
523 -done
524 -unset x
525 -
526 -DEPEND="${RDEPEND}
527 - test? ( sys-libs/compiler-rt )"
528 -BDEPEND="
529 - >=dev-util/cmake-3.16
530 - doc? ( dev-python/sphinx )
531 - xml? ( virtual/pkgconfig )
532 - ${PYTHON_DEPS}"
533 -RDEPEND="${RDEPEND}
534 - !<sys-devel/llvm-4.0.0_rc:0
535 - !sys-devel/clang:0"
536 -PDEPEND="
537 - sys-devel/clang-common
538 - ~sys-devel/clang-runtime-${PV}
539 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
540 - default-libcxx? ( >=sys-libs/libcxx-${PV} )
541 - default-lld? ( sys-devel/lld )"
542 -
543 -LLVM_COMPONENTS=( clang clang-tools-extra )
544 -LLVM_MANPAGES=build
545 -LLVM_TEST_COMPONENTS=(
546 - llvm/lib/Testing/Support
547 - llvm/utils/{lit,llvm-lit,unittest}
548 - llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
549 -)
550 -llvm.org_set_globals
551 -
552 -# Multilib notes:
553 -# 1. ABI_* flags control ABIs libclang* is built for only.
554 -# 2. clang is always capable of compiling code for all ABIs for enabled
555 -# target. However, you will need appropriate crt* files (installed
556 -# e.g. by sys-devel/gcc and sys-libs/glibc).
557 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
558 -# in the current profile (i.e. alike supported by sys-devel/gcc).
559 -#
560 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
561 -# multilib clang* libraries (not runtime, not wrappers).
562 -
563 -PATCHES=(
564 - "${FILESDIR}"/9999/prefix-dirs.patch
565 -)
566 -
567 -pkg_setup() {
568 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
569 - python-single-r1_pkg_setup
570 -}
571 -
572 -src_prepare() {
573 - # create extra parent dir for relative CLANG_RESOURCE_DIR access
574 - mkdir -p x/y || die
575 - BUILD_DIR=${WORKDIR}/x/y/clang
576 -
577 - llvm.org_src_prepare
578 -
579 - mv ../clang-tools-extra tools/extra || die
580 -
581 - # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
582 - eprefixify \
583 - lib/Frontend/InitHeaderSearch.cpp \
584 - lib/Driver/ToolChains/Darwin.cpp || die
585 -}
586 -
587 -check_distribution_components() {
588 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
589 - local all_targets=() my_targets=() l
590 - cd "${BUILD_DIR}" || die
591 -
592 - while read -r l; do
593 - if [[ ${l} == install-*-stripped:* ]]; then
594 - l=${l#install-}
595 - l=${l%%-stripped*}
596 -
597 - case ${l} in
598 - # meta-targets
599 - clang-libraries|distribution)
600 - continue
601 - ;;
602 - # headers for clang-tidy static library
603 - clang-tidy-headers)
604 - continue
605 - ;;
606 - # tools
607 - clang|clangd|clang-*)
608 - ;;
609 - # static libraries
610 - clang*|findAllSymbols)
611 - continue
612 - ;;
613 - # conditional to USE=doc
614 - docs-clang-html|docs-clang-tools-html)
615 - use doc || continue
616 - ;;
617 - esac
618 -
619 - all_targets+=( "${l}" )
620 - fi
621 - done < <(ninja -t targets all)
622 -
623 - while read -r l; do
624 - my_targets+=( "${l}" )
625 - done < <(get_distribution_components $"\n")
626 -
627 - local add=() remove=()
628 - for l in "${all_targets[@]}"; do
629 - if ! has "${l}" "${my_targets[@]}"; then
630 - add+=( "${l}" )
631 - fi
632 - done
633 - for l in "${my_targets[@]}"; do
634 - if ! has "${l}" "${all_targets[@]}"; then
635 - remove+=( "${l}" )
636 - fi
637 - done
638 -
639 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
640 - eqawarn "get_distribution_components() is outdated!"
641 - eqawarn " Add: ${add[*]}"
642 - eqawarn "Remove: ${remove[*]}"
643 - fi
644 - cd - >/dev/null || die
645 - fi
646 -}
647 -
648 -get_distribution_components() {
649 - local sep=${1-;}
650 -
651 - local out=(
652 - # common stuff
653 - clang-cmake-exports
654 - clang-headers
655 - clang-resource-headers
656 - libclang-headers
657 -
658 - # libs
659 - clang-cpp
660 - libclang
661 - )
662 -
663 - if multilib_is_native_abi; then
664 - out+=(
665 - # common stuff
666 - bash-autocomplete
667 - libclang-python-bindings
668 -
669 - # tools
670 - c-index-test
671 - clang
672 - clang-format
673 - clang-offload-bundler
674 - clang-offload-wrapper
675 - clang-refactor
676 - clang-rename
677 - clang-scan-deps
678 - diagtool
679 - hmaptool
680 -
681 - # extra tools
682 - clang-apply-replacements
683 - clang-change-namespace
684 - clang-doc
685 - clang-include-fixer
686 - clang-move
687 - clang-query
688 - clang-reorder-fields
689 - clang-tidy
690 - clangd
691 - find-all-symbols
692 - modularize
693 - pp-trace
694 - )
695 -
696 - if llvm_are_manpages_built; then
697 - out+=(
698 - # manpages
699 - docs-clang-man
700 - docs-clang-tools-man
701 - )
702 - fi
703 -
704 - use doc && out+=(
705 - docs-clang-html
706 - docs-clang-tools-html
707 - )
708 -
709 - use static-analyzer && out+=(
710 - clang-check
711 - clang-extdef-mapping
712 - scan-build
713 - scan-view
714 - )
715 - fi
716 -
717 - printf "%s${sep}" "${out[@]}"
718 -}
719 -
720 -multilib_src_configure() {
721 - local llvm_version=$(llvm-config --version) || die
722 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
723 -
724 - local mycmakeargs=(
725 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
726 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
727 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
728 - # relative to bindir
729 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
730 -
731 - -DBUILD_SHARED_LIBS=OFF
732 - -DCLANG_LINK_CLANG_DYLIB=ON
733 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
734 -
735 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
736 - -DLLVM_BUILD_TESTS=$(usex test)
737 -
738 - # these are not propagated reliably, so redefine them
739 - -DLLVM_ENABLE_EH=ON
740 - -DLLVM_ENABLE_RTTI=ON
741 -
742 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
743 - # libgomp support fails to find headers without explicit -I
744 - # furthermore, it provides only syntax checking
745 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
746 -
747 - # override default stdlib and rtlib
748 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
749 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
750 - -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "")
751 -
752 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
753 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
754 -
755 - -DPython3_EXECUTABLE="${PYTHON}"
756 - )
757 - use test && mycmakeargs+=(
758 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
759 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
760 - )
761 -
762 - if multilib_is_native_abi; then
763 - local build_docs=OFF
764 - if llvm_are_manpages_built; then
765 - build_docs=ON
766 - mycmakeargs+=(
767 - -DLLVM_BUILD_DOCS=ON
768 - -DLLVM_ENABLE_SPHINX=ON
769 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
770 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
771 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
772 - )
773 - fi
774 -
775 - mycmakeargs+=(
776 - # normally copied from LLVM_INCLUDE_DOCS but the latter
777 - # is lacking value in stand-alone builds
778 - -DCLANG_INCLUDE_DOCS=${build_docs}
779 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
780 - )
781 - else
782 - mycmakeargs+=(
783 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
784 - )
785 - fi
786 -
787 - if [[ -n ${EPREFIX} ]]; then
788 - mycmakeargs+=(
789 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
790 - )
791 - fi
792 -
793 - if tc-is-cross-compiler; then
794 - [[ -x "/usr/bin/clang-tblgen" ]] \
795 - || die "/usr/bin/clang-tblgen not found or usable"
796 - mycmakeargs+=(
797 - -DCMAKE_CROSSCOMPILING=ON
798 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
799 - )
800 - fi
801 -
802 - # LLVM can have very high memory consumption while linking,
803 - # exhausting the limit on 32-bit linker executable
804 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
805 -
806 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
807 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
808 - cmake_src_configure
809 -
810 - multilib_is_native_abi && check_distribution_components
811 -}
812 -
813 -multilib_src_compile() {
814 - cmake_build distribution
815 -
816 - # provide a symlink for tests
817 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
818 - mkdir -p "${WORKDIR}"/lib || die
819 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
820 - fi
821 -}
822 -
823 -multilib_src_test() {
824 - # respect TMPDIR!
825 - local -x LIT_PRESERVES_TMP=1
826 - cmake_build check-clang
827 - multilib_is_native_abi &&
828 - cmake_build check-clang-tools check-clangd
829 -}
830 -
831 -src_install() {
832 - MULTILIB_WRAPPED_HEADERS=(
833 - /usr/include/clang/Config/config.h
834 - )
835 -
836 - multilib-minimal_src_install
837 -
838 - # Move runtime headers to /usr/lib/clang, where they belong
839 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
840 - # move (remaining) wrapped headers back
841 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
842 -
843 - # Apply CHOST and version suffix to clang tools
844 - # note: we use two version components here (vs 3 in runtime path)
845 - local llvm_version=$(llvm-config --version) || die
846 - local clang_version=$(ver_cut 1 "${llvm_version}")
847 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
848 - local clang_tools=( clang clang++ clang-cl clang-cpp )
849 - local abi i
850 -
851 - # cmake gives us:
852 - # - clang-X
853 - # - clang -> clang-X
854 - # - clang++, clang-cl, clang-cpp -> clang
855 - # we want to have:
856 - # - clang-X
857 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
858 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
859 - # also in CHOST variant
860 - for i in "${clang_tools[@]:1}"; do
861 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
862 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
863 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
864 - done
865 -
866 - # now create target symlinks for all supported ABIs
867 - for abi in $(get_all_abis); do
868 - local abi_chost=$(get_abi_CHOST "${abi}")
869 - for i in "${clang_tools[@]}"; do
870 - dosym "${i}-${clang_version}" \
871 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
872 - dosym "${abi_chost}-${i}-${clang_version}" \
873 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
874 - done
875 - done
876 -
877 - # Remove unnecessary headers on FreeBSD, bug #417171
878 - if use kernel_FreeBSD; then
879 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
880 - fi
881 -}
882 -
883 -multilib_src_install() {
884 - DESTDIR=${D} cmake_build install-distribution
885 -
886 - # move headers to /usr/include for wrapping & ABI mismatch checks
887 - # (also drop the version suffix from runtime headers)
888 - rm -rf "${ED}"/usr/include || die
889 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
890 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
891 -}
892 -
893 -multilib_src_install_all() {
894 - python_fix_shebang "${ED}"
895 - if use static-analyzer; then
896 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
897 - fi
898 -
899 - docompress "/usr/lib/llvm/${SLOT}/share/man"
900 - llvm_install_manpages
901 - # match 'html' non-compression
902 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
903 - # +x for some reason; TODO: investigate
904 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
905 -}
906 -
907 -pkg_postinst() {
908 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
909 - eselect compiler-shadow update all
910 - fi
911 -
912 - elog "You can find additional utility scripts in:"
913 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
914 - elog "Some of them are vim integration scripts (with instructions inside)."
915 - elog "The run-clang-tidy.py script requires the following additional package:"
916 - elog " dev-python/pyyaml"
917 -}
918 -
919 -pkg_postrm() {
920 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
921 - eselect compiler-shadow clean all
922 - fi
923 -}
924
925 diff --git a/sys-devel/clang/clang-11.0.1_rc2.ebuild b/sys-devel/clang/clang-11.0.1_rc2.ebuild
926 deleted file mode 100644
927 index c5362450b51..00000000000
928 --- a/sys-devel/clang/clang-11.0.1_rc2.ebuild
929 +++ /dev/null
930 @@ -1,440 +0,0 @@
931 -# Copyright 1999-2020 Gentoo Authors
932 -# Distributed under the terms of the GNU General Public License v2
933 -
934 -EAPI=7
935 -
936 -PYTHON_COMPAT=( python3_{6..9} )
937 -inherit cmake llvm llvm.org multilib-minimal pax-utils \
938 - prefix python-single-r1 toolchain-funcs
939 -
940 -DESCRIPTION="C language family frontend for LLVM"
941 -HOMEPAGE="https://llvm.org/"
942 -
943 -# Keep in sync with sys-devel/llvm
944 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC VE )
945 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
946 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
947 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
948 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
949 -
950 -# MSVCSetupApi.h: MIT
951 -# sorttable.js: MIT
952 -
953 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
954 -SLOT="$(ver_cut 1)"
955 -KEYWORDS=""
956 -IUSE="debug default-compiler-rt default-libcxx default-lld
957 - doc +static-analyzer test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
958 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
959 - || ( ${ALL_LLVM_TARGETS[*]} )"
960 -RESTRICT="!test? ( test )"
961 -
962 -RDEPEND="
963 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}]
964 - static-analyzer? ( dev-lang/perl:* )
965 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
966 - ${PYTHON_DEPS}"
967 -for x in "${ALL_LLVM_TARGETS[@]}"; do
968 - RDEPEND+="
969 - ${x}? ( ~sys-devel/llvm-${PV}:${SLOT}[${x}] )"
970 -done
971 -unset x
972 -
973 -DEPEND="${RDEPEND}
974 - test? ( sys-libs/compiler-rt )"
975 -BDEPEND="
976 - >=dev-util/cmake-3.16
977 - doc? ( dev-python/sphinx )
978 - xml? ( virtual/pkgconfig )
979 - ${PYTHON_DEPS}"
980 -RDEPEND="${RDEPEND}
981 - !<sys-devel/llvm-4.0.0_rc:0
982 - !sys-devel/clang:0"
983 -PDEPEND="
984 - sys-devel/clang-common
985 - ~sys-devel/clang-runtime-${PV}
986 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
987 - default-libcxx? ( >=sys-libs/libcxx-${PV} )
988 - default-lld? ( sys-devel/lld )"
989 -
990 -LLVM_COMPONENTS=( clang clang-tools-extra )
991 -LLVM_MANPAGES=build
992 -LLVM_TEST_COMPONENTS=(
993 - llvm/lib/Testing/Support
994 - llvm/utils/{lit,llvm-lit,unittest}
995 - llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
996 -)
997 -llvm.org_set_globals
998 -
999 -# Multilib notes:
1000 -# 1. ABI_* flags control ABIs libclang* is built for only.
1001 -# 2. clang is always capable of compiling code for all ABIs for enabled
1002 -# target. However, you will need appropriate crt* files (installed
1003 -# e.g. by sys-devel/gcc and sys-libs/glibc).
1004 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
1005 -# in the current profile (i.e. alike supported by sys-devel/gcc).
1006 -#
1007 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
1008 -# multilib clang* libraries (not runtime, not wrappers).
1009 -
1010 -PATCHES=(
1011 - "${FILESDIR}"/9999/prefix-dirs.patch
1012 -)
1013 -
1014 -pkg_setup() {
1015 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
1016 - python-single-r1_pkg_setup
1017 -}
1018 -
1019 -src_prepare() {
1020 - # create extra parent dir for relative CLANG_RESOURCE_DIR access
1021 - mkdir -p x/y || die
1022 - BUILD_DIR=${WORKDIR}/x/y/clang
1023 -
1024 - llvm.org_src_prepare
1025 -
1026 - mv ../clang-tools-extra tools/extra || die
1027 -
1028 - # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
1029 - eprefixify \
1030 - lib/Frontend/InitHeaderSearch.cpp \
1031 - lib/Driver/ToolChains/Darwin.cpp || die
1032 -}
1033 -
1034 -check_distribution_components() {
1035 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
1036 - local all_targets=() my_targets=() l
1037 - cd "${BUILD_DIR}" || die
1038 -
1039 - while read -r l; do
1040 - if [[ ${l} == install-*-stripped:* ]]; then
1041 - l=${l#install-}
1042 - l=${l%%-stripped*}
1043 -
1044 - case ${l} in
1045 - # meta-targets
1046 - clang-libraries|distribution)
1047 - continue
1048 - ;;
1049 - # headers for clang-tidy static library
1050 - clang-tidy-headers)
1051 - continue
1052 - ;;
1053 - # tools
1054 - clang|clangd|clang-*)
1055 - ;;
1056 - # static libraries
1057 - clang*|findAllSymbols)
1058 - continue
1059 - ;;
1060 - # conditional to USE=doc
1061 - docs-clang-html|docs-clang-tools-html)
1062 - use doc || continue
1063 - ;;
1064 - esac
1065 -
1066 - all_targets+=( "${l}" )
1067 - fi
1068 - done < <(ninja -t targets all)
1069 -
1070 - while read -r l; do
1071 - my_targets+=( "${l}" )
1072 - done < <(get_distribution_components $"\n")
1073 -
1074 - local add=() remove=()
1075 - for l in "${all_targets[@]}"; do
1076 - if ! has "${l}" "${my_targets[@]}"; then
1077 - add+=( "${l}" )
1078 - fi
1079 - done
1080 - for l in "${my_targets[@]}"; do
1081 - if ! has "${l}" "${all_targets[@]}"; then
1082 - remove+=( "${l}" )
1083 - fi
1084 - done
1085 -
1086 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
1087 - eqawarn "get_distribution_components() is outdated!"
1088 - eqawarn " Add: ${add[*]}"
1089 - eqawarn "Remove: ${remove[*]}"
1090 - fi
1091 - cd - >/dev/null || die
1092 - fi
1093 -}
1094 -
1095 -get_distribution_components() {
1096 - local sep=${1-;}
1097 -
1098 - local out=(
1099 - # common stuff
1100 - clang-cmake-exports
1101 - clang-headers
1102 - clang-resource-headers
1103 - libclang-headers
1104 -
1105 - # libs
1106 - clang-cpp
1107 - libclang
1108 - )
1109 -
1110 - if multilib_is_native_abi; then
1111 - out+=(
1112 - # common stuff
1113 - bash-autocomplete
1114 - libclang-python-bindings
1115 -
1116 - # tools
1117 - c-index-test
1118 - clang
1119 - clang-format
1120 - clang-offload-bundler
1121 - clang-offload-wrapper
1122 - clang-refactor
1123 - clang-rename
1124 - clang-scan-deps
1125 - diagtool
1126 - hmaptool
1127 -
1128 - # extra tools
1129 - clang-apply-replacements
1130 - clang-change-namespace
1131 - clang-doc
1132 - clang-include-fixer
1133 - clang-move
1134 - clang-query
1135 - clang-reorder-fields
1136 - clang-tidy
1137 - clangd
1138 - find-all-symbols
1139 - modularize
1140 - pp-trace
1141 - )
1142 -
1143 - if llvm_are_manpages_built; then
1144 - out+=(
1145 - # manpages
1146 - docs-clang-man
1147 - docs-clang-tools-man
1148 - )
1149 - fi
1150 -
1151 - use doc && out+=(
1152 - docs-clang-html
1153 - docs-clang-tools-html
1154 - )
1155 -
1156 - use static-analyzer && out+=(
1157 - clang-check
1158 - clang-extdef-mapping
1159 - scan-build
1160 - scan-view
1161 - )
1162 - fi
1163 -
1164 - printf "%s${sep}" "${out[@]}"
1165 -}
1166 -
1167 -multilib_src_configure() {
1168 - local llvm_version=$(llvm-config --version) || die
1169 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
1170 -
1171 - local mycmakeargs=(
1172 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
1173 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
1174 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
1175 - # relative to bindir
1176 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
1177 -
1178 - -DBUILD_SHARED_LIBS=OFF
1179 - -DCLANG_LINK_CLANG_DYLIB=ON
1180 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
1181 -
1182 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
1183 - -DLLVM_BUILD_TESTS=$(usex test)
1184 -
1185 - # these are not propagated reliably, so redefine them
1186 - -DLLVM_ENABLE_EH=ON
1187 - -DLLVM_ENABLE_RTTI=ON
1188 -
1189 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
1190 - # libgomp support fails to find headers without explicit -I
1191 - # furthermore, it provides only syntax checking
1192 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
1193 -
1194 - # override default stdlib and rtlib
1195 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
1196 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
1197 - -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "")
1198 -
1199 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
1200 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
1201 -
1202 - -DPython3_EXECUTABLE="${PYTHON}"
1203 - )
1204 - use test && mycmakeargs+=(
1205 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
1206 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
1207 - )
1208 -
1209 - if multilib_is_native_abi; then
1210 - local build_docs=OFF
1211 - if llvm_are_manpages_built; then
1212 - build_docs=ON
1213 - mycmakeargs+=(
1214 - -DLLVM_BUILD_DOCS=ON
1215 - -DLLVM_ENABLE_SPHINX=ON
1216 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
1217 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
1218 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
1219 - )
1220 - fi
1221 -
1222 - mycmakeargs+=(
1223 - # normally copied from LLVM_INCLUDE_DOCS but the latter
1224 - # is lacking value in stand-alone builds
1225 - -DCLANG_INCLUDE_DOCS=${build_docs}
1226 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
1227 - )
1228 - else
1229 - mycmakeargs+=(
1230 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
1231 - )
1232 - fi
1233 -
1234 - if [[ -n ${EPREFIX} ]]; then
1235 - mycmakeargs+=(
1236 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
1237 - )
1238 - fi
1239 -
1240 - if tc-is-cross-compiler; then
1241 - [[ -x "/usr/bin/clang-tblgen" ]] \
1242 - || die "/usr/bin/clang-tblgen not found or usable"
1243 - mycmakeargs+=(
1244 - -DCMAKE_CROSSCOMPILING=ON
1245 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
1246 - )
1247 - fi
1248 -
1249 - # LLVM can have very high memory consumption while linking,
1250 - # exhausting the limit on 32-bit linker executable
1251 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
1252 -
1253 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
1254 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
1255 - cmake_src_configure
1256 -
1257 - multilib_is_native_abi && check_distribution_components
1258 -}
1259 -
1260 -multilib_src_compile() {
1261 - cmake_build distribution
1262 -
1263 - # provide a symlink for tests
1264 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
1265 - mkdir -p "${WORKDIR}"/lib || die
1266 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
1267 - fi
1268 -}
1269 -
1270 -multilib_src_test() {
1271 - # respect TMPDIR!
1272 - local -x LIT_PRESERVES_TMP=1
1273 - cmake_build check-clang
1274 - multilib_is_native_abi &&
1275 - cmake_build check-clang-tools check-clangd
1276 -}
1277 -
1278 -src_install() {
1279 - MULTILIB_WRAPPED_HEADERS=(
1280 - /usr/include/clang/Config/config.h
1281 - )
1282 -
1283 - multilib-minimal_src_install
1284 -
1285 - # Move runtime headers to /usr/lib/clang, where they belong
1286 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
1287 - # move (remaining) wrapped headers back
1288 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
1289 -
1290 - # Apply CHOST and version suffix to clang tools
1291 - # note: we use two version components here (vs 3 in runtime path)
1292 - local llvm_version=$(llvm-config --version) || die
1293 - local clang_version=$(ver_cut 1 "${llvm_version}")
1294 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
1295 - local clang_tools=( clang clang++ clang-cl clang-cpp )
1296 - local abi i
1297 -
1298 - # cmake gives us:
1299 - # - clang-X
1300 - # - clang -> clang-X
1301 - # - clang++, clang-cl, clang-cpp -> clang
1302 - # we want to have:
1303 - # - clang-X
1304 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
1305 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
1306 - # also in CHOST variant
1307 - for i in "${clang_tools[@]:1}"; do
1308 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
1309 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
1310 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
1311 - done
1312 -
1313 - # now create target symlinks for all supported ABIs
1314 - for abi in $(get_all_abis); do
1315 - local abi_chost=$(get_abi_CHOST "${abi}")
1316 - for i in "${clang_tools[@]}"; do
1317 - dosym "${i}-${clang_version}" \
1318 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
1319 - dosym "${abi_chost}-${i}-${clang_version}" \
1320 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
1321 - done
1322 - done
1323 -
1324 - # Remove unnecessary headers on FreeBSD, bug #417171
1325 - if use kernel_FreeBSD; then
1326 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
1327 - fi
1328 -}
1329 -
1330 -multilib_src_install() {
1331 - DESTDIR=${D} cmake_build install-distribution
1332 -
1333 - # move headers to /usr/include for wrapping & ABI mismatch checks
1334 - # (also drop the version suffix from runtime headers)
1335 - rm -rf "${ED}"/usr/include || die
1336 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
1337 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
1338 -}
1339 -
1340 -multilib_src_install_all() {
1341 - python_fix_shebang "${ED}"
1342 - if use static-analyzer; then
1343 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
1344 - fi
1345 -
1346 - docompress "/usr/lib/llvm/${SLOT}/share/man"
1347 - llvm_install_manpages
1348 - # match 'html' non-compression
1349 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
1350 - # +x for some reason; TODO: investigate
1351 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
1352 -}
1353 -
1354 -pkg_postinst() {
1355 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
1356 - eselect compiler-shadow update all
1357 - fi
1358 -
1359 - elog "You can find additional utility scripts in:"
1360 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
1361 - elog "Some of them are vim integration scripts (with instructions inside)."
1362 - elog "The run-clang-tidy.py script requires the following additional package:"
1363 - elog " dev-python/pyyaml"
1364 -}
1365 -
1366 -pkg_postrm() {
1367 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
1368 - eselect compiler-shadow clean all
1369 - fi
1370 -}