# Copyright 1999-2003 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils 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.tgz" SRC_URI="${SRC_URI1} ${SRC_URI2}" LICENSE="BSD" SLOT="0" KEYWORDS="~x86" IUSE="ifc doc" DEPEND="virtual/glibc sys-devel/libtool app-sci/atlas-blas app-sci/lapack-config ifc? ( dev-lang/ifc )" RDEPEND="virtual/glibc virtual/blas ifc? ( dev-lang/ifc )" # Need Intel runtime libraries PROVIDE="virtual/lapack" S=${WORKDIR}/ATLAS S_LAPACK=${WORKDIR}/LAPACK ifc_info() { if [ -z "${IFCFLAGS}" ] then einfo einfo "You may want to set some ifc optimization flags by running this" einfo "ebuild as, for example, \`IFCFLAGS=\"-O3 -tpp7 -xW\" emerge blas\`" einfo "(Pentium 4 exclusive optimizations)." einfo einfo "ifc defaults to -O2, with code tuned for Pentium 4, but that" einfo "will run on any processor." einfo einfo "Beware that ifc's -O3 is very aggressive, sometimes resulting in" einfo "significantly worse performance." einfo fi } src_unpack() { use ifc && ifc_info unpack ${A} cd ${WORKDIR} epatch ${FILESDIR}/atlas-gentoo.patch epatch ${FILESDIR}/lapack-20020531-20021004.patch.bz2 epatch ${FILESDIR}/lapack-gentoo.patch cp ${FILESDIR}/war ${S} } atlas_fail() { eerror eerror "ATLAS auto-config failed." eerror "Please run 'interactive=1 emerge atlas-blas' to configure manually." eerror die "ATLAS auto-config failed." } src_compile() { TOP_PATH="${DESTTREE}/lib/lapack" # Path where libraries will be installed: RPATH="${TOP_PATH}/atlas" GCC="gcc" cd ${S} if [ -n "${interactive}" ] then echo "${interactive}" make config CC="${GCC} -DUSE_LIBTOOL -DINTERACTIVE" || die else # Use ATLAS defaults for all questions: (echo | make config CC="${GCC} -DUSE_LIBTOOL") || atlas_fail fi TMPSTR=$(ls Make.Linux*) ATLAS_ARCH=${TMPSTR#'Make.'} CC="libtool --mode=compile ${GCC} -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 g77" || die cd ${S_LAPACK} if [ "`use ifc`" ] then FC="ifc" FFLAGS="${IFCFLAGS}" NOOPT="-O0" # Do NOT change this. It is applied to two files with # routines to determine machine constants. else FC="g77" FFLAGS="${CFLAGS}" NOOPT="" fi make lapacklib FORTRAN="libtool --mode=compile ${FC}" OPTS="${FFLAGS}" \ NOOPT="${NOOPT}" || die cd ${S_LAPACK}/SRC cp -sf ${S}/gentoo/liblapack.a/*.o . cp -sf ${S}/gentoo/liblapack.a/*.lo . if [ "`use ifc`" ] then ifc -shared ${FFLAGS} *.lo -Wl,-soname -Wl,liblapack.so.0 \ -o liblapack.so.0.0.0 -lblas -lcblas -latlas ar cru liblapack.a *.o ranlib liblapack.a else libtool --mode=link ${GCC} -o liblapack.la *.lo \ -rpath ${RPATH} -lblas -lcblas -latlas -lg2c fi } src_install () { dodir ${RPATH} cd ${S_LAPACK}/SRC if [ "`use ifc`" ] 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 install -s liblapack.la ${D}/${RPATH} fi insinto ${TOP_PATH} doins ${FILESDIR}/f77-ATLAS insinto /usr/include/atlas cd ${S}/include doins 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 }