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: Fri, 01 Dec 2017 23:40:56
Message-Id: 1512171627.40c027ef5886a3c1a949ae22dda2d1cc257c20f9.mgorny@gentoo
1 commit: 40c027ef5886a3c1a949ae22dda2d1cc257c20f9
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Fri Dec 1 09:57:45 2017 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Fri Dec 1 23:40:27 2017 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=40c027ef
7
8 sys-devel/llvm: Bump to 5.0.1_rc2
9
10 sys-devel/llvm/Manifest | 1 +
11 sys-devel/llvm/llvm-5.0.1_rc2.ebuild | 232 +++++++++++++++++++++++++++++++++++
12 2 files changed, 233 insertions(+)
13
14 diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
15 index a7ce94d288c..f732e737bce 100644
16 --- a/sys-devel/llvm/Manifest
17 +++ b/sys-devel/llvm/Manifest
18 @@ -29,5 +29,6 @@ DIST llvm-3.9.1-patchset.tar.xz 16404 SHA256 a4b3e5887b53af47984ea39ff8640f11e8a
19 DIST llvm-3.9.1.src.tar.xz 18130436 SHA256 1fd90354b9cf19232e8f168faf2220e79be555df3aa743242700879e8fd329ee SHA512 50cbe8ee911080f586e77861c442348701bd02e2de0c090c54c34f82ac275ecfcd712af0f41e387c33b4a6057778a4258a27554292fe68ab4af3fd9dd6d90683 WHIRLPOOL 1cd1a25befcb178bec4a4aace4367167f3838d32edbe9db9de8c6e558c01c1fcf123f6d6f80b7ec9ff32b3d6dcf2de2f4eb4201d417c3d17a5c8a69934832903
20 DIST llvm-4.0.1.src.tar.xz 21065652 BLAKE2B 6327eed2d1feb108440f22d2581d1ff86c10a10c29793538d8d899c7e2dc83d3f7b147d3fd4bcce2bd2bf57c071b08c624aeafe40a3e7a3914506e7751727e6c SHA512 16adc39b34ddb628f81b171119a8e2a0e9138b25011e803ef0b688e2fbea116fc4953d3a1b61b90a98a75e33619f81566b7cb06a9a2ea4d04ac5e0eb303a2d1d
21 DIST llvm-5.0.0.src.tar.xz 23411980 BLAKE2B bc3d8b75b766c83912252b51d6b57c8151c9d83415eff7bc771923d35138ed253a788d6c8e0a384c5e78ce1a1065f10d66ef5004df163b4c3b0c6274bb3aa6b7 SHA512 e6d8fdcb5bf27bded814d02f39f69c6171bc3a512d5957c03e5ac2e231f903b7de87634b059bd5c5da670f7c3a8f7a538f6299225799f15f921857f1452f6b3a
22 +DIST llvm-5.0.1rc2.src.tar.xz 23508164 BLAKE2B 3594d1658310a99787b4ff6f85aa8dd12a0405464bcb095ba4f205ce5b4ed3240a8ae1bef726ff98aba61ae5c8f8c10eeb8e415320d210af60f9e74bff7a8d5c SHA512 0a156e3949d22304b5e173dc9a3628161dff2798ad67924341c11494544350ef3a35a3ebb6ec8e7223b2407ce47cf12dafa6de8c006c5799a620e35a86c30b1b
23 DIST llvm-manpages-4.0.1.tar.bz2 87981 SHA256 28fa1dcd4774156247ba253d2d79c81796ef0f0763b4f37c9c5ae27af93f4320 SHA512 d5b3213567c25db58ef364d272314a79c311a80fc21d98c09a5540af45a8190a38f489228663fe9a9b63bf0f2b952c460c4196a8fc8d6f221619f6e7ed2fc415 WHIRLPOOL da897ea8d3713a5c4c10a6320f0e7dd13e0125e942e3444b0e8a2a062b83a8e86e3754be025b89ae00f63f557ec0518ab62d8cd21237962e93c708ca72c8e3f5
24 DIST llvm-manpages-5.0.0.tar.bz2 94240 SHA256 5082c316cf09e6c15d76f0b184745bf3392d3fd42a56cf0a5119b45918a67cb9 SHA512 0bccfb00caa0796bed8ea4e591616e025e43d304f05589180820c17f8567fa3a1f1f76c323098ed0d0e4590765415b1c1c272a94c6e2e7544788f4088ef0ffea WHIRLPOOL 410fe9eda01519c7ded00b2ca61dd323bafb3418a0a81fdc5c3b60d64ee80b75a6372ea29eb66a1b1ce6bb020c011cff7d9e896469dd6f9534fc19fb5b5a4696
25
26 diff --git a/sys-devel/llvm/llvm-5.0.1_rc2.ebuild b/sys-devel/llvm/llvm-5.0.1_rc2.ebuild
27 new file mode 100644
28 index 00000000000..374656b01b2
29 --- /dev/null
30 +++ b/sys-devel/llvm/llvm-5.0.1_rc2.ebuild
31 @@ -0,0 +1,232 @@
32 +# Copyright 1999-2017 Gentoo Foundation
33 +# Distributed under the terms of the GNU General Public License v2
34 +
35 +EAPI=6
36 +
37 +: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
38 +# (needed due to CMAKE_BUILD_TYPE != Gentoo)
39 +CMAKE_MIN_VERSION=3.7.0-r1
40 +PYTHON_COMPAT=( python2_7 )
41 +
42 +inherit cmake-utils eapi7-ver flag-o-matic multilib-minimal \
43 + pax-utils python-any-r1 toolchain-funcs
44 +
45 +DESCRIPTION="Low Level Virtual Machine"
46 +HOMEPAGE="https://llvm.org/"
47 +SRC_URI="http://prereleases.llvm.org/${PV/_//}/${P/_/}.src.tar.xz"
48 +# !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-manpages-${PV}.tar.bz2 )"
49 +
50 +# Keep in sync with CMakeLists.txt
51 +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
52 + NVPTX PowerPC Sparc SystemZ X86 XCore )
53 +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
54 +
55 +# Additional licenses:
56 +# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
57 +# 2. ARM backend: LLVM Software Grant by ARM.
58 +# 3. MD5 code: public-domain.
59 +# 4. Tests (not installed):
60 +# a. gtest: BSD.
61 +# b. YAML tests: MIT.
62 +
63 +LICENSE="UoI-NCSA rc BSD public-domain
64 + llvm_targets_ARM? ( LLVM-Grant )"
65 +SLOT="$(ver_cut 1)"
66 +KEYWORDS=""
67 +IUSE="debug +doc gold libedit +libffi ncurses test
68 + kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
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 +# configparser-3.2 breaks the build (3.3 or none at all are fine)
77 +DEPEND="${RDEPEND}
78 + dev-lang/perl
79 + || ( >=sys-devel/gcc-3.0 >=sys-devel/llvm-3.5
80 + ( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx )
81 + )
82 + || ( >=sys-devel/binutils-2.18 >=sys-devel/binutils-apple-5.1 )
83 + kernel_Darwin? ( <sys-libs/libcxx-$(ver_cut 1-3).9999 )
84 + doc? ( dev-python/sphinx )
85 + gold? ( sys-libs/binutils-libs )
86 + libffi? ( virtual/pkgconfig )
87 + !!<dev-python/configparser-3.3.0.2
88 + ${PYTHON_DEPS}"
89 +# There are no file collisions between these versions but having :0
90 +# installed means llvm-config there will take precedence.
91 +RDEPEND="${RDEPEND}
92 + !sys-devel/llvm:0"
93 +PDEPEND="sys-devel/llvm-common
94 + gold? ( sys-devel/llvmgold )"
95 +
96 +REQUIRED_USE="${PYTHON_REQUIRED_USE}
97 + || ( ${ALL_LLVM_TARGETS[*]} )"
98 +
99 +S=${WORKDIR}/${P/_/}.src
100 +
101 +# least intrusive of all
102 +CMAKE_BUILD_TYPE=RelWithDebInfo
103 +
104 +src_prepare() {
105 + # Fix llvm-config for shared linking and sane flags
106 + # https://bugs.gentoo.org/show_bug.cgi?id=565358
107 + eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
108 +
109 + # disable use of SDK on OSX, bug #568758
110 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
111 +
112 + # User patches + QA
113 + cmake-utils_src_prepare
114 +}
115 +
116 +multilib_src_configure() {
117 + local ffi_cflags ffi_ldflags
118 + if use libffi; then
119 + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
120 + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
121 + fi
122 +
123 + local libdir=$(get_libdir)
124 + local mycmakeargs=(
125 + # disable appending VCS revision to the version to improve
126 + # direct cache hit ratio
127 + -DLLVM_APPEND_VC_REV=OFF
128 + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
129 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
130 +
131 + -DBUILD_SHARED_LIBS=ON
132 + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
133 + -DLLVM_BUILD_TESTS=$(usex test)
134 +
135 + -DLLVM_ENABLE_FFI=$(usex libffi)
136 + -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
137 + -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
138 + -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
139 + -DLLVM_ENABLE_EH=ON
140 + -DLLVM_ENABLE_RTTI=ON
141 +
142 + -DWITH_POLLY=OFF # TODO
143 +
144 + -DLLVM_HOST_TRIPLE="${CHOST}"
145 +
146 + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
147 + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
148 +
149 + # disable OCaml bindings (now in dev-ml/llvm-ocaml)
150 + -DOCAMLFIND=NO
151 + )
152 +
153 +# Note: go bindings have no CMake rules at the moment
154 +# but let's kill the check in case they are introduced
155 +# if ! multilib_is_native_abi || ! use go; then
156 + mycmakeargs+=(
157 + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
158 + )
159 +# fi
160 +
161 + if multilib_is_native_abi; then
162 + mycmakeargs+=(
163 + -DLLVM_BUILD_DOCS=$(usex doc)
164 + -DLLVM_ENABLE_OCAMLDOC=OFF
165 + -DLLVM_ENABLE_SPHINX=$(usex doc)
166 + -DLLVM_ENABLE_DOXYGEN=OFF
167 + -DLLVM_INSTALL_UTILS=ON
168 + )
169 + use doc && mycmakeargs+=(
170 + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
171 + -DSPHINX_WARNINGS_AS_ERRORS=OFF
172 + )
173 + use gold && mycmakeargs+=(
174 + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
175 + )
176 + fi
177 +
178 + if tc-is-cross-compiler; then
179 + local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
180 + [[ -x "${tblgen}" ]] \
181 + || die "${tblgen} not found or usable"
182 + mycmakeargs+=(
183 + -DCMAKE_CROSSCOMPILING=ON
184 + -DLLVM_TABLEGEN="${tblgen}"
185 + )
186 + fi
187 +
188 + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
189 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
190 + cmake-utils_src_configure
191 +}
192 +
193 +multilib_src_compile() {
194 + cmake-utils_src_compile
195 +
196 + pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
197 + pax-mark m "${BUILD_DIR}"/bin/lli
198 + pax-mark m "${BUILD_DIR}"/bin/lli-child-target
199 +
200 + if use test; then
201 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
202 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
203 + pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
204 + fi
205 +}
206 +
207 +multilib_src_test() {
208 + # respect TMPDIR!
209 + local -x LIT_PRESERVES_TMP=1
210 + cmake-utils_src_make check
211 +}
212 +
213 +src_install() {
214 + local MULTILIB_CHOST_TOOLS=(
215 + /usr/lib/llvm/${SLOT}/bin/llvm-config
216 + )
217 +
218 + local MULTILIB_WRAPPED_HEADERS=(
219 + /usr/include/llvm/Config/llvm-config.h
220 + )
221 +
222 + local LLVM_LDPATHS=()
223 + multilib-minimal_src_install
224 +
225 + # move wrapped headers back
226 + mv "${ED%/}"/usr/include "${ED%/}"/usr/lib/llvm/${SLOT}/include || die
227 +}
228 +
229 +multilib_src_install() {
230 + cmake-utils_src_install
231 +
232 + # move headers to /usr/include for wrapping
233 + rm -rf "${ED%/}"/usr/include || die
234 + mv "${ED%/}"/usr/lib/llvm/${SLOT}/include "${ED%/}"/usr/include || die
235 +
236 + # install fuzzer libraries for clang (cmake rules were added in 6)
237 + # https://bugs.gentoo.org/636840
238 + into "/usr/lib/llvm/${SLOT}"
239 + dolib.a "$(get_libdir)"/libLLVMFuzzer*.a
240 +
241 + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
242 +}
243 +
244 +multilib_src_install_all() {
245 + local revord=$(( 9999 - ${SLOT} ))
246 + cat <<-_EOF_ > "${T}/10llvm-${revord}" || die
247 + PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
248 + # we need to duplicate it in ROOTPATH for Portage to respect...
249 + ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
250 + MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
251 + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
252 +_EOF_
253 + doenvd "${T}/10llvm-${revord}"
254 +
255 + # install pre-generated manpages
256 + if ! use doc; then
257 + # (doman does not support custom paths)
258 + insinto "/usr/lib/llvm/${SLOT}/share/man/man1"
259 + doins "${WORKDIR}/llvm-manpages-${PV}/llvm"/*.1
260 + fi
261 +
262 + docompress "/usr/lib/llvm/${SLOT}/share/man"
263 +}