# Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI=3 inherit flag-o-matic toolchain-funcs MY_P="${PN}-${PV/_/-}" DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" HOMEPAGE="http://www.mcs.anl.gov/petsc/petsc-as/" SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${MY_P}.tar.gz" LICENSE="petsc" SLOT="0" KEYWORDS="~x86 ~amd64" IUSE="mpi X cxx debug static-libs fortran doc" RDEPEND=" mpi? ( virtual/mpi ) X? ( x11-libs/libX11 ) virtual/lapack virtual/blas " DEPEND="${RDEPEND} sys-devel/gcc[-nocxx,fortran?] " S="${WORKDIR}/${MY_P}" src_prepare(){ epatch "${FILESDIR}/fix-configure-pic.patch" epatch "${FILESDIR}/fix-mpiuni.patch" # My failed tries on the parallel build QA warnings: # sed -i "s/-\?\(@\?\)\${OMAKE}/\1\${MAKE}/g" makefile || die "sed failed" # sed -i "s/\ make /\ ${MAKE} /g" makefile || die "sed failed" } src_configure(){ local mylang local myopt local myconf use cxx && mylang="cxx" || mylang="c" use debug && myopt="debug" || myopt="opt" export PETSC_DIR="${S}" || die export PETSC_ARCH="linux-gnu-${mylang}-${myopt}" || die if use mpi then myconf="${myconf} --with-mpi=1 --with-mpi-compilers=0" myconf="${myconf} --with-mpi-include=/usr/include" # adding mpi libraries, -lmpi only is not sufficient if compiling # with g++, mpi_f77 needed when using fortran (mpi_f90 caused errors) myconf="${myconf} --with-mpi-lib=[/usr/$(get_libdir)/libmpi.so" use cxx && myconf="${myconf},/usr/$(get_libdir)/libmpi_cxx.so" use fortran && myconf="${myconf},/usr/$(get_libdir)/libmpi_f77.so" myconf="${myconf}]" myconf="${myconf} --known-mpi-shared=1" else myconf="${myconf} --with-mpi=0" fi use X \ && myconf="${myconf} --with-X=1" \ || myconf="${myconf} --with-X=0" use static-libs \ && myconf="${myconf} --with-shared=0" \ || myconf="${myconf} --with-shared=1" use amd64 \ && myconf="${myconf} --with-64-bit-indices=1" \ || myconf="${myconf} --with-64-bit-indices=0" use fortran \ && myconf="${myconf} --with-fortran=1" \ || myconf="${myconf} --with-fortran=0" if use debug then strip-flags filter-flags -O* myconf="${myconf} --with-debugging=1" else myconf="${myconf} --with-debugging=0" fi python ${S}/config/configure.py ${myconf} \ --with-cc=$(tc-getCC) --with-cxx=$(tc-getCXX) \ CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" \ --with-windows-graphics=0 --with-matlab=0 --with-python=0 \ --with-clanguage=${mylang} --with-single-library=1 \ --with-petsc-arch=${PETSC_ARCH} --with-precision=double \ --with-blas-lapack-lib="$(pkg-config --libs lapack)" \ || die "PETSc configuration failed" } src_install(){ insinto /usr/include/${PN} doins ${S}/include/*.h ${S}/include/*.hh doins ${S}/${PETSC_ARCH}/include/*.h insinto /usr/include/${PN}/private doins ${S}/include/private/*.h # fix paths stored in petscconf.h dosed "s:${S}:/usr:g" /usr/include/${PN}/petscconf.h dosed "s:${PETSC_ARCH}/lib:$(get_libdir):g" /usr/include/${PN}/petscconf.h \ if ! use mpi ; then insinto /usr/include/${PN}/mpiuni doins ${S}/include/mpiuni/*.h fi if use doc ; then dodoc docs/manual.pdf dohtml -r docs/*.html docs/changes docs/manualpages fi use static-libs \ && dolib.a ${S}/${PETSC_ARCH}/lib/*.a \ || dolib.so ${S}/${PETSC_ARCH}/lib/*.so }