commit:     cf3ce64992f49d222223c41b7c4582bd3e089909
Author:     Yang Yang <geraint0923 <AT> gmail <DOT> com>
AuthorDate: Sun Nov 24 05:05:09 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Nov 27 08:58:38 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cf3ce649

sys-libs/libcxxabi-9.0.0: add USE to explicitly link compiler-rt

According to
https://clang.llvm.org/docs/Toolchain.html#compiler-rt-llvm,
`-DLIBCXXABI_USE_COMPILER_RT=YES` is needed to linked against
compiler-rt if compiled with clang+compiler-rt.

Signed-off-by: Yang Yang <geraint0923 <AT> gmail.com>
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 sys-libs/libcxxabi/libcxxabi-10.0.0.9999.ebuild | 11 +++++++++++
 sys-libs/libcxxabi/libcxxabi-9.0.0.ebuild       | 11 +++++++++++
 sys-libs/libcxxabi/libcxxabi-9.0.1.9999.ebuild  | 11 +++++++++++
 sys-libs/libcxxabi/libcxxabi-9.0.1_rc1.ebuild   | 11 +++++++++++
 4 files changed, 44 insertions(+)

diff --git a/sys-libs/libcxxabi/libcxxabi-10.0.0.9999.ebuild 
b/sys-libs/libcxxabi/libcxxabi-10.0.0.9999.ebuild
index df108a4e023..4bdd0295a16 100644
--- a/sys-libs/libcxxabi/libcxxabi-10.0.0.9999.ebuild
+++ b/sys-libs/libcxxabi/libcxxabi-10.0.0.9999.ebuild
@@ -45,6 +45,16 @@ pkg_setup() {
 }
 
 multilib_src_configure() {
+       # link against compiler-rt instead of libgcc if we are using clang with 
libunwind
+       local want_compiler_rt=OFF
+       if use libunwind && tc-is-clang; then
+               local compiler_rt=$($(tc-getCC) ${CFLAGS} ${CPPFLAGS} \
+                       ${LDFLAGS} -print-libgcc-file-name)
+               if [[ ${compiler_rt} == *libclang_rt* ]]; then
+                       want_compiler_rt=ON
+               fi
+       fi
+
        local libdir=$(get_libdir)
        local mycmakeargs=(
                -DLIBCXXABI_LIBDIR_SUFFIX=${libdir#lib}
@@ -52,6 +62,7 @@ multilib_src_configure() {
                -DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)
                -DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)
                -DLIBCXXABI_INCLUDE_TESTS=$(usex test)
+               -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt}
 
                -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
                # upstream is omitting standard search path for this

diff --git a/sys-libs/libcxxabi/libcxxabi-9.0.0.ebuild 
b/sys-libs/libcxxabi/libcxxabi-9.0.0.ebuild
index eb296035779..3d656a49cf7 100644
--- a/sys-libs/libcxxabi/libcxxabi-9.0.0.ebuild
+++ b/sys-libs/libcxxabi/libcxxabi-9.0.0.ebuild
@@ -45,6 +45,16 @@ pkg_setup() {
 }
 
 multilib_src_configure() {
+       # link against compiler-rt instead of libgcc if we are using clang with 
libunwind
+       local want_compiler_rt=OFF
+       if use libunwind && tc-is-clang; then
+               local compiler_rt=$($(tc-getCC) ${CFLAGS} ${CPPFLAGS} \
+                       ${LDFLAGS} -print-libgcc-file-name)
+               if [[ ${compiler_rt} == *libclang_rt* ]]; then
+                       want_compiler_rt=ON
+               fi
+       fi
+
        local libdir=$(get_libdir)
        local mycmakeargs=(
                -DLIBCXXABI_LIBDIR_SUFFIX=${libdir#lib}
@@ -52,6 +62,7 @@ multilib_src_configure() {
                -DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)
                -DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)
                -DLIBCXXABI_INCLUDE_TESTS=$(usex test)
+               -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt}
 
                -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
                # upstream is omitting standard search path for this

diff --git a/sys-libs/libcxxabi/libcxxabi-9.0.1.9999.ebuild 
b/sys-libs/libcxxabi/libcxxabi-9.0.1.9999.ebuild
index df108a4e023..4bdd0295a16 100644
--- a/sys-libs/libcxxabi/libcxxabi-9.0.1.9999.ebuild
+++ b/sys-libs/libcxxabi/libcxxabi-9.0.1.9999.ebuild
@@ -45,6 +45,16 @@ pkg_setup() {
 }
 
 multilib_src_configure() {
+       # link against compiler-rt instead of libgcc if we are using clang with 
libunwind
+       local want_compiler_rt=OFF
+       if use libunwind && tc-is-clang; then
+               local compiler_rt=$($(tc-getCC) ${CFLAGS} ${CPPFLAGS} \
+                       ${LDFLAGS} -print-libgcc-file-name)
+               if [[ ${compiler_rt} == *libclang_rt* ]]; then
+                       want_compiler_rt=ON
+               fi
+       fi
+
        local libdir=$(get_libdir)
        local mycmakeargs=(
                -DLIBCXXABI_LIBDIR_SUFFIX=${libdir#lib}
@@ -52,6 +62,7 @@ multilib_src_configure() {
                -DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)
                -DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)
                -DLIBCXXABI_INCLUDE_TESTS=$(usex test)
+               -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt}
 
                -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
                # upstream is omitting standard search path for this

diff --git a/sys-libs/libcxxabi/libcxxabi-9.0.1_rc1.ebuild 
b/sys-libs/libcxxabi/libcxxabi-9.0.1_rc1.ebuild
index df108a4e023..4bdd0295a16 100644
--- a/sys-libs/libcxxabi/libcxxabi-9.0.1_rc1.ebuild
+++ b/sys-libs/libcxxabi/libcxxabi-9.0.1_rc1.ebuild
@@ -45,6 +45,16 @@ pkg_setup() {
 }
 
 multilib_src_configure() {
+       # link against compiler-rt instead of libgcc if we are using clang with 
libunwind
+       local want_compiler_rt=OFF
+       if use libunwind && tc-is-clang; then
+               local compiler_rt=$($(tc-getCC) ${CFLAGS} ${CPPFLAGS} \
+                       ${LDFLAGS} -print-libgcc-file-name)
+               if [[ ${compiler_rt} == *libclang_rt* ]]; then
+                       want_compiler_rt=ON
+               fi
+       fi
+
        local libdir=$(get_libdir)
        local mycmakeargs=(
                -DLIBCXXABI_LIBDIR_SUFFIX=${libdir#lib}
@@ -52,6 +62,7 @@ multilib_src_configure() {
                -DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)
                -DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)
                -DLIBCXXABI_INCLUDE_TESTS=$(usex test)
+               -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt}
 
                -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
                # upstream is omitting standard search path for this

Reply via email to