sys-libs/libcxx: Fix ldscripts to include gcc EH lib for USE=-unwind
authorMichał Górny <mgorny@gentoo.org>
Thu, 6 Oct 2016 15:19:42 +0000 (17:19 +0200)
committerMichał Górny <mgorny@gentoo.org>
Fri, 7 Oct 2016 08:41:21 +0000 (10:41 +0200)
sys-libs/libcxx/libcxx-3.9.0.ebuild
sys-libs/libcxx/libcxx-9999.ebuild

index 656a9799a33d904fda5b73252c3f47aea6116b9f..a92f0f8091ab9c5332453cbdb0574d86dcec0704 100644 (file)
@@ -161,12 +161,10 @@ gen_static_ldscript() {
        mv "${ED}/usr/${libdir}/libc++.a" "${ED}/usr/${libdir}/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}"
+       local deps="libc++_static.a ${cxxabi_lib} $(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"
-       # unlike libgcc_s, libunwind is not implicitly linked
-       use libunwind && deps+=" libunwind.a"
 
        gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.a" || die
 }
@@ -177,8 +175,7 @@ gen_shared_ldscript() {
        local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "$(usex libcxxrt "libcxxrt.so" "libsupc++.a")")
 
        mv "${ED}/usr/${libdir}/libc++.so" "${ED}/usr/${libdir}/libc++_shared.so" || die
-       local deps="libc++_shared.so ${cxxabi_lib}"
-       use libunwind && deps+=" libunwind.so"
+       local deps="libc++_shared.so ${cxxabi_lib} $(usex libunwind libunwind.so libgcc_s.so)"
 
        gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.so" || die
 }
index a5e7c7fc2575ab9088d5839c689b64a08067312e..bbc218b36af324802c439ad47683412a63eb0e14 100644 (file)
@@ -158,12 +158,10 @@ gen_static_ldscript() {
        mv "${ED}/usr/${libdir}/libc++.a" "${ED}/usr/${libdir}/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}"
+       local deps="libc++_static.a ${cxxabi_lib} $(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"
-       # unlike libgcc_s, libunwind is not implicitly linked
-       use libunwind && deps+=" libunwind.a"
 
        gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.a" || die
 }
@@ -174,8 +172,7 @@ gen_shared_ldscript() {
        local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "$(usex libcxxrt "libcxxrt.so" "libsupc++.a")")
 
        mv "${ED}/usr/${libdir}/libc++.so" "${ED}/usr/${libdir}/libc++_shared.so" || die
-       local deps="libc++_shared.so ${cxxabi_lib}"
-       use libunwind && deps+=" libunwind.so"
+       local deps="libc++_shared.so ${cxxabi_lib} $(usex libunwind libunwind.so libgcc_s.so)"
 
        gen_ldscript "${deps}" > "${ED}/usr/${libdir}/libc++.so" || die
 }