mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
sys-libs/libcxx: Add 20.0.0_pre20241106 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
DIST llvm-gentoo-patchset-15.0.7-r1.tar.xz 21400 BLAKE2B 6b149cb721ac476b728bf9b0197f630d3db40622b85e3d099cdbc1d85ec14872d4e1eb0c94be6edc20fc6187da29b42f934dfb765f2077425a5b919900bb97c0 SHA512 d84d48caa3781633c7c6147e0b786417e93e4b5c9d1393809164e6d355a56673013ed0ea9bc3309488d7cfb794c1b336c888adc52dcd95e70c16d9208c36bd15
|
||||
DIST llvm-gentoo-patchset-16.0.6.tar.xz 17340 BLAKE2B 37cdf4b38367b4256d4f7a25d1b4f41758e5f81be8e20a1c94a10d6c5e36642e9672121b455e73a0bac2eb40467ef2db4b43789b2912a6790593d97b8b5c27e3 SHA512 2c02b9d8a4c5af9fddcd26c95dc66fffae32cb5b7f85c65a1aa4ed00dd8cd5b01cc1975a711aee63c0b8b11e9dc20f2bc05ea753904eb516892b820f02aff825
|
||||
DIST llvm-project-0e907c17214aa3b1a60b66867fea3cc0f0dcbaa0.tar.gz 222324382 BLAKE2B 8023108460d2af1688871d5534e18aa52e29f0e466bb5431194d1e710d7cd11bdab4be000433536b2d69c815a68624e347c69378a697d6fc55433bb4c2156767 SHA512 f0c23a0ac25de31f4c81f76ee82f3189da65d825579e923ace2b54714649c60d4d078220c9f2200b11f08d0c0e32c5b81a57ba368c11d67e763936df8a609279
|
||||
DIST llvm-project-15.0.7.src.tar.xz 110936452 BLAKE2B f3d277e2029157329e5be78b78af36b0826a1dfd9a337992499bf701e33149665bfc47d5e14978e38f342559629a559f8b2ce328705ba34fdf6830f5ae9721a5 SHA512 4836d3603f32e8e54434cbfa8ef33d9d473ac5dc20ebf9c67132653c73f4524931abd1084655eaee5f20bcfcb91bcc4bbc5c4a0b603ad0c9029c556e14dc4c52
|
||||
DIST llvm-project-15.0.7.src.tar.xz.sig 566 BLAKE2B 47dc8c82d86237b80c6d85f83a6c9a6e9e174cf8e7f367b071e0cd9481d7cd408e991337c5624e07f3f370f26387c814f212808575ed1c1b58404d3e3836b7df SHA512 fc6891b440dd1175eb8df3790590af8d36bc92301660f84744ae15123475aeb900a151e6a8e7998ded27ec4d86871903ad0b89cd61164943054c2e3bc8d8beb2
|
||||
DIST llvm-project-16.0.6.src.tar.xz 118013488 BLAKE2B 95192d39cbd2914e5609db365965f1c00bfea6c2d653b3996bd2acef8a2b37e37f6fc8a9d2b65711ad72657e0ef52c42f733053cf65051e7822f27396c30406d SHA512 89a67ebfbbc764cc456e8825ecfa90707741f8835b1b2adffae0b227ab1fe5ca9cce75b0efaffc9ca8431cae528dc54fd838867a56a2b645344d9e82d19ab1b7
|
||||
|
||||
208
sys-libs/libcxx/libcxx-20.0.0_pre20241106.ebuild
Normal file
208
sys-libs/libcxx/libcxx-20.0.0_pre20241106.ebuild
Normal file
@@ -0,0 +1,208 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
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/"
|
||||
|
||||
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
|
||||
SLOT="0"
|
||||
IUSE="+clang +libcxxabi +static-libs test"
|
||||
REQUIRED_USE="test? ( clang )"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RDEPEND="
|
||||
libcxxabi? (
|
||||
~sys-libs/libcxxabi-${PV}[static-libs?,${MULTILIB_USEDEP}]
|
||||
)
|
||||
!libcxxabi? ( >=sys-devel/gcc-4.7:=[cxx] )
|
||||
"
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
sys-devel/llvm:${LLVM_MAJOR}
|
||||
"
|
||||
BDEPEND="
|
||||
clang? (
|
||||
sys-devel/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} libc 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}"
|
||||
|
||||
# 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="${EPREFIX}/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=${CHOST}-clang
|
||||
local -x CXX=${CHOST}-clang++
|
||||
strip-unsupported-flags
|
||||
fi
|
||||
|
||||
# link to compiler-rt
|
||||
local use_compiler_rt=OFF
|
||||
[[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
|
||||
|
||||
# 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 libdir=$(get_libdir)
|
||||
local mycmakeargs=(
|
||||
-DCMAKE_CXX_COMPILER_TARGET="${CHOST}"
|
||||
-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=$(usex elibc_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 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 install-cxx-test-suite-prefix
|
||||
cp "${BUILD_DIR}"/{lib,libcxx/test-suite-install/$(get_libdir)}/libc++_shared.so || die
|
||||
if use static-libs; then
|
||||
cp "${BUILD_DIR}"/{lib,libcxx/test-suite-install/$(get_libdir)}/libc++_static.a || die
|
||||
fi
|
||||
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
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user