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-libs/libcxx/
Date: Sun, 31 Jul 2022 13:56:54
Message-Id: 1659275798.ca8f5b8a1452e77cbde2c85c93f4b32d64412556.mgorny@gentoo
1 commit: ca8f5b8a1452e77cbde2c85c93f4b32d64412556
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jul 31 09:58:20 2022 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Sun Jul 31 13:56:38 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ca8f5b8a
7
8 sys-libs/libcxx: Fix testing against shared libc++abi.so
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 sys-libs/libcxx/libcxx-15.0.0.9999.ebuild | 57 +++++++++++++++++++------------
13 1 file changed, 35 insertions(+), 22 deletions(-)
14
15 diff --git a/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild b/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild
16 index 22e74228d61a..ee78990d53b4 100644
17 --- a/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild
18 +++ b/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild
19 @@ -177,11 +177,29 @@ multilib_src_configure() {
20 cmake_src_configure
21 }
22
23 +multilib_src_compile() {
24 + cmake_src_compile
25 + if [[ ${CHOST} != *-darwin* ]] ; then
26 + gen_shared_ldscript
27 + use static-libs && gen_static_ldscript
28 + fi
29 +}
30 +
31 multilib_src_test() {
32 local -x LIT_PRESERVES_TMP=1
33 cmake_build check-cxx
34 }
35
36 +multilib_src_install() {
37 + cmake_src_install
38 + # since we've replaced libc++.{a,so} with ldscripts, now we have to
39 + # install the extra symlinks
40 + if [[ ${CHOST} != *-darwin* ]] ; then
41 + dolib.so lib/libc++_shared.so
42 + use static-libs && dolib.a lib/libc++_static.a
43 + fi
44 +}
45 +
46 # Usage: deps
47 gen_ldscript() {
48 local output_format
49 @@ -198,38 +216,33 @@ END_LDSCRIPT
50 }
51
52 gen_static_ldscript() {
53 - local libdir=$(get_libdir)
54 - local cxxabi_lib=$(usex libcxxabi "libc++abi.a" "libsupc++.a")
55 -
56 # Move it first.
57 - mv "${ED}/usr/${libdir}/libc++.a" "${ED}/usr/${libdir}/libc++_static.a" || die
58 + mv lib/libc++{,_static}.a || die
59 # Generate libc++.a ldscript for inclusion of its dependencies so that
60 # clang++ -stdlib=libc++ -static works out of the box.
61 - local deps="libc++_static.a ${cxxabi_lib} $(usex libunwind libunwind.a libgcc_eh.a)"
62 + local deps=(
63 + libc++_static.a
64 + $(usex libcxxabi libc++abi.a libsupc++.a)
65 + $(usex libunwind libunwind.a libgcc_eh.a)
66 + )
67 # On Linux/glibc it does not link without libpthread or libdl. It is
68 # fine on FreeBSD.
69 - use elibc_glibc && deps+=" libpthread.a libdl.a"
70 + use elibc_glibc && deps+=( libpthread.a libdl.a )
71
72 - gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.a" || die
73 + gen_ldscript "${deps[*]}" > lib/libc++.a || die
74 }
75
76 gen_shared_ldscript() {
77 - local libdir=$(get_libdir)
78 - # libsupc++ doesn't have a shared version
79 - local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "libsupc++.a")
80 -
81 - mv "${ED}/usr/${libdir}/libc++.so" "${ED}/usr/${libdir}/libc++_shared.so" || die
82 - local deps="libc++_shared.so ${cxxabi_lib} $(usex libunwind libunwind.so libgcc_s.so)"
83 -
84 - gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.so" || die
85 -}
86 + # Move it first.
87 + mv lib/libc++{,_shared}.so || die
88 + local deps=(
89 + libc++_shared.so
90 + # libsupc++ doesn't have a shared version
91 + $(usex libcxxabi libc++abi.so libsupc++.a)
92 + $(usex libunwind libunwind.so libgcc_s.so)
93 + )
94
95 -multilib_src_install() {
96 - cmake_src_install
97 - if [[ ${CHOST} != *-darwin* ]] ; then
98 - gen_shared_ldscript
99 - use static-libs && gen_static_ldscript
100 - fi
101 + gen_ldscript "${deps[*]}" > lib/libc++.so || die
102 }
103
104 pkg_postinst() {