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: Thu, 15 Apr 2021 20:44:54
Message-Id: 1618519471.4f43c6db099188b2fb1fb7b67abb909168412941.mgorny@gentoo
1 commit: 4f43c6db099188b2fb1fb7b67abb909168412941
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Thu Apr 15 20:37:39 2021 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Thu Apr 15 20:44:31 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4f43c6db
7
8 sys-devel/clang: Remove 12.0.0 RCs
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-devel/clang/Manifest | 4 -
13 sys-devel/clang/clang-12.0.0_rc2.ebuild | 435 --------------------------------
14 sys-devel/clang/clang-12.0.0_rc3.ebuild | 435 --------------------------------
15 sys-devel/clang/clang-12.0.0_rc4.ebuild | 435 --------------------------------
16 sys-devel/clang/clang-12.0.0_rc5.ebuild | 435 --------------------------------
17 5 files changed, 1744 deletions(-)
18
19 diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest
20 index 0d44846d4d5..e71645f0183 100644
21 --- a/sys-devel/clang/Manifest
22 +++ b/sys-devel/clang/Manifest
23 @@ -8,8 +8,4 @@ DIST llvmorg-10.0.1.tar.gz 120880730 BLAKE2B 30f19f56c4d1f6abcda5fec76256219d1e3
24 DIST llvmorg-11.0.0.tar.gz 122743665 BLAKE2B 3f95570240789fd68ddb747df817f5c6cdc9da40911bbe9ee3531c15ada9165e5002b1c2f778cf8735858485ea05a8754e3d3a5f4b15bdd6cb33d64a14692984 SHA512 b6d38871ccce0e086e27d35e42887618d68e57d8274735c59e3eabc42dee352412489296293f8d5169fe0044936345915ee7da61ebdc64ec10f7737f6ecd90f2
25 DIST llvmorg-11.0.1.tar.gz 122790338 BLAKE2B 0130996b4a8c4d9f757136fd7fb318068c9bfdc565060dec0d4336480c4ab66c4ae3185a7fdb05f13cf9ee8fd4123b09df938881b75d6e5d3689595114b7e32a SHA512 f5e6ef0b3111aae08a89cd01adb2ff4abfa9ef779c68b9190421d0447efd25c2cc00e5aae9f4764805f5fa31434866043d1510ae7389817e28ae53a5442e2fdf
26 DIST llvmorg-11.1.0.tar.gz 122776532 BLAKE2B ca842ff4afff8f44c82b5e7383962a9c45ca1c93b64fa4c6ebcd70a1d3849dbad2b8e4e24fba02d144c6266d7fab3607ebc6999b28c229cb35256cf40f26a985 SHA512 9a8ce022a935eed42fa71a224f2a207122aadcbef58ee855fdb4825f879e7d028e4dcff22c19b9d336db1c8bf63fb84372d44981acf84615f757e54306c92b81
27 -DIST llvmorg-12.0.0-rc2.tar.gz 134242619 BLAKE2B bb741a311db608fc2ba7eeaab71c5c9f2a430f7fee3f0c5c4334e5c14caa19738d18c87b568de963d57d9b53e808ac412cf8554eca7fcae9ecca65aa4442e197 SHA512 d8f9b3dfeb0fe9b91eb7f49da393784333044db2653373fbb168afd3c8d50f3e3ec7a7b8f44df522d0facafbfe4cfc4d9e2906d19f1e6feb0bdc569b6c10a17d
28 -DIST llvmorg-12.0.0-rc3.tar.gz 134244008 BLAKE2B ed09aa361b264387711ba1ee2e4b01c0c78ad97391df95e2542d4edc31f657cc33c8a2a45de63eb421908d5dadd9392a736610fbb04b3ecbd336d6514a649da8 SHA512 1fae53c6f255160cf4be53848b8b92c8b162ddcfbddf1bf0017faf249859040c15c862c4b52bc3ba894149139afb814e0674da88793ddebfc0756ba3aa7626ce
29 -DIST llvmorg-12.0.0-rc4.tar.gz 134245842 BLAKE2B 860a0551a42e2c6a28f213c151076c5ae64a9d85f7bfb2e2df4737acd5fe968f29d368a689d9a857e01038587e872722d216f044b3f665857d7ed71122fe334e SHA512 20e4440664227c9ea7af84df3643599cd7c96f5e2b6404c42be0ce0f0d7f989f5c7b8df1f1ba93d1473d3a30325cda5a53d3900c0229ccb042b365583b5aa846
30 -DIST llvmorg-12.0.0-rc5.tar.gz 134247991 BLAKE2B 9721e211d39611f9c48b57386fb57c1dcf964c39ff5f32c593a6390c06659fcd5a1f76063004d2ecd3d1af32281a69994c7478b7fdfacd9f50ebf5fbb2050a71 SHA512 a289fdc55c25454e8cbfd370387fdd11c7555d03b3c479213e37dd01189c077d67bd04b8cab62ce82f3746877f5f02619afb3a5110191048511efee38c191d16
31 DIST llvmorg-12.0.0.tar.gz 134226215 BLAKE2B f9c3ba8c58571855caa4f206fd285c9b5be66672fb0814cb8bc0964a051f57f5d35013aa1e27cbda502652b37df1ec23474129109e76a42066847860db441dbe SHA512 0cff02155c5ac0d6db2b72d60d9819d5b5dd859663b45f721b1c7540239c2fceb1f57d9173f6870c49de851c242ed8e85c5c6d6577a1f8092a7c5dcd12513b26
32
33 diff --git a/sys-devel/clang/clang-12.0.0_rc2.ebuild b/sys-devel/clang/clang-12.0.0_rc2.ebuild
34 deleted file mode 100644
35 index f0164c6eaea..00000000000
36 --- a/sys-devel/clang/clang-12.0.0_rc2.ebuild
37 +++ /dev/null
38 @@ -1,435 +0,0 @@
39 -# Copyright 1999-2021 Gentoo Authors
40 -# Distributed under the terms of the GNU General Public License v2
41 -
42 -EAPI=7
43 -
44 -PYTHON_COMPAT=( python3_{7..9} )
45 -inherit cmake llvm llvm.org multilib-minimal pax-utils \
46 - prefix python-single-r1 toolchain-funcs
47 -
48 -DESCRIPTION="C language family frontend for LLVM"
49 -HOMEPAGE="https://llvm.org/"
50 -
51 -# Keep in sync with sys-devel/llvm
52 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY VE )
53 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
54 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
55 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
56 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
57 -
58 -# MSVCSetupApi.h: MIT
59 -# sorttable.js: MIT
60 -
61 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
62 -SLOT="$(ver_cut 1)"
63 -KEYWORDS=""
64 -IUSE="debug default-compiler-rt default-libcxx default-lld
65 - doc +static-analyzer test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
66 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
67 - || ( ${ALL_LLVM_TARGETS[*]} )"
68 -RESTRICT="!test? ( test )"
69 -
70 -RDEPEND="
71 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}]
72 - static-analyzer? ( dev-lang/perl:* )
73 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
74 - ${PYTHON_DEPS}"
75 -for x in "${ALL_LLVM_TARGETS[@]}"; do
76 - RDEPEND+="
77 - ${x}? ( ~sys-devel/llvm-${PV}:${SLOT}[${x}] )"
78 -done
79 -unset x
80 -
81 -DEPEND="${RDEPEND}"
82 -BDEPEND="
83 - >=dev-util/cmake-3.16
84 - doc? ( 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 -LLVM_COMPONENTS=( clang clang-tools-extra )
98 -LLVM_MANPAGES=build
99 -LLVM_TEST_COMPONENTS=(
100 - llvm/lib/Testing/Support
101 - llvm/utils/{lit,llvm-lit,unittest}
102 - llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
103 -)
104 -llvm.org_set_globals
105 -
106 -# Multilib notes:
107 -# 1. ABI_* flags control ABIs libclang* is built for only.
108 -# 2. clang is always capable of compiling code for all ABIs for enabled
109 -# target. However, you will need appropriate crt* files (installed
110 -# e.g. by sys-devel/gcc and sys-libs/glibc).
111 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
112 -# in the current profile (i.e. alike supported by sys-devel/gcc).
113 -#
114 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
115 -# multilib clang* libraries (not runtime, not wrappers).
116 -
117 -PATCHES=(
118 - "${FILESDIR}"/9999/prefix-dirs.patch
119 -)
120 -
121 -pkg_setup() {
122 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
123 - python-single-r1_pkg_setup
124 -}
125 -
126 -src_prepare() {
127 - # create extra parent dir for relative CLANG_RESOURCE_DIR access
128 - mkdir -p x/y || die
129 - BUILD_DIR=${WORKDIR}/x/y/clang
130 -
131 - llvm.org_src_prepare
132 -
133 - # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
134 - eprefixify \
135 - lib/Frontend/InitHeaderSearch.cpp \
136 - lib/Driver/ToolChains/Darwin.cpp || die
137 -}
138 -
139 -check_distribution_components() {
140 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
141 - local all_targets=() my_targets=() l
142 - cd "${BUILD_DIR}" || die
143 -
144 - while read -r l; do
145 - if [[ ${l} == install-*-stripped:* ]]; then
146 - l=${l#install-}
147 - l=${l%%-stripped*}
148 -
149 - case ${l} in
150 - # meta-targets
151 - clang-libraries|distribution)
152 - continue
153 - ;;
154 - # headers for clang-tidy static library
155 - clang-tidy-headers)
156 - continue
157 - ;;
158 - # tools
159 - clang|clangd|clang-*)
160 - ;;
161 - # static libraries
162 - clang*|findAllSymbols)
163 - continue
164 - ;;
165 - # conditional to USE=doc
166 - docs-clang-html|docs-clang-tools-html)
167 - use doc || continue
168 - ;;
169 - esac
170 -
171 - all_targets+=( "${l}" )
172 - fi
173 - done < <(ninja -t targets all)
174 -
175 - while read -r l; do
176 - my_targets+=( "${l}" )
177 - done < <(get_distribution_components $"\n")
178 -
179 - local add=() remove=()
180 - for l in "${all_targets[@]}"; do
181 - if ! has "${l}" "${my_targets[@]}"; then
182 - add+=( "${l}" )
183 - fi
184 - done
185 - for l in "${my_targets[@]}"; do
186 - if ! has "${l}" "${all_targets[@]}"; then
187 - remove+=( "${l}" )
188 - fi
189 - done
190 -
191 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
192 - eqawarn "get_distribution_components() is outdated!"
193 - eqawarn " Add: ${add[*]}"
194 - eqawarn "Remove: ${remove[*]}"
195 - fi
196 - cd - >/dev/null || die
197 - fi
198 -}
199 -
200 -get_distribution_components() {
201 - local sep=${1-;}
202 -
203 - local out=(
204 - # common stuff
205 - clang-cmake-exports
206 - clang-headers
207 - clang-resource-headers
208 - libclang-headers
209 -
210 - # libs
211 - clang-cpp
212 - libclang
213 - )
214 -
215 - if multilib_is_native_abi; then
216 - out+=(
217 - # common stuff
218 - bash-autocomplete
219 - libclang-python-bindings
220 -
221 - # tools
222 - c-index-test
223 - clang
224 - clang-format
225 - clang-offload-bundler
226 - clang-offload-wrapper
227 - clang-refactor
228 - clang-rename
229 - clang-scan-deps
230 - diagtool
231 - hmaptool
232 -
233 - # extra tools
234 - clang-apply-replacements
235 - clang-change-namespace
236 - clang-doc
237 - clang-include-fixer
238 - clang-move
239 - clang-query
240 - clang-reorder-fields
241 - clang-tidy
242 - clangd
243 - find-all-symbols
244 - modularize
245 - pp-trace
246 - )
247 -
248 - if llvm_are_manpages_built; then
249 - out+=(
250 - # manpages
251 - docs-clang-man
252 - docs-clang-tools-man
253 - )
254 - fi
255 -
256 - use doc && out+=(
257 - docs-clang-html
258 - docs-clang-tools-html
259 - )
260 -
261 - use static-analyzer && out+=(
262 - clang-check
263 - clang-extdef-mapping
264 - scan-build
265 - scan-view
266 - )
267 - fi
268 -
269 - printf "%s${sep}" "${out[@]}"
270 -}
271 -
272 -multilib_src_configure() {
273 - local llvm_version=$(llvm-config --version) || die
274 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
275 -
276 - local mycmakeargs=(
277 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
278 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
279 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
280 - # relative to bindir
281 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
282 -
283 - -DBUILD_SHARED_LIBS=OFF
284 - -DCLANG_LINK_CLANG_DYLIB=ON
285 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
286 -
287 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
288 - -DLLVM_BUILD_TESTS=$(usex test)
289 -
290 - # these are not propagated reliably, so redefine them
291 - -DLLVM_ENABLE_EH=ON
292 - -DLLVM_ENABLE_RTTI=ON
293 -
294 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
295 - # libgomp support fails to find headers without explicit -I
296 - # furthermore, it provides only syntax checking
297 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
298 -
299 - # override default stdlib and rtlib
300 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
301 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
302 - -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "")
303 -
304 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
305 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
306 -
307 - -DPython3_EXECUTABLE="${PYTHON}"
308 - )
309 - use test && mycmakeargs+=(
310 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
311 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
312 - )
313 -
314 - if multilib_is_native_abi; then
315 - local build_docs=OFF
316 - if llvm_are_manpages_built; then
317 - build_docs=ON
318 - mycmakeargs+=(
319 - -DLLVM_BUILD_DOCS=ON
320 - -DLLVM_ENABLE_SPHINX=ON
321 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
322 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
323 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
324 - )
325 - fi
326 - mycmakeargs+=(
327 - -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
328 - -DCLANG_INCLUDE_DOCS=${build_docs}
329 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
330 - )
331 - else
332 - mycmakeargs+=(
333 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
334 - )
335 - fi
336 -
337 - if [[ -n ${EPREFIX} ]]; then
338 - mycmakeargs+=(
339 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
340 - )
341 - fi
342 -
343 - if tc-is-cross-compiler; then
344 - [[ -x "/usr/bin/clang-tblgen" ]] \
345 - || die "/usr/bin/clang-tblgen not found or usable"
346 - mycmakeargs+=(
347 - -DCMAKE_CROSSCOMPILING=ON
348 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
349 - )
350 - fi
351 -
352 - # LLVM can have very high memory consumption while linking,
353 - # exhausting the limit on 32-bit linker executable
354 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
355 -
356 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
357 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
358 - cmake_src_configure
359 -
360 - multilib_is_native_abi && check_distribution_components
361 -}
362 -
363 -multilib_src_compile() {
364 - cmake_build distribution
365 -
366 - # provide a symlink for tests
367 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
368 - mkdir -p "${WORKDIR}"/lib || die
369 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
370 - fi
371 -}
372 -
373 -multilib_src_test() {
374 - # respect TMPDIR!
375 - local -x LIT_PRESERVES_TMP=1
376 - cmake_build check-clang
377 - multilib_is_native_abi &&
378 - cmake_build check-clang-tools check-clangd
379 -}
380 -
381 -src_install() {
382 - MULTILIB_WRAPPED_HEADERS=(
383 - /usr/include/clang/Config/config.h
384 - )
385 -
386 - multilib-minimal_src_install
387 -
388 - # Move runtime headers to /usr/lib/clang, where they belong
389 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
390 - # move (remaining) wrapped headers back
391 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
392 -
393 - # Apply CHOST and version suffix to clang tools
394 - # note: we use two version components here (vs 3 in runtime path)
395 - local llvm_version=$(llvm-config --version) || die
396 - local clang_version=$(ver_cut 1 "${llvm_version}")
397 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
398 - local clang_tools=( clang clang++ clang-cl clang-cpp )
399 - local abi i
400 -
401 - # cmake gives us:
402 - # - clang-X
403 - # - clang -> clang-X
404 - # - clang++, clang-cl, clang-cpp -> clang
405 - # we want to have:
406 - # - clang-X
407 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
408 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
409 - # also in CHOST variant
410 - for i in "${clang_tools[@]:1}"; do
411 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
412 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
413 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
414 - done
415 -
416 - # now create target symlinks for all supported ABIs
417 - for abi in $(get_all_abis); do
418 - local abi_chost=$(get_abi_CHOST "${abi}")
419 - for i in "${clang_tools[@]}"; do
420 - dosym "${i}-${clang_version}" \
421 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
422 - dosym "${abi_chost}-${i}-${clang_version}" \
423 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
424 - done
425 - done
426 -
427 - # Remove unnecessary headers on FreeBSD, bug #417171
428 - if use kernel_FreeBSD; then
429 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
430 - fi
431 -}
432 -
433 -multilib_src_install() {
434 - DESTDIR=${D} cmake_build install-distribution
435 -
436 - # move headers to /usr/include for wrapping & ABI mismatch checks
437 - # (also drop the version suffix from runtime headers)
438 - rm -rf "${ED}"/usr/include || die
439 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
440 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
441 -}
442 -
443 -multilib_src_install_all() {
444 - python_fix_shebang "${ED}"
445 - if use static-analyzer; then
446 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
447 - fi
448 -
449 - docompress "/usr/lib/llvm/${SLOT}/share/man"
450 - llvm_install_manpages
451 - # match 'html' non-compression
452 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
453 - # +x for some reason; TODO: investigate
454 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
455 -}
456 -
457 -pkg_postinst() {
458 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
459 - eselect compiler-shadow update all
460 - fi
461 -
462 - elog "You can find additional utility scripts in:"
463 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
464 - elog "Some of them are vim integration scripts (with instructions inside)."
465 - elog "The run-clang-tidy.py script requires the following additional package:"
466 - elog " dev-python/pyyaml"
467 -}
468 -
469 -pkg_postrm() {
470 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
471 - eselect compiler-shadow clean all
472 - fi
473 -}
474
475 diff --git a/sys-devel/clang/clang-12.0.0_rc3.ebuild b/sys-devel/clang/clang-12.0.0_rc3.ebuild
476 deleted file mode 100644
477 index f0164c6eaea..00000000000
478 --- a/sys-devel/clang/clang-12.0.0_rc3.ebuild
479 +++ /dev/null
480 @@ -1,435 +0,0 @@
481 -# Copyright 1999-2021 Gentoo Authors
482 -# Distributed under the terms of the GNU General Public License v2
483 -
484 -EAPI=7
485 -
486 -PYTHON_COMPAT=( python3_{7..9} )
487 -inherit cmake llvm llvm.org multilib-minimal pax-utils \
488 - prefix python-single-r1 toolchain-funcs
489 -
490 -DESCRIPTION="C language family frontend for LLVM"
491 -HOMEPAGE="https://llvm.org/"
492 -
493 -# Keep in sync with sys-devel/llvm
494 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY VE )
495 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
496 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
497 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
498 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
499 -
500 -# MSVCSetupApi.h: MIT
501 -# sorttable.js: MIT
502 -
503 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
504 -SLOT="$(ver_cut 1)"
505 -KEYWORDS=""
506 -IUSE="debug default-compiler-rt default-libcxx default-lld
507 - doc +static-analyzer test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
508 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
509 - || ( ${ALL_LLVM_TARGETS[*]} )"
510 -RESTRICT="!test? ( test )"
511 -
512 -RDEPEND="
513 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}]
514 - static-analyzer? ( dev-lang/perl:* )
515 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
516 - ${PYTHON_DEPS}"
517 -for x in "${ALL_LLVM_TARGETS[@]}"; do
518 - RDEPEND+="
519 - ${x}? ( ~sys-devel/llvm-${PV}:${SLOT}[${x}] )"
520 -done
521 -unset x
522 -
523 -DEPEND="${RDEPEND}"
524 -BDEPEND="
525 - >=dev-util/cmake-3.16
526 - doc? ( dev-python/sphinx )
527 - xml? ( virtual/pkgconfig )
528 - ${PYTHON_DEPS}"
529 -RDEPEND="${RDEPEND}
530 - !<sys-devel/llvm-4.0.0_rc:0
531 - !sys-devel/clang:0"
532 -PDEPEND="
533 - sys-devel/clang-common
534 - ~sys-devel/clang-runtime-${PV}
535 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
536 - default-libcxx? ( >=sys-libs/libcxx-${PV} )
537 - default-lld? ( sys-devel/lld )"
538 -
539 -LLVM_COMPONENTS=( clang clang-tools-extra )
540 -LLVM_MANPAGES=build
541 -LLVM_TEST_COMPONENTS=(
542 - llvm/lib/Testing/Support
543 - llvm/utils/{lit,llvm-lit,unittest}
544 - llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
545 -)
546 -llvm.org_set_globals
547 -
548 -# Multilib notes:
549 -# 1. ABI_* flags control ABIs libclang* is built for only.
550 -# 2. clang is always capable of compiling code for all ABIs for enabled
551 -# target. However, you will need appropriate crt* files (installed
552 -# e.g. by sys-devel/gcc and sys-libs/glibc).
553 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
554 -# in the current profile (i.e. alike supported by sys-devel/gcc).
555 -#
556 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
557 -# multilib clang* libraries (not runtime, not wrappers).
558 -
559 -PATCHES=(
560 - "${FILESDIR}"/9999/prefix-dirs.patch
561 -)
562 -
563 -pkg_setup() {
564 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
565 - python-single-r1_pkg_setup
566 -}
567 -
568 -src_prepare() {
569 - # create extra parent dir for relative CLANG_RESOURCE_DIR access
570 - mkdir -p x/y || die
571 - BUILD_DIR=${WORKDIR}/x/y/clang
572 -
573 - llvm.org_src_prepare
574 -
575 - # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
576 - eprefixify \
577 - lib/Frontend/InitHeaderSearch.cpp \
578 - lib/Driver/ToolChains/Darwin.cpp || die
579 -}
580 -
581 -check_distribution_components() {
582 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
583 - local all_targets=() my_targets=() l
584 - cd "${BUILD_DIR}" || die
585 -
586 - while read -r l; do
587 - if [[ ${l} == install-*-stripped:* ]]; then
588 - l=${l#install-}
589 - l=${l%%-stripped*}
590 -
591 - case ${l} in
592 - # meta-targets
593 - clang-libraries|distribution)
594 - continue
595 - ;;
596 - # headers for clang-tidy static library
597 - clang-tidy-headers)
598 - continue
599 - ;;
600 - # tools
601 - clang|clangd|clang-*)
602 - ;;
603 - # static libraries
604 - clang*|findAllSymbols)
605 - continue
606 - ;;
607 - # conditional to USE=doc
608 - docs-clang-html|docs-clang-tools-html)
609 - use doc || continue
610 - ;;
611 - esac
612 -
613 - all_targets+=( "${l}" )
614 - fi
615 - done < <(ninja -t targets all)
616 -
617 - while read -r l; do
618 - my_targets+=( "${l}" )
619 - done < <(get_distribution_components $"\n")
620 -
621 - local add=() remove=()
622 - for l in "${all_targets[@]}"; do
623 - if ! has "${l}" "${my_targets[@]}"; then
624 - add+=( "${l}" )
625 - fi
626 - done
627 - for l in "${my_targets[@]}"; do
628 - if ! has "${l}" "${all_targets[@]}"; then
629 - remove+=( "${l}" )
630 - fi
631 - done
632 -
633 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
634 - eqawarn "get_distribution_components() is outdated!"
635 - eqawarn " Add: ${add[*]}"
636 - eqawarn "Remove: ${remove[*]}"
637 - fi
638 - cd - >/dev/null || die
639 - fi
640 -}
641 -
642 -get_distribution_components() {
643 - local sep=${1-;}
644 -
645 - local out=(
646 - # common stuff
647 - clang-cmake-exports
648 - clang-headers
649 - clang-resource-headers
650 - libclang-headers
651 -
652 - # libs
653 - clang-cpp
654 - libclang
655 - )
656 -
657 - if multilib_is_native_abi; then
658 - out+=(
659 - # common stuff
660 - bash-autocomplete
661 - libclang-python-bindings
662 -
663 - # tools
664 - c-index-test
665 - clang
666 - clang-format
667 - clang-offload-bundler
668 - clang-offload-wrapper
669 - clang-refactor
670 - clang-rename
671 - clang-scan-deps
672 - diagtool
673 - hmaptool
674 -
675 - # extra tools
676 - clang-apply-replacements
677 - clang-change-namespace
678 - clang-doc
679 - clang-include-fixer
680 - clang-move
681 - clang-query
682 - clang-reorder-fields
683 - clang-tidy
684 - clangd
685 - find-all-symbols
686 - modularize
687 - pp-trace
688 - )
689 -
690 - if llvm_are_manpages_built; then
691 - out+=(
692 - # manpages
693 - docs-clang-man
694 - docs-clang-tools-man
695 - )
696 - fi
697 -
698 - use doc && out+=(
699 - docs-clang-html
700 - docs-clang-tools-html
701 - )
702 -
703 - use static-analyzer && out+=(
704 - clang-check
705 - clang-extdef-mapping
706 - scan-build
707 - scan-view
708 - )
709 - fi
710 -
711 - printf "%s${sep}" "${out[@]}"
712 -}
713 -
714 -multilib_src_configure() {
715 - local llvm_version=$(llvm-config --version) || die
716 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
717 -
718 - local mycmakeargs=(
719 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
720 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
721 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
722 - # relative to bindir
723 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
724 -
725 - -DBUILD_SHARED_LIBS=OFF
726 - -DCLANG_LINK_CLANG_DYLIB=ON
727 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
728 -
729 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
730 - -DLLVM_BUILD_TESTS=$(usex test)
731 -
732 - # these are not propagated reliably, so redefine them
733 - -DLLVM_ENABLE_EH=ON
734 - -DLLVM_ENABLE_RTTI=ON
735 -
736 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
737 - # libgomp support fails to find headers without explicit -I
738 - # furthermore, it provides only syntax checking
739 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
740 -
741 - # override default stdlib and rtlib
742 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
743 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
744 - -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "")
745 -
746 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
747 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
748 -
749 - -DPython3_EXECUTABLE="${PYTHON}"
750 - )
751 - use test && mycmakeargs+=(
752 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
753 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
754 - )
755 -
756 - if multilib_is_native_abi; then
757 - local build_docs=OFF
758 - if llvm_are_manpages_built; then
759 - build_docs=ON
760 - mycmakeargs+=(
761 - -DLLVM_BUILD_DOCS=ON
762 - -DLLVM_ENABLE_SPHINX=ON
763 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
764 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
765 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
766 - )
767 - fi
768 - mycmakeargs+=(
769 - -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
770 - -DCLANG_INCLUDE_DOCS=${build_docs}
771 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
772 - )
773 - else
774 - mycmakeargs+=(
775 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
776 - )
777 - fi
778 -
779 - if [[ -n ${EPREFIX} ]]; then
780 - mycmakeargs+=(
781 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
782 - )
783 - fi
784 -
785 - if tc-is-cross-compiler; then
786 - [[ -x "/usr/bin/clang-tblgen" ]] \
787 - || die "/usr/bin/clang-tblgen not found or usable"
788 - mycmakeargs+=(
789 - -DCMAKE_CROSSCOMPILING=ON
790 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
791 - )
792 - fi
793 -
794 - # LLVM can have very high memory consumption while linking,
795 - # exhausting the limit on 32-bit linker executable
796 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
797 -
798 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
799 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
800 - cmake_src_configure
801 -
802 - multilib_is_native_abi && check_distribution_components
803 -}
804 -
805 -multilib_src_compile() {
806 - cmake_build distribution
807 -
808 - # provide a symlink for tests
809 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
810 - mkdir -p "${WORKDIR}"/lib || die
811 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
812 - fi
813 -}
814 -
815 -multilib_src_test() {
816 - # respect TMPDIR!
817 - local -x LIT_PRESERVES_TMP=1
818 - cmake_build check-clang
819 - multilib_is_native_abi &&
820 - cmake_build check-clang-tools check-clangd
821 -}
822 -
823 -src_install() {
824 - MULTILIB_WRAPPED_HEADERS=(
825 - /usr/include/clang/Config/config.h
826 - )
827 -
828 - multilib-minimal_src_install
829 -
830 - # Move runtime headers to /usr/lib/clang, where they belong
831 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
832 - # move (remaining) wrapped headers back
833 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
834 -
835 - # Apply CHOST and version suffix to clang tools
836 - # note: we use two version components here (vs 3 in runtime path)
837 - local llvm_version=$(llvm-config --version) || die
838 - local clang_version=$(ver_cut 1 "${llvm_version}")
839 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
840 - local clang_tools=( clang clang++ clang-cl clang-cpp )
841 - local abi i
842 -
843 - # cmake gives us:
844 - # - clang-X
845 - # - clang -> clang-X
846 - # - clang++, clang-cl, clang-cpp -> clang
847 - # we want to have:
848 - # - clang-X
849 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
850 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
851 - # also in CHOST variant
852 - for i in "${clang_tools[@]:1}"; do
853 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
854 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
855 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
856 - done
857 -
858 - # now create target symlinks for all supported ABIs
859 - for abi in $(get_all_abis); do
860 - local abi_chost=$(get_abi_CHOST "${abi}")
861 - for i in "${clang_tools[@]}"; do
862 - dosym "${i}-${clang_version}" \
863 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
864 - dosym "${abi_chost}-${i}-${clang_version}" \
865 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
866 - done
867 - done
868 -
869 - # Remove unnecessary headers on FreeBSD, bug #417171
870 - if use kernel_FreeBSD; then
871 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
872 - fi
873 -}
874 -
875 -multilib_src_install() {
876 - DESTDIR=${D} cmake_build install-distribution
877 -
878 - # move headers to /usr/include for wrapping & ABI mismatch checks
879 - # (also drop the version suffix from runtime headers)
880 - rm -rf "${ED}"/usr/include || die
881 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
882 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
883 -}
884 -
885 -multilib_src_install_all() {
886 - python_fix_shebang "${ED}"
887 - if use static-analyzer; then
888 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
889 - fi
890 -
891 - docompress "/usr/lib/llvm/${SLOT}/share/man"
892 - llvm_install_manpages
893 - # match 'html' non-compression
894 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
895 - # +x for some reason; TODO: investigate
896 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
897 -}
898 -
899 -pkg_postinst() {
900 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
901 - eselect compiler-shadow update all
902 - fi
903 -
904 - elog "You can find additional utility scripts in:"
905 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
906 - elog "Some of them are vim integration scripts (with instructions inside)."
907 - elog "The run-clang-tidy.py script requires the following additional package:"
908 - elog " dev-python/pyyaml"
909 -}
910 -
911 -pkg_postrm() {
912 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
913 - eselect compiler-shadow clean all
914 - fi
915 -}
916
917 diff --git a/sys-devel/clang/clang-12.0.0_rc4.ebuild b/sys-devel/clang/clang-12.0.0_rc4.ebuild
918 deleted file mode 100644
919 index f0164c6eaea..00000000000
920 --- a/sys-devel/clang/clang-12.0.0_rc4.ebuild
921 +++ /dev/null
922 @@ -1,435 +0,0 @@
923 -# Copyright 1999-2021 Gentoo Authors
924 -# Distributed under the terms of the GNU General Public License v2
925 -
926 -EAPI=7
927 -
928 -PYTHON_COMPAT=( python3_{7..9} )
929 -inherit cmake llvm llvm.org multilib-minimal pax-utils \
930 - prefix python-single-r1 toolchain-funcs
931 -
932 -DESCRIPTION="C language family frontend for LLVM"
933 -HOMEPAGE="https://llvm.org/"
934 -
935 -# Keep in sync with sys-devel/llvm
936 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY VE )
937 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
938 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
939 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
940 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
941 -
942 -# MSVCSetupApi.h: MIT
943 -# sorttable.js: MIT
944 -
945 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
946 -SLOT="$(ver_cut 1)"
947 -KEYWORDS=""
948 -IUSE="debug default-compiler-rt default-libcxx default-lld
949 - doc +static-analyzer test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
950 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
951 - || ( ${ALL_LLVM_TARGETS[*]} )"
952 -RESTRICT="!test? ( test )"
953 -
954 -RDEPEND="
955 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}]
956 - static-analyzer? ( dev-lang/perl:* )
957 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
958 - ${PYTHON_DEPS}"
959 -for x in "${ALL_LLVM_TARGETS[@]}"; do
960 - RDEPEND+="
961 - ${x}? ( ~sys-devel/llvm-${PV}:${SLOT}[${x}] )"
962 -done
963 -unset x
964 -
965 -DEPEND="${RDEPEND}"
966 -BDEPEND="
967 - >=dev-util/cmake-3.16
968 - doc? ( dev-python/sphinx )
969 - xml? ( virtual/pkgconfig )
970 - ${PYTHON_DEPS}"
971 -RDEPEND="${RDEPEND}
972 - !<sys-devel/llvm-4.0.0_rc:0
973 - !sys-devel/clang:0"
974 -PDEPEND="
975 - sys-devel/clang-common
976 - ~sys-devel/clang-runtime-${PV}
977 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
978 - default-libcxx? ( >=sys-libs/libcxx-${PV} )
979 - default-lld? ( sys-devel/lld )"
980 -
981 -LLVM_COMPONENTS=( clang clang-tools-extra )
982 -LLVM_MANPAGES=build
983 -LLVM_TEST_COMPONENTS=(
984 - llvm/lib/Testing/Support
985 - llvm/utils/{lit,llvm-lit,unittest}
986 - llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
987 -)
988 -llvm.org_set_globals
989 -
990 -# Multilib notes:
991 -# 1. ABI_* flags control ABIs libclang* is built for only.
992 -# 2. clang is always capable of compiling code for all ABIs for enabled
993 -# target. However, you will need appropriate crt* files (installed
994 -# e.g. by sys-devel/gcc and sys-libs/glibc).
995 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
996 -# in the current profile (i.e. alike supported by sys-devel/gcc).
997 -#
998 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
999 -# multilib clang* libraries (not runtime, not wrappers).
1000 -
1001 -PATCHES=(
1002 - "${FILESDIR}"/9999/prefix-dirs.patch
1003 -)
1004 -
1005 -pkg_setup() {
1006 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
1007 - python-single-r1_pkg_setup
1008 -}
1009 -
1010 -src_prepare() {
1011 - # create extra parent dir for relative CLANG_RESOURCE_DIR access
1012 - mkdir -p x/y || die
1013 - BUILD_DIR=${WORKDIR}/x/y/clang
1014 -
1015 - llvm.org_src_prepare
1016 -
1017 - # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
1018 - eprefixify \
1019 - lib/Frontend/InitHeaderSearch.cpp \
1020 - lib/Driver/ToolChains/Darwin.cpp || die
1021 -}
1022 -
1023 -check_distribution_components() {
1024 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
1025 - local all_targets=() my_targets=() l
1026 - cd "${BUILD_DIR}" || die
1027 -
1028 - while read -r l; do
1029 - if [[ ${l} == install-*-stripped:* ]]; then
1030 - l=${l#install-}
1031 - l=${l%%-stripped*}
1032 -
1033 - case ${l} in
1034 - # meta-targets
1035 - clang-libraries|distribution)
1036 - continue
1037 - ;;
1038 - # headers for clang-tidy static library
1039 - clang-tidy-headers)
1040 - continue
1041 - ;;
1042 - # tools
1043 - clang|clangd|clang-*)
1044 - ;;
1045 - # static libraries
1046 - clang*|findAllSymbols)
1047 - continue
1048 - ;;
1049 - # conditional to USE=doc
1050 - docs-clang-html|docs-clang-tools-html)
1051 - use doc || continue
1052 - ;;
1053 - esac
1054 -
1055 - all_targets+=( "${l}" )
1056 - fi
1057 - done < <(ninja -t targets all)
1058 -
1059 - while read -r l; do
1060 - my_targets+=( "${l}" )
1061 - done < <(get_distribution_components $"\n")
1062 -
1063 - local add=() remove=()
1064 - for l in "${all_targets[@]}"; do
1065 - if ! has "${l}" "${my_targets[@]}"; then
1066 - add+=( "${l}" )
1067 - fi
1068 - done
1069 - for l in "${my_targets[@]}"; do
1070 - if ! has "${l}" "${all_targets[@]}"; then
1071 - remove+=( "${l}" )
1072 - fi
1073 - done
1074 -
1075 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
1076 - eqawarn "get_distribution_components() is outdated!"
1077 - eqawarn " Add: ${add[*]}"
1078 - eqawarn "Remove: ${remove[*]}"
1079 - fi
1080 - cd - >/dev/null || die
1081 - fi
1082 -}
1083 -
1084 -get_distribution_components() {
1085 - local sep=${1-;}
1086 -
1087 - local out=(
1088 - # common stuff
1089 - clang-cmake-exports
1090 - clang-headers
1091 - clang-resource-headers
1092 - libclang-headers
1093 -
1094 - # libs
1095 - clang-cpp
1096 - libclang
1097 - )
1098 -
1099 - if multilib_is_native_abi; then
1100 - out+=(
1101 - # common stuff
1102 - bash-autocomplete
1103 - libclang-python-bindings
1104 -
1105 - # tools
1106 - c-index-test
1107 - clang
1108 - clang-format
1109 - clang-offload-bundler
1110 - clang-offload-wrapper
1111 - clang-refactor
1112 - clang-rename
1113 - clang-scan-deps
1114 - diagtool
1115 - hmaptool
1116 -
1117 - # extra tools
1118 - clang-apply-replacements
1119 - clang-change-namespace
1120 - clang-doc
1121 - clang-include-fixer
1122 - clang-move
1123 - clang-query
1124 - clang-reorder-fields
1125 - clang-tidy
1126 - clangd
1127 - find-all-symbols
1128 - modularize
1129 - pp-trace
1130 - )
1131 -
1132 - if llvm_are_manpages_built; then
1133 - out+=(
1134 - # manpages
1135 - docs-clang-man
1136 - docs-clang-tools-man
1137 - )
1138 - fi
1139 -
1140 - use doc && out+=(
1141 - docs-clang-html
1142 - docs-clang-tools-html
1143 - )
1144 -
1145 - use static-analyzer && out+=(
1146 - clang-check
1147 - clang-extdef-mapping
1148 - scan-build
1149 - scan-view
1150 - )
1151 - fi
1152 -
1153 - printf "%s${sep}" "${out[@]}"
1154 -}
1155 -
1156 -multilib_src_configure() {
1157 - local llvm_version=$(llvm-config --version) || die
1158 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
1159 -
1160 - local mycmakeargs=(
1161 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
1162 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
1163 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
1164 - # relative to bindir
1165 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
1166 -
1167 - -DBUILD_SHARED_LIBS=OFF
1168 - -DCLANG_LINK_CLANG_DYLIB=ON
1169 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
1170 -
1171 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
1172 - -DLLVM_BUILD_TESTS=$(usex test)
1173 -
1174 - # these are not propagated reliably, so redefine them
1175 - -DLLVM_ENABLE_EH=ON
1176 - -DLLVM_ENABLE_RTTI=ON
1177 -
1178 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
1179 - # libgomp support fails to find headers without explicit -I
1180 - # furthermore, it provides only syntax checking
1181 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
1182 -
1183 - # override default stdlib and rtlib
1184 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
1185 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
1186 - -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "")
1187 -
1188 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
1189 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
1190 -
1191 - -DPython3_EXECUTABLE="${PYTHON}"
1192 - )
1193 - use test && mycmakeargs+=(
1194 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
1195 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
1196 - )
1197 -
1198 - if multilib_is_native_abi; then
1199 - local build_docs=OFF
1200 - if llvm_are_manpages_built; then
1201 - build_docs=ON
1202 - mycmakeargs+=(
1203 - -DLLVM_BUILD_DOCS=ON
1204 - -DLLVM_ENABLE_SPHINX=ON
1205 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
1206 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
1207 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
1208 - )
1209 - fi
1210 - mycmakeargs+=(
1211 - -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
1212 - -DCLANG_INCLUDE_DOCS=${build_docs}
1213 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
1214 - )
1215 - else
1216 - mycmakeargs+=(
1217 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
1218 - )
1219 - fi
1220 -
1221 - if [[ -n ${EPREFIX} ]]; then
1222 - mycmakeargs+=(
1223 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
1224 - )
1225 - fi
1226 -
1227 - if tc-is-cross-compiler; then
1228 - [[ -x "/usr/bin/clang-tblgen" ]] \
1229 - || die "/usr/bin/clang-tblgen not found or usable"
1230 - mycmakeargs+=(
1231 - -DCMAKE_CROSSCOMPILING=ON
1232 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
1233 - )
1234 - fi
1235 -
1236 - # LLVM can have very high memory consumption while linking,
1237 - # exhausting the limit on 32-bit linker executable
1238 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
1239 -
1240 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
1241 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
1242 - cmake_src_configure
1243 -
1244 - multilib_is_native_abi && check_distribution_components
1245 -}
1246 -
1247 -multilib_src_compile() {
1248 - cmake_build distribution
1249 -
1250 - # provide a symlink for tests
1251 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
1252 - mkdir -p "${WORKDIR}"/lib || die
1253 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
1254 - fi
1255 -}
1256 -
1257 -multilib_src_test() {
1258 - # respect TMPDIR!
1259 - local -x LIT_PRESERVES_TMP=1
1260 - cmake_build check-clang
1261 - multilib_is_native_abi &&
1262 - cmake_build check-clang-tools check-clangd
1263 -}
1264 -
1265 -src_install() {
1266 - MULTILIB_WRAPPED_HEADERS=(
1267 - /usr/include/clang/Config/config.h
1268 - )
1269 -
1270 - multilib-minimal_src_install
1271 -
1272 - # Move runtime headers to /usr/lib/clang, where they belong
1273 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
1274 - # move (remaining) wrapped headers back
1275 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
1276 -
1277 - # Apply CHOST and version suffix to clang tools
1278 - # note: we use two version components here (vs 3 in runtime path)
1279 - local llvm_version=$(llvm-config --version) || die
1280 - local clang_version=$(ver_cut 1 "${llvm_version}")
1281 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
1282 - local clang_tools=( clang clang++ clang-cl clang-cpp )
1283 - local abi i
1284 -
1285 - # cmake gives us:
1286 - # - clang-X
1287 - # - clang -> clang-X
1288 - # - clang++, clang-cl, clang-cpp -> clang
1289 - # we want to have:
1290 - # - clang-X
1291 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
1292 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
1293 - # also in CHOST variant
1294 - for i in "${clang_tools[@]:1}"; do
1295 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
1296 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
1297 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
1298 - done
1299 -
1300 - # now create target symlinks for all supported ABIs
1301 - for abi in $(get_all_abis); do
1302 - local abi_chost=$(get_abi_CHOST "${abi}")
1303 - for i in "${clang_tools[@]}"; do
1304 - dosym "${i}-${clang_version}" \
1305 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
1306 - dosym "${abi_chost}-${i}-${clang_version}" \
1307 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
1308 - done
1309 - done
1310 -
1311 - # Remove unnecessary headers on FreeBSD, bug #417171
1312 - if use kernel_FreeBSD; then
1313 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
1314 - fi
1315 -}
1316 -
1317 -multilib_src_install() {
1318 - DESTDIR=${D} cmake_build install-distribution
1319 -
1320 - # move headers to /usr/include for wrapping & ABI mismatch checks
1321 - # (also drop the version suffix from runtime headers)
1322 - rm -rf "${ED}"/usr/include || die
1323 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
1324 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
1325 -}
1326 -
1327 -multilib_src_install_all() {
1328 - python_fix_shebang "${ED}"
1329 - if use static-analyzer; then
1330 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
1331 - fi
1332 -
1333 - docompress "/usr/lib/llvm/${SLOT}/share/man"
1334 - llvm_install_manpages
1335 - # match 'html' non-compression
1336 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
1337 - # +x for some reason; TODO: investigate
1338 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
1339 -}
1340 -
1341 -pkg_postinst() {
1342 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
1343 - eselect compiler-shadow update all
1344 - fi
1345 -
1346 - elog "You can find additional utility scripts in:"
1347 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
1348 - elog "Some of them are vim integration scripts (with instructions inside)."
1349 - elog "The run-clang-tidy.py script requires the following additional package:"
1350 - elog " dev-python/pyyaml"
1351 -}
1352 -
1353 -pkg_postrm() {
1354 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
1355 - eselect compiler-shadow clean all
1356 - fi
1357 -}
1358
1359 diff --git a/sys-devel/clang/clang-12.0.0_rc5.ebuild b/sys-devel/clang/clang-12.0.0_rc5.ebuild
1360 deleted file mode 100644
1361 index f0164c6eaea..00000000000
1362 --- a/sys-devel/clang/clang-12.0.0_rc5.ebuild
1363 +++ /dev/null
1364 @@ -1,435 +0,0 @@
1365 -# Copyright 1999-2021 Gentoo Authors
1366 -# Distributed under the terms of the GNU General Public License v2
1367 -
1368 -EAPI=7
1369 -
1370 -PYTHON_COMPAT=( python3_{7..9} )
1371 -inherit cmake llvm llvm.org multilib-minimal pax-utils \
1372 - prefix python-single-r1 toolchain-funcs
1373 -
1374 -DESCRIPTION="C language family frontend for LLVM"
1375 -HOMEPAGE="https://llvm.org/"
1376 -
1377 -# Keep in sync with sys-devel/llvm
1378 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY VE )
1379 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
1380 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
1381 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
1382 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
1383 -
1384 -# MSVCSetupApi.h: MIT
1385 -# sorttable.js: MIT
1386 -
1387 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
1388 -SLOT="$(ver_cut 1)"
1389 -KEYWORDS=""
1390 -IUSE="debug default-compiler-rt default-libcxx default-lld
1391 - doc +static-analyzer test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
1392 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
1393 - || ( ${ALL_LLVM_TARGETS[*]} )"
1394 -RESTRICT="!test? ( test )"
1395 -
1396 -RDEPEND="
1397 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${MULTILIB_USEDEP}]
1398 - static-analyzer? ( dev-lang/perl:* )
1399 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
1400 - ${PYTHON_DEPS}"
1401 -for x in "${ALL_LLVM_TARGETS[@]}"; do
1402 - RDEPEND+="
1403 - ${x}? ( ~sys-devel/llvm-${PV}:${SLOT}[${x}] )"
1404 -done
1405 -unset x
1406 -
1407 -DEPEND="${RDEPEND}"
1408 -BDEPEND="
1409 - >=dev-util/cmake-3.16
1410 - doc? ( dev-python/sphinx )
1411 - xml? ( virtual/pkgconfig )
1412 - ${PYTHON_DEPS}"
1413 -RDEPEND="${RDEPEND}
1414 - !<sys-devel/llvm-4.0.0_rc:0
1415 - !sys-devel/clang:0"
1416 -PDEPEND="
1417 - sys-devel/clang-common
1418 - ~sys-devel/clang-runtime-${PV}
1419 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
1420 - default-libcxx? ( >=sys-libs/libcxx-${PV} )
1421 - default-lld? ( sys-devel/lld )"
1422 -
1423 -LLVM_COMPONENTS=( clang clang-tools-extra )
1424 -LLVM_MANPAGES=build
1425 -LLVM_TEST_COMPONENTS=(
1426 - llvm/lib/Testing/Support
1427 - llvm/utils/{lit,llvm-lit,unittest}
1428 - llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
1429 -)
1430 -llvm.org_set_globals
1431 -
1432 -# Multilib notes:
1433 -# 1. ABI_* flags control ABIs libclang* is built for only.
1434 -# 2. clang is always capable of compiling code for all ABIs for enabled
1435 -# target. However, you will need appropriate crt* files (installed
1436 -# e.g. by sys-devel/gcc and sys-libs/glibc).
1437 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
1438 -# in the current profile (i.e. alike supported by sys-devel/gcc).
1439 -#
1440 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
1441 -# multilib clang* libraries (not runtime, not wrappers).
1442 -
1443 -PATCHES=(
1444 - "${FILESDIR}"/9999/prefix-dirs.patch
1445 -)
1446 -
1447 -pkg_setup() {
1448 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
1449 - python-single-r1_pkg_setup
1450 -}
1451 -
1452 -src_prepare() {
1453 - # create extra parent dir for relative CLANG_RESOURCE_DIR access
1454 - mkdir -p x/y || die
1455 - BUILD_DIR=${WORKDIR}/x/y/clang
1456 -
1457 - llvm.org_src_prepare
1458 -
1459 - # add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
1460 - eprefixify \
1461 - lib/Frontend/InitHeaderSearch.cpp \
1462 - lib/Driver/ToolChains/Darwin.cpp || die
1463 -}
1464 -
1465 -check_distribution_components() {
1466 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
1467 - local all_targets=() my_targets=() l
1468 - cd "${BUILD_DIR}" || die
1469 -
1470 - while read -r l; do
1471 - if [[ ${l} == install-*-stripped:* ]]; then
1472 - l=${l#install-}
1473 - l=${l%%-stripped*}
1474 -
1475 - case ${l} in
1476 - # meta-targets
1477 - clang-libraries|distribution)
1478 - continue
1479 - ;;
1480 - # headers for clang-tidy static library
1481 - clang-tidy-headers)
1482 - continue
1483 - ;;
1484 - # tools
1485 - clang|clangd|clang-*)
1486 - ;;
1487 - # static libraries
1488 - clang*|findAllSymbols)
1489 - continue
1490 - ;;
1491 - # conditional to USE=doc
1492 - docs-clang-html|docs-clang-tools-html)
1493 - use doc || continue
1494 - ;;
1495 - esac
1496 -
1497 - all_targets+=( "${l}" )
1498 - fi
1499 - done < <(ninja -t targets all)
1500 -
1501 - while read -r l; do
1502 - my_targets+=( "${l}" )
1503 - done < <(get_distribution_components $"\n")
1504 -
1505 - local add=() remove=()
1506 - for l in "${all_targets[@]}"; do
1507 - if ! has "${l}" "${my_targets[@]}"; then
1508 - add+=( "${l}" )
1509 - fi
1510 - done
1511 - for l in "${my_targets[@]}"; do
1512 - if ! has "${l}" "${all_targets[@]}"; then
1513 - remove+=( "${l}" )
1514 - fi
1515 - done
1516 -
1517 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
1518 - eqawarn "get_distribution_components() is outdated!"
1519 - eqawarn " Add: ${add[*]}"
1520 - eqawarn "Remove: ${remove[*]}"
1521 - fi
1522 - cd - >/dev/null || die
1523 - fi
1524 -}
1525 -
1526 -get_distribution_components() {
1527 - local sep=${1-;}
1528 -
1529 - local out=(
1530 - # common stuff
1531 - clang-cmake-exports
1532 - clang-headers
1533 - clang-resource-headers
1534 - libclang-headers
1535 -
1536 - # libs
1537 - clang-cpp
1538 - libclang
1539 - )
1540 -
1541 - if multilib_is_native_abi; then
1542 - out+=(
1543 - # common stuff
1544 - bash-autocomplete
1545 - libclang-python-bindings
1546 -
1547 - # tools
1548 - c-index-test
1549 - clang
1550 - clang-format
1551 - clang-offload-bundler
1552 - clang-offload-wrapper
1553 - clang-refactor
1554 - clang-rename
1555 - clang-scan-deps
1556 - diagtool
1557 - hmaptool
1558 -
1559 - # extra tools
1560 - clang-apply-replacements
1561 - clang-change-namespace
1562 - clang-doc
1563 - clang-include-fixer
1564 - clang-move
1565 - clang-query
1566 - clang-reorder-fields
1567 - clang-tidy
1568 - clangd
1569 - find-all-symbols
1570 - modularize
1571 - pp-trace
1572 - )
1573 -
1574 - if llvm_are_manpages_built; then
1575 - out+=(
1576 - # manpages
1577 - docs-clang-man
1578 - docs-clang-tools-man
1579 - )
1580 - fi
1581 -
1582 - use doc && out+=(
1583 - docs-clang-html
1584 - docs-clang-tools-html
1585 - )
1586 -
1587 - use static-analyzer && out+=(
1588 - clang-check
1589 - clang-extdef-mapping
1590 - scan-build
1591 - scan-view
1592 - )
1593 - fi
1594 -
1595 - printf "%s${sep}" "${out[@]}"
1596 -}
1597 -
1598 -multilib_src_configure() {
1599 - local llvm_version=$(llvm-config --version) || die
1600 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
1601 -
1602 - local mycmakeargs=(
1603 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
1604 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
1605 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
1606 - # relative to bindir
1607 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
1608 -
1609 - -DBUILD_SHARED_LIBS=OFF
1610 - -DCLANG_LINK_CLANG_DYLIB=ON
1611 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
1612 -
1613 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
1614 - -DLLVM_BUILD_TESTS=$(usex test)
1615 -
1616 - # these are not propagated reliably, so redefine them
1617 - -DLLVM_ENABLE_EH=ON
1618 - -DLLVM_ENABLE_RTTI=ON
1619 -
1620 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
1621 - # libgomp support fails to find headers without explicit -I
1622 - # furthermore, it provides only syntax checking
1623 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
1624 -
1625 - # override default stdlib and rtlib
1626 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
1627 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
1628 - -DCLANG_DEFAULT_LINKER=$(usex default-lld lld "")
1629 -
1630 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
1631 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
1632 -
1633 - -DPython3_EXECUTABLE="${PYTHON}"
1634 - )
1635 - use test && mycmakeargs+=(
1636 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
1637 - -DLLVM_LIT_ARGS="$(get_lit_flags)"
1638 - )
1639 -
1640 - if multilib_is_native_abi; then
1641 - local build_docs=OFF
1642 - if llvm_are_manpages_built; then
1643 - build_docs=ON
1644 - mycmakeargs+=(
1645 - -DLLVM_BUILD_DOCS=ON
1646 - -DLLVM_ENABLE_SPHINX=ON
1647 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
1648 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
1649 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
1650 - )
1651 - fi
1652 - mycmakeargs+=(
1653 - -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
1654 - -DCLANG_INCLUDE_DOCS=${build_docs}
1655 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
1656 - )
1657 - else
1658 - mycmakeargs+=(
1659 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
1660 - )
1661 - fi
1662 -
1663 - if [[ -n ${EPREFIX} ]]; then
1664 - mycmakeargs+=(
1665 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
1666 - )
1667 - fi
1668 -
1669 - if tc-is-cross-compiler; then
1670 - [[ -x "/usr/bin/clang-tblgen" ]] \
1671 - || die "/usr/bin/clang-tblgen not found or usable"
1672 - mycmakeargs+=(
1673 - -DCMAKE_CROSSCOMPILING=ON
1674 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
1675 - )
1676 - fi
1677 -
1678 - # LLVM can have very high memory consumption while linking,
1679 - # exhausting the limit on 32-bit linker executable
1680 - use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
1681 -
1682 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
1683 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
1684 - cmake_src_configure
1685 -
1686 - multilib_is_native_abi && check_distribution_components
1687 -}
1688 -
1689 -multilib_src_compile() {
1690 - cmake_build distribution
1691 -
1692 - # provide a symlink for tests
1693 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
1694 - mkdir -p "${WORKDIR}"/lib || die
1695 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
1696 - fi
1697 -}
1698 -
1699 -multilib_src_test() {
1700 - # respect TMPDIR!
1701 - local -x LIT_PRESERVES_TMP=1
1702 - cmake_build check-clang
1703 - multilib_is_native_abi &&
1704 - cmake_build check-clang-tools check-clangd
1705 -}
1706 -
1707 -src_install() {
1708 - MULTILIB_WRAPPED_HEADERS=(
1709 - /usr/include/clang/Config/config.h
1710 - )
1711 -
1712 - multilib-minimal_src_install
1713 -
1714 - # Move runtime headers to /usr/lib/clang, where they belong
1715 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
1716 - # move (remaining) wrapped headers back
1717 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
1718 -
1719 - # Apply CHOST and version suffix to clang tools
1720 - # note: we use two version components here (vs 3 in runtime path)
1721 - local llvm_version=$(llvm-config --version) || die
1722 - local clang_version=$(ver_cut 1 "${llvm_version}")
1723 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
1724 - local clang_tools=( clang clang++ clang-cl clang-cpp )
1725 - local abi i
1726 -
1727 - # cmake gives us:
1728 - # - clang-X
1729 - # - clang -> clang-X
1730 - # - clang++, clang-cl, clang-cpp -> clang
1731 - # we want to have:
1732 - # - clang-X
1733 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
1734 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
1735 - # also in CHOST variant
1736 - for i in "${clang_tools[@]:1}"; do
1737 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
1738 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
1739 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
1740 - done
1741 -
1742 - # now create target symlinks for all supported ABIs
1743 - for abi in $(get_all_abis); do
1744 - local abi_chost=$(get_abi_CHOST "${abi}")
1745 - for i in "${clang_tools[@]}"; do
1746 - dosym "${i}-${clang_version}" \
1747 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
1748 - dosym "${abi_chost}-${i}-${clang_version}" \
1749 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
1750 - done
1751 - done
1752 -
1753 - # Remove unnecessary headers on FreeBSD, bug #417171
1754 - if use kernel_FreeBSD; then
1755 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
1756 - fi
1757 -}
1758 -
1759 -multilib_src_install() {
1760 - DESTDIR=${D} cmake_build install-distribution
1761 -
1762 - # move headers to /usr/include for wrapping & ABI mismatch checks
1763 - # (also drop the version suffix from runtime headers)
1764 - rm -rf "${ED}"/usr/include || die
1765 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
1766 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
1767 -}
1768 -
1769 -multilib_src_install_all() {
1770 - python_fix_shebang "${ED}"
1771 - if use static-analyzer; then
1772 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
1773 - fi
1774 -
1775 - docompress "/usr/lib/llvm/${SLOT}/share/man"
1776 - llvm_install_manpages
1777 - # match 'html' non-compression
1778 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
1779 - # +x for some reason; TODO: investigate
1780 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
1781 -}
1782 -
1783 -pkg_postinst() {
1784 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
1785 - eselect compiler-shadow update all
1786 - fi
1787 -
1788 - elog "You can find additional utility scripts in:"
1789 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
1790 - elog "Some of them are vim integration scripts (with instructions inside)."
1791 - elog "The run-clang-tidy.py script requires the following additional package:"
1792 - elog " dev-python/pyyaml"
1793 -}
1794 -
1795 -pkg_postrm() {
1796 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
1797 - eselect compiler-shadow clean all
1798 - fi
1799 -}