# Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/boost-1.31.0.ebuild,v 1.12 2005/08/06 04:02:35 ka0ttic Exp $ MyPV=${PV//./_} DESCRIPTION="Boost provides free peer-reviewed portable C++ source libraries." HOMEPAGE="http://www.boost.org" #SRC_URI="http://easynews.dl.sourceforge.net/sourceforge/boost/boost-${PV}.tar.bz2" SRC_URI="mirror://sourceforge/${PN}/${PN}_${MyPV}.tar.bz2" S=${WORKDIR}/${PN}_${MyPV} LICENSE="freedist" KEYWORDS="amd64 ~mips ppc ppc64 sparc x86" SLOT="1" IUSE="icc" # This would be a good place for someone to figure out how to get # boost to build nicely with icc, as it's documented to be doable. DEPEND="virtual/libc" RDEPEND=">=dev-util/yacc-1.9.1-r1 >=dev-lang/python-2.2.1 icc? ( >=dev-lang/icc-7.1 )" src_compile() { local PYTHON_VERSION=$(/usr/bin/python -V 2>&1 | sed 's/Python \([0-9][0-9]*\.[0-9][0-9]*\)\..*/\1/') local BOOST_TOOLSET local arch if use icc ; then BOOST_TOOLSET="intel-linux" else BOOST_TOOLSET="gcc" fi # Build bjam, a jam variant, which is used instead of make cd ${S}/tools/build/jam_src ./build.sh ${BOOST_TOOLSET} || die "Failed to build bjam" cd ${S} if [ "${ARCH}" == "amd64" ]; then arch= else arch=${ARCH} fi if [ "${ARCH}" == "ppc64" ]; then pushd . cd tools/build/jam_src ln -sf bin.linuxppc bin.linuxppc64 popd fi if use icc ; then ./tools/build/jam_src/bin.linux${arch}/bjam -j2 \ -sBOOST_ROOT=${S} \ -sPYTHON_ROOT=/usr \ -sPYTHON_VERSION=${PYTHON_VERSION} \ -sTOOLS=${BOOST_TOOLSET} \ -sINTEL_LINUX_VERSION="70" || die "Failed to build boost libraries." else ./tools/build/jam_src/bin.linux${arch}/bjam ${MAKEOPTS} \ -sBOOST_ROOT=${S} \ -sPYTHON_ROOT=/usr \ -sPYTHON_VERSION=${PYTHON_VERSION} \ -sTOOLS=${BOOST_TOOLSET} einfo "Don't worry if there are a few (probably 6) failures above." einfo "Some targets merely need to be combined. Here goes:" ./tools/build/jam_src/bin.linux${arch}/bjam \ -sBOOST_ROOT=${S} \ -sPYTHON_ROOT=/usr \ -sPYTHON_VERSION=${PYTHON_VERSION} \ -sTOOLS=${BOOST_TOOLSET} || die "Failed to build boost libraries." fi } src_install () { # Unfortunately boost doesn't provide a standard way to # install itself. So it's done "manually" here. # install libraries find bin/boost/libs -type f -name \*.a -exec dolib.a {} \; find bin/boost/libs -type f -name "*.so*" -exec dolib.so {} \; #find bin/boost/libs -type l -name "*.so*" -exec dosym {} /usr/lib \; # install source/header files find boost -type f \ -exec install -D -m0644 {} ${D}/usr/include/{} \; # install build tools cd tools/build #do_whatever is too limiting here, need to move bunch of different stuff recursively dodir /usr/share/${PN} cp -a b* c* index.html v1/ v2/ ${D}/usr/share/${PN} cd ${S} # install documentation dodoc README dohtml index.htm google_logo_40wht.gif c++boost.gif boost.css dohtml -A pdf -r more dohtml -r people dohtml -r doc find libs -type f -not -regex '^libs/[^/]*/build/.*' \ -and -not -regex '^libs/.*/test[^/]?/.*' \ -and -not -regex '^libs/.*/bench[^/]?/.*' \ -and -not -regex '^libs/[^/]*/tools/.*' \ -and -not -name \*.bat \ -and -not -name Jamfile\* \ -and -not -regex '^libs/[^/]*/src/.*' \ -and -not -iname makefile \ -and -not -name \*.mak \ -and -not -name .\* \ -and -not -name \*.dsw \ -and -not -name \*.dsp \ -exec \ install -D -m0644 \{\} ${D}/usr/share/doc/${P}/html/\{\} \; #create symlinks for the libs LocalPV="1_31" cd ${D}/usr/lib for fn in *.so*; do baseName=${fn%%so*} #.so symlinks ln -s $fn ${baseName}so #remove version from .so's and .a's ln -s ${baseName}so ${baseName/-$LocalPV/}so ln -s ${baseName}a ${baseName/-$LocalPV/}a done #and finally set "default" links to -gcc-mt versions for fn in `ls -1 *.so|cut -d- -f1|sort|uniq`; do ln -s $fn-gcc-mt.so $fn.so ln -s $fn-gcc-mt.a $fn.a done }