Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/clang/
Date: Wed, 04 Mar 2020 18:39:19
Message-Id: 1583347135.73c6479c3b263809fa6c1c477c899e3b4026156e.mgorny@gentoo
1 commit: 73c6479c3b263809fa6c1c477c899e3b4026156e
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Wed Mar 4 18:12:41 2020 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Wed Mar 4 18:38:55 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=73c6479c
7
8 sys-devel/clang: Remove 10.0.0rc[12]
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-devel/clang/Manifest | 2 -
13 sys-devel/clang/clang-10.0.0_rc1.ebuild | 397 --------------------------------
14 sys-devel/clang/clang-10.0.0_rc2.ebuild | 397 --------------------------------
15 3 files changed, 796 deletions(-)
16
17 diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest
18 index b3883cce723..9654dcb3d54 100644
19 --- a/sys-devel/clang/Manifest
20 +++ b/sys-devel/clang/Manifest
21 @@ -7,7 +7,5 @@ DIST llvm-7.1.0.src.tar.xz 28313784 BLAKE2B b78d9a7fc5ef6e352e77d339e5c4eef5cced
22 DIST llvm-8.0.1-manpages.tar.bz2 140915 BLAKE2B 13ac9e172728d643dac1d12ac06909b6db3dd9a1a380a92a07867e3cb835f94b265da5d75c4712b5409405a65795d2cb6b32da4098e38cbb95d7023b56bcbbc1 SHA512 23994a2374659fbbf8d9b5160f4d77e9be7c4c9fc14963e8186bbede78b0ee9257f6b6a9c484bc75d72443d65bb24e598841e64af500336283de0f454d6a2073
23 DIST llvm-8.0.1.src.tar.xz 30477608 BLAKE2B 4319c837b36111401e3b0f9659b8d875c89463bcc7816df1aefe1e3ff989860bbaa92504718f8e15416cfd9f3491c13777cd5cb661877b237b342b0e515b93f5 SHA512 82e120be5cabdfd5111aebbea68a663fe229c8861d73802d6ab09a3bf48f60de333e07e61f8fb61beaa14ac2bea24fcd74fa6f761acaf62469f536b79fcb1e16
24 DIST llvm-9.0.0-manpages.tar.bz2 158546 BLAKE2B eed6235698a0b5993affe305f7fd22cd4cf444adf931275a1685f2049a5f17cf2933907577d9ce142348a3c579769b0436aa2b5a9a953958504125a8c3e83b7d SHA512 64c8d18061eb2870b379a1df485be0b61eac07cb10b3f97347b54b2ee326faa63437ca04466776be282e120dd3f6147e14fffdd38ca370db85748fe5eb54d764
25 -DIST llvmorg-10.0.0-rc1.tar.gz 120755822 BLAKE2B a729d37d96ba498cb865c6f708734dccb796b2caabb69167b9aa3b0e12c788f2a5980a048b99d5603da3d26af909fb31f406b4f4743cabae56c45f829a7bf695 SHA512 27137fc700971147c00ded6787eaae9f0bcf98c938fe227a5a559b38d983736f3d086f4ff6772d802c5f48a7d97a97c293261e4af88fcb5a720693b9cb5a4f02
26 -DIST llvmorg-10.0.0-rc2.tar.gz 120795019 BLAKE2B 6e701eddbd2313e777c7b37dff8455a08d3c599d01055b60afc0319373d4709deb429aac6bf9e80c4d2e2ab8ade03bf5b398b6ccd8882e4bde608d10cdbf2284 SHA512 ee571c9258a2d9fc411964f56b0b92b2e7134349ed21dbe7963eb61ef65da506e0c4f7c69259a3b6cecec23f55d24636608287ee4457ee667031e141f8f09aae
27 DIST llvmorg-10.0.0-rc3.tar.gz 120814170 BLAKE2B 432fe0c1e74d3020a269a256e6e456cbfa0b7166dd3f86df6caf3a55e1931c022285fe8afdc4d8998c729c5471acf5308abb336782ddec2ef9b0f58d1ccb5a3c SHA512 aad1df86063612d20c48ea7046940330fe2ac572a146be22ff71d9e65fa3438184cb39a2533fc6afd1e74df26909a9f0d24ebcd7d62e74728cfd81e447f2ffbf
28 DIST llvmorg-9.0.1.tar.gz 113193320 BLAKE2B b86e405f2b8e00436045fd409fe19cdde75c797b1192c62a22b5ec75e6b4dc8e874a0f33008dc31562445e4cbe53a992b6f48c684255a6a1ef261e595b8b161f SHA512 fa88beeaae94b6d0cd9b5ba38658d0ffed8004035d7d8a4f95c3d31a709b88b581ae9bd7761333c8e5375c44b8f6be01768b5a3be901163159d7e6c43b71da59
29
30 diff --git a/sys-devel/clang/clang-10.0.0_rc1.ebuild b/sys-devel/clang/clang-10.0.0_rc1.ebuild
31 deleted file mode 100644
32 index 03de91fd9e9..00000000000
33 --- a/sys-devel/clang/clang-10.0.0_rc1.ebuild
34 +++ /dev/null
35 @@ -1,397 +0,0 @@
36 -# Copyright 1999-2020 Gentoo Authors
37 -# Distributed under the terms of the GNU General Public License v2
38 -
39 -EAPI=7
40 -
41 -PYTHON_COMPAT=( python{2_7,3_{6,7}} )
42 -inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \
43 - pax-utils python-single-r1 toolchain-funcs
44 -
45 -DESCRIPTION="C language family frontend for LLVM"
46 -HOMEPAGE="https://llvm.org/"
47 -LLVM_COMPONENTS=( clang clang-tools-extra )
48 -LLVM_TEST_COMPONENTS=(
49 - llvm/lib/Testing/Support
50 - llvm/utils/{lit,llvm-lit,unittest}
51 -)
52 -llvm.org_set_globals
53 -# We need extra level of indirection for CLANG_RESOURCE_DIR
54 -S=${WORKDIR}/x/y/clang
55 -
56 -# Keep in sync with sys-devel/llvm
57 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC AVR VE )
58 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
59 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
60 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
61 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
62 -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?}
63 -
64 -# MSVCSetupApi.h: MIT
65 -# sorttable.js: MIT
66 -
67 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
68 -SLOT="$(ver_cut 1)"
69 -KEYWORDS=""
70 -IUSE="debug default-compiler-rt default-libcxx doc +static-analyzer
71 - test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
72 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
73 - || ( ${ALL_LLVM_TARGETS[*]} )"
74 -RESTRICT="!test? ( test )"
75 -
76 -RDEPEND="
77 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${LLVM_TARGET_USEDEPS// /,},${MULTILIB_USEDEP}]
78 - static-analyzer? ( dev-lang/perl:* )
79 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
80 - ${PYTHON_DEPS}"
81 -DEPEND="${RDEPEND}"
82 -BDEPEND="
83 - doc? ( dev-python/sphinx )
84 - xml? ( virtual/pkgconfig )
85 - ${PYTHON_DEPS}"
86 -RDEPEND="${RDEPEND}
87 - !<sys-devel/llvm-4.0.0_rc:0
88 - !sys-devel/clang:0"
89 -PDEPEND="
90 - sys-devel/clang-common
91 - ~sys-devel/clang-runtime-${PV}
92 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
93 - default-libcxx? ( >=sys-libs/libcxx-${PV} )"
94 -
95 -# least intrusive of all
96 -CMAKE_BUILD_TYPE=RelWithDebInfo
97 -
98 -# Multilib notes:
99 -# 1. ABI_* flags control ABIs libclang* is built for only.
100 -# 2. clang is always capable of compiling code for all ABIs for enabled
101 -# target. However, you will need appropriate crt* files (installed
102 -# e.g. by sys-devel/gcc and sys-libs/glibc).
103 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
104 -# in the current profile (i.e. alike supported by sys-devel/gcc).
105 -#
106 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
107 -# multilib clang* libraries (not runtime, not wrappers).
108 -
109 -pkg_setup() {
110 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
111 - python-single-r1_pkg_setup
112 -}
113 -
114 -src_unpack() {
115 - # create extra parent dir for CLANG_RESOURCE_DIR
116 - mkdir -p x/y || die
117 - cd x/y || die
118 - llvm.org_src_unpack
119 - mv clang-tools-extra clang/tools/extra || die
120 -}
121 -
122 -check_distribution_components() {
123 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
124 - local all_targets=() my_targets=() l
125 - cd "${BUILD_DIR}" || die
126 -
127 - while read -r l; do
128 - if [[ ${l} == install-*-stripped:* ]]; then
129 - l=${l#install-}
130 - l=${l%%-stripped*}
131 -
132 - case ${l} in
133 - # meta-targets
134 - clang-libraries|distribution)
135 - continue
136 - ;;
137 - # tools
138 - clang|clangd|clang-*)
139 - ;;
140 - # static libraries
141 - clang*|findAllSymbols)
142 - continue
143 - ;;
144 - esac
145 -
146 - all_targets+=( "${l}" )
147 - fi
148 - done < <(ninja -t targets all)
149 -
150 - while read -r l; do
151 - my_targets+=( "${l}" )
152 - done < <(get_distribution_components $"\n")
153 -
154 - local add=() remove=()
155 - for l in "${all_targets[@]}"; do
156 - if ! has "${l}" "${my_targets[@]}"; then
157 - add+=( "${l}" )
158 - fi
159 - done
160 - for l in "${my_targets[@]}"; do
161 - if ! has "${l}" "${all_targets[@]}"; then
162 - remove+=( "${l}" )
163 - fi
164 - done
165 -
166 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
167 - eqawarn "get_distribution_components() is outdated!"
168 - eqawarn " Add: ${add[*]}"
169 - eqawarn "Remove: ${remove[*]}"
170 - fi
171 - cd - >/dev/null || die
172 - fi
173 -}
174 -
175 -get_distribution_components() {
176 - local sep=${1-;}
177 -
178 - local out=(
179 - # common stuff
180 - clang-cmake-exports
181 - clang-headers
182 - clang-resource-headers
183 - libclang-headers
184 -
185 - # libs
186 - clang-cpp
187 - libclang
188 - )
189 -
190 - if multilib_is_native_abi; then
191 - out+=(
192 - # common stuff
193 - bash-autocomplete
194 - libclang-python-bindings
195 -
196 - # tools
197 - c-index-test
198 - clang
199 - clang-format
200 - clang-import-test
201 - clang-offload-bundler
202 - clang-offload-wrapper
203 - clang-refactor
204 - clang-rename
205 - clang-scan-deps
206 - diagtool
207 - hmaptool
208 -
209 - # extra tools
210 - clang-apply-replacements
211 - clang-change-namespace
212 - clang-doc
213 - clang-include-fixer
214 - clang-move
215 - clang-query
216 - clang-reorder-fields
217 - clang-tidy
218 - clangd
219 - find-all-symbols
220 - modularize
221 - pp-trace
222 - )
223 -
224 - use doc && out+=(
225 - docs-clang-html
226 - docs-clang-man
227 - docs-clang-tools-html
228 - docs-clang-tools-man
229 - )
230 -
231 - use static-analyzer && out+=(
232 - clang-check
233 - clang-extdef-mapping
234 - scan-build
235 - scan-view
236 - )
237 - fi
238 -
239 - printf "%s${sep}" "${out[@]}"
240 -}
241 -
242 -multilib_src_configure() {
243 - local llvm_version=$(llvm-config --version) || die
244 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
245 -
246 - local mycmakeargs=(
247 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
248 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
249 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
250 - # relative to bindir
251 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
252 -
253 - -DBUILD_SHARED_LIBS=OFF
254 - -DCLANG_LINK_CLANG_DYLIB=ON
255 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
256 -
257 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
258 - -DLLVM_BUILD_TESTS=$(usex test)
259 -
260 - # these are not propagated reliably, so redefine them
261 - -DLLVM_ENABLE_EH=ON
262 - -DLLVM_ENABLE_RTTI=ON
263 -
264 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
265 - # libgomp support fails to find headers without explicit -I
266 - # furthermore, it provides only syntax checking
267 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
268 -
269 - # override default stdlib and rtlib
270 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
271 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
272 -
273 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
274 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
275 - )
276 - use test && mycmakeargs+=(
277 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/x/y/llvm"
278 - -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
279 - )
280 -
281 - if multilib_is_native_abi; then
282 - mycmakeargs+=(
283 - # normally copied from LLVM_INCLUDE_DOCS but the latter
284 - # is lacking value in stand-alone builds
285 - -DCLANG_INCLUDE_DOCS=$(usex doc)
286 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc)
287 - )
288 - use doc && mycmakeargs+=(
289 - -DLLVM_BUILD_DOCS=ON
290 - -DLLVM_ENABLE_SPHINX=ON
291 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
292 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
293 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
294 - )
295 - else
296 - mycmakeargs+=(
297 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
298 - )
299 - fi
300 -
301 - if [[ -n ${EPREFIX} ]]; then
302 - mycmakeargs+=(
303 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
304 - )
305 - fi
306 -
307 - if tc-is-cross-compiler; then
308 - [[ -x "/usr/bin/clang-tblgen" ]] \
309 - || die "/usr/bin/clang-tblgen not found or usable"
310 - mycmakeargs+=(
311 - -DCMAKE_CROSSCOMPILING=ON
312 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
313 - )
314 - fi
315 -
316 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
317 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
318 - cmake-utils_src_configure
319 -
320 - multilib_is_native_abi && check_distribution_components
321 -}
322 -
323 -multilib_src_compile() {
324 - cmake-utils_src_compile
325 -
326 - # provide a symlink for tests
327 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
328 - mkdir -p "${WORKDIR}"/lib || die
329 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
330 - fi
331 -}
332 -
333 -multilib_src_test() {
334 - # respect TMPDIR!
335 - local -x LIT_PRESERVES_TMP=1
336 - cmake-utils_src_make check-clang
337 - multilib_is_native_abi &&
338 - cmake-utils_src_make check-clang-tools check-clangd
339 -}
340 -
341 -src_install() {
342 - MULTILIB_WRAPPED_HEADERS=(
343 - /usr/include/clang/Config/config.h
344 - )
345 -
346 - multilib-minimal_src_install
347 -
348 - # Move runtime headers to /usr/lib/clang, where they belong
349 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
350 - # move (remaining) wrapped headers back
351 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
352 -
353 - # Apply CHOST and version suffix to clang tools
354 - # note: we use two version components here (vs 3 in runtime path)
355 - local llvm_version=$(llvm-config --version) || die
356 - local clang_version=$(ver_cut 1 "${llvm_version}")
357 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
358 - local clang_tools=( clang clang++ clang-cl clang-cpp )
359 - local abi i
360 -
361 - # cmake gives us:
362 - # - clang-X
363 - # - clang -> clang-X
364 - # - clang++, clang-cl, clang-cpp -> clang
365 - # we want to have:
366 - # - clang-X
367 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
368 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
369 - # also in CHOST variant
370 - for i in "${clang_tools[@]:1}"; do
371 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
372 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
373 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
374 - done
375 -
376 - # now create target symlinks for all supported ABIs
377 - for abi in $(get_all_abis); do
378 - local abi_chost=$(get_abi_CHOST "${abi}")
379 - for i in "${clang_tools[@]}"; do
380 - dosym "${i}-${clang_version}" \
381 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
382 - dosym "${abi_chost}-${i}-${clang_version}" \
383 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
384 - done
385 - done
386 -
387 - # Remove unnecessary headers on FreeBSD, bug #417171
388 - if use kernel_FreeBSD; then
389 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
390 - fi
391 -}
392 -
393 -multilib_src_install() {
394 - DESTDIR=${D} cmake-utils_src_make install-distribution
395 -
396 - # move headers to /usr/include for wrapping & ABI mismatch checks
397 - # (also drop the version suffix from runtime headers)
398 - rm -rf "${ED}"/usr/include || die
399 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
400 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
401 -}
402 -
403 -multilib_src_install_all() {
404 - python_fix_shebang "${ED}"
405 - if use static-analyzer; then
406 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
407 - fi
408 -
409 - docompress "/usr/lib/llvm/${SLOT}/share/man"
410 - # match 'html' non-compression
411 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
412 - # +x for some reason; TODO: investigate
413 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
414 -}
415 -
416 -pkg_postinst() {
417 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
418 - eselect compiler-shadow update all
419 - fi
420 -
421 - elog "You can find additional utility scripts in:"
422 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
423 - elog "Some of them are vim integration scripts (with instructions inside)."
424 - elog "The run-clang-tidy.py script requires the following additional package:"
425 - elog " dev-python/pyyaml"
426 -}
427 -
428 -pkg_postrm() {
429 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
430 - eselect compiler-shadow clean all
431 - fi
432 -}
433
434 diff --git a/sys-devel/clang/clang-10.0.0_rc2.ebuild b/sys-devel/clang/clang-10.0.0_rc2.ebuild
435 deleted file mode 100644
436 index ee94d3e3bbe..00000000000
437 --- a/sys-devel/clang/clang-10.0.0_rc2.ebuild
438 +++ /dev/null
439 @@ -1,397 +0,0 @@
440 -# Copyright 1999-2020 Gentoo Authors
441 -# Distributed under the terms of the GNU General Public License v2
442 -
443 -EAPI=7
444 -
445 -PYTHON_COMPAT=( python{2_7,3_{6,7,8}} )
446 -inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \
447 - pax-utils python-single-r1 toolchain-funcs
448 -
449 -DESCRIPTION="C language family frontend for LLVM"
450 -HOMEPAGE="https://llvm.org/"
451 -LLVM_COMPONENTS=( clang clang-tools-extra )
452 -LLVM_TEST_COMPONENTS=(
453 - llvm/lib/Testing/Support
454 - llvm/utils/{lit,llvm-lit,unittest}
455 -)
456 -llvm.org_set_globals
457 -# We need extra level of indirection for CLANG_RESOURCE_DIR
458 -S=${WORKDIR}/x/y/clang
459 -
460 -# Keep in sync with sys-devel/llvm
461 -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC AVR )
462 -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
463 - NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore
464 - "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}" )
465 -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
466 -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?}
467 -
468 -# MSVCSetupApi.h: MIT
469 -# sorttable.js: MIT
470 -
471 -LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
472 -SLOT="$(ver_cut 1)"
473 -KEYWORDS=""
474 -IUSE="debug default-compiler-rt default-libcxx doc +static-analyzer
475 - test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
476 -REQUIRED_USE="${PYTHON_REQUIRED_USE}
477 - || ( ${ALL_LLVM_TARGETS[*]} )"
478 -RESTRICT="!test? ( test )"
479 -
480 -RDEPEND="
481 - ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${LLVM_TARGET_USEDEPS// /,},${MULTILIB_USEDEP}]
482 - static-analyzer? ( dev-lang/perl:* )
483 - xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
484 - ${PYTHON_DEPS}"
485 -DEPEND="${RDEPEND}"
486 -BDEPEND="
487 - doc? ( dev-python/sphinx )
488 - xml? ( virtual/pkgconfig )
489 - ${PYTHON_DEPS}"
490 -RDEPEND="${RDEPEND}
491 - !<sys-devel/llvm-4.0.0_rc:0
492 - !sys-devel/clang:0"
493 -PDEPEND="
494 - sys-devel/clang-common
495 - ~sys-devel/clang-runtime-${PV}
496 - default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
497 - default-libcxx? ( >=sys-libs/libcxx-${PV} )"
498 -
499 -# least intrusive of all
500 -CMAKE_BUILD_TYPE=RelWithDebInfo
501 -
502 -# Multilib notes:
503 -# 1. ABI_* flags control ABIs libclang* is built for only.
504 -# 2. clang is always capable of compiling code for all ABIs for enabled
505 -# target. However, you will need appropriate crt* files (installed
506 -# e.g. by sys-devel/gcc and sys-libs/glibc).
507 -# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
508 -# in the current profile (i.e. alike supported by sys-devel/gcc).
509 -#
510 -# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
511 -# multilib clang* libraries (not runtime, not wrappers).
512 -
513 -pkg_setup() {
514 - LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
515 - python-single-r1_pkg_setup
516 -}
517 -
518 -src_unpack() {
519 - # create extra parent dir for CLANG_RESOURCE_DIR
520 - mkdir -p x/y || die
521 - cd x/y || die
522 - llvm.org_src_unpack
523 - mv clang-tools-extra clang/tools/extra || die
524 -}
525 -
526 -check_distribution_components() {
527 - if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
528 - local all_targets=() my_targets=() l
529 - cd "${BUILD_DIR}" || die
530 -
531 - while read -r l; do
532 - if [[ ${l} == install-*-stripped:* ]]; then
533 - l=${l#install-}
534 - l=${l%%-stripped*}
535 -
536 - case ${l} in
537 - # meta-targets
538 - clang-libraries|distribution)
539 - continue
540 - ;;
541 - # tools
542 - clang|clangd|clang-*)
543 - ;;
544 - # static libraries
545 - clang*|findAllSymbols)
546 - continue
547 - ;;
548 - esac
549 -
550 - all_targets+=( "${l}" )
551 - fi
552 - done < <(ninja -t targets all)
553 -
554 - while read -r l; do
555 - my_targets+=( "${l}" )
556 - done < <(get_distribution_components $"\n")
557 -
558 - local add=() remove=()
559 - for l in "${all_targets[@]}"; do
560 - if ! has "${l}" "${my_targets[@]}"; then
561 - add+=( "${l}" )
562 - fi
563 - done
564 - for l in "${my_targets[@]}"; do
565 - if ! has "${l}" "${all_targets[@]}"; then
566 - remove+=( "${l}" )
567 - fi
568 - done
569 -
570 - if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
571 - eqawarn "get_distribution_components() is outdated!"
572 - eqawarn " Add: ${add[*]}"
573 - eqawarn "Remove: ${remove[*]}"
574 - fi
575 - cd - >/dev/null || die
576 - fi
577 -}
578 -
579 -get_distribution_components() {
580 - local sep=${1-;}
581 -
582 - local out=(
583 - # common stuff
584 - clang-cmake-exports
585 - clang-headers
586 - clang-resource-headers
587 - libclang-headers
588 -
589 - # libs
590 - clang-cpp
591 - libclang
592 - )
593 -
594 - if multilib_is_native_abi; then
595 - out+=(
596 - # common stuff
597 - bash-autocomplete
598 - libclang-python-bindings
599 -
600 - # tools
601 - c-index-test
602 - clang
603 - clang-format
604 - clang-import-test
605 - clang-offload-bundler
606 - clang-offload-wrapper
607 - clang-refactor
608 - clang-rename
609 - clang-scan-deps
610 - diagtool
611 - hmaptool
612 -
613 - # extra tools
614 - clang-apply-replacements
615 - clang-change-namespace
616 - clang-doc
617 - clang-include-fixer
618 - clang-move
619 - clang-query
620 - clang-reorder-fields
621 - clang-tidy
622 - clangd
623 - find-all-symbols
624 - modularize
625 - pp-trace
626 - )
627 -
628 - use doc && out+=(
629 - docs-clang-html
630 - docs-clang-man
631 - docs-clang-tools-html
632 - docs-clang-tools-man
633 - )
634 -
635 - use static-analyzer && out+=(
636 - clang-check
637 - clang-extdef-mapping
638 - scan-build
639 - scan-view
640 - )
641 - fi
642 -
643 - printf "%s${sep}" "${out[@]}"
644 -}
645 -
646 -multilib_src_configure() {
647 - local llvm_version=$(llvm-config --version) || die
648 - local clang_version=$(ver_cut 1-3 "${llvm_version}")
649 -
650 - local mycmakeargs=(
651 - -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm"
652 - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
653 - -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
654 - # relative to bindir
655 - -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
656 -
657 - -DBUILD_SHARED_LIBS=OFF
658 - -DCLANG_LINK_CLANG_DYLIB=ON
659 - -DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
660 -
661 - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
662 - -DLLVM_BUILD_TESTS=$(usex test)
663 -
664 - # these are not propagated reliably, so redefine them
665 - -DLLVM_ENABLE_EH=ON
666 - -DLLVM_ENABLE_RTTI=ON
667 -
668 - -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
669 - # libgomp support fails to find headers without explicit -I
670 - # furthermore, it provides only syntax checking
671 - -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
672 -
673 - # override default stdlib and rtlib
674 - -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
675 - -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
676 -
677 - -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
678 - -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
679 - )
680 - use test && mycmakeargs+=(
681 - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/x/y/llvm"
682 - -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
683 - )
684 -
685 - if multilib_is_native_abi; then
686 - mycmakeargs+=(
687 - # normally copied from LLVM_INCLUDE_DOCS but the latter
688 - # is lacking value in stand-alone builds
689 - -DCLANG_INCLUDE_DOCS=$(usex doc)
690 - -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc)
691 - )
692 - use doc && mycmakeargs+=(
693 - -DLLVM_BUILD_DOCS=ON
694 - -DLLVM_ENABLE_SPHINX=ON
695 - -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
696 - -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
697 - -DSPHINX_WARNINGS_AS_ERRORS=OFF
698 - )
699 - else
700 - mycmakeargs+=(
701 - -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
702 - )
703 - fi
704 -
705 - if [[ -n ${EPREFIX} ]]; then
706 - mycmakeargs+=(
707 - -DGCC_INSTALL_PREFIX="${EPREFIX}/usr"
708 - )
709 - fi
710 -
711 - if tc-is-cross-compiler; then
712 - [[ -x "/usr/bin/clang-tblgen" ]] \
713 - || die "/usr/bin/clang-tblgen not found or usable"
714 - mycmakeargs+=(
715 - -DCMAKE_CROSSCOMPILING=ON
716 - -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
717 - )
718 - fi
719 -
720 - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
721 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
722 - cmake-utils_src_configure
723 -
724 - multilib_is_native_abi && check_distribution_components
725 -}
726 -
727 -multilib_src_compile() {
728 - cmake-utils_src_compile
729 -
730 - # provide a symlink for tests
731 - if [[ ! -L ${WORKDIR}/lib/clang ]]; then
732 - mkdir -p "${WORKDIR}"/lib || die
733 - ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
734 - fi
735 -}
736 -
737 -multilib_src_test() {
738 - # respect TMPDIR!
739 - local -x LIT_PRESERVES_TMP=1
740 - cmake-utils_src_make check-clang
741 - multilib_is_native_abi &&
742 - cmake-utils_src_make check-clang-tools check-clangd
743 -}
744 -
745 -src_install() {
746 - MULTILIB_WRAPPED_HEADERS=(
747 - /usr/include/clang/Config/config.h
748 - )
749 -
750 - multilib-minimal_src_install
751 -
752 - # Move runtime headers to /usr/lib/clang, where they belong
753 - mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
754 - # move (remaining) wrapped headers back
755 - mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die
756 -
757 - # Apply CHOST and version suffix to clang tools
758 - # note: we use two version components here (vs 3 in runtime path)
759 - local llvm_version=$(llvm-config --version) || die
760 - local clang_version=$(ver_cut 1 "${llvm_version}")
761 - local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
762 - local clang_tools=( clang clang++ clang-cl clang-cpp )
763 - local abi i
764 -
765 - # cmake gives us:
766 - # - clang-X
767 - # - clang -> clang-X
768 - # - clang++, clang-cl, clang-cpp -> clang
769 - # we want to have:
770 - # - clang-X
771 - # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
772 - # - clang, clang++, clang-cl, clang-cpp -> clang*-X
773 - # also in CHOST variant
774 - for i in "${clang_tools[@]:1}"; do
775 - rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die
776 - dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
777 - dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
778 - done
779 -
780 - # now create target symlinks for all supported ABIs
781 - for abi in $(get_all_abis); do
782 - local abi_chost=$(get_abi_CHOST "${abi}")
783 - for i in "${clang_tools[@]}"; do
784 - dosym "${i}-${clang_version}" \
785 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
786 - dosym "${abi_chost}-${i}-${clang_version}" \
787 - "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
788 - done
789 - done
790 -
791 - # Remove unnecessary headers on FreeBSD, bug #417171
792 - if use kernel_FreeBSD; then
793 - rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
794 - fi
795 -}
796 -
797 -multilib_src_install() {
798 - DESTDIR=${D} cmake-utils_src_make install-distribution
799 -
800 - # move headers to /usr/include for wrapping & ABI mismatch checks
801 - # (also drop the version suffix from runtime headers)
802 - rm -rf "${ED}"/usr/include || die
803 - mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die
804 - mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die
805 -}
806 -
807 -multilib_src_install_all() {
808 - python_fix_shebang "${ED}"
809 - if use static-analyzer; then
810 - python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view
811 - fi
812 -
813 - docompress "/usr/lib/llvm/${SLOT}/share/man"
814 - # match 'html' non-compression
815 - use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
816 - # +x for some reason; TODO: investigate
817 - use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
818 -}
819 -
820 -pkg_postinst() {
821 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
822 - eselect compiler-shadow update all
823 - fi
824 -
825 - elog "You can find additional utility scripts in:"
826 - elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang"
827 - elog "Some of them are vim integration scripts (with instructions inside)."
828 - elog "The run-clang-tidy.py script requires the following additional package:"
829 - elog " dev-python/pyyaml"
830 -}
831 -
832 -pkg_postrm() {
833 - if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
834 - eselect compiler-shadow clean all
835 - fi
836 -}