diff options
author | 2008-06-23 07:12:59 +0000 | |
---|---|---|
committer | 2008-06-23 07:12:59 +0000 | |
commit | 6ec25e44cbffaa9a4f2f60fcfb6f29b3859cce9a (patch) | |
tree | 9f99bb7179e8b10e038cd5244864710f2a7a2246 /sci-chemistry/gromacs/gromacs-3.3.3.ebuild | |
parent | fix Manifest (diff) | |
download | sci-6ec25e44cbffaa9a4f2f60fcfb6f29b3859cce9a.tar.gz sci-6ec25e44cbffaa9a4f2f60fcfb6f29b3859cce9a.tar.bz2 sci-6ec25e44cbffaa9a4f2f60fcfb6f29b3859cce9a.zip |
Latest gromacs for testing
git-svn-id: http://overlays.gentoo.org/svn/proj/science/overlay@1148 32389bae-6d03-0410-99cf-db05cde120eb
Diffstat (limited to 'sci-chemistry/gromacs/gromacs-3.3.3.ebuild')
-rw-r--r-- | sci-chemistry/gromacs/gromacs-3.3.3.ebuild | 212 |
1 files changed, 212 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 000000000..4672c80ab --- /dev/null +++ b/sci-chemistry/gromacs/gromacs-3.3.3.ebuild @@ -0,0 +1,212 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ +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 + virtual/motif ) + 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 + + # if we don't set C[XX]FLAGS configure will set: -O3 -finline-functions + # -funroll-all-loops +# append-flags "-O3 -finline-functions -funroll-all-loops" +# use x86 && append-flags "-malign-double" + + # 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 ; + + 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="${myconf} --enable-float" + econf ${myconf} || die "Single Precision econf failed" + emake || die "Single Precision emake failed" + + einfo "Building Double Precision Gromacs" + cd "${WORKDIR}"/"${P}"-double + myconf="${myconf} --enable-double --program-suffix=_d" + econf ${myconf} || die "Double Precision econf failed" + emake || die "Double Precision emake failed" + else + einfo "Building Single Precison Gromacs" + cd "${WORKDIR}"/"${P}"-single + myconf="${myconf} $(use_enable double-precision double) \ + $(use_enable single-precision float)" + econf ${myconf} || 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}"/ +} |