From 0771aa27d30f102abe2c5733a138ffe570da4d15 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 10 Feb 2024 23:34:33 +0000 Subject: gentoo auto-resync : 10:02:2024 - 23:34:33 --- sys-libs/libcxx/Manifest | 2 + sys-libs/libcxx/libcxx-19.0.0_pre20240210.ebuild | 209 +++++++++++++++++++++++ 2 files changed, 211 insertions(+) create mode 100644 sys-libs/libcxx/libcxx-19.0.0_pre20240210.ebuild (limited to 'sys-libs/libcxx') diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest index 6e03a27c25c8..22fb9f2e4f76 100644 --- a/sys-libs/libcxx/Manifest +++ b/sys-libs/libcxx/Manifest @@ -9,10 +9,12 @@ DIST llvm-project-17.0.6.src.tar.xz.sig 438 BLAKE2B 186e75b6a0fbfe1e85408589c149 DIST llvm-project-18.1.0rc2.src.tar.xz 131993176 BLAKE2B 8df1e34a54214975efe1b9a649753a2dc20c04e3c763bd8648000f48dd18f27ccfdc597ff6e68e0f408310493dfa92f48c7eee53376501e8ebc3b7c614809c15 SHA512 b595bb5d029723fee4e8f8edeaddd6fdcd48d668f66f4239e3208fd19d3a3622e8e4f90ae3fa4b1216fca1621d6c6b6ebf4d99dec7febff2457d0ceb79e8617a DIST llvm-project-18.1.0rc2.src.tar.xz.sig 566 BLAKE2B c765549386a92883bd348d9be25a3c92b1e66a1bac71385ef99978ec2af413a7616a2d9699c57554d927f95b80a3584572557d26e3df16b2ff6678359d5fd6b0 SHA512 83bb4c133f34faec8a0109689ed7aa18222c9a803ba8c95c571a18e854726024f106a1c8e3a820020255c426b7fa8bda26789ff1546972e233fbe3e3ab3a8e91 DIST llvm-project-78b4e7c5e349d8c101b50affbd260eb109748f8f.tar.gz 207433034 BLAKE2B ab7189fe82b5a9309348b499130295b3057dbb263ad9c60b1748e4ea92be3a85f0160baa1408dde5516650994951d9f948223d2d6260492a07b07dde51a51ff9 SHA512 366ecb02720d2b550ebeca989abf74ca1c93b2585a95fa378f44edc6c3329ee4e1548f5fa2cf7a19e59bc817abe6cc8850841415227380114c59b58867959a5a +DIST llvm-project-8884ba43a8485bebef5c4d41e7ed457e3fa84f07.tar.gz 205853916 BLAKE2B 115809efbf062ced32ffe61b25e65e44a0b3c293f68bf40fc4d9e596cd077fc4781a059ad24c4dc7a139c6ec884a6a183ebac06535f2498116266695e19daf00 SHA512 cb496111ec72163a1872fa9a14f8963108d3185f4464a74cc45d26ccc5071bc36895618b81c29063cde0564a50017a0194da4dc559a046a12550d9ab0d9b8347 EBUILD libcxx-15.0.7-r1.ebuild 5283 BLAKE2B 4380fc5b851054a5ec226ee4c92a2b79511d73ac9b3f8bccc977211601eca36113fc0ae605854da53898507021f24a8b319197605c556244d84253bede7b84f4 SHA512 0a5859269422e794deb43ed960651a1dea830af28b5e395f32e28de8e67a1f399507340230af1c84248853f554e751709a60a9a78aeb0eb42804cb41907dbfce EBUILD libcxx-16.0.6.ebuild 5287 BLAKE2B fc7ce91f80be1d635a4693fe44f9379701dc3d4241b2eaa701338f02ae580a402661ee60f6349119935a8fb1ce1667b83895a9da8f4da897cc12e8d2a6ed7e76 SHA512 69e9c4ed649f70fd5fd7d84049d095b9e65494749181b2a81f05b473b4303ebc3a353187039e1fc1d270fc39342bca2785b2a75a0025232bee57e2a2506c7ef0 EBUILD libcxx-17.0.6.ebuild 5269 BLAKE2B dbc9cfac07759943f456cf6919b66b74da69e6aec68f5342ee7e10051a7da835aa9b45752ca7832784f38643c7175ca0d6a978cd439d2ad93bd7d73f30c95e93 SHA512 0633e594869874a8ee47928e560d96c7db2094a5cd542b11e26b09eef593f4536c2e6e46c76cd0e8bb64e7b7ccc0c79a5d1fb8e52243f70aa0a923551043078b EBUILD libcxx-18.1.0_rc2.ebuild 5367 BLAKE2B f7db8abd6b4c8b6949fb0f5e3a7448ec6ee3209d1459090fed642db04277b396a5418d270bd5d44b08cf13752d8c3f0856e88c93697ef9ab66f7d9b5675465a7 SHA512 06d7ac584a93c185bdb0bac6bae43b7036825b15f31857db865b61b2e9c202826f4c861404d3be012694c4203632342aa4352fc41c6abbbb6eca2b745c33d7e1 EBUILD libcxx-19.0.0.9999.ebuild 5367 BLAKE2B f7db8abd6b4c8b6949fb0f5e3a7448ec6ee3209d1459090fed642db04277b396a5418d270bd5d44b08cf13752d8c3f0856e88c93697ef9ab66f7d9b5675465a7 SHA512 06d7ac584a93c185bdb0bac6bae43b7036825b15f31857db865b61b2e9c202826f4c861404d3be012694c4203632342aa4352fc41c6abbbb6eca2b745c33d7e1 EBUILD libcxx-19.0.0_pre20240203.ebuild 5367 BLAKE2B f7db8abd6b4c8b6949fb0f5e3a7448ec6ee3209d1459090fed642db04277b396a5418d270bd5d44b08cf13752d8c3f0856e88c93697ef9ab66f7d9b5675465a7 SHA512 06d7ac584a93c185bdb0bac6bae43b7036825b15f31857db865b61b2e9c202826f4c861404d3be012694c4203632342aa4352fc41c6abbbb6eca2b745c33d7e1 +EBUILD libcxx-19.0.0_pre20240210.ebuild 5367 BLAKE2B f7db8abd6b4c8b6949fb0f5e3a7448ec6ee3209d1459090fed642db04277b396a5418d270bd5d44b08cf13752d8c3f0856e88c93697ef9ab66f7d9b5675465a7 SHA512 06d7ac584a93c185bdb0bac6bae43b7036825b15f31857db865b61b2e9c202826f4c861404d3be012694c4203632342aa4352fc41c6abbbb6eca2b745c33d7e1 MISC metadata.xml 598 BLAKE2B b7a60449e0d8e4e7605ec203dfaa45b17a265b024e21a3bcfe05a3aeb6c3d19a1d2a218cb1f9ac9ed52296f0d6e723fed251f364341fb70cbd91b747962db580 SHA512 a23f912efff52c4687767023da826ace8c6e5dcd5e69ece86aabbea99da89e48ba81cdc292f03193e2e8a05743e62ebf4d4735d038e0cc4b42714fa277569335 diff --git a/sys-libs/libcxx/libcxx-19.0.0_pre20240210.ebuild b/sys-libs/libcxx/libcxx-19.0.0_pre20240210.ebuild new file mode 100644 index 000000000000..c205f3f21b57 --- /dev/null +++ b/sys-libs/libcxx/libcxx-19.0.0_pre20240210.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 +} -- cgit v1.2.3