diff options
Diffstat (limited to 'sci-chemistry')
-rw-r--r-- | sci-chemistry/gromacs/gromacs-3.3.3.ebuild | 217 | ||||
-rw-r--r-- | sci-chemistry/gromacs/metadata.xml | 1 |
2 files changed, 218 insertions, 0 deletions
diff --git a/sci-chemistry/gromacs/gromacs-3.3.3.ebuild b/sci-chemistry/gromacs/gromacs-3.3.3.ebuild new file mode 100644 index 000000000000..dd1f16940227 --- /dev/null +++ b/sci-chemistry/gromacs/gromacs-3.3.3.ebuild @@ -0,0 +1,217 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/gromacs/gromacs-3.3.3.ebuild,v 1.1 2008/10/06 02:08:34 je_fro Exp $ +EAPI="1" +LIBTOOLIZE="true" +inherit autotools eutils flag-o-matic fortran multilib + +DESCRIPTION="The ultimate molecular dynamics simulation package" +HOMEPAGE="http://www.gromacs.org/" +SRC_URI="ftp://ftp.gromacs.org/pub/${PN}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc64 ~sparc ~x86" +IUSE="3dnow X altivec blas double-precision gsl lapack mpi +single-precision sse sse2 static xml" + +# mopac7 qm/mm is broken until we can get files from +# http://md.chem.rug.nl/~groenhof/qmmm.html +# or somewhere else... + +DEPEND=">=sci-libs/fftw-3.0.1 + app-shells/tcsh + X? ( x11-libs/libX11 + x11-libs/libXt + x11-libs/libXp + x11-libs/libXext + x11-proto/xproto + x11-libs/openmotif ) + blas? ( virtual/blas ) + gsl? ( sci-libs/gsl ) + lapack? ( virtual/lapack ) + mpi? ( virtual/mpi ) + xml? ( dev-libs/libxml2 )" + +FORTRAN="g77 gfortran ifc" + +src_unpack() { + + unpack ${A} + cd "${S}" + # Fix typos in a couple of files. + sed -e "s:+0f:-f:" -i share/tutor/gmxdemo/demo \ + || die "Failed to fixup demo script." + + # Fix a sandbox violation that occurs when re-emerging with mpi. + sed "/libdir=\"\$(libdir)\"/ a\ temp_libdir=\"${D}usr/$( get_libdir )\" ; \\\\" \ + -i src/tools/Makefile.am \ + || die "sed tools/Makefile.am failed" + + sed -e "s:\$\$libdir:\$temp_libdir:" \ + -i src/tools/Makefile.am \ + || die "sed tools/Makefile.am failed" + + sed "/libdir=\"\$(libdir)\"/ a\ temp_libdir=\"${D}usr/$( get_libdir )\" ; \\\\" \ + -i src/tools/Makefile.am \ + || die "sed tools/Makefile.am failed" + + sed -e "s:\$\$libdir:\$\$temp_libdir:" \ + -i src/tools/Makefile.am \ + || die "sed tools/Makefile.am failed" + + # Rename disco manpage to fix bug #210083. + sed "s:disco.1:g_disco.1:" \ + -i "${S}"/man/man1/Makefile.am \ + || die "sed failed to rename disco" + + mv "${S}"/man/man1/disco.1 "${S}"/man/man1/g_disco.1 + + eautoreconf + + cd "${WORKDIR}" + mv "${P}" "${P}-single" + if ( use double-precision ) ; then + einfo "Moving sources for Multiprecision Build" + cp -prP "${P}-single" "${P}-double" + fi +} + +src_compile() { + + # static should work but something's broken. + # gcc spec file may be screwed up. + # Static linking should try -lgcc instead of -lgcc_s. + # For more info: + # http://lists.debian.org/debian-gcc/2002/debian-gcc-200201/msg00150.html + + # We will compile single precision by default, and suffix double-precision with _d. + # Sparc is the only arch I can test on that needs to use fortran. + local myconf ; + local myconf_s ; + local myconf_d ; + + case "${ARCH}" in + + x86) + if ( use sse || use sse2 ) ; then + myconf="${myconf} --enable-ia32-sse" + fi + myconf="$myconf $(use_enable 3dnow ia32-3dnow)" + + if ( ! use sse && ! use sse2 && ! use 3dnow ) ; then + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="${myconf} --enable-fortran" && fortran_pkg_setup + fi + else + myconf="${myconf} --disable-fortran" + fi + ;; + + amd64) + myconf="$myconf --enable-x86-64-sse --disable-fortran" + ;; + + ppc*) + if use altivec ; then + myconf="${myconf} --enable-ppc-altivec --disable-fortran" + else + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="${myconf} --enable-fortran" && fortran_pkg_setup + fi + fi + ;; + + ia64) + myconf="$myconf --enable-ia64-asm --disable-fortran" + ;; + + alpha) + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="$myconf --enable-fortran" && fortran_pkg_setup + fi + ;; + + sparc) + if ! has_version "=sys-devel/gcc-3*" ; then + die "If you must run gromacs without sse (not recommended) gfortran will not work." + else + myconf="${myconf} --enable-fortran" && fortran_pkg_setup + fi + ;; + esac + + # if we need external blas + if use blas; then + export LIBS="${LIBS} -lblas" + myconf="${myconf} $(use_with blas external-blas)" + fi + + # if we need external lapack + if use lapack; then + export LIBS="${LIBS} -llapack" + myconf="${myconf} $(use_with lapack external-lapack)" + fi + + myconf="--datadir=/usr/share \ + --bindir=/usr/bin \ + --libdir=/usr/$(get_libdir) \ + --with-fft=fftw3 \ + $(use_with gsl) \ + $(use_enable mpi) \ + $(use_with X x) \ + $(use_with xml) \ + $(use_enable static all-static) \ + ${myconf}" + + if ( use double-precision && use single-precision ); then + einfo "Building Single Precison Gromacs" + cd "${WORKDIR}"/"${P}"-single + myconf_s="${myconf} --enable-float --disable-double --program-suffix=''" + econf ${myconf_s} || die "Single Precision econf failed" + emake || die "Single Precision emake failed" + + einfo "Building Double Precision Gromacs" + cd "${WORKDIR}"/"${P}"-double + myconf_d="${myconf} --enable-double --disable-float --program-suffix=_d" + econf ${myconf_d} || die "Double Precision econf failed" + emake || die "Double Precision emake failed" + + elif use double-precision ; then + einfo "Building Double Precison Gromacs" + cd "${WORKDIR}"/"${P}"-double + myconf_d="${myconf} --enable-double --disable-float --program-suffix=''" + econf ${myconf_d} || die "Double Precision econf failed" + emake || die "Double Precision emake failed" + + elif use single-precision ; then + einfo "Building Single Precison Gromacs" + cd "${WORKDIR}"/"${P}"-single + myconf_s="${myconf} --enable-float --disable-double --program-suffix=''" + econf ${myconf_s} || die "configure failed" + emake || die "Single Precision emake failed" + fi +} + +src_install() { + if use single-precision ; then + einfo "Installing Single Precision" + cd "${WORKDIR}"/"${P}"-single + emake DESTDIR="${D}" install || die "Installing Single Precision failed" + fi + + if use double-precision ; then + einfo "Installing Double Precision" + cd "${WORKDIR}"/"${P}"-double + emake DESTDIR="${D}" install || die "Installing Double Precision failed" + fi + + dodoc AUTHORS INSTALL README + # Move html and leave examples and templates under /usr/share/gromacs. + mv "${D}"/usr/share/"${PN}"/html "${D}"/usr/share/doc/"${PF}"/ +} diff --git a/sci-chemistry/gromacs/metadata.xml b/sci-chemistry/gromacs/metadata.xml index 44f051fffcea..fff268723f62 100644 --- a/sci-chemistry/gromacs/metadata.xml +++ b/sci-chemistry/gromacs/metadata.xml @@ -5,5 +5,6 @@ <use> <flag name='double-precision'>More precise calculations at the expense of speed</flag> + <flag name='single-precision'>Single precision version of gromacs</flag> </use> </pkgmetadata> |