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