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