commit:     56e6e9080dbc3bc97bdf34bb29bda2be92596f44
Author:     Michal Rostecki <vadorovsky <AT> protonmail <DOT> com>
AuthorDate: Mon Dec  2 14:05:05 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Mar 17 06:21:36 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=56e6e908

sys-libc/libcxxabi: Support cross build

Inherit the `crossdev` eclass and use a cross sysroot when a custom
target is specified. That allows to bootstrap libcxx with crossdev.

Signed-off-by: Michal Rostecki <vadorovsky <AT> protonmail.com>
Closes: https://github.com/gentoo/gentoo/pull/39280
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 ...bi-20.1.0.ebuild => libcxxabi-19.1.7-r1.ebuild} | 25 ++++++++++++++++------
 llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild    | 22 ++++++++++++++-----
 .../libcxxabi/libcxxabi-21.0.0.9999.ebuild         | 22 ++++++++++++++-----
 3 files changed, 53 insertions(+), 16 deletions(-)

diff --git a/llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild 
b/llvm-runtimes/libcxxabi/libcxxabi-19.1.7-r1.ebuild
similarity index 80%
copy from llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild
copy to llvm-runtimes/libcxxabi/libcxxabi-19.1.7-r1.ebuild
index 5ebe26d49210..427d46554b23 100644
--- a/llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild
+++ b/llvm-runtimes/libcxxabi/libcxxabi-19.1.7-r1.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake-multilib flag-o-matic llvm.org llvm-utils python-any-r1
-inherit toolchain-funcs
+inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
+inherit python-any-r1 toolchain-funcs
 
 DESCRIPTION="Low level support for a standard C++ library"
 HOMEPAGE="https://libcxxabi.llvm.org/";
@@ -38,7 +38,7 @@ BDEPEND="
 "
 
 LLVM_COMPONENTS=( runtimes libcxx{abi,} llvm/cmake cmake )
