diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-04-05 23:26:20 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-04-05 23:26:20 +0100 |
commit | 2de9aaae9b6018544ada7f67e2229605e1ec4d04 (patch) | |
tree | 231bad5690196ca522285d446614a065879cc7d0 /sys-libs/libcxx | |
parent | 4274bed0c1f1fd06a654f5816e30d82059f4cc39 (diff) |
gentoo auto-resync : 05:04:2023 - 23:26:20
Diffstat (limited to 'sys-libs/libcxx')
-rw-r--r-- | sys-libs/libcxx/Manifest | 3 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-16.0.1.ebuild | 204 |
2 files changed, 207 insertions, 0 deletions
diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest index 0c2dec10820f..1d6e41142c1d 100644 --- a/sys-libs/libcxx/Manifest +++ b/sys-libs/libcxx/Manifest @@ -7,11 +7,14 @@ DIST llvm-project-15.0.7.src.tar.xz 110936452 BLAKE2B f3d277e2029157329e5be78b78 DIST llvm-project-15.0.7.src.tar.xz.sig 566 BLAKE2B 47dc8c82d86237b80c6d85f83a6c9a6e9e174cf8e7f367b071e0cd9481d7cd408e991337c5624e07f3f370f26387c814f212808575ed1c1b58404d3e3836b7df SHA512 fc6891b440dd1175eb8df3790590af8d36bc92301660f84744ae15123475aeb900a151e6a8e7998ded27ec4d86871903ad0b89cd61164943054c2e3bc8d8beb2 DIST llvm-project-16.0.0.src.tar.xz 117933476 BLAKE2B fa09cd8f647ce0daf5a7eae9ac03b99594a9b3193b12065f43f9a6731875243f2f5b354136bcadcb31622b246054e94f880eec3dab0bcd6ae89973fa9dca845c SHA512 3f040abc1b03205693824aeff2ee6efb0cff25fe04bd5265141c093f294655a1f3fcda73cab9c57cbed7523c8f186a7e2484afce0792c55e90e3fb80450fabb7 DIST llvm-project-16.0.0.src.tar.xz.sig 566 BLAKE2B daba130aa5662fbf7cc2e7aa8fa6b64f9cb355a72330f7a01a21b86389c6f2f85ae93de19ff08ba3f1cfe2834d9a2b7648bdf659caba3afdb2a0d13984774a54 SHA512 38e2449dce20cfbf813d1a9a68b36807722ac8ebb5ee07360fa215b2de8534d2329d3e41cfc3ed33e59e36714b94a6683a6d8077950bcf0037973492e0820fb3 +DIST llvm-project-16.0.1.src.tar.xz 117990772 BLAKE2B 298189ce6d7245711e5bd3e03fa74d603dda5a458463ca0cb261fe6949290c46a70abbd1ad1c556e08da3adc5df577305e267c1135214b900d78502e39b46bc5 SHA512 98fc11c0ad90d5e5a2cb123b497b89a1583fe7f91b3ff05c335037801ef66cbfab08f6d2eff539f0da238e9685d4bc7a9fb2578e28864fc9e9357b84129cefaa +DIST llvm-project-16.0.1.src.tar.xz.sig 566 BLAKE2B 06c03d789e63ab30bba4c56ba9ec91400d804448482d6a7fd395252b3b9166a5ee7a42a94c2074aa0d1809a3327f993d8932211f3fc05ad281db64c17b2a7094 SHA512 f42db28eb8280db06b1c78fa7a7aaea3a79499cecee1a64ce18c49b90c755b3a78fc93f01d1855887c7918ccc927c3b6147cfc916520f05d4cef65381ca6fe60 DIST llvm-project-4bf004e07e2b9d6e04e3f33e1b02628c679de664.tar.gz 180304467 BLAKE2B 6750855453b575eb8fcc861d5b24b144497bba62df9b9292ac586cf340e04b2b58290fe9df6d89142f29b56aa37ddeb3bd11cc3337e4dc985a4487954d1e2ffa SHA512 d8a87064ba0f92967df019e9345222b87cda81852a9599902cedc4a49ec7d9e2175c972b7fa6d19920489c1d309822f9c31c23bdce0376a8d40c71d57bcd5068 EBUILD libcxx-14.0.6.ebuild 6949 BLAKE2B 963ece6dbc81f876b8894dd2be0ab4fd5e555dcd09feaf014e30411150f43c9f401910741ded4ecaa05d35f0a2bcf3eb7ce519d4019f464075c31db0c9b6523c SHA512 4c73189a6b719bb10527000b30b83c8811aa462d51bc51bd5b2ff703184e01d8805f0b998479116a39e878ef7486c14e2bfef62bd62b1a20718906eb778a0228 EBUILD libcxx-15.0.7-r1.ebuild 5307 BLAKE2B 43ff3b320e3050127edf77b51afdb77f25c1dc8826c6b29e8a72f809479df78c661aa2882e6fa9459dd360b379d2a6bbd31d910942d40e49199feafa807a6f4a SHA512 be7372fa0a81a45a55e5896ca507e6a4c29e14f4f152154f43529fcb12c8a96ca0c620b432c1481e8c41bb588d4d3f3c479fb9c7ba2483e53881ffcd9ca7004e EBUILD libcxx-15.0.7.ebuild 5282 BLAKE2B 9c1dc8c9ac37ecad2c31231d04068fc60d29df72a393e507e46f12dc093ef11f475ca3df2806551450ea37372dd6739b58b68e7b65290e4ffc18b6fb6085f319 SHA512 f068764ad081f16471f1c3f126095bb5fc61f6151327e50fb6724c93ab33906c72f763b848cb6b0a25b532344a3b6d2b100ed070a6c8bcb7d2e9a4d43e128957 EBUILD libcxx-16.0.0.ebuild 5294 BLAKE2B 83f9a04af5773a5dcf9f0ba430684e2527695b9b41b8f704a779abb2a9e74060c8450e888f0ccc89bd5befdb32a93706ad2cb82ba309792a1f79297d8a9315d9 SHA512 deed56905f464c6b0baca63585753dbf8975fd2db72493ff8adda9a4ed8cdcb4ca3ef7fcdea6227d6680dca949963f438aaa36947e9045e98a582813eec4defc +EBUILD libcxx-16.0.1.ebuild 5294 BLAKE2B 83f9a04af5773a5dcf9f0ba430684e2527695b9b41b8f704a779abb2a9e74060c8450e888f0ccc89bd5befdb32a93706ad2cb82ba309792a1f79297d8a9315d9 SHA512 deed56905f464c6b0baca63585753dbf8975fd2db72493ff8adda9a4ed8cdcb4ca3ef7fcdea6227d6680dca949963f438aaa36947e9045e98a582813eec4defc EBUILD libcxx-16.0.2.9999.ebuild 5239 BLAKE2B 397730a8caf3ca40b19225c6742bc885608d0ed93b04857992564c5040d2bc2196718b0372b497289616d1b334fca9b5e48b1a87604618a4435570df67bf2db0 SHA512 0f6d63282362faf2e845d65ec7f027d38d4d7fc84bfcb4302951cfe279504742f28404da2286f9c5a7439f56a07c20912bfad9d43a42b5a17e9a8b141b06805b EBUILD libcxx-17.0.0.9999.ebuild 5239 BLAKE2B 397730a8caf3ca40b19225c6742bc885608d0ed93b04857992564c5040d2bc2196718b0372b497289616d1b334fca9b5e48b1a87604618a4435570df67bf2db0 SHA512 0f6d63282362faf2e845d65ec7f027d38d4d7fc84bfcb4302951cfe279504742f28404da2286f9c5a7439f56a07c20912bfad9d43a42b5a17e9a8b141b06805b EBUILD libcxx-17.0.0_pre20230314.ebuild 5239 BLAKE2B 397730a8caf3ca40b19225c6742bc885608d0ed93b04857992564c5040d2bc2196718b0372b497289616d1b334fca9b5e48b1a87604618a4435570df67bf2db0 SHA512 0f6d63282362faf2e845d65ec7f027d38d4d7fc84bfcb4302951cfe279504742f28404da2286f9c5a7439f56a07c20912bfad9d43a42b5a17e9a8b141b06805b diff --git a/sys-libs/libcxx/libcxx-16.0.1.ebuild b/sys-libs/libcxx/libcxx-16.0.1.ebuild new file mode 100644 index 000000000000..cdbee6be92d6 --- /dev/null +++ b/sys-libs/libcxx/libcxx-16.0.1.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_{9..11} ) +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 +} |