| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| |
| EGIT_REPO_URI="git://github.com/pathscale/libcxxrt.git" |
| |
| [ "${PV%9999}" != "${PV}" ] && SCM="git-2" || SCM="" |
| |
| inherit flag-o-matic toolchain-funcs portability ${SCM} multilib-minimal |
| |
| DESCRIPTION="C++ Runtime from PathScale, FreeBSD and NetBSD" |
| HOMEPAGE="https://github.com/pathscale/libcxxrt http://www.pathscale.com/node/265" |
| if [ "${PV%9999}" = "${PV}" ] ; then |
| SRC_URI="mirror://gentoo/${P}.tar.xz" |
| DEPEND="app-arch/xz-utils" |
| else |
| SRC_URI="" |
| fi |
| |
| LICENSE="BSD-2" |
| SLOT="0" |
| if [ "${PV%9999}" = "${PV}" ] ; then |
| KEYWORDS="~amd64 ~mips ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux" |
| else |
| KEYWORDS="" |
| fi |
| IUSE="libunwind static-libs" |
| |
| RDEPEND="libunwind? ( >=sys-libs/libunwind-1.0.1-r1[static-libs?] )" |
| DEPEND="${RDEPEND} |
| ${DEPEND}" |
| |
| DOCS=( AUTHORS COPYRIGHT README ) |
| |
| src_prepare() { |
| cp "${FILESDIR}/Makefile" src/ || die |
| cp "${FILESDIR}/Makefile.test" test/Makefile || die |
| multilib_copy_sources |
| } |
| |
| multilib_src_compile() { |
| # Notes: we build -nodefaultlibs to avoid linking to gcc libs. |
| # libcxxrt needs: dladdr (dlopen_lib), libunwind or libgcc_s and the libc. |
| tc-export CC CXX AR |
| append-ldflags "-Wl,-z,defs" # make sure we are not underlinked |
| cd "${BUILD_DIR}/src" |
| LIBS="$(dlopen_lib) -l$(usex libunwind unwind gcc_s) -lc" emake shared |
| use static-libs && emake static |
| } |
| |
| multilib_src_test() { |
| cd "${BUILD_DIR}/test" |
| LD_LIBRARY_PATH="${BUILD_DIR}/src:${LD_LIBRARY_PATH}" \ |
| LIBS="-L${BUILD_DIR}/src -lcxxrt -l$(usex libunwind unwind gcc_s) -lc" \ |
| emake check |
| } |
| |
| multilib_src_install() { |
| # TODO: See README. Maybe hide it in a subdir and let only libcxx know about |
| # it. FreeBSD head installs it in /lib |
| dolib.so src/${PN}.so* |
| use static-libs && dolib.a src/${PN}.a |
| } |
| |
| multilib_src_install_all() { |
| einstalldocs |
| insinto /usr/include/libcxxrt/ |
| doins src/cxxabi.h src/unwind*.h |
| } |