-LLVM_TEST_COMPONENTS=( libc llvm/utils/llvm-lit )
+LLVM_TEST_COMPONENTS=( llvm/utils/llvm-lit )
 llvm.org_set_globals
 
 python_check_deps() {
@@ -50,8 +50,8 @@ multilib_src_configure() {
        llvm_prepend_path "${LLVM_MAJOR}"
 
        if use clang; then
-               local -x CC=${CHOST}-clang
-               local -x CXX=${CHOST}-clang++
+               local -x CC=${CTARGET}-clang
+               local -x CXX=${CTARGET}-clang++
                strip-unsupported-flags
        fi
 
@@ -59,9 +59,13 @@ multilib_src_configure() {
        local use_compiler_rt=OFF
        [[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
 
+       local install_prefix=${EPREFIX}
+       target_is_not_host && install_prefix+=/usr/${CTARGET}
+
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
+               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
+               -DCMAKE_INSTALL_PREFIX="${install_prefix}/usr"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
                -DLLVM_INCLUDE_TESTS=OFF
@@ -77,6 +81,7 @@ multilib_src_configure() {
                # this is broken with standalone builds, and also meaningless
                -DLIBCXXABI_USE_LLVM_UNWINDER=OFF
 
+               -DLIBCXX_LIBDIR_SUFFIX=
                -DLIBCXX_ENABLE_SHARED=ON
                -DLIBCXX_ENABLE_STATIC=OFF
                -DLIBCXX_CXX_ABI=libcxxabi
@@ -86,6 +91,14 @@ multilib_src_configure() {
                -DLIBCXX_INCLUDE_BENCHMARKS=OFF
                -DLIBCXX_INCLUDE_TESTS=OFF
        )
+       if is_crosspkg; then
+               mycmakeargs+=(
+                       # Without this, the compiler will compile a test program
+                       # and fail due to no builtins.
+                       -DCMAKE_C_COMPILER_WORKS=1
+                       -DCMAKE_CXX_COMPILER_WORKS=1
+               )
+       fi
        if use test; then
                mycmakeargs+=(
                        -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"

diff --git a/llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild 
b/llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild
index 5ebe26d49210..54cc68b1af0f 100644
--- a/llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild
+++ b/llvm-runtimes/libcxxabi/libcxxabi-20.1.0.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake-multilib flag-o-matic llvm.org llvm-utils python-any-r1
-inherit toolchain-funcs
+inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
+inherit python-any-r1 toolchain-funcs
 
 DESCRIPTION="Low level support for a standard C++ library"
 HOMEPAGE="https://libcxxabi.llvm.org/";
@@ -50,8 +50,8 @@ multilib_src_configure() {
        llvm_prepend_path "${LLVM_MAJOR}"
 
        if use clang; then
-               local -x CC=${CHOST}-clang
-               local -x CXX=${CHOST}-clang++
+               local -x CC=${CTARGET}-clang
+               local -x CXX=${CTARGET}-clang++
                strip-unsupported-flags
        fi
 
@@ -59,9 +59,13 @@ multilib_src_configure() {
        local use_compiler_rt=OFF
        [[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
 
+       local install_prefix=${EPREFIX}
+       target_is_not_host && install_prefix+=/usr/${CTARGET}
+
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
+               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
+               -DCMAKE_INSTALL_PREFIX="${install_prefix}/usr"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
                -DLLVM_INCLUDE_TESTS=OFF
@@ -86,6 +90,14 @@ multilib_src_configure() {
                -DLIBCXX_INCLUDE_BENCHMARKS=OFF
                -DLIBCXX_INCLUDE_TESTS=OFF
        )
+       if is_crosspkg; then
+               mycmakeargs+=(
+                       # Without this, the compiler will compile a test program
+                       # and fail due to no builtins.
+                       -DCMAKE_C_COMPILER_WORKS=1
+                       -DCMAKE_CXX_COMPILER_WORKS=1
+               )
+       fi
        if use test; then
                mycmakeargs+=(
                        -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"

diff --git a/llvm-runtimes/libcxxabi/libcxxabi-21.0.0.9999.ebuild 
b/llvm-runtimes/libcxxabi/libcxxabi-21.0.0.9999.ebuild
index 7aab2f168c62..eae7c454f905 100644
--- a/llvm-runtimes/libcxxabi/libcxxabi-21.0.0.9999.ebuild
+++ b/llvm-runtimes/libcxxabi/libcxxabi-21.0.0.9999.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake-multilib flag-o-matic llvm.org llvm-utils python-any-r1
-inherit toolchain-funcs
+inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
+inherit python-any-r1 toolchain-funcs
 
 DESCRIPTION="Low level support for a standard C++ library"
 HOMEPAGE="https://libcxxabi.llvm.org/";
@@ -49,8 +49,8 @@ multilib_src_configure() {
        llvm_prepend_path "${LLVM_MAJOR}"
 
        if use clang; then
-               local -x CC=${CHOST}-clang
-               local -x CXX=${CHOST}-clang++
+               local -x CC=${CTARGET}-clang
+               local -x CXX=${CTARGET}-clang++
                strip-unsupported-flags
        fi
 
@@ -58,9 +58,13 @@ multilib_src_configure() {
        local use_compiler_rt=OFF
        [[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
 
+       local install_prefix=${EPREFIX}
+       target_is_not_host && install_prefix+=/usr/${CTARGET}
+
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
+               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
+               -DCMAKE_INSTALL_PREFIX="${install_prefix}/usr"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
                -DLLVM_INCLUDE_TESTS=OFF
@@ -85,6 +89,14 @@ multilib_src_configure() {
                -DLIBCXX_INCLUDE_BENCHMARKS=OFF
                -DLIBCXX_INCLUDE_TESTS=OFF
        )
+       if is_crosspkg; then
+               mycmakeargs+=(
+                       # Without this, the compiler will compile a test program
+                       # and fail due to no builtins.
+                       -DCMAKE_C_COMPILER_WORKS=1
+                       -DCMAKE_CXX_COMPILER_WORKS=1
+               )
+       fi
        if use test; then
                mycmakeargs+=(
                        -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"

Reply via email to