Files @ dc53e5004f02
Branch filter:

Location: portage-overlay.git/sci-libs/lapack-atlas/lapack-atlas-3.8.0.ebuild - annotation

dc53e5004f02 5.8 KiB application/vnd.gentoo.ebuild Show Source Show as Raw Download as Raw
chain
update net-misc/pyload to 0.4.9
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
3dad46db74d4
# 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
}