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, 09 Feb 2018 16:00:17
Message-Id: 1518191997.1b7805381006b3738dff76c39ff4b93099de9d05.mgorny@gentoo
1 commit: 1b7805381006b3738dff76c39ff4b93099de9d05
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Fri Feb 9 09:50:49 2018 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Fri Feb 9 15:59:57 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1b780538
7
8 sys-devel/llvm: Bump to 6.0.0rc2
9
10 sys-devel/llvm/Manifest | 1 +
11 sys-devel/llvm/llvm-6.0.0_rc2.ebuild | 239 +++++++++++++++++++++++++++++++++++
12 2 files changed, 240 insertions(+)
13
14 diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
15 index 707222e9ead..caabb01e28b 100644
16 --- a/sys-devel/llvm/Manifest
17 +++ b/sys-devel/llvm/Manifest
18 @@ -32,4 +32,5 @@ DIST llvm-4.0.1.src.tar.xz 21065652 BLAKE2B 6327eed2d1feb108440f22d2581d1ff86c10
19 DIST llvm-5.0.1-manpages.tar.bz2 94004 BLAKE2B 34eb29361ad7aa881e64d1dd2992fd89ce44adafd2521284c27b6ffe7082bc7e70458204e6f34d582b704bf7c5dad93c6a6dc41fc7abc41862aab8f5ec53ed07 SHA512 3444cc8e06009f5dd2669b92af662a1049d9294c8ca0dcf45486e1dc1aaf10160860b7856d30ad70bbe5864b21d1539316e89f5237549f5653954e23baf64334
20 DIST llvm-5.0.1-patchset.tar.bz2 4204 BLAKE2B e7282e84578631d88549bdf34e5a44e0294e47ef1fee29c0cb954d7afd160d4b6a0f39bb3bd53791ea53503a60eaa0ada0a512a63d696ff096dc6f21f4aecdc7 SHA512 395ea2b13008e222c034e2bdd8c2bb033b9c01e61fb89c840f009f6cddb499b317df8b061d29f40968d8f0df5540a2f4a9de31eef1de886796c8c334f37254eb
21 DIST llvm-5.0.1.src.tar.xz 23428720 BLAKE2B 3db4d33df21018d17eef0042c0d8d82a8412bd5daa99cfb5405a6ec83c5774178fa76b220e8731c2a9a64dabf898aa90fe29c685327bd63a4f078e8e94a9a77e SHA512 bee1d45fca15ce725b1f2b1339b13eb6f750a3a321cfd099075477ec25835a8ca55b5366172c4aad46592dfd8afe372349ecf264f581463d017f9cee2d63c1cb
22 +DIST llvm-6.0.0rc2.src.tar.xz 25288140 BLAKE2B 095f054ce2ccb1eee3def2b8c6cecc610c4392283062338aa20d2de33c951484a2dc6774db2727e19e879307cfc95dda2730185cde8e52f4f45851d8dd809b3e SHA512 3cb3521ba8d90bf2a90c49d753ab5e92f1e0ccfc86946f3767c06d0f276e2c4cf8ff2f984680835efbaa4dae1cd2d3a074468e547785e05a67ea55311b94a0e9
23 DIST llvm-manpages-4.0.1.tar.bz2 87981 BLAKE2B 79ffd254ee5c6e09159c954913ef820f74107d4fcea5e3ed82592dc36af8fdfbf1e850547ba8bfc20aa9a5ecdd26c50329e6a6d558ae3aa5475a930789ce3e01 SHA512 d5b3213567c25db58ef364d272314a79c311a80fc21d98c09a5540af45a8190a38f489228663fe9a9b63bf0f2b952c460c4196a8fc8d6f221619f6e7ed2fc415
24
25 diff --git a/sys-devel/llvm/llvm-6.0.0_rc2.ebuild b/sys-devel/llvm/llvm-6.0.0_rc2.ebuild
26 new file mode 100644
27 index 00000000000..5656b68b8b5
28 --- /dev/null
29 +++ b/sys-devel/llvm/llvm-6.0.0_rc2.ebuild
30 @@ -0,0 +1,239 @@
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 + pax-utils python-any-r1 toolchain-funcs
43 +
44 +DESCRIPTION="Low Level Virtual Machine"
45 +HOMEPAGE="https://llvm.org/"
46 +SRC_URI="http://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 +
103 +S=${WORKDIR}/${P/_/}.src
104 +
105 +# least intrusive of all
106 +CMAKE_BUILD_TYPE=RelWithDebInfo
107 +
108 +src_prepare() {
109 + # Fix llvm-config for shared linking and sane flags
110 + # https://bugs.gentoo.org/show_bug.cgi?id=565358
111 + eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
112 +
113 + # disable use of SDK on OSX, bug #568758
114 + sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
115 +
116 + # User patches + QA
117 + cmake-utils_src_prepare
118 +}
119 +
120 +multilib_src_configure() {
121 + local ffi_cflags ffi_ldflags
122 + if use libffi; then
123 + ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
124 + ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
125 + fi
126 +
127 + local libdir=$(get_libdir)
128 + local mycmakeargs=(
129 + # disable appending VCS revision to the version to improve
130 + # direct cache hit ratio
131 + -DLLVM_APPEND_VC_REV=OFF
132 + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
133 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
134 +
135 + -DBUILD_SHARED_LIBS=ON
136 + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
137 + -DLLVM_BUILD_TESTS=$(usex test)
138 +
139 + -DLLVM_ENABLE_FFI=$(usex libffi)
140 + -DLLVM_ENABLE_LIBEDIT=$(usex libedit)
141 + -DLLVM_ENABLE_TERMINFO=$(usex ncurses)
142 + -DLLVM_ENABLE_LIBXML2=$(usex xml)
143 + -DLLVM_ENABLE_ASSERTIONS=$(usex debug)
144 + -DLLVM_ENABLE_EH=ON
145 + -DLLVM_ENABLE_RTTI=ON
146 +
147 + -DWITH_POLLY=OFF # TODO
148 +
149 + -DLLVM_HOST_TRIPLE="${CHOST}"
150 +
151 + -DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
152 + -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
153 + # used only for llvm-objdump tool
154 + -DHAVE_LIBXAR=$(multilib_native_usex xar 1 0)
155 +
156 + # disable OCaml bindings (now in dev-ml/llvm-ocaml)
157 + -DOCAMLFIND=NO
158 + )
159 +
160 +# Note: go bindings have no CMake rules at the moment
161 +# but let's kill the check in case they are introduced
162 +# if ! multilib_is_native_abi || ! use go; then
163 + mycmakeargs+=(
164 + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
165 + )
166 +# fi
167 +
168 + use test && mycmakeargs+=(
169 + -DLLVM_LIT_ARGS="-vv"
170 + )
171 +
172 + if multilib_is_native_abi; then
173 + mycmakeargs+=(
174 + -DLLVM_BUILD_DOCS=$(usex doc)
175 + -DLLVM_ENABLE_OCAMLDOC=OFF
176 + -DLLVM_ENABLE_SPHINX=$(usex doc)
177 + -DLLVM_ENABLE_DOXYGEN=OFF
178 + -DLLVM_INSTALL_UTILS=ON
179 + )
180 + use doc && mycmakeargs+=(
181 + -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
182 + -DSPHINX_WARNINGS_AS_ERRORS=OFF
183 + )
184 + use gold && mycmakeargs+=(
185 + -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
186 + )
187 + fi
188 +
189 + if tc-is-cross-compiler; then
190 + local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen"
191 + [[ -x "${tblgen}" ]] \
192 + || die "${tblgen} not found or usable"
193 + mycmakeargs+=(
194 + -DCMAKE_CROSSCOMPILING=ON
195 + -DLLVM_TABLEGEN="${tblgen}"
196 + )
197 + fi
198 +
199 + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
200 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
201 + cmake-utils_src_configure
202 +}
203 +
204 +multilib_src_compile() {
205 + cmake-utils_src_compile
206 +
207 + pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
208 + pax-mark m "${BUILD_DIR}"/bin/lli
209 + pax-mark m "${BUILD_DIR}"/bin/lli-child-target
210 +
211 + if use test; then
212 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
213 + pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
214 + pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
215 + fi
216 +}
217 +
218 +multilib_src_test() {
219 + # respect TMPDIR!
220 + local -x LIT_PRESERVES_TMP=1
221 + cmake-utils_src_make check
222 +}
223 +
224 +src_install() {
225 + local MULTILIB_CHOST_TOOLS=(
226 + /usr/lib/llvm/${SLOT}/bin/llvm-config
227 + )
228 +
229 + local MULTILIB_WRAPPED_HEADERS=(
230 + /usr/include/llvm/Config/llvm-config.h
231 + )
232 +
233 + local LLVM_LDPATHS=()
234 + multilib-minimal_src_install
235 +
236 + # move wrapped headers back
237 + mv "${ED%/}"/usr/include "${ED%/}"/usr/lib/llvm/${SLOT}/include || die
238 +}
239 +
240 +multilib_src_install() {
241 + cmake-utils_src_install
242 +
243 + # move headers to /usr/include for wrapping
244 + rm -rf "${ED%/}"/usr/include || die
245 + mv "${ED%/}"/usr/lib/llvm/${SLOT}/include "${ED%/}"/usr/include || die
246 +
247 + LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
248 +}
249 +
250 +multilib_src_install_all() {
251 + local revord=$(( 9999 - ${SLOT} ))
252 + cat <<-_EOF_ > "${T}/10llvm-${revord}" || die
253 + PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
254 + # we need to duplicate it in ROOTPATH for Portage to respect...
255 + ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
256 + MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man"
257 + LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
258 +_EOF_
259 + doenvd "${T}/10llvm-${revord}"
260 +
261 + # install pre-generated manpages
262 +# if ! use doc; then
263 +# # (doman does not support custom paths)
264 +# insinto "/usr/lib/llvm/${SLOT}/share/man/man1"
265 +# doins "${WORKDIR}/${P}-manpages/llvm"/*.1
266 +# fi
267 +
268 + docompress "/usr/lib/llvm/${SLOT}/share/man"
269 +}