Files @ df976a178b95
Branch filter:

Location: portage-overlay.git/sci-libs/blas-goto2/blas-goto2-1.13.ebuild - annotation

df976a178b95 4.2 KiB application/vnd.gentoo.ebuild Show Source Show as Raw Download as Raw
chain
Bump EAPI to 5 for whole overlay
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
df976a178b95
794dc86717e2
df976a178b95
df976a178b95
df976a178b95
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
794dc86717e2
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/blas-goto/blas-goto-1.26.ebuild,v 1.2 2009/08/18 14:22:19 bicatali Exp $

EAPI="5"

inherit eutils fortran-2 flag-o-matic toolchain-funcs

EAPI="5"

MY_PN="GotoBLAS2"
MY_P="${MY_PN}-${PV}"
DESCRIPTION="Fast implementations of the Basic Linear Algebra Subroutines"
HOMEPAGE="http://www.tacc.utexas.edu/research-development/tacc-projects/"
SRC_URI="${MY_P}.tar.gz"
LICENSE="tacc"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE="int64 threads doc openmp"
RESTRICT="fetch"
DOWNLOAD_URL="${HOMEPAGE}"

RDEPEND="app-admin/eselect-blas
	doc? ( app-doc/blas-docs )
	openmp? ( >=sys-devel/gcc-4.3[openmp] )"
DEPEND="app-admin/eselect-blas
	>=sys-devel/binutils-2.17"

S="${WORKDIR}/${MY_PN}"
FORTRAN="gfortran g77 ifc"

ESELECT_PROF=goto

pkg_nofetch() {
	einfo "Please download ${SRC_URI} from"
	einfo "${DOWNLOAD_URL}"
	einfo "and place it in ${DISTDIR}."
}

src_unpack() {
	unpack ${A}
	cd "${S}"

	# patch to link with m and fortran libs, works with asneeded
	epatch "${FILESDIR}"/${P}-sharedlibs.patch

	# Get and test C (cross-) compiler
	C_COMPILER=$(tc-getCC)	
	if [[ $(tc-getCC) != *gcc ]]; then
		ewarn "Your C compiler is set to $(tc-getCC)."
		ewarn "${PN} needs gcc to inline assembler, others compilers have reported failures."
		die "Incompatible C compiler, need gcc."
	fi
	
	# Get Fortran compiler
	case ${FORTRANC} in
		g77) F_COMPILER=G77;;
		gfortran) F_COMPILER=GFORTRAN;;
		ifc|ifort) F_COMPILER=INTEL;;
		*)
			die "Invalid Fortran compiler: ${FORTRANC}; valid are ${FORTRAN}."
	esac
	
	# Set compilers
	sed -i \
		-e "s:^# \(CC\s*=\).*:\1 ${C_COMPILER}:g" \
		-e "s:^# \(FC\s*=\).*:\1 ${F_COMPILER}:g" \
		Makefile.rule \
		|| die "sed for compilers failed"
	
	# Set Threads
	use threads && THREADS=1 || THREADS=0
	sed -i \
		-e "s:^# \(USE_THREAD\s*=\).*:\1 ${THREADS}:g" \
		Makefile.rule \
		|| die "sed for threads failed"
	
	# Set BINARY
	use amd64 && BINARY=64 || BINARY=32
	sed -i \
		-e "s:^# \(BINARY\s*=\).*:\1 ${BINARY}:g" \
		Makefile.rule \
		|| die "sed for binary failed"

	# Set integer interface
	use int64 && INT64=1 || INT64=0
	use int64 && ESELECT_PROF="${ESELECT_PROF}-int64"
	sed -i \
		-e "s:^# \(INTERFACE64\s*=\).*:\1 ${INT64}:g" \
		Makefile.rule \
		|| die "sed for 64 integers failed"

	# Set OpenMP
	use openmp && OPENMP=1 || OPENMP=0
	sed -i \
		-e "s:^# \(USE_OPENMP\s*=\).*:\1 ${OPENMP}:g" \
		Makefile.rule \
		|| die "sed for 64 binary failed"

}

src_compile() {

	# Make static library
	emake LDFLAGS="$(raw-ldflags)" || die "emake failed"

	# Make shared library
	cd exports
	emake so -j1 || die "emake failed"
}

src_test() {
	cd test
	emake || die "emake test failed"
	make clean
}

src_install() {
	local install_dir=/usr/$(get_libdir)/blas/goto
	dodir ${install_dir}

	# dolib.so doesn't support our alternate locations
	exeinto ${install_dir}
	doexe libgoto2_*.so || die "installing shared lib failed"
	dosym libgoto2_*.so ${install_dir}/libgoto2.so
	dosym libgoto2_*.so ${install_dir}/libgoto2.so.0
	dosym libgoto2_*.so ${install_dir}/libgoto2.so.0.0.0

	# dolib.a doesn't support our alternate locations
	insinto ${install_dir}
	doins libgoto2_*.a || die "installing static lib failed"
	dosym libgoto2_*.a ${install_dir}/libgoto2.a

	dodoc 01Readme.txt 03FAQ.txt || die

	cp "${FILESDIR}"/blas.pc.in blas.pc
	local extlibs=""
	use threads && extlibs="${extlibs} -lpthread"
	sed -i \
		-e "s/@LIBDIR@/$(get_libdir)/" \
		-e "s/@PV@/${PV}/" \
		-e "s/@EXTLIBS@/${extlibs}/" \
		blas.pc || die "sed blas.pc failed"
	insinto /usr/$(get_libdir)/blas/goto
	doins blas.pc
	eselect blas add $(get_libdir) "${FILESDIR}"/eselect.blas.goto ${ESELECT_PROF}
}

pkg_postinst() {
	local p=blas
	local current_lib=$(eselect ${p} show | cut -d' ' -f2)
	if [[ ${current_lib} == ${ESELECT_PROF} || -z ${current_lib} ]]; then
		# work around eselect bug #189942
		local configfile="${ROOT}"/etc/env.d/${p}/$(get_libdir)/config
		[[ -e ${configfile} ]] && rm -f ${configfile}
		eselect ${p} set ${ESELECT_PROF}
		elog "${p} has been eselected to ${ESELECT_PROF}"
	else
		elog "Current eselected ${p} is ${current_lib}"
		elog "To use ${p} ${ESELECT_PROF} implementation, you have to issue (as root):"
		elog "\t eselect ${p} set ${ESELECT_PROF}"
	fi
}