commit:     b8f87a03a0bc0c82c76a96219009a6b95ccb08f2
Author:     Michal Rostecki <vadorovsky <AT> protonmail <DOT> com>
AuthorDate: Mon Aug  4 11:46:48 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Aug  6 12:29:16 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b8f87a03

llvm-runtimes/libcxxabi: Support crosspkg build

Inherit the `crossdev` eclass, use clang for the current `CTARGET` and
install libcxxabi into a cross sysroot, if package belongs to any
crossdev category. That allows to bootstrap libcxx with crossdev by
installing `cross_*/libcxxabi`.

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

 llvm-runtimes/libcxxabi/libcxxabi-19.1.7.ebuild    | 22 ++++++++++++++++------
 llvm-runtimes/libcxxabi/libcxxabi-20.1.8.ebuild    | 20 +++++++++++++++-----
 .../libcxxabi/libcxxabi-21.1.0.9999.ebuild         | 20 +++++++++++++++-----
 .../libcxxabi/libcxxabi-22.0.0.9999.ebuild         | 20 +++++++++++++++-----
 4 files changed, 61 insertions(+), 21 deletions(-)

diff --git a/llvm-runtimes/libcxxabi/libcxxabi-19.1.7.ebuild 
b/llvm-runtimes/libcxxabi/libcxxabi-19.1.7.ebuild
index c50a8eed96b0..a91a67d49302 100644
--- a/llvm-runtimes/libcxxabi/libcxxabi-19.1.7.ebuild
+++ b/llvm-runtimes/libcxxabi/libcxxabi-19.1.7.ebuild
@@ -3,9 +3,9 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake-multilib flag-o-matic llvm.org llvm-utils python-any-r1
-inherit toolchain-funcs
+PYTHON_COMPAT=( python3_{11..13} )
+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
 
@@ -61,7 +61,7 @@ multilib_src_configure() {
 
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
+               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
                -DLLVM_INCLUDE_TESTS=OFF
@@ -87,6 +87,16 @@ 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
+                       # Install inside the cross sysroot.
+                       -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
+               )
+       fi
        if use test; then
                mycmakeargs+=(
                        -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"

diff --git a/llvm-runtimes/libcxxabi/libcxxabi-20.1.8.ebuild 
b/llvm-runtimes/libcxxabi/libcxxabi-20.1.8.ebuild
index ed881906f657..156863942964 100644
--- a/llvm-runtimes/libcxxabi/libcxxabi-20.1.8.ebuild
+++ b/llvm-runtimes/libcxxabi/libcxxabi-20.1.8.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{11..14} )
-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
 
@@ -61,7 +61,7 @@ multilib_src_configure() {
 
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
+               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
                -DLLVM_INCLUDE_TESTS=OFF
@@ -86,6 +86,16 @@ 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
+                       # Install inside the cross sysroot.
+                       -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
+               )
+       fi
        if use test; then
                mycmakeargs+=(
                        -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"

diff --git a/llvm-runtimes/libcxxabi/libcxxabi-21.1.0.9999.ebuild 
b/llvm-runtimes/libcxxabi/libcxxabi-21.1.0.9999.ebuild
index 647736c03819..366ac2ab422e 100644
--- a/llvm-runtimes/libcxxabi/libcxxabi-21.1.0.9999.ebuild
+++ b/llvm-runtimes/libcxxabi/libcxxabi-21.1.0.9999.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{11..14} )
-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/";
@@ -51,8 +51,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
 
@@ -62,7 +62,7 @@ multilib_src_configure() {
 
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
+               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
                -DLLVM_INCLUDE_TESTS=OFF
@@ -87,6 +87,16 @@ 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
+                       # Install inside the cross sysroot.
+                       -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
+               )
+       fi
        if use test; then
                mycmakeargs+=(
                        -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"

diff --git a/llvm-runtimes/libcxxabi/libcxxabi-22.0.0.9999.ebuild 
b/llvm-runtimes/libcxxabi/libcxxabi-22.0.0.9999.ebuild
index 647736c03819..366ac2ab422e 100644
--- a/llvm-runtimes/libcxxabi/libcxxabi-22.0.0.9999.ebuild
+++ b/llvm-runtimes/libcxxabi/libcxxabi-22.0.0.9999.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{11..14} )
-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/";
@@ -51,8 +51,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
 
@@ -62,7 +62,7 @@ multilib_src_configure() {
 
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
+               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
                -DLLVM_INCLUDE_TESTS=OFF
@@ -87,6 +87,16 @@ 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
+                       # Install inside the cross sysroot.
+                       -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
+               )
+       fi
        if use test; then
                mycmakeargs+=(
                        -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"

Reply via email to