--- /usr/portage/sci-chemistry/gromacs/gromacs-3.3.ebuild 2005-10-14 02:44:11.000000000 +0200 +++ /mnt/zeus/portageoverlay/sci-chemistry/gromacs/gromacs-3.3.1.ebuild 2006-04-09 13:10:42.000000000 +0200 @@ -4,7 +4,7 @@ inherit eutils -IUSE="altivec mpi xml2" +IUSE="altivec mpi 3dnow sse double-precision" DESCRIPTION="The ultimate molecular dynamics simulation package" SRC_URI="ftp://ftp.gromacs.org/pub/${PN}/${P}.tar.gz" @@ -12,62 +12,121 @@ LICENSE="GPL-2" SLOT="0" -KEYWORDS="~x86 ~amd64 ~ppc64" +KEYWORDS="~x86 ~amd64 ~ppc64 ~ia64" #mpi is a local USE flag now #May become official when situation with mpich is cleared (now the only mpi implementation awailable is lam-mpi) -DEPEND="=sci-libs/fftw-2.1* - mpi? ( >=sys-cluster/lam-mpi-6.5.6 ) - >=sys-devel/binutils-2.10.91.0.2 - app-shells/tcsh - xml2? ( dev-libs/libxml2 )" - -pkg_setup() { - # !!!Please note!!! - # for troublesome work gromacs should be compiled with the same mpi setting - # as fftw. - if use mpi; then - if ! built_with_use =sci-libs/fftw-2.1* mpi; then - die "=sci-libs/fftw-2.1* must be built with USE=mpi." - fi - fi -} +DEPEND="sci-libs/fftw + mpi? ( sys-cluster/lam-mpi ) + >=sys-devel/binutils-2.12 + app-shells/tcsh" src_unpack() { - unpack ${A} - if use ppc64 && use altivec ; then - epatch ${FILESDIR}/${PN}-ppc64-altivec.patch + unpack ${A} || die "unpack failed" + cd ${WORKDIR} + mv ${P} ${P}-single + if use double-precision; then + cp -pPR ${P}-single ${P}-double + fi + if use mpi; then + cp -pPR ${P}-single ${P}-mpi-single + if use double-precision; then + cp -pPR ${P}-single ${P}-mpi-double + fi 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 - econf \ - --enable-fortran \ - --datadir=/usr/share/${P} \ - --bindir=/usr/bin \ - --libdir=/usr/lib \ - $(use_with xml2 xml) \ - $(use_enable mpi) \ - $(use_enable altivec ppc-altivec) \ - $(use_enable alpha axp-asm) || die "configure failed" - -# $(use_enable static all-static) \ - + local flag + flag=`usev x86 amd64 ppc64 ia64` + local myconf="--libdir=/usr/lib" + case "${flag}" in + x86) + if use 3dnow; then + myconf="${myconf} --enable-ia32-3dnow" + fi + if use sse; then + myconf="${myconf} --enable-ia32-sse" + fi + ;; + amd64) + if use sse; then + myconf="${myconf} --enable-x86-64-sse" + fi + ;; + ppc64) + if use altivec; then + myconf="${myconf} --enable-ppc-altivec" + fi + ;; + ia64) + myconf="${myconf} --enable-ia64-asm" + ;; + *) + myconf="${myconf} --enable-fortran" + ;; + esac + + #build single precision package + cd ${WORKDIR}/${P}-single + econf ${myconf} || die "configure failed" emake || die + #build double precision package + #defaults to suffix _d + if use double-precision; then + cd ${WORKDIR}/${P}-double + econf ${myconf} \ + --enable-double || die "configure failed" + emake || die + fi + #build optional mpi support for mdrun + #binary will be mdrun_mpi + if use mpi; then + cd ${WORKDIR}/${P}-mpi-single + econf ${myconf} \ + --enable-mpi \ + --program-suffix=_mpi || die "configure failed" + make mdrun || die + #build optional mpi support for double precision package + #binary will be mdrun_mpi_d + if use double-precision; then + cd ${WORKDIR}/${P}-mpi-double + econf ${myconf} \ + --enable-mpi \ + --enable-double \ + --program-suffix=_mpi_d || die "configure failed" + make mdrun || die + fi + fi } src_install () { + cd ${WORKDIR}/${P}-single make DESTDIR=${D} install || die - # Install documentation. dodoc AUTHORS COPYING INSTALL README - #move html docs under /usr/share/doc - #and leave examples and templates under /usr/gromacs... - mv ${D}/usr/share/${P}/html ${D}/usr/share/doc/${PF} + mv ${D}/usr/share/gromacs/html ${D}/usr/share/doc/${PF}/ + if use double-precision; then + cd ${WORKDIR}/${P}-double + make DESTDIR=${D} install || die + fi + if use mpi; then + cd ${WORKDIR}/${P}-mpi-single + make DESTDIR=${D} install-mdrun || die + if use double-precision; then + cd ${WORKDIR}/${P}-double + make DESTDIR=${D} install-mdrun || die + fi + fi +} + +pkg_postinst() { + if use mpi; then + einfo "For parallel runs use mdrun_mpi." + fi + + if use double-precision; then + einfo "For double precision use suffix _d for executables." + fi }