public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/musl:master commit in: sys-libs/libcxx/, sys-libs/libcxx/files/
@ 2015-09-21  8:45 Anthony G. Basile
  0 siblings, 0 replies; 2+ messages in thread
From: Anthony G. Basile @ 2015-09-21  8:45 UTC (permalink / raw
  To: gentoo-commits

commit:     b5eb2ede092b2d059d6e1d7799c4adfbc4b19978
Author:     Chloe Kudryavtsev <chloe.kudryavtsev <AT> gmail <DOT> com>
AuthorDate: Sat Sep 19 07:32:17 2015 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Sep 21 08:49:33 2015 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=b5eb2ede

Fix LibC++ Under Musl

- Musl does not define locale-specific versions of functions (*_l)
- This may be because musl only supports UTF-8 at the moment
- This patch creates macros that redirect the *_l functions used to
  their non-localized variants.
- Also, remove checks against GLIBC's version (EMSCRIPTEN) and
  __GLIBC_PREREQ (based on vvavrychuk's 3.4.2 patch).

TODO: think about other LIBCs that might have confusing breakages due to
last change.

 sys-libs/libcxx/Manifest                           |   6 +
 sys-libs/libcxx/files/Makefile                     |  38 +++++
 .../files/libcxx-3.7.0-musl-compatibility.patch    |  70 ++++++++
 sys-libs/libcxx/files/prepare_snapshot.sh          |  16 ++
 sys-libs/libcxx/libcxx-3.7.0-r99.ebuild            | 176 +++++++++++++++++++++
 sys-libs/libcxx/metadata.xml                       |  15 ++
 6 files changed, 321 insertions(+)

diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest
new file mode 100644
index 0000000..5ddeeee
--- /dev/null
+++ b/sys-libs/libcxx/Manifest
@@ -0,0 +1,6 @@
+AUX Makefile 874 SHA256 ba99d3b7b98ed88a64f8370ba2d90e245f8e5ea9bfe302382ef8eeded0ec00b4 SHA512 96eef2e897075bc7d9fc799ce6c54f6a33ee917efd5666376ac578cb16e15d965205630dbd076f92a3a7091d58ecc235e37bc327c211bf3594244981f089135f WHIRLPOOL 0680b69fdc46c0d6fac01fc2fa0b93ff62d167a03b3ce1cc80fbe57ff04356f5ab4e71f0daec517e629697d5e34f295b66e8263f7506eaa347a500b27442933d
+AUX libcxx-3.7.0-musl-compatibility.patch 2673 SHA256 9671760510032749208f4eacc3b1cea1757f1e7485d6449e23b2d3b69a75f62d SHA512 f42d465880087c67f782d004729b2a75574afb752961339d7501a3d4767964b5476a071d02fb610894ff4a24631ad60ac335434abe5a0643b41dcdb70ac8638e WHIRLPOOL 4da05e7820e6e813ef029efb9a8fc136d2f5c669809cc609d9e29cb56e9e8990678797a23110dec4b4e765180aa064587e04dd090aafda1eb8b8a751e935f701
+AUX prepare_snapshot.sh 427 SHA256 9ebf22257a2e296dee41a56b0a721cd1ba459c620009ca8422ba812515ff726f SHA512 ebac2a467f8b1dfb68f1dc46a35f8294d1cf74b70be2a008217fa13b3366ddf4a9f2ebbe611cd63824f42305c5c0304aac2f46386b2956c9e07d82d5d984b435 WHIRLPOOL 232a60d6a22f50c424ec9cf6f325bbb4e8e96815ba9dffdad0a5b1b872b19d20126d316ced71956978eb5ce098f72584d21104c14e232330b3893a73e4c3c358
+DIST libcxx-3.7.0.src.tar.xz 994580 SHA256 c18f3c8333cd7e678c1424a57fe5e25efe740ca7caf62ac67152b4723f3ad08e SHA512 e71d04efa0fafab129a97ca6f4fd7b5f185258de7455c7a25d0964f459bc6068c69c5d67199f6d7cd3541bdce630106cbaf3b7099e4737dddbdd57c77a3fe054 WHIRLPOOL 26672e3f6e0772504e7ee174c37e5fc20079c730ac8bd0d2563d5415ca9589360aa3be42a8aac15eb5a63c69227bd4911aa822b158b9a35e3d74ec0d71bb1300
+EBUILD libcxx-3.7.0-r99.ebuild 5444 SHA256 caf6ad314fdbdf86e9290bbcbb1b7619b215afbcee279d3dac9b67278aae36da SHA512 d17bc205320ec01c3546e99289d9923c1dc65214c49762f6fa41d498727c5e5cd658fe665c87b657ad41bc2c07640cd1b7fa907d6a30d9fa87e8d3fd61bbc703 WHIRLPOOL 0825e0cd24aebcfbe2bb23e5c1b3aba04fd65ea0a966b72c186f2ef736328b2a129eb7087e234d2ea88ddc30ab397630002a63bb898c0d76e67f16a19b58c714
+MISC metadata.xml 558 SHA256 c9fe7077a8c7f767d7cdbe154d85dd344fb86ea246b16613242c70a40f3e1ef2 SHA512 3f324c4959a7c9f2613b29928957fd010b35c6e9c1601f0296e7e8b7c8d59a3c27c5c04fef87ac825f2f7bb07553bc617c4405e1e22847dc8db3e7a1ebb21f50 WHIRLPOOL 3ade5e3852afcd533c89ce0aeead55101f23d1b31825718bfccd60fac485961df617c93962be4c60333a21335dcd6bb5630c8002fe06f456c4e177c14d434455

diff --git a/sys-libs/libcxx/files/Makefile b/sys-libs/libcxx/files/Makefile
new file mode 100644
index 0000000..029e729
--- /dev/null
+++ b/sys-libs/libcxx/files/Makefile
@@ -0,0 +1,38 @@
+CXXFLAGS+=-std=c++11 -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion \
+	  -Wpadded -Wstrict-aliasing=2 -Wstrict-overflow=4
+
+SRCDIR=..
+LIB=libc++
+STATIC=libc++.a
+MAJOR=1
+MINOR=0
+SHEXT?=.so
+SHLIB=$(LIB)$(SHEXT).$(MAJOR).$(MINOR)
+SONAME=$(LIB)$(SHEXT).$(MAJOR)
+
+SRC=$(wildcard $(SRCDIR)/src/*.cpp)
+OBJ=$(SRC:$(SRCDIR)/src/%.cpp=%.o)
+SOBJ=$(SRC:$(SRCDIR)/src/%.cpp=%.So)
+
+
+%.So: $(SRCDIR)/src/%.cpp
+	$(CXX) -I$(SRCDIR)/include $(CPPFLAGS) $(CXXFLAGS) -fPIC -nostdinc++ -c $< -o $@
+
+%.o: $(SRCDIR)/src/%.cpp
+	$(CXX) -I$(SRCDIR)/include $(CPPFLAGS) $(CXXFLAGS) -nostdinc++ -c $< -o $@
+
+$(STATIC): $(OBJ)
+	$(AR) cr $@ $^
+
+static: $(STATIC)
+
+$(SHLIB): $(SOBJ)
+	$(CXX) -fPIC -nodefaultlibs $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(SONAME) -o $@ $^ $(LIBS)
+
+$(SONAME): $(SHLIB)
+	ln -s $< $@
+
+$(LIB)$(SHEXT): $(SONAME)
+	ln -s $< $@
+
+shared: $(SHLIB) $(SONAME) $(LIB)$(SHEXT)

diff --git a/sys-libs/libcxx/files/libcxx-3.7.0-musl-compatibility.patch b/sys-libs/libcxx/files/libcxx-3.7.0-musl-compatibility.patch
new file mode 100644
index 0000000..5e223bf
--- /dev/null
+++ b/sys-libs/libcxx/files/libcxx-3.7.0-musl-compatibility.patch
@@ -0,0 +1,70 @@
+diff -Naur libcxx-3.7.0.src.orig/include/__config libcxx-3.7.0.src/include/__config
+--- libcxx-3.7.0.src.orig/include/__config	2015-07-17 00:58:59.000000000 +0000
++++ libcxx-3.7.0.src/include/__config	2015-09-19 07:56:55.295497669 +0000
+@@ -355,14 +355,10 @@
+ #define _LIBCPP_HAS_QUICK_EXIT
+ #elif defined(__linux__)
+ #include <features.h>
+-#if __GLIBC_PREREQ(2, 15)
+ #define _LIBCPP_HAS_QUICK_EXIT
+-#endif
+-#if __GLIBC_PREREQ(2, 17)
+ #define _LIBCPP_HAS_C11_FEATURES
+ #endif
+ #endif
+-#endif
+ 
+ #if (__has_feature(cxx_noexcept))
+ #  define _NOEXCEPT noexcept
+diff -Naur libcxx-3.7.0.src.orig/include/locale libcxx-3.7.0.src/include/locale
+--- libcxx-3.7.0.src.orig/include/locale	2015-09-19 08:02:51.101497669 +0000
++++ libcxx-3.7.0.src/include/locale	2015-09-19 07:24:18.635497669 +0000
+@@ -11,6 +11,15 @@
+ #ifndef _LIBCPP_LOCALE
+ #define _LIBCPP_LOCALE
+ 
++// musl doesn't define _l (with locale) variants of functions, as it only supports UTF-8.
++// we can simply make macros that will call the non-localated ones if we're using musl, or rather not-using something that has the _l ones.
++// couldn't find anything glibc #defines when it creates strtoull_l (that it doesn't undefine a few lines later), so let's test against glibc and glibc-likes.
++// almost all glibc-likes define __GNU_LIBRARY__ for compatibility
++#ifndef __GNU_LIBRARY__
++#define strtoull_l(A, B, C, LOC) strtoull(A,B,C)
++#define strtoll_l(A, B, C, LOC) strtoll(A,B,C)
++#endif
++
+ /*
+     locale synopsis
+ 
+diff -Naur libcxx-3.7.0.src.orig/src/locale.cpp libcxx-3.7.0.src/src/locale.cpp
+--- libcxx-3.7.0.src.orig/src/locale.cpp	2015-07-06 15:39:36.000000000 +0000
++++ libcxx-3.7.0.src/src/locale.cpp	2015-09-19 07:59:59.979497669 +0000
+@@ -1012,11 +1012,10 @@
+     return low;
+ }
+ 
+-#ifdef __EMSCRIPTEN__
++// we want this either way
+ extern "C" const unsigned short ** __ctype_b_loc();
+ extern "C" const int ** __ctype_tolower_loc();
+ extern "C" const int ** __ctype_toupper_loc();
+-#endif
+ 
+ #ifdef _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
+ const ctype<char>::mask*
+@@ -1122,12 +1121,10 @@
+ #elif defined(_AIX)
+     return (const unsigned int *)__lc_ctype_ptr->obj->mask;
+ #else
+-    // Platform not supported: abort so the person doing the port knows what to
+-    // fix
+-# warning  ctype<char>::classic_table() is not implemented
+-    printf("ctype<char>::classic_table() is not implemented\n");
+-    abort();
+-    return NULL;
++// not sure any other libc like this exists, but there is no way to differentiate musl as of right now
++// to be fair, with the change above, this should always work
++// also, #warning is a gcc extension
++    return (const unsigned long *)*__ctype_b_loc();
+ #endif
+ }
+ #endif

diff --git a/sys-libs/libcxx/files/prepare_snapshot.sh b/sys-libs/libcxx/files/prepare_snapshot.sh
new file mode 100755
index 0000000..3de5a97
--- /dev/null
+++ b/sys-libs/libcxx/files/prepare_snapshot.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+VERSION=$(date +%Y%m%d)
+BASE_VERSION="0.0"
+PACKAGE="libcxx-${BASE_VERSION}_p${VERSION}"
+
+svn co http://llvm.org/svn/llvm-project/libcxx/trunk ${PACKAGE}
+
+find "${PACKAGE}" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
+find "${PACKAGE}" -type d -name '.git' -prune -print0 | xargs -0 rm -rf
+
+tar cJf ${PACKAGE}.tar.xz ${PACKAGE}
+rm -rf ${PACKAGE}/
+
+echo "Tarball: \"${PACKAGE}.tar.xz\""
+
+echo "** all done **"

diff --git a/sys-libs/libcxx/libcxx-3.7.0-r99.ebuild b/sys-libs/libcxx/libcxx-3.7.0-r99.ebuild
new file mode 100644
index 0000000..a557266
--- /dev/null
+++ b/sys-libs/libcxx/libcxx-3.7.0-r99.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+ESVN_REPO_URI="http://llvm.org/svn/llvm-project/libcxx/trunk"
+
+[ "${PV%9999}" != "${PV}" ] && SCM="subversion" || SCM=""
+
+inherit ${SCM} flag-o-matic toolchain-funcs multilib multilib-minimal
+
+DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
+HOMEPAGE="http://libcxx.llvm.org/"
+if [ "${PV%9999}" = "${PV}" ] ; then
+	SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.xz"
+	S="${WORKDIR}/${P}.src"
+else
+	SRC_URI=""
+fi
+
+LICENSE="|| ( UoI-NCSA MIT )"
+SLOT="0"
+if [ "${PV%9999}" = "${PV}" ] ; then
+	KEYWORDS="~amd64 ~mips ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux"
+else
+	KEYWORDS=""
+fi
+IUSE="elibc_glibc +libcxxrt +static-libs test"
+
+RDEPEND="libcxxrt? ( >=sys-libs/libcxxrt-0.0_p20130725[static-libs?,${MULTILIB_USEDEP}] )
+	!libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] )"
+DEPEND="${RDEPEND}
+	test? ( sys-devel/clang )
+	app-arch/xz-utils"
+
+DOCS=( CREDITS.TXT )
+
+pkg_setup() {
+	if ! use libcxxrt ; then
+		ewarn "You have disabled USE=libcxxrt. This will build ${PN} against"
+		ewarn "libsupc++. Please note that this is not well supported."
+		ewarn "In particular, static linking will not work."
+	fi
+	if [[ $(gcc-version) < 4.7 ]] && [[ $(tc-getCXX) != *clang++* ]] ; then
+		eerror "${PN} needs to be built with clang++ or gcc-4.7 or later."
+		eerror "Please use gcc-config to switch to gcc-4.7 or later version."
+		die
+	fi
+}
+
+src_prepare() {
+	cp -f "${FILESDIR}/Makefile" lib/ || die
+	multilib_copy_sources
+}
+
+src_unpack() {
+	unpack ${A}
+	cd ${S}
+	epatch "${FILESDIR}/${PN}-3.7.0-musl-compatibility.patch"
+}
+
+src_configure() {
+	export LIBS="-lpthread -lrt -lc -lgcc_s"
+	if use libcxxrt ; then
+		append-cppflags -DLIBCXXRT "-I${EPREFIX}/usr/include/libcxxrt/"
+		LIBS="-lcxxrt ${LIBS}"
+		cp "${EPREFIX}/usr/include/libcxxrt/"*.h "${S}/include"
+	else
+		# Very hackish, see $HOMEPAGE
+		# If someone has a clever idea, please share it!
+		local includes="$(echo | ${CHOST}-g++ -Wp,-v -x c++ - -fsyntax-only 2>&1 | grep -C 2 '#include.*<...>' | tail -n 2 | sed -e 's/^ /-I/' | tr '\n' ' ')"
+		local libcxx_gcc_dirs="$(echo | ${CHOST}-g++ -Wp,-v -x c++ - -fsyntax-only 2>&1 | grep -C 2 '#include.*<...>' | tail -n 2 | tr '\n' ' ')"
+		append-cppflags -D__GLIBCXX__ ${includes}
+		LIBS="-lsupc++ ${LIBS}"
+		local libsupcxx_includes="cxxabi.h bits/c++config.h bits/os_defines.h bits/cpu_defines.h bits/cxxabi_tweaks.h bits/cxxabi_forced.h"
+		for i in ${libsupcxx_includes} ; do
+			local found=""
+			[ -d "${S}/include/$(dirname ${i})/" ] || mkdir -p "${S}/include/$(dirname ${i})"
+			for j in ${libcxx_gcc_dirs} ; do
+				if [ -f "${j}/${i}" ] ; then
+					cp "${j}/${i}" "${S}/include/$(dirname ${i})/" || die
+					found=yes
+				fi
+			done
+			[ -n "${found}" ] || die "Header not found: ${i}"
+		done
+	fi
+
+	tc-export AR CC CXX
+
+	append-ldflags "-Wl,-z,defs" # make sure we are not underlinked
+}
+
+multilib_src_compile() {
+	cd "${BUILD_DIR}/lib" || die
+	emake shared
+	use static-libs && emake static
+}
+
+# Tests fail for now, if anybody is able to fix them, help is very welcome.
+multilib_src_test() {
+	cd "${BUILD_DIR}/test"
+	LD_LIBRARY_PATH="${BUILD_DIR}/lib:${LD_LIBRARY_PATH}" \
+		CC="clang++ $(get_abi_CFLAGS) ${CXXFLAGS}" \
+		HEADER_INCLUDE="-I${BUILD_DIR}/include" \
+		SOURCE_LIB="-L${BUILD_DIR}/lib" \
+		LIBS="-lm $(usex libcxxrt -lcxxrt "")" \
+		./testit || die
+	# TODO: fix link against libsupc++
+}
+
+# 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() {
+	if use libcxxrt ; then
+		# Move it first.
+		mv "${ED}/usr/$(get_libdir)/libc++.a" "${ED}/usr/$(get_libdir)/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="${EPREFIX}/usr/$(get_libdir)/libc++_static.a ${EPREFIX}/usr/$(get_libdir)/libcxxrt.a"
+		# On Linux/glibc it does not link without libpthread or libdl. It is
+		# fine on FreeBSD.
+		use elibc_glibc && deps="${deps} ${EPREFIX}/usr/$(get_libdir)/libpthread.a ${EPREFIX}/usr/$(get_libdir)/libdl.a"
+
+		gen_ldscript "${deps}" > "${ED}/usr/$(get_libdir)/libc++.a"
+	fi
+	# TODO: Generate a libc++.a ldscript when building against libsupc++
+}
+
+gen_shared_ldscript() {
+	if use libcxxrt ; then
+		mv "${ED}/usr/$(get_libdir)/libc++.so" "${ED}/usr/$(get_libdir)/libc++_shared.so" || die
+		local deps="${EPREFIX}/usr/$(get_libdir)/libc++_shared.so ${EPREFIX}/usr/$(get_libdir)/libcxxrt.so"
+		gen_ldscript "${deps}" > "${ED}/usr/$(get_libdir)/libc++.so"
+	fi
+	# TODO: Generate the linker script for other confiurations too.
+}
+
+multilib_src_install() {
+	cd "${BUILD_DIR}/lib"
+	if use static-libs ; then
+		dolib.a libc++.a
+		gen_static_ldscript
+	fi
+	dolib.so libc++.so*
+	gen_shared_ldscript
+}
+
+multilib_src_install_all() {
+	einstalldocs
+	insinto /usr/include/c++/v1
+	doins -r include/*
+}
+
+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."
+}

diff --git a/sys-libs/libcxx/metadata.xml b/sys-libs/libcxx/metadata.xml
new file mode 100644
index 0000000..578f810
--- /dev/null
+++ b/sys-libs/libcxx/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+  <herd>bsd</herd>
+  <!-- BSD is here because the plan is to have libc++ as the standard C++
+	   library with clang. A llvm herd would make a lot of sense here too -->
+  <maintainer>
+    <email>aballier@gentoo.org</email>
+    <name>Alexis Ballier</name>
+  </maintainer>
+  <use>
+	  <flag name="libcxxrt">Build on top of <pkg>sys-libs/libcxxrt</pkg> instead of gcc's libsupc++ (avoids depending on gcc).</flag>
+  </use>
+</pkgmetadata>
+


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] proj/musl:master commit in: sys-libs/libcxx/, sys-libs/libcxx/files/
@ 2017-03-18 16:57 Aric Belsito
  0 siblings, 0 replies; 2+ messages in thread
From: Aric Belsito @ 2017-03-18 16:57 UTC (permalink / raw
  To: gentoo-commits

commit:     5fa0a9a6ee4155be9447196ca00a3927511e2d6d
Author:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
AuthorDate: Sat Mar 18 16:55:04 2017 +0000
Commit:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
CommitDate: Sat Mar 18 16:55:04 2017 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=5fa0a9a6

sys-libs/libcxx: remove

out of date, just use >sys-libs/libcxx-3.7.1

 sys-libs/libcxx/Manifest                           |   6 -
 sys-libs/libcxx/files/Makefile                     |  38 -----
 .../files/libcxx-3.7.0-musl-compatibility.patch    |  70 --------
 sys-libs/libcxx/files/prepare_snapshot.sh          |  16 --
 sys-libs/libcxx/libcxx-3.7.0-r99.ebuild            | 176 ---------------------
 sys-libs/libcxx/metadata.xml                       |  17 --
 6 files changed, 323 deletions(-)

diff --git a/sys-libs/libcxx/Manifest b/sys-libs/libcxx/Manifest
deleted file mode 100644
index e5378d4..0000000
--- a/sys-libs/libcxx/Manifest
+++ /dev/null
@@ -1,6 +0,0 @@
-AUX Makefile 874 SHA256 ba99d3b7b98ed88a64f8370ba2d90e245f8e5ea9bfe302382ef8eeded0ec00b4 SHA512 96eef2e897075bc7d9fc799ce6c54f6a33ee917efd5666376ac578cb16e15d965205630dbd076f92a3a7091d58ecc235e37bc327c211bf3594244981f089135f WHIRLPOOL 0680b69fdc46c0d6fac01fc2fa0b93ff62d167a03b3ce1cc80fbe57ff04356f5ab4e71f0daec517e629697d5e34f295b66e8263f7506eaa347a500b27442933d
-AUX libcxx-3.7.0-musl-compatibility.patch 2673 SHA256 9671760510032749208f4eacc3b1cea1757f1e7485d6449e23b2d3b69a75f62d SHA512 f42d465880087c67f782d004729b2a75574afb752961339d7501a3d4767964b5476a071d02fb610894ff4a24631ad60ac335434abe5a0643b41dcdb70ac8638e WHIRLPOOL 4da05e7820e6e813ef029efb9a8fc136d2f5c669809cc609d9e29cb56e9e8990678797a23110dec4b4e765180aa064587e04dd090aafda1eb8b8a751e935f701
-AUX prepare_snapshot.sh 427 SHA256 9ebf22257a2e296dee41a56b0a721cd1ba459c620009ca8422ba812515ff726f SHA512 ebac2a467f8b1dfb68f1dc46a35f8294d1cf74b70be2a008217fa13b3366ddf4a9f2ebbe611cd63824f42305c5c0304aac2f46386b2956c9e07d82d5d984b435 WHIRLPOOL 232a60d6a22f50c424ec9cf6f325bbb4e8e96815ba9dffdad0a5b1b872b19d20126d316ced71956978eb5ce098f72584d21104c14e232330b3893a73e4c3c358
-DIST libcxx-3.7.0.src.tar.xz 994580 SHA256 c18f3c8333cd7e678c1424a57fe5e25efe740ca7caf62ac67152b4723f3ad08e SHA512 e71d04efa0fafab129a97ca6f4fd7b5f185258de7455c7a25d0964f459bc6068c69c5d67199f6d7cd3541bdce630106cbaf3b7099e4737dddbdd57c77a3fe054 WHIRLPOOL 26672e3f6e0772504e7ee174c37e5fc20079c730ac8bd0d2563d5415ca9589360aa3be42a8aac15eb5a63c69227bd4911aa822b158b9a35e3d74ec0d71bb1300
-EBUILD libcxx-3.7.0-r99.ebuild 5398 SHA256 f8edab553c26ad39e238513235924fb1dbce8135021571cae8dbb3fff908b58e SHA512 f1a3628196978405f58541f6d198ec8ffbafe2fc7fe144c3c9ae11cf9e03427aaa051a52c5a0fbc38fd43266e535cce9c864b6c4aad1ad182cf0428938e34da6 WHIRLPOOL 79787b57d3e8f34ea0cf51e56bf572b8f374744a7ef3e7133c15db13e259701947d55bd619c8c15f63a7f8857c24374f69f7cc4f1c5909ae04c803e78db13974
-MISC metadata.xml 661 SHA256 5d6db653ff40b42a6ce8158a87cfa6bcd1804c7e65a291491623c989091ca6d4 SHA512 4e46096f0b9e33ef5c4e7db79ece835a6f9598e692930d620cdfa0c262ce638417a6ed64196c574f5cc54ea646313563fc644e6fd3330d4ceca8ae4767a7afad WHIRLPOOL 4580760d0205e55bace5836cb1cc4cec7b76ecf36041a78057625dd3a01c809021fa861ab5440c4f9d85008e43d0a170e232a0c86bc1891b6adcbbc9b12a649b

diff --git a/sys-libs/libcxx/files/Makefile b/sys-libs/libcxx/files/Makefile
deleted file mode 100644
index 029e729..0000000
--- a/sys-libs/libcxx/files/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-CXXFLAGS+=-std=c++11 -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion \
-	  -Wpadded -Wstrict-aliasing=2 -Wstrict-overflow=4
-
-SRCDIR=..
-LIB=libc++
-STATIC=libc++.a
-MAJOR=1
-MINOR=0
-SHEXT?=.so
-SHLIB=$(LIB)$(SHEXT).$(MAJOR).$(MINOR)
-SONAME=$(LIB)$(SHEXT).$(MAJOR)
-
-SRC=$(wildcard $(SRCDIR)/src/*.cpp)
-OBJ=$(SRC:$(SRCDIR)/src/%.cpp=%.o)
-SOBJ=$(SRC:$(SRCDIR)/src/%.cpp=%.So)
-
-
-%.So: $(SRCDIR)/src/%.cpp
-	$(CXX) -I$(SRCDIR)/include $(CPPFLAGS) $(CXXFLAGS) -fPIC -nostdinc++ -c $< -o $@
-
-%.o: $(SRCDIR)/src/%.cpp
-	$(CXX) -I$(SRCDIR)/include $(CPPFLAGS) $(CXXFLAGS) -nostdinc++ -c $< -o $@
-
-$(STATIC): $(OBJ)
-	$(AR) cr $@ $^
-
-static: $(STATIC)
-
-$(SHLIB): $(SOBJ)
-	$(CXX) -fPIC -nodefaultlibs $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(SONAME) -o $@ $^ $(LIBS)
-
-$(SONAME): $(SHLIB)
-	ln -s $< $@
-
-$(LIB)$(SHEXT): $(SONAME)
-	ln -s $< $@
-
-shared: $(SHLIB) $(SONAME) $(LIB)$(SHEXT)

diff --git a/sys-libs/libcxx/files/libcxx-3.7.0-musl-compatibility.patch b/sys-libs/libcxx/files/libcxx-3.7.0-musl-compatibility.patch
deleted file mode 100644
index 5e223bf..0000000
--- a/sys-libs/libcxx/files/libcxx-3.7.0-musl-compatibility.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-diff -Naur libcxx-3.7.0.src.orig/include/__config libcxx-3.7.0.src/include/__config
---- libcxx-3.7.0.src.orig/include/__config	2015-07-17 00:58:59.000000000 +0000
-+++ libcxx-3.7.0.src/include/__config	2015-09-19 07:56:55.295497669 +0000
-@@ -355,14 +355,10 @@
- #define _LIBCPP_HAS_QUICK_EXIT
- #elif defined(__linux__)
- #include <features.h>
--#if __GLIBC_PREREQ(2, 15)
- #define _LIBCPP_HAS_QUICK_EXIT
--#endif
--#if __GLIBC_PREREQ(2, 17)
- #define _LIBCPP_HAS_C11_FEATURES
- #endif
- #endif
--#endif
- 
- #if (__has_feature(cxx_noexcept))
- #  define _NOEXCEPT noexcept
-diff -Naur libcxx-3.7.0.src.orig/include/locale libcxx-3.7.0.src/include/locale
---- libcxx-3.7.0.src.orig/include/locale	2015-09-19 08:02:51.101497669 +0000
-+++ libcxx-3.7.0.src/include/locale	2015-09-19 07:24:18.635497669 +0000
-@@ -11,6 +11,15 @@
- #ifndef _LIBCPP_LOCALE
- #define _LIBCPP_LOCALE
- 
-+// musl doesn't define _l (with locale) variants of functions, as it only supports UTF-8.
-+// we can simply make macros that will call the non-localated ones if we're using musl, or rather not-using something that has the _l ones.
-+// couldn't find anything glibc #defines when it creates strtoull_l (that it doesn't undefine a few lines later), so let's test against glibc and glibc-likes.
-+// almost all glibc-likes define __GNU_LIBRARY__ for compatibility
-+#ifndef __GNU_LIBRARY__
-+#define strtoull_l(A, B, C, LOC) strtoull(A,B,C)
-+#define strtoll_l(A, B, C, LOC) strtoll(A,B,C)
-+#endif
-+
- /*
-     locale synopsis
- 
-diff -Naur libcxx-3.7.0.src.orig/src/locale.cpp libcxx-3.7.0.src/src/locale.cpp
---- libcxx-3.7.0.src.orig/src/locale.cpp	2015-07-06 15:39:36.000000000 +0000
-+++ libcxx-3.7.0.src/src/locale.cpp	2015-09-19 07:59:59.979497669 +0000
-@@ -1012,11 +1012,10 @@
-     return low;
- }
- 
--#ifdef __EMSCRIPTEN__
-+// we want this either way
- extern "C" const unsigned short ** __ctype_b_loc();
- extern "C" const int ** __ctype_tolower_loc();
- extern "C" const int ** __ctype_toupper_loc();
--#endif
- 
- #ifdef _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
- const ctype<char>::mask*
-@@ -1122,12 +1121,10 @@
- #elif defined(_AIX)
-     return (const unsigned int *)__lc_ctype_ptr->obj->mask;
- #else
--    // Platform not supported: abort so the person doing the port knows what to
--    // fix
--# warning  ctype<char>::classic_table() is not implemented
--    printf("ctype<char>::classic_table() is not implemented\n");
--    abort();
--    return NULL;
-+// not sure any other libc like this exists, but there is no way to differentiate musl as of right now
-+// to be fair, with the change above, this should always work
-+// also, #warning is a gcc extension
-+    return (const unsigned long *)*__ctype_b_loc();
- #endif
- }
- #endif

diff --git a/sys-libs/libcxx/files/prepare_snapshot.sh b/sys-libs/libcxx/files/prepare_snapshot.sh
deleted file mode 100755
index 3de5a97..0000000
--- a/sys-libs/libcxx/files/prepare_snapshot.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-VERSION=$(date +%Y%m%d)
-BASE_VERSION="0.0"
-PACKAGE="libcxx-${BASE_VERSION}_p${VERSION}"
-
-svn co http://llvm.org/svn/llvm-project/libcxx/trunk ${PACKAGE}
-
-find "${PACKAGE}" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
-find "${PACKAGE}" -type d -name '.git' -prune -print0 | xargs -0 rm -rf
-
-tar cJf ${PACKAGE}.tar.xz ${PACKAGE}
-rm -rf ${PACKAGE}/
-
-echo "Tarball: \"${PACKAGE}.tar.xz\""
-
-echo "** all done **"

diff --git a/sys-libs/libcxx/libcxx-3.7.0-r99.ebuild b/sys-libs/libcxx/libcxx-3.7.0-r99.ebuild
deleted file mode 100644
index 317d1c6..0000000
--- a/sys-libs/libcxx/libcxx-3.7.0-r99.ebuild
+++ /dev/null
@@ -1,176 +0,0 @@
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-
-ESVN_REPO_URI="http://llvm.org/svn/llvm-project/libcxx/trunk"
-
-[ "${PV%9999}" != "${PV}" ] && SCM="subversion" || SCM=""
-
-inherit ${SCM} flag-o-matic toolchain-funcs multilib multilib-minimal
-
-DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
-HOMEPAGE="http://libcxx.llvm.org/"
-if [ "${PV%9999}" = "${PV}" ] ; then
-	SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.xz"
-	S="${WORKDIR}/${P}.src"
-else
-	SRC_URI=""
-fi
-
-LICENSE="|| ( UoI-NCSA MIT )"
-SLOT="0"
-if [ "${PV%9999}" = "${PV}" ] ; then
-	KEYWORDS="~amd64 ~mips ~x86"
-else
-	KEYWORDS=""
-fi
-IUSE="elibc_glibc +libcxxrt +static-libs test"
-
-RDEPEND="libcxxrt? ( >=sys-libs/libcxxrt-0.0_p20130725[static-libs?,${MULTILIB_USEDEP}] )
-	!libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] )"
-DEPEND="${RDEPEND}
-	test? ( sys-devel/clang )
-	app-arch/xz-utils"
-
-DOCS=( CREDITS.TXT )
-
-pkg_setup() {
-	if ! use libcxxrt ; then
-		ewarn "You have disabled USE=libcxxrt. This will build ${PN} against"
-		ewarn "libsupc++. Please note that this is not well supported."
-		ewarn "In particular, static linking will not work."
-	fi
-	if [[ $(gcc-version) < 4.7 ]] && [[ $(tc-getCXX) != *clang++* ]] ; then
-		eerror "${PN} needs to be built with clang++ or gcc-4.7 or later."
-		eerror "Please use gcc-config to switch to gcc-4.7 or later version."
-		die
-	fi
-}
-
-src_prepare() {
-	cp -f "${FILESDIR}/Makefile" lib/ || die
-	multilib_copy_sources
-}
-
-src_unpack() {
-	unpack ${A}
-	cd ${S}
-	epatch "${FILESDIR}/${PN}-3.7.0-musl-compatibility.patch"
-}
-
-src_configure() {
-	export LIBS="-lpthread -lrt -lc -lgcc_s"
-	if use libcxxrt ; then
-		append-cppflags -DLIBCXXRT "-I${EPREFIX}/usr/include/libcxxrt/"
-		LIBS="-lcxxrt ${LIBS}"
-		cp "${EPREFIX}/usr/include/libcxxrt/"*.h "${S}/include"
-	else
-		# Very hackish, see $HOMEPAGE
-		# If someone has a clever idea, please share it!
-		local includes="$(echo | ${CHOST}-g++ -Wp,-v -x c++ - -fsyntax-only 2>&1 | grep -C 2 '#include.*<...>' | tail -n 2 | sed -e 's/^ /-I/' | tr '\n' ' ')"
-		local libcxx_gcc_dirs="$(echo | ${CHOST}-g++ -Wp,-v -x c++ - -fsyntax-only 2>&1 | grep -C 2 '#include.*<...>' | tail -n 2 | tr '\n' ' ')"
-		append-cppflags -D__GLIBCXX__ ${includes}
-		LIBS="-lsupc++ ${LIBS}"
-		local libsupcxx_includes="cxxabi.h bits/c++config.h bits/os_defines.h bits/cpu_defines.h bits/cxxabi_tweaks.h bits/cxxabi_forced.h"
-		for i in ${libsupcxx_includes} ; do
-			local found=""
-			[ -d "${S}/include/$(dirname ${i})/" ] || mkdir -p "${S}/include/$(dirname ${i})"
-			for j in ${libcxx_gcc_dirs} ; do
-				if [ -f "${j}/${i}" ] ; then
-					cp "${j}/${i}" "${S}/include/$(dirname ${i})/" || die
-					found=yes
-				fi
-			done
-			[ -n "${found}" ] || die "Header not found: ${i}"
-		done
-	fi
-
-	tc-export AR CC CXX
-
-	append-ldflags "-Wl,-z,defs" # make sure we are not underlinked
-}
-
-multilib_src_compile() {
-	cd "${BUILD_DIR}/lib" || die
-	emake shared
-	use static-libs && emake static
-}
-
-# Tests fail for now, if anybody is able to fix them, help is very welcome.
-multilib_src_test() {
-	cd "${BUILD_DIR}/test"
-	LD_LIBRARY_PATH="${BUILD_DIR}/lib:${LD_LIBRARY_PATH}" \
-		CC="clang++ $(get_abi_CFLAGS) ${CXXFLAGS}" \
-		HEADER_INCLUDE="-I${BUILD_DIR}/include" \
-		SOURCE_LIB="-L${BUILD_DIR}/lib" \
-		LIBS="-lm $(usex libcxxrt -lcxxrt "")" \
-		./testit || die
-	# TODO: fix link against libsupc++
-}
-
-# 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() {
-	if use libcxxrt ; then
-		# Move it first.
-		mv "${ED}/usr/$(get_libdir)/libc++.a" "${ED}/usr/$(get_libdir)/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="${EPREFIX}/usr/$(get_libdir)/libc++_static.a ${EPREFIX}/usr/$(get_libdir)/libcxxrt.a"
-		# On Linux/glibc it does not link without libpthread or libdl. It is
-		# fine on FreeBSD.
-		use elibc_glibc && deps="${deps} ${EPREFIX}/usr/$(get_libdir)/libpthread.a ${EPREFIX}/usr/$(get_libdir)/libdl.a"
-
-		gen_ldscript "${deps}" > "${ED}/usr/$(get_libdir)/libc++.a"
-	fi
-	# TODO: Generate a libc++.a ldscript when building against libsupc++
-}
-
-gen_shared_ldscript() {
-	if use libcxxrt ; then
-		mv "${ED}/usr/$(get_libdir)/libc++.so" "${ED}/usr/$(get_libdir)/libc++_shared.so" || die
-		local deps="${EPREFIX}/usr/$(get_libdir)/libc++_shared.so ${EPREFIX}/usr/$(get_libdir)/libcxxrt.so"
-		gen_ldscript "${deps}" > "${ED}/usr/$(get_libdir)/libc++.so"
-	fi
-	# TODO: Generate the linker script for other confiurations too.
-}
-
-multilib_src_install() {
-	cd "${BUILD_DIR}/lib"
-	if use static-libs ; then
-		dolib.a libc++.a
-		gen_static_ldscript
-	fi
-	dolib.so libc++.so*
-	gen_shared_ldscript
-}
-
-multilib_src_install_all() {
-	einstalldocs
-	insinto /usr/include/c++/v1
-	doins -r include/*
-}
-
-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."
-}

diff --git a/sys-libs/libcxx/metadata.xml b/sys-libs/libcxx/metadata.xml
deleted file mode 100644
index 77398bd..0000000
--- a/sys-libs/libcxx/metadata.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-  <!-- BSD is here because the plan is to have libc++ as the standard C++
-	   library with clang. A llvm herd would make a lot of sense here too -->
-  <maintainer type="person">
-    <email>aballier@gentoo.org</email>
-    <name>Alexis Ballier</name>
-  </maintainer>
-  <maintainer type="project">
-    <email>bsd@gentoo.org</email>
-    <name>BSD Project</name>
-  </maintainer>
-  <use>
-	  <flag name="libcxxrt">Build on top of <pkg>sys-libs/libcxxrt</pkg> instead of gcc's libsupc++ (avoids depending on gcc).</flag>
-  </use>
-</pkgmetadata>


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-03-18 16:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-21  8:45 [gentoo-commits] proj/musl:master commit in: sys-libs/libcxx/, sys-libs/libcxx/files/ Anthony G. Basile
  -- strict thread matches above, loose matches on Subject: below --
2017-03-18 16:57 Aric Belsito

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox