# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sci-libs/lapack-atlas/lapack-atlas-3.6.0.ebuild,v 1.16 2008/04/06 11:27:10 bicatali Exp $ inherit eutils flag-o-matic toolchain-funcs DESCRIPTION="Full LAPACK implementation using available ATLAS routines" HOMEPAGE="http://math-atlas.sourceforge.net/" MY_PN=${PN/lapack-/} SRC_URI1="mirror://sourceforge/math-atlas/${MY_PN}${PV}.tar.bz2" SRC_URI2="http://www.netlib.org/lapack/lapack-3.0.tgz" SRC_URI="${SRC_URI1} ${SRC_URI2} mirror://gentoo/lapack-20020531-20021004.patch.bz2 mirror://gentoo/lapack-gentoo.patch mirror://gentoo/${MY_PN}3.6.0-shared-libs.patch.bz2" LICENSE="BSD" SLOT="0" KEYWORDS="~alpha amd64 ppc ppc64 sparc x86" IUSE="doc" DEPEND="virtual/libc >=sys-devel/libtool-1.5 ~sci-libs/blas-atlas-3.6.0 sci-libs/lapack-config" RDEPEND="virtual/libc virtual/blas" S=${WORKDIR}/ATLAS S_LAPACK=${WORKDIR}/LAPACK TOP_PATH="${DESTTREE}/lib/lapack" # Path where libraries will be installed: RPATH="${TOP_PATH}/atlas" FORTRAN="ifc g77" src_unpack() { unpack ${A} cd "${WORKDIR}" epatch "${FILESDIR}"/unbuffered.patch epatch "${DISTDIR}"/atlas3.6.0-shared-libs.patch.bz2 epatch "${DISTDIR}"/lapack-20020531-20021004.patch.bz2 epatch "${DISTDIR}"/lapack-gentoo.patch cp "${FILESDIR}"/war "${S}" chmod a+x "${S}"/war } atlas_fail() { eerror eerror "ATLAS auto-config failed." eerror "Please run 'interactive=1 emerge lapack-atlas' to configure" eerror "manually." eerror die "ATLAS auto-config failed." } src_compile() { if [ -n "${interactive}" ] then echo "${interactive}" make config CC="$(tc-getCC) -DUSE_LIBTOOL -DINTERACTIVE" || die else # Use ATLAS defaults for all questions: (echo | make config CC="$(tc-getCC) -DUSE_LIBTOOL") || atlas_fail fi TMPSTR=$(ls Make.Linux*) ATLAS_ARCH=${TMPSTR#'Make.'} CC="libtool --mode=compile --tag=CC $(tc-getCC) -I/usr/include/atlas" cd "${S}"/src/lapack/${ATLAS_ARCH} make lib CC="${CC}" || die cd "${S}"/interfaces/lapack/C/src/${ATLAS_ARCH} make lib CC="${CC}" || die cd "${S}"/interfaces/lapack/F77/src/${ATLAS_ARCH} make lib CC="${CC}" F77="libtool --mode=compile --tag=F77 g77" || die cd ${S_LAPACK} if [[ ${FORTRANC} = if* ]] then FC="${FORTRANC}" NOOPT="-O0" # Do NOT change this. It is applied to two files with # routines to determine machine constants. else FC="g77" # g77 hates opts, esp. machine-specific ALLOWED_FLAGS="-O -O1 -O2 -fstack-protector -fno-unit-at-a-time \ -pipe -g -Wall" strip-flags FFLAGS="${CFLAGS}" NOOPT="" fi make lapacklib FORTRAN="libtool --mode=compile --tag=F77 ${FC}" OPTS="${FFLAGS}" \ NOOPT="${NOOPT}" || die cd ${S_LAPACK}/SRC cp -sf "${S}"/gentoo/liblapack.a/*.o . cp -sf "${S}"/gentoo/liblapack.a/*.lo . cp -sf "${S}"/gentoo/liblapack.a/.libs/*.o .libs/ if [[ ${FORTRAN} = if* ]] then ${FORTRANC} ${FFLAGS} -shared .libs/*.o -Wl,-soname -Wl,liblapack.so.0 \ -o liblapack.so.0.0.0 -lblas -lcblas -latlas \ -L$(gcc-config -L) -lg2c ar cru liblapack.a *.o ranlib liblapack.a else libtool --mode=link --tag=CC $(tc-getCC) -o liblapack.la *.lo \ -rpath ${RPATH} -lblas -lcblas -latlas -lg2c fi } src_install () { dodir ${RPATH} cd ${S_LAPACK}/SRC if [[ ${FORTRANC} = if* ]] then strip --strip-unneeded liblapack.so.0.0.0 strip --strip-debug liblapack.a exeinto ${RPATH} doexe liblapack.so.0.0.0 dosym liblapack.so.0.0.0 ${RPATH}/liblapack.so.0 dosym liblapack.so.0.0.0 ${RPATH}/liblapack.so insinto ${RPATH} doins liblapack.a else libtool --mode=install install -s liblapack.la "${D}"/${RPATH} fi insinto ${TOP_PATH} doins "${FILESDIR}"/f77-ATLAS insinto /usr/include/atlas cd "${S}"/include doins clapack.h || die "failed to install clapack.h" cd "${S}" dodoc README cd "${S}"/doc dodoc AtlasCredits.txt ChangeLog if use doc; then dodoc lapackqref.ps fi } pkg_postinst() { /usr/bin/lapack-config ATLAS einfo einfo "To link with ATLAS LAPACK from C or Fortran, simply use:" einfo einfo "-llapack" einfo einfo "C users: your header is /usr/include/atlas/clapack.h" einfo }