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
