diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-11-29 10:51:05 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-11-29 10:51:05 +0000 |
commit | 65277f763adcb68cea58abf75cd35eab450a0d15 (patch) | |
tree | ecbede5e2e057a3fcd5c996882354ad5f400c119 /sys-libs/libcxx | |
parent | b20b0e862d577cc2f56ed09f5f833a80fd839d38 (diff) |
gentoo auto-resync : 29:11:2023 - 10:51:05
Diffstat (limited to 'sys-libs/libcxx')
-rw-r--r-- | sys-libs/libcxx/Manifest | 3 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-17.0.6.ebuild | 204 |
2 files changed, 207 insertions, 0 deletions
diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest index fc1d46060991..83c928271372 100644 --- a/sys-libs/libcxx/Manifest +++ b/sys-libs/libcxx/Manifest @@ -9,12 +9,15 @@ DIST llvm-project-16.0.6.src.tar.xz 118013488 BLAKE2B 95192d39cbd2914e5609db3659 DIST llvm-project-16.0.6.src.tar.xz.sig 566 BLAKE2B 2060cebd5ed57cb8a86a44238c43dfd4b921649298b10c3d19da308374c1e49869174294e29943c2af459fe06428264e26881d6c1288ebbc48686cc2cf467c7a SHA512 ca249262c7102e0889ec1bdc6f71a3a6f0e7e5d5fbab8abcd6fccd2871e7955eff7af5b055a76006097baf0dfaf2f5069eff3035b3107fc552abdb2481b21447 DIST llvm-project-17.0.5.src.tar.xz 127842560 BLAKE2B 2d657ff14ad2dc932a5cdc6605ad30cba8e22ed8f4adb5ed53bfd9b5b654496023df9eb895f9691e98bba6b6a341b81d8a17361daf81ce4c3cd6a2b3602cd90e SHA512 793b63aa875b6d02e3a2803815cc9361b76c9ab1506967e18630fc3d6811bf51c73f53c51d148a5fc72e87e35dc2b88cb18b48419939c436451fe65c5a326022 DIST llvm-project-17.0.5.src.tar.xz.sig 438 BLAKE2B d65bfe2816c49a4b3dda2c70fe5ca6a6b7e922338219e7a62b2f33082d88b700781e184f2b3b0758c1d46825cf369ddd6f8824f3be8d8f3a70a88cfbc06bba45 SHA512 509a61434471463459d3ec837e3f3cce662650d4e72ffc7d28fbeb0d5cfe92d5b1dc4fa568e40f48757b1e708de793bc157de7225ac15a00221191e6c1e660d9 +DIST llvm-project-17.0.6.src.tar.xz 127838860 BLAKE2B d6ede1a9fda8756995c3e0654111941649e15794179641806f18919f1dc68c41ca0cabd5693b5096d05dccc3a391cd20d34af1137bf8af92ed3117a1ce84d1b2 SHA512 6d85bf749e0d77553cc215cbfa61cec4ac4f4f652847f56f946b6a892a99a5ea40b6ab8b39a9708a035001f007986941ccf17e4635260a8b0c1fa59e78d41e30 +DIST llvm-project-17.0.6.src.tar.xz.sig 438 BLAKE2B 186e75b6a0fbfe1e85408589c149e1800fcc47d685b74e4260018e05cd08bc793d1d1197c9c50e177eea941a3d0c65cb0c583ce6dae449099b920adf8a508ef7 SHA512 f78c55053a6450625f3e95f52c305110b4468a9854fec75831b65b8d6ceee3c9206ab9e63c4b5fda8be9bd344f72cfbdaae0520ed240abd505e08ebeaa25d340 DIST llvm-project-5237193b87721134541f228e28edfd544a9c8ac8.tar.gz 201404340 BLAKE2B f028b8b100721202007e3106d8ee91bcf2ac90588f9268ec835dc4ea3941363d4b796338146c65d1a9e88957d18738030f713b3fed770616c79cb40043e706db SHA512 40a4d4f99f1a690a0f8737261aeeaa61af6124eeadcb6bab5c3828e88b36b8cce42a8caee6d3f01e675047c59b62210de017d207e341f680eff97758f798ad45 EBUILD libcxx-14.0.6.ebuild 6950 BLAKE2B f4f8068f1b9dd1a8c22abd4acb4206da1dd7bb4eb029723a2edfe8c5db3a6ed74a677ba00c508ff54806a33b60b131ffd4b9729ed0d6d0bf5296a1e53e2ababf SHA512 a602e45046d931f28d2656bd733823d3289a993acd7399c5cd29915e65eb9ae0cb601f2774dad34534299366ecd9c038488e037b13af8b732f254e561f56c592 EBUILD libcxx-15.0.7-r1.ebuild 5308 BLAKE2B aeeee8aab5d3aa09f6165186eafe5bd2802105f763295d4160d81563779999fa03aca891474cd8eae9755ee43ec73bfb7ae3d9fa6d32c7c01040cc46f85858af SHA512 7780ac83f357ffc9d4fc72d2649b2996b7ba5f9473d75ab56e04ccff99a8811c4d14f69de4024fe6472794dc0ed267ee2f34b9430f4d8ed054c65b018abd1778 EBUILD libcxx-15.0.7.ebuild 5283 BLAKE2B 09c43241bab7e5015d3dae5466e49fb24337b87a6925116056d4ad9baa048c3f23c61a5e93403addfa97676f733a04ef33cc9238fbed9a4abcf985ad8d939965 SHA512 d90583d3fe5724ed15a91c70241457e9120d848e9cbcce2bfb3f3932d9d36ef726830d76601af530e2e28e552d7ad2049dd74713eb54f6eca55206cb4f35f8e2 EBUILD libcxx-16.0.6.ebuild 5311 BLAKE2B 6ce4c5d11f98384867feb1832a13f790f5e7a447c7d2cbd0d80ac415744fd880b4812ae29f23e9359223a67632e4f6a49f084a429eb53d324afd18d2fb10992f SHA512 c9a9ec7632986467001614271e6d721d08e6a4edd433284900f65f209a053911f669dfe7c5a7d86ba6210d7daf9fad5b10fbc858317393826aece8956c6b652f EBUILD libcxx-17.0.5.ebuild 5296 BLAKE2B f6f2b7f309b6ca1441cf39df6409dcbd0eb4b21732aecb457c39f75ea4488da02fe0327f65f9d3444cb0ef0affd9044edf475089611c8674ae54c974fee15df9 SHA512 58ef159a46db7ddcb3fd4bdffcc9938a7ecea7a961ec047938219519f99924fb703d66aa9dcc1a0bb45940d897b3eeb8d18fb223181c6534c9535081dada4377 +EBUILD libcxx-17.0.6.ebuild 5296 BLAKE2B f6f2b7f309b6ca1441cf39df6409dcbd0eb4b21732aecb457c39f75ea4488da02fe0327f65f9d3444cb0ef0affd9044edf475089611c8674ae54c974fee15df9 SHA512 58ef159a46db7ddcb3fd4bdffcc9938a7ecea7a961ec047938219519f99924fb703d66aa9dcc1a0bb45940d897b3eeb8d18fb223181c6534c9535081dada4377 EBUILD libcxx-18.0.0.9999.ebuild 5229 BLAKE2B 414044942632b1b9f0d0953c2e7a2f337a55a91b5510453040fcd769178fcfa073d64a2ce19eb0f75fd8a3b80fe1bd6cdb8054663781095768e017a675de93f7 SHA512 edd51b15343497111fd96b0e3b838982e0351debf15966b014b66a58d7b76c79fd76ca621f5c1ef8beccc5e697f2b7cd7e74a5a6da5b65d23c2cd54d9dce879b EBUILD libcxx-18.0.0_pre20231119.ebuild 5229 BLAKE2B 414044942632b1b9f0d0953c2e7a2f337a55a91b5510453040fcd769178fcfa073d64a2ce19eb0f75fd8a3b80fe1bd6cdb8054663781095768e017a675de93f7 SHA512 edd51b15343497111fd96b0e3b838982e0351debf15966b014b66a58d7b76c79fd76ca621f5c1ef8beccc5e697f2b7cd7e74a5a6da5b65d23c2cd54d9dce879b MISC metadata.xml 718 BLAKE2B 3cc1e43a6f1ada368cfc0bf8aaf49007f6792062b684ab9299b5180d778b158325b6931169b52dd14e85ae9ad6dc1a03be323b814fb920fe8434ad86425d699c SHA512 c2cef3e481c0c3db7de6de8c0a5aff42a1e7fe81155d99f1f0f0988f6d5ca041f787a27a2dde0073037d59e082e2f6da7eefe1303f1c1837ebc12e8e0d28729f diff --git a/sys-libs/libcxx/libcxx-17.0.6.ebuild b/sys-libs/libcxx/libcxx-17.0.6.ebuild new file mode 100644 index 000000000000..61280232d24e --- /dev/null +++ b/sys-libs/libcxx/libcxx-17.0.6.ebuild @@ -0,0 +1,204 @@ +# Copyright 1999-2023 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 llvm.org 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 ~x64-macos" +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-util/cmake-3.16 + sys-devel/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() { + # Darwin Prefix builds do not have llvm installed yet, so rely on + # bootstrap-prefix to set the appropriate path vars to LLVM instead + # of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version sys-devel/llvm; then + LLVM_MAX_SLOT=${LLVM_MAJOR} llvm_pkg_setup + fi + 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() { + # 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} + ) + + 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 +} |