diff options
Diffstat (limited to 'sci-libs/mumps/mumps-4.10.0.ebuild')
-rw-r--r-- | sci-libs/mumps/mumps-4.10.0.ebuild | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/sci-libs/mumps/mumps-4.10.0.ebuild b/sci-libs/mumps/mumps-4.10.0.ebuild new file mode 100644 index 0000000..59c2ae3 --- /dev/null +++ b/sci-libs/mumps/mumps-4.10.0.ebuild @@ -0,0 +1,136 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=4 +inherit eutils toolchain-funcs flag-o-matic + +MYP=MUMPS_${PV} + +DESCRIPTION="MUltifrontal Massively Parallel sparse direct matrix Solver" +HOMEPAGE="http://mumps.enseeiht.fr/" +SRC_URI="${HOMEPAGE}${MYP}.tar.gz" + +LICENSE="public-domain" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="doc examples metis mpi +scotch static-libs" + +RDEPEND="virtual/blas + virtual/metis[mpi?] + scotch? ( sci-libs/scotch[mpi?] ) + mpi? ( virtual/scalapack )" + +DEPEND="${RDEPEND} + dev-util/pkgconfig" + +S="${WORKDIR}/${MYP}" + +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" +} + +src_prepare() { + sed -e "s:\(CC\s*=\).*:\1$(tc-getCC):" \ + -e "s:\(FC\s*=\).*:\1$(tc-getFC):" \ + -e "s:\(FL\s*=\).*:\1$(tc-getFC):" \ + -e "s:\(AR\s*=\).*:\1$(tc-getAR) rv :" \ + -e "s:\(RANLIB\s*=\).*:\1$(tc-getRANLIB):" \ + -e "s:\(LIBBLAS\s*=\).*:\1$(pkg-config --libs blas):" \ + -e "s:\(INCPAR\s*=\).*:\1:" \ + -e 's:\(LIBPAR\s*=\).*:\1$(SCALAP):' \ + -e "s:\(OPTF\s*=\).*:\1${FFLAGS}:" \ + -e "s:\(OPTC\s*=\).*:\1${CFLAGS}:" \ + -e "s:\(OPTL\s*=\).*:\1${LDFLAGS}:" \ + Make.inc/Makefile.inc.generic > Makefile.inc || die +} + +src_configure() { + LIBS="$(pkg-config --libs blas) -Llib -lpord" + local ord="-Dpord" + if use metis && use mpi; then + sed -i \ + -e "s:#\s*\(LMETIS\s*=\).*:\1$(pkg-config --libs metis-mpi):" \ + -e "s:#\s*\(IMETIS\s*=\).*:\1$(pkg-config --cflags metis-mpi):" \ + Makefile.inc || die + LIBS="${LIBS} $(pkg-config --libs metis-mpi)" + ord="${ord} -Dparmetis" + elif use metis; then + sed -i \ + -e "s:#\s*\(LMETIS\s*=\).*:\1$(pkg-config --libs metis):" \ + -e "s:#\s*\(IMETIS\s*=\).*:\1$(pkg-config --cflags metis):" \ + Makefile.inc || die + LIBS="${LIBS} $(pkg-config --libs metis)" + ord="${ord} -Dmetis" + fi + if use scotch && use mpi; then + sed -i \ + -e "s:\(LSCOTCH\s*=\).*:\1-lptesmumps -lptscotch -lptscotcherr:" \ + -e "s:\(ISCOTCH\s*=\).*:\1${ED}/usr/include/scotch:" \ + Makefile.inc || die + LIBS="${LIBS} -lptesmumps -lptscotch -lptscotcherr" + ord="${ord} -Dptscotch" + elif use scotch; then + sed -i \ + -e "s:\(LSCOTCH\s*=\).*:\1-lesmumps -lscotch -lscotcherr:" \ + -e "s:\(ISCOTCH\s*=\).*:\1${ED}/usr/include/scotch:" \ + Makefile.inc || die + LIBS="${LIBS} -lesmumps -lscotch -lscotcherr" + ord="${ord} -Dscotch" + fi + if use mpi; then + sed -i \ + -e "s:\(CC\s*=\).*:\1mpicc:" \ + -e "s:\(FC\s*=\).*:\1mpif90:" \ + -e "s:\(FL\s*=\).*:\1mpif90:" \ + -e "s:\(SCALAP\s*=\).*:\1$(pkg-config --libs scalapack):" \ + Makefile.inc || die + export LINK=mpif90 + LIBS="${LIBS} $(pkg-config --libs scalapack)" + fi + sed -i -e "s:\(ORDERINGSF\s*=\).*:\1 ${ord}:" Makefile.inc || die +} + +src_compile() { + emake alllib OPTF="${FFLAGS} -fPIC" OPTC="${CFLAGS} -fPIC" + make_shared_lib lib/libmumps_common.a ${LIBS} + local i + for i in c d s z; do + make_shared_lib lib/lib${i}mumps.a -Llib -lmumps_common + done + if use static-libs; then + emake clean + emake alllib + fi +} + +src_test() { + emake all + local dotest + use mpi && dotest="mpirun -np 2" + ${dotest} ./ssimpletest < input_simpletest_real || die + ${dotest} ./dsimpletest < input_simpletest_real || die + ${dotest} ./csimpletest < input_simpletest_cmplx || die + ${dotest} ./zsimpletest < input_simpletest_cmplx || die + einfo "The solution should be (1,2,3,4,5)" + ${dotest} ./c_example || die + einfo "The solution should be (1,2)" +} + +src_install() { + dolib.so lib/lib*.so + use static-libs && dolib.a lib/lib*.a + dodoc README ChangeLog VERSION + use doc && dodoc doc/*.pdf + if use examples; then + insinto /usr/share/doc/${PF} + doins -r examples + fi +} |