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