Gentoo Archives: gentoo-commits

From: Fabian Groffen <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/proj/prefix:master commit in: sys-libs/libcxx/
Date: Tue, 02 Jan 2018 16:21:55
Message-Id: 1514909881.ce4edc8cdd9d6a2ec822de9ce37febb8b05402ff.grobian@gentoo
1 commit: ce4edc8cdd9d6a2ec822de9ce37febb8b05402ff
2 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
3 AuthorDate: Tue Jan 2 16:18:01 2018 +0000
4 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
5 CommitDate: Tue Jan 2 16:18:01 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=ce4edc8c
7
8 sys-libs/libcxx: bump to 5.0.1 by Michael Weiser, bug #538364
9
10 Bug: https://bugs.gentoo.org/538364
11 Package-Manager: Portage-2.3.18-prefix, Repoman-2.3.6
12
13 sys-libs/libcxx/Manifest | 2 +-
14 sys-libs/libcxx/libcxx-3.9.0.ebuild | 157 ------------------------
15 sys-libs/libcxx/libcxx-5.0.1.ebuild | 230 ++++++++++++++++++++++++++++++++++++
16 3 files changed, 231 insertions(+), 158 deletions(-)
17
18 diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest
19 index d58be2fa2e..b998ef46cd 100644
20 --- a/sys-libs/libcxx/Manifest
21 +++ b/sys-libs/libcxx/Manifest
22 @@ -1,5 +1,5 @@
23 DIST libcxx-3.5.1.src.tar.xz 912248 BLAKE2B 9215341a119eb56be7f6cefe9b8de664ab2e9e5e208ab017aa73cd539c8f5f9e0b41209f245904793adf2933a72afd0aa2428fb1983480190d4e2f4e83e62e0d SHA512 3be33787c79aa5d03a3f507be20ef986215d6008e4f0370e3c5906d76a620bf27c9ed4c35f4561c1ac507a1b217fa7fc7577611e7205f3f2433c677bf86b8632
24 DIST libcxx-3.7.1.src.tar.xz 995724 BLAKE2B aab68f1b99a2c817e7154b71c04c81bd809154d1ae1c077a2dfede37319070729d6d768223b6ba5e2a866d6c2f18972dd501ce517864378ebc26c49cacafb635 SHA512 08d2399a8b36aa15290733256c896c9fa43f1a1223bc5c73bbcd014fddf8880e514d2a6dcc456bcf18b537c01fb6911b092e6d9958bccd8e64e9f375ed7a1ab9
25 DIST libcxx-3.8.1.src.tar.xz 1074164 BLAKE2B 8aa07974a0301684f852408a62c173084fb913179bec951df3bae33895f8b46434eddc95b838cb936a5ef31f5b8ead25b7d0e241adc039eaea38ef95045c8ccb SHA512 782ff3cdb85d02e92404e943474d0266ff601725c202f0667d60e7807f1ba3cfdebbdb062e27a52fec96be1c99339044be93a88ba7e396682f98d99c9ac175b2
26 -DIST libcxx-3.9.0.src.tar.xz 1198308 BLAKE2B 689fed969562466bd230445a0edb886880d1034c45d5387922d1dd307898547e5605035c5aa901f3e844be3c1b2d066cf27aa0b996d7ade176ee38a9f49ac98a SHA512 55d5c4adff378ee02b0b99d732bc9f326910f9e49ab8c320a588eccdd0362fe009bc9a6a4337d29faf6338420c91b10d0d7d67f66128268f01258d30502c4f4a
27 DIST libcxx-3.9.1.src.tar.xz 1209020 BLAKE2B 510e77c2c1163babbba904933f441e8720b0d366b9f0cfa2cdde2401368c224e00efd66afc1403b0087c40549cda4ebbc4d0c4b2d0906178324fa6158502d5ad SHA512 a5976e4096624a7307b3e43f4a22ac2dc74572226e0f57af9f3ef537a14c3cff1601b7042aef9dc40a0ee53ca76b08d72eb9c253dcf34f115d3153c302db7070
28 +DIST libcxx-5.0.1.src.tar.xz 1527852 BLAKE2B 9454fbca8228ee456feb79b65a63ce5daa27bf2e47e457d79592f4974dceeace19fe6cdeee51cc51f94e9072d7ce3c03e5acb617507670153647b9c435feadbd SHA512 994681d3c79047fc2d618c5584b08e9b5c925dab48f8812fc0adc81a575b49a637e9481bb9a0f7ae6f7f352b2b33f40056c347c27123cd6c96c6c226febd002c
29
30 diff --git a/sys-libs/libcxx/libcxx-3.9.0.ebuild b/sys-libs/libcxx/libcxx-3.9.0.ebuild
31 deleted file mode 100644
32 index 4d5e1ee549..0000000000
33 --- a/sys-libs/libcxx/libcxx-3.9.0.ebuild
34 +++ /dev/null
35 @@ -1,157 +0,0 @@
36 -# Copyright 1999-2016 Gentoo Foundation
37 -# Distributed under the terms of the GNU General Public License v2
38 -# $Id $
39 -
40 -EAPI=5
41 -
42 -ESVN_REPO_URI="http://llvm.org/svn/llvm-project/libcxx/trunk"
43 -
44 -[ "${PV%9999}" != "${PV}" ] && SCM="subversion" || SCM=""
45 -
46 -inherit ${SCM} flag-o-matic toolchain-funcs cmake-multilib
47 -
48 -DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
49 -HOMEPAGE="http://libcxx.llvm.org/"
50 -if [ "${PV%9999}" = "${PV}" ] ; then
51 - SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.xz"
52 - S="${WORKDIR}/${P}.src"
53 -else
54 - SRC_URI=""
55 -fi
56 -
57 -LICENSE="|| ( UoI-NCSA MIT )"
58 -SLOT="0"
59 -if [ "${PV%9999}" = "${PV}" ] ; then
60 - KEYWORDS="~x64-macos ~x86-macos"
61 -else
62 - KEYWORDS=""
63 -fi
64 -REQUIRED_USE="kernel_Darwin? ( libcxxabi !static-abi-lib )"
65 -IUSE="elibc_glibc libcxxrt +libcxxabi static-libs static-abi-lib test"
66 -
67 -RDEPEND="
68 - !kernel_Darwin? (
69 - libcxxrt? ( >=sys-libs/libcxxrt-0.0_p20130725[static-libs?,${MULTILIB_USEDEP}] )
70 - !libcxxrt? ( >=sys-devel/gcc-4.7[cxx] )
71 - )
72 - kernel_Darwin? (
73 - =sys-libs/libcxx-headers-${PV}
74 - =sys-libs/libcxxabi-${PV}
75 - sys-devel/clang
76 - )"
77 -DEPEND="${RDEPEND}
78 - test? ( sys-devel/clang )
79 - app-arch/xz-utils
80 - static-abi-lib? (
81 - libcxxabi? ( sys-libs/libcxxabi[static-libs] )
82 - !libcxxabi? (
83 - libcxxrt? ( sys-libs/libcxxrt[static-libs] )
84 - )
85 - )
86 - "
87 -
88 -DOCS=( CREDITS.TXT )
89 -
90 -pkg_setup() {
91 - if [[ ${CHOST} == *darwin* ]] ; then
92 - MY_CC=$(tc-getCC)
93 - MY_CXX=$(tc-getCXX)
94 - if [[ ${MY_CC} != *clang* || ${MY_CXX} != *clang++* ]] ; then
95 - eerror "${PN} needs to be built with clang++. Please do not override"
96 - eerror "CC ($MY_CC) and CXX ($MY_CXX)"
97 - eerror "or point them at clang and clang++ respectively."
98 - die
99 - fi
100 - fi
101 - if ! use libcxxabi && ! use libcxxrt ; then
102 - ewarn "You have disabled USE=libcxxrt. This will build ${PN} against"
103 - ewarn "libsupc++. Please note that this is not well supported."
104 - ewarn "In particular, static linking will not work."
105 - fi
106 - if [[ $(gcc-version) < 4.7 ]] && [[ $(tc-getCXX) != *clang++* ]] ; then
107 - eerror "${PN} needs to be built with clang++ or gcc-4.7 or later."
108 - eerror "Please use gcc-config to switch to gcc-4.7 or later version."
109 - die
110 - fi
111 -}
112 -
113 -src_prepare() {
114 - sed -i -e "/set.LLVM_CMAKE_PATH.*\\/cmake\\/modules/s@cmake/modules@cmake@" cmake/Modules/HandleOutOfTreeLLVM.cmake
115 -
116 - # The library can only be built as either shared or static. So use two
117 - # separate build dirs with separate configurations.
118 - BUILD_DIR_SHARED=${WORKDIR}/${P}_build
119 - BUILD_DIR_STATIC=${WORKDIR}/${P}_build_static
120 -}
121 -
122 -src_configure() {
123 - local mycmakeargs=(
124 - -DLLVM_PATH=${EPREFIX}/usr/share/llvm
125 - -DLIBCXX_INSTALL_HEADERS=NO
126 - )
127 -
128 - # make sure we build multilib on OSX, because llvm insists on
129 - # building multilib too
130 - [[ ${CHOST} == *86*-darwin* ]] && append-flags -arch i386 -arch x86_64
131 -
132 - if use libcxxabi ; then
133 - mycmakeargs+=(
134 - -DLIBCXX_CXX_ABI=libcxxabi
135 - # avoid guessing of libcxxabi version by installed SDK discovered
136 - # via xc-run - we know better because we require a libcxxabi version
137 - # matching our own
138 - -DLIBCXX_LIBCPPABI_VERSION=2
139 - # avoid configure warning about not being able to find cxxabi.h
140 - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${EPREFIX}/usr/include
141 - )
142 - elif use libcxxrt ; then
143 - mycmakeargs+=( -DLIBCXX_CXX_ABI=libcxxrt )
144 - else
145 - mycmakeargs+=( -DLIBCXX_CXX_ABI=libsupc++ )
146 - fi
147 -
148 - use static-abi-lib && mycmakeargs+=( -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON )
149 - use test && mycmakeargs+=( -DLIBCXX_INCLUDE_TESTS=ON )
150 -
151 - BUILD_DIR=${BUILD_DIR_SHARED} cmake-multilib_src_configure
152 - if use static-libs ; then
153 - mycmakeargs+=( -DLIBCXX_ENABLE_SHARED=NO )
154 - BUILD_DIR=${BUILD_DIR_STATIC} cmake-multilib_src_configure
155 - fi
156 -}
157 -
158 -src_compile() {
159 - BUILD_DIR=${BUILD_DIR_SHARED} cmake-multilib_src_compile
160 -
161 - # reconfigure and recompile for additional static libs if enabled
162 - use static-libs && \
163 - BUILD_DIR=${BUILD_DIR_STATIC} cmake-multilib_src_compile
164 -}
165 -
166 -src_test() {
167 - BUILD_DIR=${BUILD_DIR_SHARED} cmake-multilib_src_test
168 - use static-libs && \
169 - BUILD_DIR=${BUILD_DIR_STATIC} cmake-multilib_src_test
170 -}
171 -
172 -multilib_src_test() {
173 - cmake-utils_src_make check-libcxx
174 -}
175 -
176 -src_install() {
177 - BUILD_DIR=${BUILD_DIR_SHARED} cmake-multilib_src_install
178 - use static-libs && \
179 - BUILD_DIR=${BUILD_DIR_STATIC} cmake-multilib_src_install
180 -}
181 -
182 -multilib_src_install_all() {
183 - einstalldocs
184 -}
185 -
186 -pkg_postinst() {
187 - elog "This package (${PN}) is mainly intended as a replacement for the C++"
188 - elog "standard library when using clang."
189 - elog "To use it, instead of libstdc++, use:"
190 - elog " clang++ -stdlib=libc++"
191 - elog "to compile your C++ programs."
192 -}
193
194 diff --git a/sys-libs/libcxx/libcxx-5.0.1.ebuild b/sys-libs/libcxx/libcxx-5.0.1.ebuild
195 new file mode 100644
196 index 0000000000..889825b71c
197 --- /dev/null
198 +++ b/sys-libs/libcxx/libcxx-5.0.1.ebuild
199 @@ -0,0 +1,230 @@
200 +# Copyright 1999-2018 Gentoo Foundation
201 +# Distributed under the terms of the GNU General Public License v2
202 +# $Id$
203 +
204 +EAPI=6
205 +
206 +# Ninja provides better scalability and cleaner verbose output, and is used
207 +# throughout all LLVM projects.
208 +: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
209 +EGIT_REPO_URI="http://llvm.org/git/libcxx.git
210 + https://github.com/llvm-mirror/libcxx.git"
211 +PYTHON_COMPAT=( python2_7 )
212 +
213 +[[ ${PV} == 9999 ]] && SCM="git-r3" || SCM=""
214 +
215 +inherit ${SCM} cmake-multilib python-any-r1 toolchain-funcs flag-o-matic
216 +
217 +DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
218 +HOMEPAGE="http://libcxx.llvm.org/"
219 +if [[ ${PV} != 9999 ]] ; then
220 + SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.xz"
221 + S="${WORKDIR}/${P}.src"
222 +else
223 + SRC_URI=""
224 +fi
225 +
226 +LICENSE="|| ( UoI-NCSA MIT )"
227 +SLOT="0"
228 +if [[ ${PV} != 9999 ]] ; then
229 + KEYWORDS="~x64-macos ~x86-macos"
230 +else
231 + KEYWORDS=""
232 +fi
233 +IUSE="elibc_Darwin elibc_glibc elibc_musl +libcxxabi libcxxrt libunwind +static-libs test"
234 +REQUIRED_USE="libunwind? ( || ( libcxxabi libcxxrt ) )
235 + elibc_Darwin? ( libcxxabi )
236 + ?? ( libcxxabi libcxxrt )"
237 +
238 +RDEPEND="
239 + libcxxabi? ( ~sys-libs/libcxxabi-${PV}[libunwind=,static-libs?,${MULTILIB_USEDEP}] )
240 + !elibc_Darwin? (
241 + libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,${MULTILIB_USEDEP}] )
242 + !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) )
243 + )
244 + elibc_Darwin? ( !sys-libs/libcxx-headers )"
245 +# llvm-3.9.0 needed because its cmake files installation path changed, which is
246 +# needed by libcxx
247 +# clang-3.9.0 installs necessary target symlinks unconditionally
248 +# which removes the need for MULTILIB_USEDEP
249 +DEPEND="${RDEPEND}
250 + test? ( >=sys-devel/clang-3.9.0
251 + $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') )
252 + app-arch/xz-utils
253 + >=sys-devel/llvm-3.9.0"
254 +
255 +DOCS=( CREDITS.TXT )
256 +
257 +PATCHES=(
258 + # Add link flag "-Wl,-z,defs" to avoid underlinking; this is needed in a
259 + # out-of-tree build.
260 + "${FILESDIR}/${PN}-3.9-cmake-link-flags.patch"
261 +)
262 +
263 +python_check_deps() {
264 + has_version "dev-python/lit[${PYTHON_USEDEP}]"
265 +}
266 +
267 +pkg_setup() {
268 + use test && python-any-r1_pkg_setup
269 +
270 + if ! use libcxxabi && ! use libcxxrt && ! tc-is-gcc ; then
271 + eerror "To build ${PN} against libsupc++, you have to use gcc. Other"
272 + eerror "compilers are not supported. Please set CC=gcc and CXX=g++"
273 + eerror "and try again."
274 + die
275 + fi
276 + if tc-is-gcc && [[ $(gcc-version) < 4.7 ]] ; then
277 + eerror "${PN} needs to be built with gcc-4.7 or later (or other"
278 + eerror "conformant compilers). Please use gcc-config to switch to"
279 + eerror "gcc-4.7 or later version."
280 + die
281 + fi
282 +}
283 +
284 +src_configure() {
285 + NATIVE_LIBDIR=$(get_libdir)
286 + cmake-multilib_src_configure
287 +}
288 +
289 +multilib_src_configure() {
290 + local cxxabi cxxabi_incs
291 + if use libcxxabi; then
292 + cxxabi=libcxxabi
293 + cxxabi_incs="${EPREFIX}/usr/include/libcxxabi"
294 + elif use libcxxrt; then
295 + cxxabi=libcxxrt
296 + cxxabi_incs="${EPREFIX}/usr/include/libcxxrt"
297 + else
298 + local gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
299 + cxxabi=libsupc++
300 + cxxabi_incs="${gcc_inc};${gcc_inc}/${CHOST}"
301 + fi
302 +
303 + # we want -lgcc_s for unwinder, and for compiler runtime when using
304 + # gcc, clang with gcc runtime (or any unknown compiler)
305 + local extra_libs=() want_gcc_s=ON
306 + if use libunwind; then
307 + # work-around missing -lunwind upstream
308 + extra_libs+=( -lunwind )
309 + # if we're using libunwind and clang with compiler-rt, we want
310 + # to link to compiler-rt instead of -lgcc_s
311 + if tc-is-clang; then
312 + # get the full library list out of 'pretend mode'
313 + # and grep it for libclang_rt references
314 + local args=( $($(tc-getCC) -### -x c - 2>&1 | tail -n 1) )
315 + local i
316 + for i in "${args[@]}"; do
317 + if [[ ${i} == *libclang_rt* ]]; then
318 + want_gcc_s=OFF
319 + extra_libs+=( "${i}" )
320 + fi
321 + done
322 + fi
323 + fi
324 + # Darwin has libunwind in its system
325 + [[ ${CHOST} == *-darwin* ]] && want_gcc_s=OFF
326 +
327 + local libdir=$(get_libdir)
328 + local mycmakeargs=(
329 + # LLVM_LIBDIR_SUFFIX is used to find CMake files
330 + # and we are happy to use the native set
331 + -DLLVM_LIBDIR_SUFFIX=${NATIVE_LIBDIR#lib}
332 + -DLIBCXX_LIBDIR_SUFFIX=${libdir#lib}
333 + -DLIBCXX_ENABLE_SHARED=ON
334 + -DLIBCXX_ENABLE_STATIC=$(usex static-libs)
335 + -DLIBCXX_CXX_ABI=${cxxabi}
336 + -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi_incs}
337 + # we're using our own mechanism for generating linker scripts
338 + -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
339 + -DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl)
340 + -DLIBCXX_HAS_GCC_S_LIB=${want_gcc_s}
341 + -DLIBCXX_INCLUDE_TESTS=$(usex test)
342 + -DCMAKE_SHARED_LINKER_FLAGS="${extra_libs[*]} ${LDFLAGS}"
343 + # avoid guessing of libcxxabi version by installed SDK discovered
344 + # via xc-run - we know better because we require a libcxxabi version
345 + # matching our own
346 + -DLIBCXX_LIBCPPABI_VERSION=2
347 + )
348 +
349 + if use test; then
350 + mycmakeargs+=(
351 + # this can be any directory, it just needs to exist...
352 + -DLLVM_MAIN_SRC_DIR="${T}"
353 + -DLIT_COMMAND="${EPREFIX}"/usr/bin/lit
354 + )
355 + fi
356 +
357 + # make sure we build multilib on OSX, because llvm insists on
358 + # building multilib too
359 + [[ ${CHOST} == *86*-darwin* ]] && append-flags -arch i386 -arch x86_64
360 +
361 + cmake-utils_src_configure
362 +}
363 +
364 +multilib_src_test() {
365 + local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null)
366 +
367 + [[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests"
368 + sed -i -e "/cxx_under_test/s^\".*\"^\"${clang_path}\"^" test/lit.site.cfg || die
369 +
370 + cmake-utils_src_make check-libcxx
371 +}
372 +
373 +# Usage: deps
374 +gen_ldscript() {
375 + local output_format
376 + output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
377 + [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"
378 +
379 + cat <<-END_LDSCRIPT
380 +/* GNU ld script
381 + Include missing dependencies
382 +*/
383 +${output_format}
384 +GROUP ( $@ )
385 +END_LDSCRIPT
386 +}
387 +
388 +gen_static_ldscript() {
389 + local libdir=$(get_libdir)
390 + local cxxabi_lib=$(usex libcxxabi "libc++abi.a" "$(usex libcxxrt "libcxxrt.a" "libsupc++.a")")
391 +
392 + # Move it first.
393 + mv "${ED}/usr/${libdir}/libc++.a" "${ED}/usr/${libdir}/libc++_static.a" || die
394 + # Generate libc++.a ldscript for inclusion of its dependencies so that
395 + # clang++ -stdlib=libc++ -static works out of the box.
396 + local deps="libc++_static.a ${cxxabi_lib} $(usex libunwind libunwind.a libgcc_eh.a)"
397 + # On Linux/glibc it does not link without libpthread or libdl. It is
398 + # fine on FreeBSD.
399 + use elibc_glibc && deps+=" libpthread.a libdl.a"
400 +
401 + gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.a" || die
402 +}
403 +
404 +gen_shared_ldscript() {
405 + local libdir=$(get_libdir)
406 + # libsupc++ doesn't have a shared version
407 + local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "$(usex libcxxrt "libcxxrt.so" "libsupc++.a")")
408 +
409 + mv "${ED}/usr/${libdir}/libc++.so" "${ED}/usr/${libdir}/libc++_shared.so" || die
410 + local deps="libc++_shared.so ${cxxabi_lib} $(usex libunwind libunwind.so libgcc_s.so)"
411 +
412 + gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.so" || die
413 +}
414 +
415 +multilib_src_install() {
416 + cmake-utils_src_install
417 + if [[ ${CHOST} != *-darwin* ]] ; then
418 + gen_shared_ldscript
419 + use static-libs && gen_static_ldscript
420 + fi
421 +}
422 +
423 +pkg_postinst() {
424 + elog "This package (${PN}) is mainly intended as a replacement for the C++"
425 + elog "standard library when using clang."
426 + elog "To use it, instead of libstdc++, use:"
427 + elog " clang++ -stdlib=libc++"
428 + elog "to compile your C++ programs."
429 +}