aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Arteaga <andyspiros@gmail.com>2012-02-21 02:05:16 +0100
committerAndrea Arteaga <andyspiros@gmail.com>2012-02-21 02:05:16 +0100
commit070c5081ca2fe5ab758e0d6c5623999fb6b2cc1c (patch)
tree27460d3bc5a339ad36ac39b260bff5cd26ee6cbb /sci-libs/mpiblacs/mpiblacs-1.1-r1.ebuild
parentmpich2: add link to upstream report (diff)
downloadsci-070c5081ca2fe5ab758e0d6c5623999fb6b2cc1c.tar.gz
sci-070c5081ca2fe5ab758e0d6c5623999fb6b2cc1c.tar.bz2
sci-070c5081ca2fe5ab758e0d6c5623999fb6b2cc1c.zip
[sci-libs/mpiblacs] Install blacs headers.
Diffstat (limited to 'sci-libs/mpiblacs/mpiblacs-1.1-r1.ebuild')
-rw-r--r--sci-libs/mpiblacs/mpiblacs-1.1-r1.ebuild117
1 files changed, 117 insertions, 0 deletions
diff --git a/sci-libs/mpiblacs/mpiblacs-1.1-r1.ebuild b/sci-libs/mpiblacs/mpiblacs-1.1-r1.ebuild
new file mode 100644
index 000000000..caa8acece
--- /dev/null
+++ b/sci-libs/mpiblacs/mpiblacs-1.1-r1.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=4
+inherit eutils toolchain-funcs versionator alternatives-2
+
+DESCRIPTION="Basic Linear Algebra Communication Subprograms with MPI"
+HOMEPAGE="http://www.netlib.org/blacs/"
+SRC_URI="${HOMEPAGE}/${PN}.tgz
+ ${HOMEPAGE}/${PN}-patch03.tgz
+ test? ( ${HOMEPAGE}/blacstester.tgz )"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="static-libs test"
+
+RDEPEND="virtual/mpi[fortran]
+ virtual/blas"
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig"
+
+S="${WORKDIR}/BLACS"
+
+make_shared_lib() {
+ local libstatic=${1}
+ local soname=$(basename "${1%.a}").so.$(get_major_version)
+ shift
+ einfo "Making ${soname}"
+ ${LINK:-$(tc-getCC)} ${LDFLAGS} \
+ -shared -Wl,-soname="${soname}" \
+ -Wl,--whole-archive "${libstatic}" -Wl,--no-whole-archive \
+ "$@" -o $(dirname "${libstatic}")/"${soname}" || die "${soname} failed"
+ ln -s "${soname}" $(dirname "${libstatic}")/"${soname%.*}"
+}
+
+src_prepare() {
+ find . -name Makefile -exec sed -i -e 's:make:$(MAKE):g' '{}' \;
+
+ sed -e "s:\(SHELL\s*=\).*:\1$(type -P sh):" \
+ -e "s:\(BTOPdir\s*=\).*:\1${S}:" \
+ -e "s:\(BLACSFINIT\s*=\).*:\1\$(BLACSdir)/lib${PN}F77init.a:" \
+ -e "s:\(BLACSCINIT\s*=\).*:\1\$(BLACSdir)/lib${PN}Cinit.a:" \
+ -e "s:\(BLACSLIB\s*=\).*:\1\$(BLACSdir)/lib${PN}.a:" \
+ -e "s:\(MPIINCdir\s*=\).*:\1${EPREFIX}/usr/include:" \
+ -e "s:\(MPILIB\s*=\).*:\1:" \
+ -e '/SYSINC.*=/d' \
+ -e 's:\(INTFACE\s*=\).*:\1-DAdd_:' \
+ -e 's:\(TRANSCOMM\s*=\).*:\1-DUseMpi2:' \
+ -e "s:\(F77\s*=\).*:\1mpif77:" \
+ -e "s:\(F77NO_OPTFLAGS\s*=\).*:\1-O0:" \
+ -e "s:\(F77FLAGS\s*=\).*:\1${FFLAGS}:" \
+ -e "s:\(F77LOADFLAGS\s*=\).*:\1${LDFLAGS}:" \
+ -e "s:\(CC\s*=\).*:\1mpicc:" \
+ -e "s:\(CCFLAGS\s*=\).*:\1${CFLAGS}:" \
+ -e "s:\(CCLOADFLAGS\s*=\).*:\1${LDFLAGS}:" \
+ -e "s:\(ARCH\s*=\).*:\1$(tc-getAR):" \
+ -e "s:\(RANLIB\s*=\).*:\1$(tc-getRANLIB):" \
+ BMAKES/Bmake.MPI-LINUX > Bmake.inc || die
+}
+
+src_compile() {
+ emake \
+ F77NO_OPTFLAGS="-O0 -fPIC" \
+ F77FLAGS="${FFLAGS} -fPIC" \
+ CCFLAGS="${CFLAGS} -fPIC" \
+ mpi
+ cd LIB
+ LINK=mpif77 make_shared_lib lib${PN}.a
+ LINK=mpicc make_shared_lib lib${PN}Cinit.a -L. -l${PN}
+ LINK=mpif77 make_shared_lib lib${PN}F77init.a -L. -l${PN}
+ cd "${S}"
+ if use static-libs; then
+ emake clean -C SRC/MPI && rm -f LIB/*.a
+ emake mpi
+ fi
+}
+
+src_test() {
+ emake tester
+ cd TESTING/EXE
+ local x
+ # do not die because we are expecting an abort
+ for x in ./x*; do
+ mpirun -np 4 $x 2>&1 | tee $x.log
+ grep -q "\*\*\*" $x.log && die "$x failed"
+ done
+}
+
+src_install() {
+ pushd LIB
+ dolib.so lib*.so*
+ use static-libs && dolib.a lib*.a
+ cat <<-EOF > ${PN}.pc
+ prefix=${EPREFIX}/usr
+ libdir=\${prefix}/$(get_libdir)
+ includedir=\${prefix}/include
+ Name: ${PN}
+ Description: ${DESCRIPTION}
+ Version: ${PV}
+ URL: ${HOMEPAGE}
+ Libs: -L\${libdir} -l${PN} -l${PN}Cinit -l${PN}F77init -lm
+ Cflags: -I\${includedir}/${PN}
+ Requires: blas
+ EOF
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins ${PN}.pc || die
+ alternatives_for blacs ${PN} 0 \
+ "/usr/$(get_libdir)/pkgconfig/blacs.pc" "${PN}.pc"
+ popd
+
+ pushd SRC/MPI
+ insinto /usr/include/blacs
+ doins Bconfig.h Bdef.h
+ popd
+}