sys-libs/libcxxabi-9.0.0: add USE to explicitly link compiler-rt
authorYang Yang <geraint0923@gmail.com>
Sun, 24 Nov 2019 05:05:09 +0000 (21:05 -0800)
committerMichał Górny <mgorny@gentoo.org>
Wed, 27 Nov 2019 08:58:38 +0000 (09:58 +0100)
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@gmail.com>
Signed-off-by: Michał Górny <mgorny@gentoo.org>
sys-libs/libcxxabi/libcxxabi-10.0.0.9999.ebuild
sys-libs/libcxxabi/libcxxabi-9.0.0.ebuild
sys-libs/libcxxabi/libcxxabi-9.0.1.9999.ebuild
sys-libs/libcxxabi/libcxxabi-9.0.1_rc1.ebuild

index df108a4e02377f65b374199f2caaaa3ba797f758..4bdd0295a16893f83f0da5c85b3427d92b3a3a7e 100644 (file)
@@ -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
index eb2960357792437c0d08a257bb7c52b8d5bbe08e..3d656a49cf7dbfd76e8c133287a6e62cbbb784a4 100644 (file)
@@ -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
index df108a4e02377f65b374199f2caaaa3ba797f758..4bdd0295a16893f83f0da5c85b3427d92b3a3a7e 100644 (file)
@@ -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
index df108a4e02377f65b374199f2caaaa3ba797f758..4bdd0295a16893f83f0da5c85b3427d92b3a3a7e 100644 (file)
@@ -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