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