Files
@ dc53e5004f02
Branch filter:
Location: portage-overlay.git/sci-libs/lapack-atlas/lapack-atlas-3.8.0.ebuild
dc53e5004f02
5.8 KiB
application/vnd.gentoo.ebuild
update net-misc/pyload to 0.4.9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | # Copyright 1999-2010 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.8.0.ebuild,v 1.17 2010/12/17 08:10:35 jlec Exp $
inherit eutils flag-o-matic toolchain-funcs autotools versionator
MY_PN="${PN/lapack-/}"
PATCH_V="3.7.39"
L_PN="lapack"
L_PV="3.1.1"
BlasRelease=$(get_version_component_range 1-3)
DESCRIPTION="F77 and C LAPACK implementations using available ATLAS routines"
LICENSE="BSD"
HOMEPAGE="http://math-atlas.sourceforge.net/"
SRC_URI1="mirror://sourceforge/math-atlas/${MY_PN}${PV}.tar.bz2"
SRC_URI2="http://www.netlib.org/${L_PN}/${L_PN}-lite-${L_PV}.tgz"
SRC_URI="${SRC_URI1} ${SRC_URI2}
mirror://gentoo/${MY_PN}-${PATCH_V}-shared-libs.patch.bz2
mirror://gentoo/${L_PN}-reference-${L_PV}-autotools.patch.bz2"
SLOT="0"
IUSE="doc"
KEYWORDS="alpha amd64 ppc ppc64 sparc x86"
CDEPEND="virtual/blas
virtual/cblas
app-admin/eselect-lapack
~sci-libs/blas-atlas-${BlasRelease}"
DEPEND="${CDEPEND}
dev-util/pkgconfig
>=sys-devel/libtool-1.5"
RDEPEND="${CDEPEND}
doc? ( app-doc/lapack-docs )"
S="${WORKDIR}/ATLAS"
S_LAPACK="${WORKDIR}/${L_PN}-lite-${L_PV}"
BLD_DIR="${S}/gentoo-build"
RPATH="${DESTTREE}/$(get_libdir)/${L_PN}/${MY_PN}"
src_unpack() {
unpack ${A}
cd "${S}"
epatch "${DISTDIR}"/${MY_PN}-${PATCH_V}-shared-libs.patch.bz2
epatch "${FILESDIR}"/${MY_PN}-asm-gentoo.patch
# make sure the compile picks up the proper includes
sed -i \
-e "s|INCLUDES.*=|INCLUDES = -I/usr/include/atlas/|" \
"${S}"/CONFIG/src/SpewMakeInc.c \
|| die "failed to append proper includes"
BLD_DIR="${S}"/gentoo-build
mkdir "${BLD_DIR}" || die "failed to generate build directory"
cd "${BLD_DIR}"
cp "${FILESDIR}"/war . && chmod a+x war || die "failed to install war"
# force proper 32/64bit libs
local archselect
if use amd64 || use ppc64; then
archselect="-b 64"
elif use alpha; then
archselect=""
else
archselect="-b 32"
fi
# Remove -m64 on alpha, since the compiler doesn't support it
use alpha && sed -i -e 's/-m64//g' "${S}"/CONFIG/src/probe_comp.c
../configure \
--cc="$(tc-getCC)" \
--cflags="${CFLAGS}" \
--prefix="${D}/${DESTTREE}" \
--libdir="${D}/${DESTTREE}"/$(get_libdir)/atlas \
--incdir="${D}/${DESTTREE}"/include \
-C ac "$(tc-getCC)" -F ac "${CFLAGS}" \
-C if $(tc-getFC) -F if "${FFLAGS:--O2}" \
-Ss pmake "\$(MAKE) ${MAKEOPTS}" \
-Si cputhrchk 0 ${archselect} \
|| die "configure failed"
cd "${S_LAPACK}"
epatch "${WORKDIR}"/${L_PN}-reference-${L_PV}-autotools.patch
epatch "${FILESDIR}"/${L_PN}-reference-${L_PV}-test-fix.patch
eautoreconf
# set up the testing routines
sed -e "s:g77:$(tc-getFC):" \
-e "s:-funroll-all-loops -O3:${FFLAGS} $(pkg-config --cflags blas cblas):" \
-e "s:LOADOPTS =:LOADOPTS = ${LDFLAGS} $(pkg-config --cflags blas cblas):" \
-e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas cblas):" \
-e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.so -Wl,-rpath,${S_LAPACK}/SRC/.libs:" \
-e "s:EXT_ETIME$:INT_CPU_TIME:" \
make.inc.example > make.inc \
|| die "Failed to set up make.inc"
}
src_compile() {
# build atlas' part of lapack
cd "${BLD_DIR}"
for d in src/lapack interfaces/lapack/C/src interfaces/lapack/F77/src; do
cd "${BLD_DIR}"/${d}
make lib || die "Failed to make lib in ${d}"
done
# build rest of lapack
S_LAPACK="${WORKDIR}"/${L_PN}-lite-${L_PV}
cd "${S_LAPACK}"
econf || die "Failed to configure reference lapack lib"
emake || die "Failed to make reference lapack lib"
cd "${S_LAPACK}"/SRC
einfo "Copying liblapack.a/*.o to ${S_LAPACK}/SRC"
cp -sf "${BLD_DIR}"/gentoo/liblapack.a/*.o .
einfo "Copying liblapack.a/*.lo to ${S_LAPACK}/SRC"
cp -sf "${BLD_DIR}"/gentoo/liblapack.a/*.lo .
einfo "Copying liblapack.a/.libs/*.o to ${S_LAPACK}/SRC"
cp -sf "${BLD_DIR}"/gentoo/liblapack.a/.libs/*.o .libs/
RPATH="${DESTTREE}"/$(get_libdir)/${L_PN}/${MY_PN}
local flibs
[[ $(tc-getFC) =~ gfortran ]] && flibs=-lgfortran
[[ $(tc-getFC) =~ g77 ]] && flibs=-lg2c
../libtool --mode=link --tag=F77 $(tc-getFC) \
$(pkg-config --libs blas cblas) -latlas ${flibs} \
-o liblapack.la *.lo -rpath "${RPATH}" \
|| die "Failed to create liblapack.la"
# making pkg-config file
sed -e "s:@LIBDIR@:$(get_libdir):" \
-e "s:@PV@:${PV}:" \
-e "s:@EXTLIBS@:-lm ${flibs}:g" \
"${FILESDIR}"/lapack.pc.in > "${S}"/lapack.pc \
|| die "sed lapack.pc failed"
}
src_install () {
dodir "${RPATH}"
cd "${S_LAPACK}"/SRC
../libtool --mode=install cp liblapack.la "${D}/${RPATH}" \
|| die "Failed to install lapack-atlas library"
ESELECT_PROF=atlas
eselect lapack add $(get_libdir) "${FILESDIR}"/eselect.lapack.atlas ${ESELECT_PROF}
insinto /usr/include/atlas
doins "${S}"/include/clapack.h || die "Failed to install clapack.h"
dosym atlas/clapack.h /usr/include/clapack.h
cd "${S}"
dodoc README doc/AtlasCredits.txt doc/ChangeLog \
|| die "Failed to install docs"
insinto /usr/$(get_libdir)/lapack/atlas
doins "${S}"/lapack.pc || die "Failed to install lapack.pc"
}
src_test() {
cd "${S_LAPACK}"/TESTING/MATGEN
emake || die "Failed to create tmglib.a"
cd ..
emake || die "lapack-reference tests failed"
}
pkg_postinst() {
local current_lib=$(eselect lapack show | cut -d' ' -f2)
# this snippet works around the eselect bug #189942 and makes
# sure that users upgrading from a previous lapack-atlas
# version pick up the new pkg-config files
if [[ ${current_lib} == ${ESELECT_PROF} || -z ${current_lib} ]]; then
local configfile="${ROOT}"/etc/env.d/lapack/$(get_libdir)/config
[[ -e ${configfile} ]] && rm -f ${configfile}
eselect lapack set ${ESELECT_PROF}
elog "lapack has been eselected to ${ESELECT_PROF}"
else
elog "Current eselected lapack is ${current_lib}"
elog "To use blas ${ESELECT_PROF} implementation, you have to issue (as root):"
elog "\t eselect lapack set ${ESELECT_PROF}"
fi
}
|