summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2016-10-03 15:02:18 +0200
committerMichał Górny <mgorny@gentoo.org>2016-10-05 15:38:10 +0200
commit1c22c625648953957c1c8c6b0ec9f1db89612fdb (patch)
treefc299f27ff613c4e0950514e9909e27db7dc8360 /sys-libs/libcxx
parentsys-libs/libcxxabi: Initial live ebuild (diff)
downloadgentoo-1c22c625648953957c1c8c6b0ec9f1db89612fdb.tar.gz
gentoo-1c22c625648953957c1c8c6b0ec9f1db89612fdb.tar.bz2
gentoo-1c22c625648953957c1c8c6b0ec9f1db89612fdb.zip
sys-libs/libcxx: Support sys-libs/libcxxabi
Diffstat (limited to 'sys-libs/libcxx')
-rw-r--r--sys-libs/libcxx/libcxx-9999.ebuild24
-rw-r--r--sys-libs/libcxx/metadata.xml1
2 files changed, 16 insertions, 9 deletions
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 @@
<name>LLVM Project</name>
</maintainer>
<use>
+ <flag name="libcxxabi">Build on top of <pkg>sys-libs/libcxxabi</pkg> instead of gcc's libsupc++ (avoids depending on gcc).</flag>
<flag name="libcxxrt">Build on top of <pkg>sys-libs/libcxxrt</pkg> instead of gcc's libsupc++ (avoids depending on gcc).</flag>
<flag name="libunwind">Use libunwind instead of libgcc_s for stack unwinding, thus avoiding dependence on gcc.</flag>
</use>