commit:     20e30ceb263f76b54978b849e8c4d648d84d7a5a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 15:49:18 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug  3 15:49:42 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=20e30ceb

sys-libs/libcxxabi: Fix building in 13+

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

 sys-libs/libcxxabi/libcxxabi-13.0.0.9999.ebuild | 16 +++++++++-------
 sys-libs/libcxxabi/libcxxabi-13.0.0_rc1.ebuild  | 16 +++++++++-------
 sys-libs/libcxxabi/libcxxabi-14.0.0.9999.ebuild | 16 +++++++++-------
 3 files changed, 27 insertions(+), 21 deletions(-)

diff --git a/sys-libs/libcxxabi/libcxxabi-13.0.0.9999.ebuild 
b/sys-libs/libcxxabi/libcxxabi-13.0.0.9999.ebuild
index 953c0c81796..88b0bb90ab5 100644
--- a/sys-libs/libcxxabi/libcxxabi-13.0.0.9999.ebuild
+++ b/sys-libs/libcxxabi/libcxxabi-13.0.0.9999.ebuild
@@ -31,7 +31,6 @@ BDEPEND="
                $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
        )"
 
-# libcxx is needed uncondtionally for the headers
 LLVM_COMPONENTS=( libcxx{abi,} llvm/cmake )
 llvm.org_set_globals
 
