diff options
author | Michał Górny <mgorny@gentoo.org> | 2022-07-31 11:58:20 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2022-07-31 15:56:38 +0200 |
commit | ca8f5b8a1452e77cbde2c85c93f4b32d64412556 (patch) | |
tree | 38b69dd8b9c7e34215532b8eb04451032a4a35d5 | |
parent | dev-lua/luasec: add 1.2.0 (diff) | |
download | gentoo-ca8f5b8a1452e77cbde2c85c93f4b32d64412556.tar.gz gentoo-ca8f5b8a1452e77cbde2c85c93f4b32d64412556.tar.bz2 gentoo-ca8f5b8a1452e77cbde2c85c93f4b32d64412556.zip |
sys-libs/libcxx: Fix testing against shared libc++abi.so
Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r-- | sys-libs/libcxx/libcxx-15.0.0.9999.ebuild | 57 |
1 files changed, 35 insertions, 22 deletions
diff --git a/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild b/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild index 22e74228d61a..ee78990d53b4 100644 --- a/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild +++ b/sys-libs/libcxx/libcxx-15.0.0.9999.ebuild @@ -177,11 +177,29 @@ multilib_src_configure() { cmake_src_configure } +multilib_src_compile() { + cmake_src_compile + if [[ ${CHOST} != *-darwin* ]] ; then + gen_shared_ldscript + use static-libs && gen_static_ldscript + fi +} + multilib_src_test() { local -x LIT_PRESERVES_TMP=1 cmake_build check-cxx } +multilib_src_install() { + cmake_src_install + # since we've replaced libc++.{a,so} with ldscripts, now we have to + # install the extra symlinks + if [[ ${CHOST} != *-darwin* ]] ; then + dolib.so lib/libc++_shared.so + use static-libs && dolib.a lib/libc++_static.a + fi +} + # Usage: deps gen_ldscript() { local output_format @@ -198,38 +216,33 @@ END_LDSCRIPT } gen_static_ldscript() { - local libdir=$(get_libdir) - local cxxabi_lib=$(usex libcxxabi "libc++abi.a" "libsupc++.a") - # Move it first. - mv "${ED}/usr/${libdir}/libc++.a" "${ED}/usr/${libdir}/libc++_static.a" || die + mv lib/libc++{,_static}.a || die # Generate libc++.a ldscript for inclusion of its dependencies so that # clang++ -stdlib=libc++ -static works out of the box. - local deps="libc++_static.a ${cxxabi_lib} $(usex libunwind libunwind.a libgcc_eh.a)" + local deps=( + libc++_static.a + $(usex libcxxabi libc++abi.a libsupc++.a) + $(usex libunwind libunwind.a libgcc_eh.a) + ) # On Linux/glibc it does not link without libpthread or libdl. It is # fine on FreeBSD. - use elibc_glibc && deps+=" libpthread.a libdl.a" + use elibc_glibc && deps+=( libpthread.a libdl.a ) - gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.a" || die + gen_ldscript "${deps[*]}" > lib/libc++.a || die } gen_shared_ldscript() { - local libdir=$(get_libdir) - # libsupc++ doesn't have a shared version - local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "libsupc++.a") - - mv "${ED}/usr/${libdir}/libc++.so" "${ED}/usr/${libdir}/libc++_shared.so" || die - local deps="libc++_shared.so ${cxxabi_lib} $(usex libunwind libunwind.so libgcc_s.so)" - - gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.so" || die -} + # Move it first. + mv lib/libc++{,_shared}.so || die + local deps=( + libc++_shared.so + # libsupc++ doesn't have a shared version + $(usex libcxxabi libc++abi.so libsupc++.a) + $(usex libunwind libunwind.so libgcc_s.so) + ) -multilib_src_install() { - cmake_src_install - if [[ ${CHOST} != *-darwin* ]] ; then - gen_shared_ldscript - use static-libs && gen_static_ldscript - fi + gen_ldscript "${deps[*]}" > lib/libc++.so || die } pkg_postinst() { |