summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Gardner <je_fro@gentoo.org>2008-06-23 01:03:02 +0000
committerJeffrey Gardner <je_fro@gentoo.org>2008-06-23 01:03:02 +0000
commit4cccb10f96db69b2462283699eae86943751827c (patch)
treee1d6a23af2c86a35daed17a168e29dc236cef2ca
parentlatest svn (diff)
downloadje_fro-4cccb10f96db69b2462283699eae86943751827c.tar.gz
je_fro-4cccb10f96db69b2462283699eae86943751827c.tar.bz2
je_fro-4cccb10f96db69b2462283699eae86943751827c.zip
test new gromacs ebuild here before unleashing it on the world
svn path=/; revision=224
-rw-r--r--sci-chemistry/gromacs/gromacs-3.3.3.ebuild198
1 files changed, 198 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 0000000..7459905
--- /dev/null
+++ b/sci-chemistry/gromacs/gromacs-3.3.3.ebuild
@@ -0,0 +1,198 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit 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 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
+ mpi? ( virtual/mpi )
+ app-shells/tcsh
+ X? ( x11-libs/libX11
+ x11-libs/libXt
+ x11-libs/libXp
+ x11-libs/libXext
+ x11-proto/xproto
+ virtual/motif )
+ blas? ( virtual/blas )
+ lapack? ( virtual/lapack )
+ 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.in \
+ || die "sed tools/Makefile.in failed"
+
+ sed -e "s:\$\$libdir:\$\$temp_libdir:" \
+ -i src/tools/Makefile.in \
+ || die "sed tools/Makefile.in failed"
+
+ cd "${WORKDIR}"
+ if ( use double-precision && use single-precision ) ; then
+ einfo "Moving sources for Multiprecision Build"
+ mv "${P}" "${P}-single"
+ 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_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..."
+ cd "${WORKDIR}"/"${P}"
+ 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 double-precision && use single-precision ); then
+ einfo "Installing Single Precision"
+ cd "${WORKDIR}"/"${P}"-single
+ make DESTDIR="${D}" install || die "Installing Single Precision failed"
+ einfo "Installing Double Precision"
+ cd "${WORKDIR}"/"${P}"-double
+ make 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}"/
+}