commit:     ffe79090bb2dd8c511395d82c3cca4c052171447
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 16:27:02 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Mar 17 16:29:13 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ffe79090

llvm-runtimes/libcxx: Revert "Support cross build"

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

 llvm-runtimes/libcxx/libcxx-19.1.7-r1.ebuild   | 226 -------------------------
 llvm-runtimes/libcxx/libcxx-20.1.0.ebuild      |  50 ++----
 llvm-runtimes/libcxx/libcxx-21.0.0.9999.ebuild |  50 ++----
 3 files changed, 26 insertions(+), 300 deletions(-)

diff --git a/llvm-runtimes/libcxx/libcxx-19.1.7-r1.ebuild 
b/llvm-runtimes/libcxx/libcxx-19.1.7-r1.ebuild
deleted file mode 100644
index 08e54cd9b566..000000000000
--- a/llvm-runtimes/libcxx/libcxx-19.1.7-r1.ebuild
+++ /dev/null
@@ -1,226 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
-inherit python-any-r1 toolchain-funcs
-
-DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
-HOMEPAGE="https://libcxx.llvm.org/";
-
-LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~sparc ~x86 ~arm64-macos ~x64-macos"
-IUSE="+clang +libcxxabi +static-libs test"
-REQUIRED_USE="test? ( clang )"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
-       libcxxabi? (
-               ~llvm-runtimes/libcxxabi-${PV}[static-libs?,${MULTILIB_USEDEP}]
-       )
-       !libcxxabi? ( >=sys-devel/gcc-4.7:=[cxx] )
-"
-DEPEND="
-       ${RDEPEND}
-       llvm-core/llvm:${LLVM_MAJOR}
-"
-BDEPEND="
-       clang? (
-               llvm-core/clang:${LLVM_MAJOR}
-       )
-       !test? (
-               ${PYTHON_DEPS}
-       )
-       test? (
-               dev-debug/gdb[python]
-               $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
-       )
-"
-
-LLVM_COMPONENTS=( runtimes libcxx{,abi} llvm/{cmake,utils/llvm-lit} cmake )
-llvm.org_set_globals
-
-python_check_deps() {
-       use test || return 0
-       python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
-}
-
-pkg_setup() {
-       python-any-r1_pkg_setup
-
-       if ! use libcxxabi && ! tc-is-gcc ; then
-               eerror "To build ${PN} against libsupc++, you have to use gcc. 
Other"
-               eerror "compilers are not supported. Please set CC=gcc and 
CXX=g++"
-               eerror "and try again."
-               die
-       fi
-}
-
-test_compiler() {
-       $(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c++ - \
-               <<<'int main() { return 0; }' &>/dev/null
-}
-
-src_configure() {
-       llvm_prepend_path "${LLVM_MAJOR}"
-
-       local install_prefix=${EPREFIX}
-       target_is_not_host && install_prefix+=/usr/${CTARGET}
-
-       # note: we need to do this before multilib kicks in since it will
-       # alter the CHOST
-       local cxxabi cxxabi_incs
-       if use libcxxabi; then
-               cxxabi=system-libcxxabi
-               cxxabi_incs="${install_prefix}/usr/include/c++/v1"
-       else
-               local 
gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
-               cxxabi=libsupc++
-               cxxabi_incs="${gcc_inc};${gcc_inc}/${CHOST}"
-       fi
-
-       multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-       if use clang; then
-               local -x CC=${CTARGET}-clang
-               local -x CXX=${CTARGET}-clang++
-               strip-unsupported-flags
-       fi
-
-       # link to compiler-rt
-       local use_compiler_rt=OFF
-       [[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
-
-       # Scenarios to consider:
-       #
-       # 1. Compiler test works with the default flags.
-       # 2. There is a runtime library, but no stdlib. In that case, leave the
-       #    LDFLAGS untouched, since there is no self-dependency in libc++.
-       # 3. There is no runtime library nor stdlib. In that case, overwrite the
-       #    LDFLAGS.
-       local nostdlib_flags=( -nostdlib --rtlib=compiler-rt -lc )
-       local nort_flags=( -nodefaultlibs -lc )
-       if ! test_compiler && ! test_compiler "${nostdlib_flags[@]}"; then
-               if test_compiler "${nort_flags[@]}"; then
-                       local -x LDFLAGS="${LDFLAGS} ${nort_flags[*]}"
-                       ewarn "${CXX} seems to lack runtime, trying with 
${nort_flags[*]}"
-               fi
-       fi
-
-       local install_prefix=${EPREFIX}
-       target_is_not_host && install_prefix+=/usr/${CTARGET}
-
-       local libdir=$(get_libdir)
-       local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
-               -DCMAKE_INSTALL_PREFIX="${install_prefix}/usr"
-               -DPython3_EXECUTABLE="${PYTHON}"
-               -DLLVM_ENABLE_RUNTIMES=libcxx
-               -DLLVM_INCLUDE_TESTS=OFF
-               -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-
-               -DLIBCXX_ENABLE_SHARED=ON
-               -DLIBCXX_ENABLE_STATIC=$(usex static-libs)
-               -DLIBCXX_CXX_ABI=${cxxabi}
-               -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi_incs}
-               # we're using our own mechanism for generating linker scripts
-               -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
-               -DLIBCXX_HAS_MUSL_LIBC=$(llvm_cmake_use_musl)
-               -DLIBCXX_INCLUDE_BENCHMARKS=OFF
-               -DLIBCXX_INCLUDE_TESTS=$(usex test)
-               -DLIBCXX_INSTALL_MODULES=ON
-               -DLIBCXX_USE_COMPILER_RT=${use_compiler_rt}
-               # this is broken with standalone builds, and also meaningless
-               -DLIBCXXABI_USE_LLVM_UNWINDER=OFF
-       )
-       if is_crosspkg; then
-               # Needed to target built libc headers
-               local -x CFLAGS="${CFLAGS} -isystem 
${ESYSROOT}/usr/${CTARGET}/usr/include"
-               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"
-                       -DLLVM_LIT_ARGS="$(get_lit_flags)"
-                       -DPython3_EXECUTABLE="${PYTHON}"
-               )
-       fi
-       cmake_src_configure
-}
-
-multilib_src_compile() {
-       cmake_src_compile
-       if [[ ${CHOST} != *-darwin* ]] ; then
-               gen_shared_ldscript
-               use static-libs && gen_static_ldscript
-       fi
-}
-
-multilib_src_test() {
-       local -x LIT_PRESERVES_TMP=1
-       cmake_build check-cxx
-}
-
-multilib_src_install() {
-       cmake_src_install
-       # since we've replaced libc++.{a,so} with ldscripts, now we have to
-       # install the extra symlinks
-       if [[ ${CHOST} != *-darwin* ]] ; then
-               target_is_not_host && into /usr/${CTARGET}
-               dolib.so lib/libc++_shared.so
-               use static-libs && dolib.a lib/libc++_static.a
-       fi
-}
-
-# Usage: deps
-gen_ldscript() {
-       local output_format
-       output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | 
sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
-       [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( 
${output_format} )"
-
-       cat <<-END_LDSCRIPT
-/* GNU ld script
-   Include missing dependencies
-*/
-${output_format}
-GROUP ( $@ )
-END_LDSCRIPT
-}
-
-gen_static_ldscript() {
-       # Move it first.
-       mv lib/libc++{,_static}.a || die
-       # Generate libc++.a ldscript for inclusion of its dependencies so that
-       # clang++ -stdlib=libc++ -static works out of the box.
-       local deps=(
-               libc++_static.a
-               $(usex libcxxabi libc++abi.a libsupc++.a)
-       )
-       # On Linux/glibc it does not link without libpthread or libdl. It is
-       # fine on FreeBSD.
-       use elibc_glibc && deps+=( libpthread.a libdl.a )
-
-       gen_ldscript "${deps[*]}" > lib/libc++.a || die
-}
-
-gen_shared_ldscript() {
-       # Move it first.
-       mv lib/libc++{,_shared}.so || die
-       local deps=(
-               libc++_shared.so
-               # libsupc++ doesn't have a shared version
-               $(usex libcxxabi libc++abi.so libsupc++.a)
-       )
-
-       gen_ldscript "${deps[*]}" > lib/libc++.so || die
-}

diff --git a/llvm-runtimes/libcxx/libcxx-20.1.0.ebuild 
b/llvm-runtimes/libcxx/libcxx-20.1.0.ebuild
index 3b7c0a5e8bfb..75a626f221f8 100644
--- a/llvm-runtimes/libcxx/libcxx-20.1.0.ebuild
+++ b/llvm-runtimes/libcxx/libcxx-20.1.0.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
-inherit python-any-r1 toolchain-funcs
+inherit cmake-multilib flag-o-matic llvm.org llvm-utils python-any-r1
+inherit toolchain-funcs
 
 DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
 HOMEPAGE="https://libcxx.llvm.org/";
@@ -69,15 +69,12 @@ test_compiler() {
 src_configure() {
        llvm_prepend_path "${LLVM_MAJOR}"
 
-       local install_prefix=${EPREFIX}
-       target_is_not_host && install_prefix+=/usr/${CTARGET}
-
        # note: we need to do this before multilib kicks in since it will
        # alter the CHOST
        local cxxabi cxxabi_incs
        if use libcxxabi; then
                cxxabi=system-libcxxabi
-               cxxabi_incs="${install_prefix}/usr/include/c++/v1"
+               cxxabi_incs="${EPREFIX}/usr/include/c++/v1"
        else
                local 
gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
                cxxabi=libsupc++
@@ -89,8 +86,8 @@ src_configure() {
 
 multilib_src_configure() {
        if use clang; then
-               local -x CC=${CTARGET}-clang
-               local -x CXX=${CTARGET}-clang++
+               local -x CC=${CHOST}-clang
+               local -x CXX=${CHOST}-clang++
                strip-unsupported-flags
        fi
 
@@ -98,29 +95,18 @@ multilib_src_configure() {
        local use_compiler_rt=OFF
        [[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
 
-       # Scenarios to consider:
-       #
-       # 1. Compiler test works with the default flags.
-       # 2. There is a runtime library, but no stdlib. In that case, leave the
-       #    LDFLAGS untouched, since there is no self-dependency in libc++.
-       # 3. There is no runtime library nor stdlib. In that case, overwrite the
-       #    LDFLAGS.
-       local nostdlib_flags=( -nostdlib --rtlib=compiler-rt -lc )
-       local nort_flags=( -nodefaultlibs -lc )
-       if ! test_compiler && ! test_compiler "${nostdlib_flags[@]}"; then
-               if test_compiler "${nort_flags[@]}"; then
-                       local -x LDFLAGS="${LDFLAGS} ${nort_flags[*]}"
-                       ewarn "${CXX} seems to lack runtime, trying with 
${nort_flags[*]}"
+       # bootstrap: cmake is unhappy if compiler can't link to stdlib
+       local nolib_flags=( -nodefaultlibs -lc )
+       if ! test_compiler; then
+               if test_compiler "${nolib_flags[@]}"; then
+                       local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
+                       ewarn "${CXX} seems to lack runtime, trying with 
${nolib_flags[*]}"
                fi
        fi
 
-       local install_prefix=${EPREFIX}
-       target_is_not_host && install_prefix+=/usr/${CTARGET}
-
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
-               -DCMAKE_INSTALL_PREFIX="${install_prefix}/usr"
+               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES=libcxx
                -DLLVM_INCLUDE_TESTS=OFF
@@ -140,16 +126,7 @@ multilib_src_configure() {
                # this is broken with standalone builds, and also meaningless
                -DLIBCXXABI_USE_LLVM_UNWINDER=OFF
        )
-       if is_crosspkg; then
-               # Needed to target built libc headers
-               local -x CFLAGS="${CFLAGS} -isystem 
${ESYSROOT}/usr/${CTARGET}/usr/include"
-               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"
@@ -183,7 +160,6 @@ multilib_src_install() {
        # since we've replaced libc++.{a,so} with ldscripts, now we have to
        # install the extra symlinks
        if [[ ${CHOST} != *-darwin* ]] ; then
-               target_is_not_host && into /usr/${CTARGET}
                dolib.so lib/libc++_shared.so
                use static-libs && dolib.a lib/libc++_static.a
        fi

diff --git a/llvm-runtimes/libcxx/libcxx-21.0.0.9999.ebuild 
b/llvm-runtimes/libcxx/libcxx-21.0.0.9999.ebuild
index d3a183fb38cc..f6f57e2287bd 100644
--- a/llvm-runtimes/libcxx/libcxx-21.0.0.9999.ebuild
+++ b/llvm-runtimes/libcxx/libcxx-21.0.0.9999.ebuild
@@ -4,8 +4,8 @@
 EAPI=8
 
 PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
-inherit python-any-r1 toolchain-funcs
+inherit cmake-multilib flag-o-matic llvm.org llvm-utils python-any-r1
+inherit toolchain-funcs
 
 DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
 HOMEPAGE="https://libcxx.llvm.org/";
@@ -68,15 +68,12 @@ test_compiler() {
 src_configure() {
        llvm_prepend_path "${LLVM_MAJOR}"
 
-       local install_prefix=${EPREFIX}
-       target_is_not_host && install_prefix+=/usr/${CTARGET}
-
        # note: we need to do this before multilib kicks in since it will
        # alter the CHOST
        local cxxabi cxxabi_incs
        if use libcxxabi; then
                cxxabi=system-libcxxabi
-               cxxabi_incs="${install_prefix}/usr/include/c++/v1"
+               cxxabi_incs="${EPREFIX}/usr/include/c++/v1"
        else
                local 
gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
                cxxabi=libsupc++
@@ -88,8 +85,8 @@ src_configure() {
 
 multilib_src_configure() {
        if use clang; then
-               local -x CC=${CTARGET}-clang
-               local -x CXX=${CTARGET}-clang++
+               local -x CC=${CHOST}-clang
+               local -x CXX=${CHOST}-clang++
                strip-unsupported-flags
        fi
 
@@ -97,29 +94,18 @@ multilib_src_configure() {
        local use_compiler_rt=OFF
        [[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
 
-       # Scenarios to consider:
-       #
-       # 1. Compiler test works with the default flags.
-       # 2. There is a runtime library, but no stdlib. In that case, leave the
-       #    LDFLAGS untouched, since there is no self-dependency in libc++.
-       # 3. There is no runtime library nor stdlib. In that case, overwrite the
-       #    LDFLAGS.
-       local nostdlib_flags=( -nostdlib --rtlib=compiler-rt -lc )
-       local nort_flags=( -nodefaultlibs -lc )
-       if ! test_compiler && ! test_compiler "${nostdlib_flags[@]}"; then
-               if test_compiler "${nort_flags[@]}"; then
-                       local -x LDFLAGS="${LDFLAGS} ${nort_flags[*]}"
-                       ewarn "${CXX} seems to lack runtime, trying with 
${nort_flags[*]}"
+       # bootstrap: cmake is unhappy if compiler can't link to stdlib
+       local nolib_flags=( -nodefaultlibs -lc )
+       if ! test_compiler; then
+               if test_compiler "${nolib_flags[@]}"; then
+                       local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
+                       ewarn "${CXX} seems to lack runtime, trying with 
${nolib_flags[*]}"
                fi
        fi
 
-       local install_prefix=${EPREFIX}
-       target_is_not_host && install_prefix+=/usr/${CTARGET}
-
        local libdir=$(get_libdir)
        local mycmakeargs=(
-               -DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
-               -DCMAKE_INSTALL_PREFIX="${install_prefix}/usr"
+               -DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
                -DPython3_EXECUTABLE="${PYTHON}"
                -DLLVM_ENABLE_RUNTIMES=libcxx
                -DLLVM_INCLUDE_TESTS=OFF
@@ -139,16 +125,7 @@ multilib_src_configure() {
                # this is broken with standalone builds, and also meaningless
                -DLIBCXXABI_USE_LLVM_UNWINDER=OFF
        )
-       if is_crosspkg; then
-               # Needed to target built libc headers
-               local -x CFLAGS="${CFLAGS} -isystem 
${ESYSROOT}/usr/${CTARGET}/usr/include"
-               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"
@@ -182,7 +159,6 @@ multilib_src_install() {
        # since we've replaced libc++.{a,so} with ldscripts, now we have to
        # install the extra symlinks
        if [[ ${CHOST} != *-darwin* ]] ; then
-               target_is_not_host && into /usr/${CTARGET}
                dolib.so lib/libc++_shared.so
                use static-libs && dolib.a lib/libc++_static.a
        fi

Reply via email to