summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2024-02-28 21:04:40 +0100
committerMichał Górny <mgorny@gentoo.org>2024-02-28 21:40:07 +0100
commitb632e66544e57b1be3dc7eb95b5b22ff4f6e4c62 (patch)
tree85b3d2593403707dc2a3cfe376d4d21f07c5607e /sys-libs/libcxx
parentsys-libs/libcxxabi: Add 18.1.0_rc4 (diff)
downloadgentoo-b632e66544e57b1be3dc7eb95b5b22ff4f6e4c62.tar.gz
gentoo-b632e66544e57b1be3dc7eb95b5b22ff4f6e4c62.tar.bz2
gentoo-b632e66544e57b1be3dc7eb95b5b22ff4f6e4c62.zip
sys-libs/libcxx: Add 18.1.0_rc4
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'sys-libs/libcxx')
-rw-r--r--sys-libs/libcxx/Manifest2
-rw-r--r--sys-libs/libcxx/libcxx-18.1.0_rc4.ebuild209
2 files changed, 211 insertions, 0 deletions
diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest
index efcb38fce6d9..dd53b9167e09 100644
--- a/sys-libs/libcxx/Manifest
+++ b/sys-libs/libcxx/Manifest
@@ -10,6 +10,8 @@ DIST llvm-project-18.1.0rc2.src.tar.xz 131993176 BLAKE2B 8df1e34a54214975efe1b9a
DIST llvm-project-18.1.0rc2.src.tar.xz.sig 566 BLAKE2B c765549386a92883bd348d9be25a3c92b1e66a1bac71385ef99978ec2af413a7616a2d9699c57554d927f95b80a3584572557d26e3df16b2ff6678359d5fd6b0 SHA512 83bb4c133f34faec8a0109689ed7aa18222c9a803ba8c95c571a18e854726024f106a1c8e3a820020255c426b7fa8bda26789ff1546972e233fbe3e3ab3a8e91
DIST llvm-project-18.1.0rc3.src.tar.xz 132011280 BLAKE2B 482a0e1b806292598bd646f225705140a463706ec391e4e42f203606b85673601a65fe55f2432d77f4c2f4c6584b35e53eeaded42e0b67aa6538c37d7cceb4ff SHA512 6c0adcf6e4057de8fb1dcd062845d14d725833d23d8e1362cbccab176931f55600a3971f01690179b795ff3feca0af9141b16dee4d4159755596cc9c904bf099
DIST llvm-project-18.1.0rc3.src.tar.xz.sig 566 BLAKE2B dac9c174e2eeda5e0af0153d78a2e9c8f145efe03250582a27df1bd6a89ba70afdcfa1ed6aa46adb1f7f21077cadb6e43963758358ff17122c36781ee4018c05 SHA512 91a2778f9b66bc80172172f36d6027fb2455f3ffd03b06ad0dd376471c4d4e2e34c8bee69c76cfe95003ae34f0d28c394c7d135fbbb75686ff89aee56b6c45c3
+DIST llvm-project-18.1.0rc4.src.tar.xz 132041940 BLAKE2B 1379efd68f765a70e088ac356f69d792c210003c76b15f28b40273aa64825d7a7c7aa03d2d5016b2607626fd63f656ad88402506f23e836c72474be2032d3224 SHA512 3018a843f8e615ee0a4c742d5fafcc67eb6d6a40f81212ce045bdff7012b5acec006ee89c321baf59209daabe66b838709cdaed4e11a34c34b821cfdb77e8a61
+DIST llvm-project-18.1.0rc4.src.tar.xz.sig 566 BLAKE2B cc089aadc50d874b575c23b8c22a5472c8507acd3352786d3ac2ee0ec06f07e99eee81b94c6b5bdca569ccffa8b867eb2265b57d5d07b8ec31e3cfce89bf8fc1 SHA512 2ce82201b7c673884815898069f18cf1e4ab13a0a9ed535339d9c4132b7b0edb6b748b03499e383f8f0268d904589e6aebb9a204ef95d14f56a3fb9dca24571c
DIST llvm-project-3496927edcd0685807351ba88a7e2cfb006e1c0d.tar.gz 206227842 BLAKE2B cd27e9e9bca3622c2241bfa91c78eb8443df7465c1efcec57d5e701e2c61d3b2d3619483199e67b56deed9410f5382fc3164cdc7e864dcd77f4d12f3f9d2b159 SHA512 156d441074aff4d85af956b9abf89f9aefccccbe5b39e315c9c7c249ad01f95b42a303c23e9142292e7746f691c2ee704a7cd4a60916594ea1d468240c9b8152
DIST llvm-project-60a904b2ad9842b93cc5fa0ad5bda5e22c550b7e.tar.gz 206511075 BLAKE2B 501924562c3e49eb921adcf3175d55ce0a47992b3b6b8b512ad8f1cc7b7e5f7bc3e2e278b7817c5924fdf8328f97be2f9c5037b1b6414d49e3b525739ecec6da SHA512 b05fcb4600645befb07f2da1efba463389df3fd1d9a26cb0e6ff9ab51edc2d8c5f51a9d44fe4b7f5f29d67cd4dbd15382fdf97f51ddc2c209196533c40611078
DIST llvm-project-8884ba43a8485bebef5c4d41e7ed457e3fa84f07.tar.gz 205853916 BLAKE2B 115809efbf062ced32ffe61b25e65e44a0b3c293f68bf40fc4d9e596cd077fc4781a059ad24c4dc7a139c6ec884a6a183ebac06535f2498116266695e19daf00 SHA512 cb496111ec72163a1872fa9a14f8963108d3185f4464a74cc45d26ccc5071bc36895618b81c29063cde0564a50017a0194da4dc559a046a12550d9ab0d9b8347
diff --git a/sys-libs/libcxx/libcxx-18.1.0_rc4.ebuild b/sys-libs/libcxx/libcxx-18.1.0_rc4.ebuild
new file mode 100644
index 000000000000..c205f3f21b57
--- /dev/null
+++ b/sys-libs/libcxx/libcxx-18.1.0_rc4.ebuild
@@ -0,0 +1,209 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+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} 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
+}
+
+src_prepare() {
+ # hanging tests
+ # https://github.com/llvm/llvm-project/issues/73791
+ rm ../libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/fetch_* || die
+ rm ../libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.*_equals* || die
+
+ cmake_src_prepare
+}
+
+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_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 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
+}