# Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-libs/newlib/newlib-9999.ebuild,v 1.2 2014/01/02 12:57:47 vapier Exp $ EAPI="4" inherit flag-o-matic toolchain-funcs eutils if [[ ${PV} == "9999" ]] ; then EGIT_REPO_URI="git://sourceware.org/git/newlib.git" inherit git-r3 else SRC_URI="ftp://sourceware.org/pub/newlib/${P}.tar.gz" KEYWORDS="-* ~arm ~hppa ~m68k ~mips ~ppc ~ppc64 ~sh ~sparc ~x86" fi export CBUILD=${CBUILD:-${CHOST}} export CTARGET=${CTARGET:-${CHOST}} if [[ ${CTARGET} == ${CHOST} ]] ; then if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then export CTARGET=${CATEGORY/cross-} fi fi DESCRIPTION="Newlib is a C library intended for use on embedded systems" HOMEPAGE="http://sourceware.org/newlib/" LICENSE="NEWLIB LIBGLOSS GPL-2" SLOT="0" IUSE="nls threads unicode crosscompile_opts_headers-only newlib-nano" RESTRICT="strip" NEWLIBBUILD="${WORKDIR}/build" NEWLIBNANOBUILD="${WORKDIR}/build.nano" NEWLIBNANOTMPINSTALL="${WORKDIR}/nano_tmp_install" pkg_setup() { # Reject newlib-on-glibc type installs if [[ ${CTARGET} == ${CHOST} ]] ; then case ${CHOST} in *-newlib|*-elf) ;; *) die "Use sys-devel/crossdev to build a newlib toolchain" ;; esac fi } src_prepare() { epatch_user } src_configure() { # we should fix this ... unset LDFLAGS CHOST=${CTARGET} strip-unsupported-flags local myconf="" [[ ${CTARGET} == "spu" ]] \ && myconf="${myconf} --disable-newlib-multithread" \ || myconf="${myconf} $(use_enable threads newlib-multithread)" mkdir -p "${NEWLIBBUILD}" cd "${NEWLIBBUILD}" ECONF_SOURCE=${S} \ econf \ $(use_enable unicode newlib-mb) \ $(use_enable nls) \ ${myconf} # Build newlib-nano beside newlib (original) # Based on https://tracker.debian.org/media/packages/n/newlib/rules-2.1.0%2Bgit20140818.1a8323b-2 if use newlib-nano ; then mkdir -p "${NEWLIBNANOBUILD}" cd "${NEWLIBNANOBUILD}" ECONF_SOURCE=${S} \ econf \ $(use_enable unicode newlib-mb) \ $(use_enable nls) \ --enable-newlib-reent-small \ --disable-newlib-fvwrite-in-streamio \ --disable-newlib-fseek-optimization \ --disable-newlib-wide-orient \ --enable-newlib-nano-malloc \ --disable-newlib-unbuf-stream-opt \ --enable-lite-exit \ --enable-newlib-global-atexit \ --enable-newlib-nano-formatted-io \ ${myconf} fi } src_compile() { emake -C "${NEWLIBBUILD}" use newlib-nano && emake -C "${NEWLIBNANOBUILD}" } src_install() { cd "${NEWLIBBUILD}" emake -j1 DESTDIR="${D}" install # env -uRESTRICT CHOST=${CTARGET} prepallstrip if use newlib-nano ; then emake -j1 DESTDIR="${NEWLIBNANOTMPINSTALL}" install # Rename nano lib* files to lib*_nano and move to the real ${D} # Avoid dependency on perl-rename by using a for loop instead. local nanolibfiles="" nanolibfiles=$(find "${NEWLIBNANOTMPINSTALL}" -regex ".*/lib\(c\|g\|rdimon\)\.a" -print) for f in ${nanolibfiles}; do local l="${f##${NEWLIBNANOTMPINSTALL}}" mv "${f}" "${D}/${l%%\.a}_nano.a" done fi # minor hack to keep things clean rm -fR "${D}"/usr/share/info rm -fR "${D}"/usr/info }