diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-10-04 19:18:10 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-10-04 19:18:10 +0100 |
commit | 07b0c0005f55e652101816d9f4cfe73403bf0906 (patch) | |
tree | b29108de370177e8ce7c0d0d60e1e4319851d99b /sys-libs/libcxx | |
parent | 78754950ffa3aaba0f48b1ca1d505caa4a3dfbfa (diff) |
gentoo auto-resync : 04:10:2022 - 19:18:10
Diffstat (limited to 'sys-libs/libcxx')
-rw-r--r-- | sys-libs/libcxx/Manifest | 3 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-15.0.2.ebuild | 219 |
2 files changed, 222 insertions, 0 deletions
diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest index 25ef05dcffce..e6f2647a5f50 100644 --- a/sys-libs/libcxx/Manifest +++ b/sys-libs/libcxx/Manifest @@ -4,12 +4,15 @@ DIST llvm-project-14.0.6.src.tar.xz 105618228 BLAKE2B ee67c5407df8cef493b9c0004f DIST llvm-project-14.0.6.src.tar.xz.sig 566 BLAKE2B cb658ad43d8ab6c43a5773aedadf0569c97b5ee4b1bd58eceb10e1879a30880c741c3d66bedd462c892309b688fb7b2673115a62d1f74d71ee375a578de9547f SHA512 b4a7b368532a7a4a24376cfa7db8f6d3478f6d4446474342fc00b474ecf466330cd0f16783209263c4c72d5fc7ddedfb11b95578842e700cfb7ee0bb34cc95d6 DIST llvm-project-15.0.1.src.tar.xz 112068688 BLAKE2B 8fd6690445f7cbc8b47a7c1dd1f2c4fbc39f9a97f9d4a0015d466726454b090b0d1ff9b0d926eba7065e84782901687f74e6540a36dc6656a93f3c92c7bc7e06 SHA512 cef84bc173118a30db3ece5e5c6f874bf689c77afc40a4792fdcb7556555ac14a8e6de1dc811755405e5d162d63bc69abaecba30d220a42765160d69f0073fda DIST llvm-project-15.0.1.src.tar.xz.sig 438 BLAKE2B d8f634adab531bb19178fb27bc83b3a90c856e9402dd5af700f9af43813f68d20c21b9112dd95e9f6f10609ee51ed5aaf77edb96ca16fb93136b8aea432affd3 SHA512 cbf2570840d8dc12f6436c495a23cf9d439ee195755c01a6d1d5bcc20133599dc956dc43a0f5016698e3c9a960826f5f3c2840a73f993467e275856a67999fda +DIST llvm-project-15.0.2.src.tar.xz 112071864 BLAKE2B 96f2884d6c1007260d71e5dd41951eed029e8f50ff78f3c90f7194df13e1d4fb80ab7705c51c45a3e6b2a7714a98d9c5919fc7064d1d5f7c675e65b9b4229b65 SHA512 a0e815369c15bb4f8e8aa0fede29c3d557fcc5c8f2b39d457c03f1ef1d860082a41027238571b2aee9a158a87eb118deb08dc2ba94ce750320837a84e9908b8c +DIST llvm-project-15.0.2.src.tar.xz.sig 438 BLAKE2B 37a3a7fbc2d74db9060e85f04e159b475cf818c95a6fe2e9f5f038eb990f414d94833ecac2f9c826825a69b752876399e37e70e6934def06363f7ccb18be033a SHA512 cfe3bc400a64536ad9181c2ede7227a0953a8632fdc777d1ea1d9225c1fc4e699d90ce0b99e057ee5b87c1272d5810c4b52fb0cac167ddd2aad88f1f3ef46ee8 DIST llvm-project-215c9fa4deac9ec6b4e504843830551f03b60620.tar.gz 168942763 BLAKE2B 545c7c372c38667b7d811753464e91134aae600060d9054979eab8735d535a72d6bbb33a6008dc81f3b14513f58791ca3b8c3068e62ff146ccb14f32abb41a32 SHA512 d0c244357650ef5d56bc7afd836cd747cc2cce92d5f7fb4ddec3414e5bafe4e611acb2a7ff42343c184caad14a30fa9a6ced7e493df3ceb06fe8f9445aeb5a9b DIST llvmorg-13.0.1.tar.gz 147290251 BLAKE2B 2a44b012a672501761d0c27c6b3a315b69bfef0cd13b078a7e7d2fccc4a9c8c0f2bee0f164c4271c9106b0a99cb06e8b64986f66253b613336719fb86b82541b SHA512 9a8cb5d11964ba88b7624f19ec861fb28701f23956ea3c92f6ac644332d5f41fde97bd8933dd3ee70ed378058c252fa3a3887c8d1af90d219970c2b27691166f EBUILD libcxx-13.0.1.ebuild 6768 BLAKE2B 71b0f62e35538d718d99e3d43447f98752933868d999bf831969a6940d3a817452789c2044e9ca3bb4d5d1f0c2976fc276c4d10cb018c44e0cc6109095d9c6d6 SHA512 a12023fa135a7945e8088b34421f575cab32bb8ac53f1aeaa61bcf2a7b9fe045a6e21efba168056ef47b165ef3100e382100f910c84dee972017de6355d2e9c0 EBUILD libcxx-14.0.6.ebuild 6948 BLAKE2B 203e04f4e2603ec0b8e3cd672ca2458c971e4ec3c1d24ea65f85db143561d349d9b7e4b4a58f7c57f5c0caa519e5a79f99f0a76c404aeba47b0bcc683adcb572 SHA512 c1a353dd558c68d439ab66e089e26993e66f1729f7879912413531bbd89318338649dccde1f84a32784de380997d2611d6b7cf86841feb47c3c0c8d67bfe28df EBUILD libcxx-15.0.1.ebuild 5737 BLAKE2B ee1e8abbc711cecdc7e92d19941191fc29016aea2a69fe68afa08e04cd0698cde3d78200fd77cc431b541655f6a1557b05c2dfabda5124558fcdf70694d131b0 SHA512 b8f022ed324c22e74f8cfa34090b524e829b237f1d4a73642969d14cf892da7a187b85a398349f9a69ab1f35df642a1301c3968603f73832446b44defc46b60e EBUILD libcxx-15.0.2.9999.ebuild 5689 BLAKE2B db5070429808dfd0c9cacd0e97c8573b4691e444705b499bb598c53aacbc344c0a1b7d05573eca3d44d23cfb3e7523fe03529215ca5039985e9a6737cc12c1c3 SHA512 697802bc6e30a2609cc949a1028655e535a10c77be6ec39897f30cfb7bedd89192221510528d63ee16ee6176c6d15fcc980da0b2a380e98a186bd21c7b5276cd +EBUILD libcxx-15.0.2.ebuild 5737 BLAKE2B ee1e8abbc711cecdc7e92d19941191fc29016aea2a69fe68afa08e04cd0698cde3d78200fd77cc431b541655f6a1557b05c2dfabda5124558fcdf70694d131b0 SHA512 b8f022ed324c22e74f8cfa34090b524e829b237f1d4a73642969d14cf892da7a187b85a398349f9a69ab1f35df642a1301c3968603f73832446b44defc46b60e EBUILD libcxx-16.0.0.9999.ebuild 5689 BLAKE2B db5070429808dfd0c9cacd0e97c8573b4691e444705b499bb598c53aacbc344c0a1b7d05573eca3d44d23cfb3e7523fe03529215ca5039985e9a6737cc12c1c3 SHA512 697802bc6e30a2609cc949a1028655e535a10c77be6ec39897f30cfb7bedd89192221510528d63ee16ee6176c6d15fcc980da0b2a380e98a186bd21c7b5276cd EBUILD libcxx-16.0.0_pre20220930.ebuild 5689 BLAKE2B db5070429808dfd0c9cacd0e97c8573b4691e444705b499bb598c53aacbc344c0a1b7d05573eca3d44d23cfb3e7523fe03529215ca5039985e9a6737cc12c1c3 SHA512 697802bc6e30a2609cc949a1028655e535a10c77be6ec39897f30cfb7bedd89192221510528d63ee16ee6176c6d15fcc980da0b2a380e98a186bd21c7b5276cd MISC metadata.xml 828 BLAKE2B 40af456df8ac1cfdb66fd62a217abbb4ca837956529906118c35232000435d9e991d18dd0332b7b95eed70d4c7610c7a1aee80af8ba511763edc1423749a4aa4 SHA512 257f8fd05fcade26ca02305356b67c8e2d67a87b180e38a189a659212093b07b9a710b871fbaab894dba9eba5fe450b76c52cc82f6405c24cc1ab2df3abe8bfd diff --git a/sys-libs/libcxx/libcxx-15.0.2.ebuild b/sys-libs/libcxx/libcxx-15.0.2.ebuild new file mode 100644 index 000000000000..79e6aec88593 --- /dev/null +++ b/sys-libs/libcxx/libcxx-15.0.2.ebuild @@ -0,0 +1,219 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{8..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 ~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] ) +" +LLVM_MAX_SLOT=${PV%%.*} +DEPEND=" + ${RDEPEND} + sys-devel/llvm:${LLVM_MAX_SLOT} +" +BDEPEND=" + clang? ( + sys-devel/clang:${LLVM_MAX_SLOT} + ) + !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 dev-lang/llvm; then + 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 against compiler-rt instead of libgcc if this is what clang does + local want_compiler_rt=OFF + if tc-is-clang; then + local compiler_rt=$($(tc-getCC) ${CFLAGS} ${CPPFLAGS} \ + ${LDFLAGS} -print-libgcc-file-name) + if [[ ${compiler_rt} == *libclang_rt* ]]; then + want_compiler_rt=ON + fi + fi + + # 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=${want_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 +} + +pkg_postinst() { + elog "This package (${PN}) is mainly intended as a replacement for the C++" + elog "standard library when using clang." + elog "To use it, instead of libstdc++, use:" + elog " clang++ -stdlib=libc++" + elog "to compile your C++ programs." +} |