diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-07-01 08:00:51 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-07-01 08:00:51 +0100 |
commit | d1c14e94a73fba924761cdad7298f3e48c6bc160 (patch) | |
tree | 60b97f0d81b3b06b06acc48ff8856d7c4afa2989 /sys-libs/libcxx | |
parent | d5ee59790ee8298b8599b0aa0fa21a98b972a44d (diff) |
gentoo auto-resync : 01:07:2024 - 08:00:50
Diffstat (limited to 'sys-libs/libcxx')
-rw-r--r-- | sys-libs/libcxx/Manifest | 2 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-19.0.0_pre20240630.ebuild | 201 |
2 files changed, 203 insertions, 0 deletions
diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest index 70ef0ba9b6a8..9fe8df22c424 100644 --- a/sys-libs/libcxx/Manifest +++ b/sys-libs/libcxx/Manifest @@ -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-022d15c0039fc1cfaa3cc2eb1a45b71bbb21fadd.tar.gz 215902891 BLAKE2B ecd87b84a4e5f87c91b6df0a2d6849f385bdb7b26b14a2836f1e1fc5a69f9f5b441e47b9251174019f62eabe39a243092cd1a175b5da7d7576cdcfd63083cff0 SHA512 7726e253179bfd9e0b93236e3ce1133b421329b0b3496b10c0a0eecde372fb5e55cce737b6b78db13f2d0833bbc92023d95efa54cb2918b12ce9af166bd90ff4 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 @@ -15,4 +16,5 @@ EBUILD libcxx-17.0.6.ebuild 5280 BLAKE2B a882313471af07942a0772efa642800ba855452 EBUILD libcxx-18.1.8.ebuild 5447 BLAKE2B 262f4dd0ccb046dcdf7f6970350381a9a48530f7db546f1b6cef5493b5e2a657a403bb0b5fda0d2d100420c6f8f1bac82f635efa8ad6c70d4476ad101c35eb13 SHA512 74ddb2227a2c8cd3d106861dc8155720f757011933835a36b8a5c133de68db80c14d93ad0cd8c3fa62232ce1e0871889b6db15c4bd53d2c1ea34762d93addc0c EBUILD libcxx-19.0.0.9999.ebuild 5101 BLAKE2B 4fb27fae1b4b3230de9b645416cba17ceb584260faf4c640d743b482cf333116ee00138ce206a62fbdb2811cd6e59dba2d8463949a17545a74f50837c274f355 SHA512 b88b738fad3d0f2aba6736ef9361250165a25a9f6011c8a8f61f035475d84f7bc8d9f3da95ab549d3eebeee338301dd734eed3c85365015134765ef003daa341 EBUILD libcxx-19.0.0_pre20240623.ebuild 5101 BLAKE2B 4fb27fae1b4b3230de9b645416cba17ceb584260faf4c640d743b482cf333116ee00138ce206a62fbdb2811cd6e59dba2d8463949a17545a74f50837c274f355 SHA512 b88b738fad3d0f2aba6736ef9361250165a25a9f6011c8a8f61f035475d84f7bc8d9f3da95ab549d3eebeee338301dd734eed3c85365015134765ef003daa341 +EBUILD libcxx-19.0.0_pre20240630.ebuild 5101 BLAKE2B 4fb27fae1b4b3230de9b645416cba17ceb584260faf4c640d743b482cf333116ee00138ce206a62fbdb2811cd6e59dba2d8463949a17545a74f50837c274f355 SHA512 b88b738fad3d0f2aba6736ef9361250165a25a9f6011c8a8f61f035475d84f7bc8d9f3da95ab549d3eebeee338301dd734eed3c85365015134765ef003daa341 MISC metadata.xml 598 BLAKE2B b7a60449e0d8e4e7605ec203dfaa45b17a265b024e21a3bcfe05a3aeb6c3d19a1d2a218cb1f9ac9ed52296f0d6e723fed251f364341fb70cbd91b747962db580 SHA512 a23f912efff52c4687767023da826ace8c6e5dcd5e69ece86aabbea99da89e48ba81cdc292f03193e2e8a05743e62ebf4d4735d038e0cc4b42714fa277569335 diff --git a/sys-libs/libcxx/libcxx-19.0.0_pre20240630.ebuild b/sys-libs/libcxx/libcxx-19.0.0_pre20240630.ebuild new file mode 100644 index 000000000000..a0d07e1507f4 --- /dev/null +++ b/sys-libs/libcxx/libcxx-19.0.0_pre20240630.ebuild @@ -0,0 +1,201 @@ +# 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} 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 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 +} |