Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/llvm/
Date: Thu, 28 Feb 2019 17:41:48
Message-Id: 1551375690.bc11faa8687abec519e809ae144adf8cd50f9636.mgorny@gentoo
1 commit: bc11faa8687abec519e809ae144adf8cd50f9636
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Thu Feb 28 17:11:36 2019 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Thu Feb 28 17:41:30 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bc11faa8
7
8 sys-devel/llvm: Bump to 8.0.0rc3
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-devel/llvm/Manifest | 1 +
13 sys-devel/llvm/llvm-8.0.0_rc3.ebuild | 292 +++++++++++++++++++++++++++++++++++
14 2 files changed, 293 insertions(+)
15
16 diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
17 index 0743ad90ac9..2f8313c3647 100644
18 --- a/sys-devel/llvm/Manifest
19 +++ b/sys-devel/llvm/Manifest
20 @@ -37,4 +37,5 @@ DIST llvm-6.0.1.src.tar.xz 25306628 BLAKE2B 60232d4d22f8096b565cc8d81fea0639f24f
21 DIST llvm-7.0.1-manpages.tar.bz2 121157 BLAKE2B d209e292dde0b528bca6e6438eac83d3a762e83fb333fa075f973806ec802a19e24ec6f0212fffe4757257f2840a5f00960d121024db2d8ab8b99d95bb42b1da SHA512 56dce233d17c4c3c1e4860f31d30e227364c99f04527e8e8372f308e30d09a297ca21a37b4eb2eddab69bee88ef5867446affd1ccd5d7cb1c12d9c9002a1101c
22 DIST llvm-7.0.1.src.tar.xz 28311056 BLAKE2B 737aa6144a415e41a4ff2c8bd5a727d6f14d7b1810c62cbefa5a25fe642c98cddf8a28e35c7e9783373aa3b96f5c0943229e229ad1b43e56e9ed6db0f27ab128 SHA512 ac43a3cb71a53deb55e3693653847cf20bf6f5d9056f224e6956c96d63bc59ebee9404f088eec9cabe65337b4607a905ef931354b373cf64e0004c6905a6b5df
23 DIST llvm-8.0.0rc2.src.tar.xz 30492444 BLAKE2B e7afd3b66e3eb204e07348f0bc77f0ae03d8e9581de4c94cba7c0b43b53f36ecd891c1272ce43ea6c78999fd404a7db105266a2eaca22975133571e1152961af SHA512 9d93197848e9472cc2fef2477897e4f4d74a79b17a164fd43446b0ffb327e7f484cf64f0c294d9a99707c0b46282eb0d16e6ceb5d2d568f25e4235f70ae3c5e7
24 +DIST llvm-8.0.0rc3.src.tar.xz 30507604 BLAKE2B c9baaca537d292af9f12368df86090750508113eb7db393fe44c1ba7579df947f0a7092e6ddd4403bda9f9ed75fe8c049f3baf6d8671faa0c91e3267c584893a SHA512 82199841c2084cffe4e86b4f2d5ebe404059196f1f6d000ee69cfddba05d78c4500ad7499615fa67e9774ead6cba5a23db484dd85f752c8d08e8067f7d7b98ca
25 DIST llvm-manpages-4.0.1.tar.bz2 87981 BLAKE2B 79ffd254ee5c6e09159c954913ef820f74107d4fcea5e3ed82592dc36af8fdfbf1e850547ba8bfc20aa9a5ecdd26c50329e6a6d558ae3aa5475a930789ce3e01 SHA512 d5b3213567c25db58ef364d272314a79c311a80fc21d98c09a5540af45a8190a38f489228663fe9a9b63bf0f2b952c460c4196a8fc8d6f221619f6e7ed2fc415
26
27 diff --git a/sys-devel/llvm/llvm-8.0.0_rc3.ebuild b/sys-devel/llvm/llvm-8.0.0_rc3.ebuild
28 new file mode 100644
29 index 00000000000..167c83db857
30 --- /dev/null
31 +++ b/sys-devel/llvm/llvm-8.0.0_rc3.ebuild
32 @@ -0,0 +1,292 @@
33 +# Copyright 1999-2019 Gentoo Authors
34 +# Distributed under the terms of the GNU General Public License v2
35 +
36 +EAPI=6
37 +
38 +: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
39 +# (needed due to CMAKE_BUILD_TYPE != Gentoo)
40 +CMAKE_MIN_VERSION=3.7.0-r1
41 +PYTHON_COMPAT=( python2_7 )
42 +
43 +inherit cmake-utils eapi7-ver flag-o-matic multilib-minimal \
44 + multiprocessing pax-utils python-any-r1 toolchain-funcs
45 +
46 +DESCRIPTION="Low Level Virtual Machine"
47 +HOMEPAGE="https://llvm.org/"
48 +SRC_URI="https://prereleases.llvm.org/${PV/_//}/${P/_/}.src.tar.xz"
49 +# !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/${P}-manpages.tar.bz2 )"
50 +
51 +# Keep in sync with CMakeLists.txt
52 +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
53 + NVPTX PowerPC Sparc SystemZ X86 XCore )
54 +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
55 +
56 +# Additional licenses:
57 +# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
58 +# 2. ARM backend: LLVM Software Grant by ARM.
59 +# 3. MD5 code: public-domain.
60 +# 4. Tests (not installed):
61 +# a. gtest: BSD.
62 +# b. YAML tests: MIT.
63 +
64 +LICENSE="UoI-NCSA rc BSD public-domain
65 + llvm_targets_ARM? ( LLVM-Grant )"
66 +SLOT="$(ver_cut 1)"
67 +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~amd64-fbsd ~amd64-linux ~ppc-macos ~x64-macos ~x86-macos"
68 +IUSE="debug doc exegesis gold libedit +libffi ncurses test xar xml
69 + kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
70 +RESTRICT="!test? ( test )"
71 +
72 +RDEPEND="
73 + sys-libs/zlib:0=
74 + exegesis? ( dev-libs/libpfm:= )
75 + gold? ( >=sys-devel/binutils-2.22:*[cxx] )
76 + libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
77 + libffi? ( >=virtual/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
78 + ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
79 + xar? ( app-arch/xar )
80 + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )"
81 +# configparser-3.2 breaks the build (3.3 or none at all are fine)
82 +DEPEND="${RDEPEND}
83 + dev-lang/perl
84 + || ( >=sys-devel/gcc-3.0 >=sys-devel/llvm-3.5
85 + ( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx )
86 + )
87 + kernel_Darwin? (
88 + <sys-libs/libcxx-$(ver_cut 1-3).9999
89 + >=sys-devel/binutils-apple-5.1
90 + )
91 + doc? ( $(python_gen_any_dep '
92 + dev-python/recommonmark[${PYTHON_USEDEP}]
93 + dev-python/sphinx[${PYTHON_USEDEP}]
94 + ') )
95 + !doc? ( ${PYTHON_DEPS} )
96 + gold? ( sys-libs/binutils-libs )
97 + libffi? ( virtual/pkgconfig )
98 + !!<dev-python/configparser-3.3.0.2
99 + ${PYTHON_DEPS}"
100 +# There are no file collisions between these versions but having :0
101 +# installed means llvm-config there will take precedence.
102 +RDEPEND="${RDEPEND}
103 + !sys-devel/llvm:0"
104 +PDEPEND="sys-devel/llvm-common
105 + gold? ( >=sys-devel/llvmgold-${SLOT} )"
106 +
107 +REQUIRED_USE="${PYTHON_REQUIRED_USE}
108 + || ( ${ALL_LLVM_TARGETS[*]} )"
109 +
110 +S=${WORKDIR}/${P/_/}.src
111 +
112 +# least intrusive of all
113 +CMAKE_BUILD_TYPE=RelWithDebInfo
114 +
115 +python_check_deps() {
116 + use doc || return 0
117 +
118 + has_version "dev-python/recommonmark[${PYTHON_USEDEP}]" &&
119 + has_version "dev-python/sphinx[${PYTHON_USEDEP}]"
120 +}
121 +
122 +src_prepare() {
123 + # Fix llvm-config for shared linking and sane flags
124 + # https://bugs.gentoo.org/show_bug.cgi?id=565358
125 + eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
126 +
127 + # disable use of SDK on OSX, bug #568758
128 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
129 +
130 + # User patches + QA
131 + cmake-utils_src_prepare
132 +}
133 +
134 +# Is LLVM being linked against libc++?
135 +is_libcxx_linked() {
136 + local code='#include <ciso646>
137 +#if defined(_LIBCPP_VERSION)
138 + HAVE_LIBCXX
139 +#endif
140 +'
141 + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
142 +
143 + [[ ${out} == *HAVE_LIBCXX* ]]
144 +}
145 +
146 +multilib_src_configure() {
147 + local ffi_cflags ffi_ldflags
148 + if use libffi; then
149 + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
150 + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
151 + fi
152 +
153 + local libdir=$(get_libdir)
154 + local mycmakeargs=(
155 + # disable appending VCS revision to the version to improve
156 + # direct cache hit ratio
157 + -DLLVM_APPEND_VC_REV=OFF
158 + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
159 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
160 +
161 + -DBUILD_SHARED_LIBS=ON
162 + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
163 + -DLLVM_BUILD_TESTS=$(usex test)
164 +
165 + -DLLVM_ENABLE_FFI=$(usex libffi)
166 + -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
167 + -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
168 + -DLLVM_ENABLE_LIBXML2=$(usex xml)
169 + -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
170 + -DLLVM_ENABLE_LIBPFM=$(usex exegesis)
171 + -DLLVM_ENABLE_EH=ON
172 + -DLLVM_ENABLE_RTTI=ON
173 +
174 + -DWITH_POLLY=OFF # TODO
175 +
176 + -DLLVM_HOST_TRIPLE="${CHOST}"
177 +
178 + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
179 + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
180 + # used only for llvm-objdump tool
181 + -DHAVE_LIBXAR=$(multilib_native_usex xar 1 0)
182 +
183 + # disable OCaml bindings (now in dev-ml/llvm-ocaml)
184 + -DOCAMLFIND=NO
185 + )
186 +
187 + if is_libcxx_linked; then
188 + # Smart hack: alter version suffix -> SOVERSION when linking
189 + # against libc++. This way we won't end up mixing LLVM libc++
190 + # libraries with libstdc++ clang, and the other way around.
191 + mycmakeargs+=(
192 + -DLLVM_VERSION_SUFFIX="libcxx"
193 + )
194 + fi
195 +
196 +# Note: go bindings have no CMake rules at the moment
197 +# but let's kill the check in case they are introduced
198 +# if ! multilib_is_native_abi || ! use go; then
199 + mycmakeargs+=(
200 + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
201 + )
202 +# fi
203 +
204 + use test && mycmakeargs+=(
205 + -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
206 + )
207 +
208 + if multilib_is_native_abi; then
209 + mycmakeargs+=(
210 + -DLLVM_BUILD_DOCS=$(usex doc)
211 + -DLLVM_ENABLE_OCAMLDOC=OFF
212 + -DLLVM_ENABLE_SPHINX=$(usex doc)
213 + -DLLVM_ENABLE_DOXYGEN=OFF
214 + -DLLVM_INSTALL_UTILS=ON
215 + )
216 + use doc && mycmakeargs+=(
217 + -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
218 + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
219 + -DSPHINX_WARNINGS_AS_ERRORS=OFF
220 + )
221 + use gold && mycmakeargs+=(
222 + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
223 + )
224 + fi
225 +
226 + if tc-is-cross-compiler; then
227 + local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
228 + [[ -x "${tblgen}" ]] \
229 + || die "${tblgen} not found or usable"
230 + mycmakeargs+=(
231 + -DCMAKE_CROSSCOMPILING=ON
232 + -DLLVM_TABLEGEN="${tblgen}"
233 + )
234 + fi
235 +
236 + # workaround BMI bug in gcc-7 (fixed in 7.4)
237 + # https://bugs.gentoo.org/649880
238 + # apply only to x86, https://bugs.gentoo.org/650506
239 + if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
240 + [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
241 + then
242 + local CFLAGS="${CFLAGS} -mno-bmi"
243 + local CXXFLAGS="${CXXFLAGS} -mno-bmi"
244 + fi
245 +
246 + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
247 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
248 + cmake-utils_src_configure
249 +}
250 +
251 +multilib_src_compile() {
252 + cmake-utils_src_compile
253 +
254 + pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
255 + pax-mark m "${BUILD_DIR}"/bin/lli
256 + pax-mark m "${BUILD_DIR}"/bin/lli-child-target
257 +
258 + if use test; then
259 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
260 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
261 + pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
262 + fi
263 +}
264 +
265 +multilib_src_test() {
266 + # respect TMPDIR!
267 + local -x LIT_PRESERVES_TMP=1
268 + cmake-utils_src_make check
269 +}
270 +
271 +src_install() {
272 + local MULTILIB_CHOST_TOOLS=(
273 + /usr/lib/llvm/${SLOT}/bin/llvm-config
274 + )
275 +
276 + local MULTILIB_WRAPPED_HEADERS=(
277 + /usr/include/llvm/Config/llvm-config.h
278 + )
279 +
280 + local LLVM_LDPATHS=()
281 + multilib-minimal_src_install
282 +
283 + # move wrapped headers back
284 + mv "${ED%/}"/usr/include "${ED%/}"/usr/lib/llvm/${SLOT}/include || die
285 +}
286 +
287 +multilib_src_install() {
288 + cmake-utils_src_install
289 +
290 + # move headers to /usr/include for wrapping
291 + rm -rf "${ED%/}"/usr/include || die
292 + mv "${ED%/}"/usr/lib/llvm/${SLOT}/include "${ED%/}"/usr/include || die
293 +
294 + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
295 +}
296 +
297 +multilib_src_install_all() {
298 + local revord=$(( 9999 - ${SLOT} ))
299 + newenvd - "10llvm-${revord}" <<-_EOF_
300 + PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
301 + # we need to duplicate it in ROOTPATH for Portage to respect...
302 + ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
303 + MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
304 + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
305 + _EOF_
306 +
307 + # install pre-generated manpages
308 +# if ! use doc; then
309 +# # (doman does not support custom paths)
310 +# insinto "/usr/lib/llvm/${SLOT}/share/man/man1"
311 +# doins "${WORKDIR}/${P}-manpages/llvm"/*.1
312 +# fi
313 +
314 + docompress "/usr/lib/llvm/${SLOT}/share/man"
315 +}
316 +
317 +pkg_postinst() {
318 + elog "You can find additional opt-viewer utility scripts in:"
319 + elog " ${EROOT%/}/usr/lib/llvm/${SLOT}/share/opt-viewer"
320 + elog "To use these scripts, you will need Python 2.7 along with the following"
321 + elog "packages:"
322 + elog " dev-python/pygments (for opt-viewer)"
323 + elog " dev-python/pyyaml (for all of them)"
324 +}