@@ -49,6 +48,11 @@ pkg_setup() {
 }
 
 multilib_src_configure() {
+       # we need a configured libc++ for __config_site
+       wrap_libcxx cmake_src_configure
+       cp -R "${WORKDIR}"/libcxx/include/. \
+               "${BUILD_DIR}"/libcxx/include/c++/v1 || die
+
        # 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
@@ -68,7 +72,7 @@ multilib_src_configure() {
                -DLIBCXXABI_INCLUDE_TESTS=$(usex test)
                -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt}
 
-               -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
+               -DLIBCXXABI_LIBCXX_INCLUDES="${BUILD_DIR}"/libcxx/include/c++/v1
                # upstream is omitting standard search path for this
                # probably because gcc & clang are bundling their own unwind.h
                -DLIBCXXABI_LIBUNWIND_INCLUDES="${EPREFIX}"/usr/include
@@ -86,7 +90,7 @@ multilib_src_configure() {
        cmake_src_configure
 }
 
-build_libcxx() {
+wrap_libcxx() {
        local -x LDFLAGS="${LDFLAGS} -L${BUILD_DIR}/$(get_libdir)"
        local CMAKE_USE_DIR=${WORKDIR}/libcxx
        local BUILD_DIR=${BUILD_DIR}/libcxx
@@ -103,13 +107,11 @@ build_libcxx() {
                -DLIBCXX_INCLUDE_TESTS=OFF
        )
 
-       cmake_src_configure
-       cmake_src_compile
+       "${@}"
 }
 
 multilib_src_test() {
-       # build a local copy of libc++ for testing to avoid circular dep
-       build_libcxx
+       wrap_libcxx cmake_src_compile
        mv "${BUILD_DIR}"/libcxx/lib/libc++* "${BUILD_DIR}/$(get_libdir)/" || 
die
 
        local -x LIT_PRESERVES_TMP=1

diff --git a/sys-libs/libcxxabi/libcxxabi-13.0.0_rc1.ebuild 
b/sys-libs/libcxxabi/libcxxabi-13.0.0_rc1.ebuild
index 953c0c81796..88b0bb90ab5 100644
--- a/sys-libs/libcxxabi/libcxxabi-13.0.0_rc1.ebuild
+++ b/sys-libs/libcxxabi/libcxxabi-13.0.0_rc1.ebuild
@@ -31,7 +31,6 @@ BDEPEND="
                $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
        )"
 
-# libcxx is needed uncondtionally for the headers
 LLVM_COMPONENTS=( libcxx{abi,} llvm/cmake )
 llvm.org_set_globals
 
@@ -49,6 +48,11 @@ pkg_setup() {
 }
 
 multilib_src_configure() {
+       # we need a configured libc++ for __config_site
+       wrap_libcxx cmake_src_configure
+       cp -R "${WORKDIR}"/libcxx/include/. \
+               "${BUILD_DIR}"/libcxx/include/c++/v1 || die
+
        # 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
@@ -68,7 +72,7 @@ multilib_src_configure() {
                -DLIBCXXABI_INCLUDE_TESTS=$(usex test)
                -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt}
 
-               -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
+               -DLIBCXXABI_LIBCXX_INCLUDES="${BUILD_DIR}"/libcxx/include/c++/v1
                # upstream is omitting standard search path for this
                # probably because gcc & clang are bundling their own unwind.h
                -DLIBCXXABI_LIBUNWIND_INCLUDES="${EPREFIX}"/usr/include
@@ -86,7 +90,7 @@ multilib_src_configure() {
        cmake_src_configure
 }
 
-build_libcxx() {
+wrap_libcxx() {
        local -x LDFLAGS="${LDFLAGS} -L${BUILD_DIR}/$(get_libdir)"
        local CMAKE_USE_DIR=${WORKDIR}/libcxx
        local BUILD_DIR=${BUILD_DIR}/libcxx
@@ -103,13 +107,11 @@ build_libcxx() {
                -DLIBCXX_INCLUDE_TESTS=OFF
        )
 
-       cmake_src_configure
-       cmake_src_compile
+       "${@}"
 }
 
 multilib_src_test() {
-       # build a local copy of libc++ for testing to avoid circular dep
-       build_libcxx
+       wrap_libcxx cmake_src_compile
        mv "${BUILD_DIR}"/libcxx/lib/libc++* "${BUILD_DIR}/$(get_libdir)/" || 
die
 
        local -x LIT_PRESERVES_TMP=1

diff --git a/sys-libs/libcxxabi/libcxxabi-14.0.0.9999.ebuild 
b/sys-libs/libcxxabi/libcxxabi-14.0.0.9999.ebuild
index 953c0c81796..88b0bb90ab5 100644
--- a/sys-libs/libcxxabi/libcxxabi-14.0.0.9999.ebuild
+++ b/sys-libs/libcxxabi/libcxxabi-14.0.0.9999.ebuild
@@ -31,7 +31,6 @@ BDEPEND="
                $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
        )"
 
-# libcxx is needed uncondtionally for the headers
 LLVM_COMPONENTS=( libcxx{abi,} llvm/cmake )
 llvm.org_set_globals
 
@@ -49,6 +48,11 @@ pkg_setup() {
 }
 
 multilib_src_configure() {
+       # we need a configured libc++ for __config_site
+       wrap_libcxx cmake_src_configure
+       cp -R "${WORKDIR}"/libcxx/include/. \
+               "${BUILD_DIR}"/libcxx/include/c++/v1 || die
+
        # 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
@@ -68,7 +72,7 @@ multilib_src_configure() {
                -DLIBCXXABI_INCLUDE_TESTS=$(usex test)
                -DLIBCXXABI_USE_COMPILER_RT=${want_compiler_rt}
 
-               -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
+               -DLIBCXXABI_LIBCXX_INCLUDES="${BUILD_DIR}"/libcxx/include/c++/v1
                # upstream is omitting standard search path for this
                # probably because gcc & clang are bundling their own unwind.h
                -DLIBCXXABI_LIBUNWIND_INCLUDES="${EPREFIX}"/usr/include
@@ -86,7 +90,7 @@ multilib_src_configure() {
        cmake_src_configure
 }
 
-build_libcxx() {
+wrap_libcxx() {
        local -x LDFLAGS="${LDFLAGS} -L${BUILD_DIR}/$(get_libdir)"
        local CMAKE_USE_DIR=${WORKDIR}/libcxx
        local BUILD_DIR=${BUILD_DIR}/libcxx
@@ -103,13 +107,11 @@ build_libcxx() {
                -DLIBCXX_INCLUDE_TESTS=OFF
        )
 
-       cmake_src_configure
-       cmake_src_compile
+       "${@}"
 }
 
 multilib_src_test() {
-       # build a local copy of libc++ for testing to avoid circular dep
-       build_libcxx
+       wrap_libcxx cmake_src_compile
        mv "${BUILD_DIR}"/libcxx/lib/libc++* "${BUILD_DIR}/$(get_libdir)/" || 
die
 
        local -x LIT_PRESERVES_TMP=1

Reply via email to