From 1c22c625648953957c1c8c6b0ec9f1db89612fdb Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Mon, 3 Oct 2016 15:02:18 +0200 Subject: sys-libs/libcxx: Support sys-libs/libcxxabi --- sys-libs/libcxx/libcxx-9999.ebuild | 24 +++++++++++++++--------- sys-libs/libcxx/metadata.xml | 1 + 2 files changed, 16 insertions(+), 9 deletions(-) (limited to 'sys-libs') diff --git a/sys-libs/libcxx/libcxx-9999.ebuild b/sys-libs/libcxx/libcxx-9999.ebuild index 909265280944..6d0328d954e8 100644 --- a/sys-libs/libcxx/libcxx-9999.ebuild +++ b/sys-libs/libcxx/libcxx-9999.ebuild @@ -35,11 +35,14 @@ if [[ ${PV} != 9999 ]] ; then else KEYWORDS="" fi -IUSE="elibc_glibc elibc_musl +libcxxrt libunwind +static-libs test" -REQUIRED_USE="libunwind? ( libcxxrt )" - -RDEPEND="libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,${MULTILIB_USEDEP}] ) - !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] )" +IUSE="elibc_glibc elibc_musl libcxxabi +libcxxrt libunwind +static-libs test" +REQUIRED_USE="libunwind? ( || ( libcxxabi libcxxrt ) ) + ?? ( libcxxabi libcxxrt )" + +RDEPEND=" + libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,${MULTILIB_USEDEP}] ) + libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,${MULTILIB_USEDEP}] ) + !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) )" # llvm-3.9.0 needed because its cmake files installation path changed, which is # needed by libcxx # clang-3.9.0 installs necessary target symlinks unconditionally @@ -61,7 +64,7 @@ PATCHES=( pkg_setup() { use test && python_setup - if ! use libcxxrt && ! tc-is-gcc ; then + if ! use libcxxabi && ! use libcxxrt && ! tc-is-gcc ; then eerror "To build ${PN} against libsupc++, you have to use gcc. Other" eerror "compilers are not supported. Please set CC=gcc and CXX=g++" eerror "and try again." @@ -99,7 +102,10 @@ src_configure() { multilib_src_configure() { local cxxabi cxxabi_incs - if use libcxxrt; then + if use libcxxabi; then + cxxabi=libcxxabi + cxxabi_incs="${EPREFIX}/usr/include/libcxxabi" + elif use libcxxrt; then cxxabi=libcxxrt cxxabi_incs="${EPREFIX}/usr/include/libcxxrt" else @@ -159,7 +165,7 @@ END_LDSCRIPT gen_static_ldscript() { local libdir=$(get_libdir) - local cxxabi_lib=$(usex libcxxrt "libcxxrt.a" "libsupc++.a") + local cxxabi_lib=$(usex libcxxabi "libc++abi.a" "$(usex libcxxrt "libcxxrt.a" "libsupc++.a")") # Move it first. mv "${ED}/usr/${libdir}/libc++.a" "${ED}/usr/${libdir}/libc++_static.a" || die @@ -178,7 +184,7 @@ gen_static_ldscript() { gen_shared_ldscript() { local libdir=$(get_libdir) # libsupc++ doesn't have a shared version - local cxxabi_lib=$(usex libcxxrt "libcxxrt.so" "libsupc++.a") + 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}" diff --git a/sys-libs/libcxx/metadata.xml b/sys-libs/libcxx/metadata.xml index bcb474487398..df0c52dcfcdf 100644 --- a/sys-libs/libcxx/metadata.xml +++ b/sys-libs/libcxx/metadata.xml @@ -14,6 +14,7 @@ LLVM Project + Build on top of sys-libs/libcxxabi instead of gcc's libsupc++ (avoids depending on gcc). Build on top of sys-libs/libcxxrt instead of gcc's libsupc++ (avoids depending on gcc). Use libunwind instead of libgcc_s for stack unwinding, thus avoiding dependence on gcc. -- cgit v1.2.3-65-gdbad