diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-08-25 21:55:22 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-08-25 21:55:22 +0100 |
commit | 2a27c2168109b412410436b9cd6b71dbfe31f6ef (patch) | |
tree | 22d3cb59b0c68f1766670f2d010aa2d3b3b6ea22 /sys-libs/libcxx | |
parent | d0bb3151c569ab6e40c84c177f43bff3c7ce4780 (diff) |
gentoo auto-resync : 25:08:2023 - 21:55:22
Diffstat (limited to 'sys-libs/libcxx')
-rw-r--r-- | sys-libs/libcxx/Manifest | 2 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-18.0.0_pre20230825.ebuild | 204 |
2 files changed, 206 insertions, 0 deletions
diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest index c8814a32d0af..5eae0e3fbee1 100644 --- a/sys-libs/libcxx/Manifest +++ b/sys-libs/libcxx/Manifest @@ -15,6 +15,7 @@ DIST llvm-project-17.0.0rc3.src.tar.xz 127805656 BLAKE2B ecaead9f227b8357a5dc5ff DIST llvm-project-17.0.0rc3.src.tar.xz.sig 438 BLAKE2B 7b644cf501d17a6aef9b052e359ba06c1840a75e5263de46d938dbbdea07720b53d7ee6b5861ad641d0f7a7f75c6cc17717847b0ea9cf08873dbfacbe1c19074 SHA512 7059b1a90b7dd8cfa831f9e199a3a817358fd75d7c7d7e6de446d5443fce5831877a28e9b964ea238c1d803f9054bf4f53a97622d5f756f7f99aaa1c1a279f44 DIST llvm-project-7d259b36d2e8148d13087844e6494ad3a5c63edf.tar.gz 195942450 BLAKE2B 3221cc070295edf4f70e5b24ed06cda29e8dd98d3d28ba5ac38b821fc313f7f7dfdc7ad500537c2244af0fa3d750174dfa1699db7f72a44df67e5fa255a3d0aa SHA512 9279290ab482f29af4a2205270038f1817608a63872e03340d43c31fcf5da36191269838912a1460455a8661295e664891d6d123018b12ddc80c2641790d0640 DIST llvm-project-c4bb3e073548cf436d5fa0406e3ae75e94684dec.tar.gz 195462091 BLAKE2B 982f1105db6cf63575916a20432df4c8623bdff236ce3bd95e63ffd931bc8e1f0e9ea9ad673b09d749c35c1bfe68a48f5b4080118f25040498db09a580db3a7e SHA512 1c591175f44da85eb5ee831220c0387a3d9a0604beaf7abd89fbc6d1e0e9c4f80dac73de1dc22375a45115dd4c1d764fed0a0f628993ca780eb6991682aa0b5b +DIST llvm-project-e3373c6c83d3855adb78f1952a3bf0398baf359e.tar.gz 196926975 BLAKE2B 9da1052db0a6ff81a8b76cbf9cb2ab7eed5c8798dc5ae6887a4694de8b151c7a1282cfff2da2e8440b1a67d3d12c33db319fbbe6062761b6d5369e6b335821ae SHA512 8bb6d49ddb824e932f7bad3c51e4a6c2227139aaf19c02e9deb15657919bc12ea41844d8fe045061814aefb9031d82b167c7c0c20bedaa09aaffe164a2109f7d DIST llvm-project-fe42682e7818d44cbe19f98ef34caa4e414aa937.tar.gz 196564445 BLAKE2B 056e6622b38009e34392c1d1755086e008bc85e9b4c00126e7ca92ddaee2ede7f31bafbc6ca04c5008983ce843d19fb152d75ce01e6ece4c2d891cc38604532c SHA512 8245f8a50f77e9ac9c0309a0025fde8407bb82d82277e3edba0a995debff50940e9500d4ad65060a330e6c19e2e1332d700ea040ca382ef4b75282a4566cbf72 EBUILD libcxx-14.0.6.ebuild 6950 BLAKE2B f4f8068f1b9dd1a8c22abd4acb4206da1dd7bb4eb029723a2edfe8c5db3a6ed74a677ba00c508ff54806a33b60b131ffd4b9729ed0d6d0bf5296a1e53e2ababf SHA512 a602e45046d931f28d2656bd733823d3289a993acd7399c5cd29915e65eb9ae0cb601f2774dad34534299366ecd9c038488e037b13af8b732f254e561f56c592 EBUILD libcxx-15.0.7-r1.ebuild 5308 BLAKE2B aeeee8aab5d3aa09f6165186eafe5bd2802105f763295d4160d81563779999fa03aca891474cd8eae9755ee43ec73bfb7ae3d9fa6d32c7c01040cc46f85858af SHA512 7780ac83f357ffc9d4fc72d2649b2996b7ba5f9473d75ab56e04ccff99a8811c4d14f69de4024fe6472794dc0ed267ee2f34b9430f4d8ed054c65b018abd1778 @@ -28,4 +29,5 @@ EBUILD libcxx-18.0.0.9999.ebuild 5241 BLAKE2B d2cefdfde25f1f87a3a1419268aa0600db EBUILD libcxx-18.0.0_pre20230803.ebuild 5241 BLAKE2B d2cefdfde25f1f87a3a1419268aa0600dba7a3eb7a62a508b8be403134ab9398e881ba8344753fc5ead6c3eac198eebea07d3554a1d6ee3a5676377b5830729b SHA512 e96c1769afd4927dca8ed02a1add344cfb137d0072651524d4077558b31e9dfd70b6179c86c5aa2cb3c80e5864c5ccdaf867350d3f8f9bf696f92e059db71591 EBUILD libcxx-18.0.0_pre20230810.ebuild 5241 BLAKE2B d2cefdfde25f1f87a3a1419268aa0600dba7a3eb7a62a508b8be403134ab9398e881ba8344753fc5ead6c3eac198eebea07d3554a1d6ee3a5676377b5830729b SHA512 e96c1769afd4927dca8ed02a1add344cfb137d0072651524d4077558b31e9dfd70b6179c86c5aa2cb3c80e5864c5ccdaf867350d3f8f9bf696f92e059db71591 EBUILD libcxx-18.0.0_pre20230820.ebuild 5241 BLAKE2B d2cefdfde25f1f87a3a1419268aa0600dba7a3eb7a62a508b8be403134ab9398e881ba8344753fc5ead6c3eac198eebea07d3554a1d6ee3a5676377b5830729b SHA512 e96c1769afd4927dca8ed02a1add344cfb137d0072651524d4077558b31e9dfd70b6179c86c5aa2cb3c80e5864c5ccdaf867350d3f8f9bf696f92e059db71591 +EBUILD libcxx-18.0.0_pre20230825.ebuild 5241 BLAKE2B d2cefdfde25f1f87a3a1419268aa0600dba7a3eb7a62a508b8be403134ab9398e881ba8344753fc5ead6c3eac198eebea07d3554a1d6ee3a5676377b5830729b SHA512 e96c1769afd4927dca8ed02a1add344cfb137d0072651524d4077558b31e9dfd70b6179c86c5aa2cb3c80e5864c5ccdaf867350d3f8f9bf696f92e059db71591 MISC metadata.xml 718 BLAKE2B 3cc1e43a6f1ada368cfc0bf8aaf49007f6792062b684ab9299b5180d778b158325b6931169b52dd14e85ae9ad6dc1a03be323b814fb920fe8434ad86425d699c SHA512 c2cef3e481c0c3db7de6de8c0a5aff42a1e7fe81155d99f1f0f0988f6d5ca041f787a27a2dde0073037d59e082e2f6da7eefe1303f1c1837ebc12e8e0d28729f diff --git a/sys-libs/libcxx/libcxx-18.0.0_pre20230825.ebuild b/sys-libs/libcxx/libcxx-18.0.0_pre20230825.ebuild new file mode 100644 index 000000000000..bb005b4d8ec8 --- /dev/null +++ b/sys-libs/libcxx/libcxx-18.0.0_pre20230825.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="" +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 +} |