127 lines
2.8 KiB
Bash
127 lines
2.8 KiB
Bash
# Copyright 1999-2013 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI=4
|
|
|
|
inherit eutils autotools flag-o-matic toolchain-funcs
|
|
|
|
DESCRIPTION="Photonic band structure program"
|
|
SRC_URI="http://ab-initio.mit.edu/mpb/${P}.tar.gz"
|
|
HOMEPAGE="http://ab-initio.mit.edu/mpb/"
|
|
|
|
LICENSE="GPL-2"
|
|
KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux"
|
|
IUSE="doc examples hdf5 mpi"
|
|
|
|
SLOT="0"
|
|
|
|
RDEPEND="virtual/lapack
|
|
dev-scheme/guile
|
|
sci-libs/libctl
|
|
sci-libs/fftw:2.1[mpi?]
|
|
sys-libs/readline
|
|
hdf5? ( sci-libs/hdf5 )
|
|
mpi? ( virtual/mpi )"
|
|
|
|
DEPEND="${RDEPEND}
|
|
virtual/pkgconfig"
|
|
|
|
src_prepare() {
|
|
epatch \
|
|
"${FILESDIR}"/${P}-autotools.patch \
|
|
"${FILESDIR}"/${P}-guile18.patch \
|
|
"${FILESDIR}"/${P}-headers.patch
|
|
cd "${S}"
|
|
eautoreconf
|
|
# version with inversion symmetry (mpbi).
|
|
cp -r "${S}" "${S}_inv" || die
|
|
# version with hermitian eps (mpbh).
|
|
cp -r "${S}" "${S}_herm" || die
|
|
# mpi versions (mpb-mpi).
|
|
if use mpi; then
|
|
cp -r "${S}" "${S}_mpi" || die
|
|
cp -r "${S}" "${S}_inv_mpi" || die
|
|
cp -r "${S}" "${S}_herm_mpi" || die
|
|
fi
|
|
tc-export CC
|
|
}
|
|
|
|
src_configure() {
|
|
# enable legacy API for hdf-1.8
|
|
use hdf5 && append-cflags -DH5_USE_16_API
|
|
#
|
|
local myconf=(
|
|
--with-libctl="${EPREFIX}/usr/share/libctl"
|
|
--with-blas="$($(tc-getPKG_CONFIG) --libs blas)"
|
|
--with-lapack="$($(tc-getPKG_CONFIG) --libs lapack)"
|
|
$(use_with hdf5)
|
|
)
|
|
|
|
econf "${myconf[@]}"
|
|
|
|
cd "${S}_inv"
|
|
econf "${myconf[@]}" \
|
|
--with-inv-symmetry
|
|
|
|
cd "${S}_herm"
|
|
econf "${myconf[@]}" \
|
|
--with-hermitian-eps
|
|
|
|
if use mpi; then
|
|
cd "${S}_mpi"
|
|
econf "${myconf[@]}" \
|
|
--with-mpi
|
|
cd "${S}_inv_mpi"
|
|
econf "${myconf[@]}" \
|
|
--with-inv-symmetry \
|
|
--with-mpi
|
|
cd "${S}_herm_mpi"
|
|
econf "${myconf[@]}" \
|
|
--with-hermitian-eps \
|
|
--with-mpi \
|
|
CC=mpicc
|
|
fi
|
|
}
|
|
|
|
src_compile() {
|
|
local d
|
|
for d in . _inv _herm; do
|
|
cd "${S}${d}"
|
|
emake -C mpb-ctl ctl-io.c
|
|
emake
|
|
done
|
|
if use mpi; then
|
|
for d in . _inv _herm; do
|
|
cd "${S}${d}_mpi"
|
|
emake -C mpb-ctl ctl-io.c CC=mpicc
|
|
emake CC=mpicc LD=mpicc
|
|
done
|
|
fi
|
|
}
|
|
|
|
src_install() {
|
|
einstall
|
|
dodoc README NEWS AUTHORS COPYRIGHT ChangeLog TODO
|
|
use doc && dohtml doc/*
|
|
if use examples; then
|
|
insinto /usr/share/doc/${PF}
|
|
doins -r mpb-ctl/examples
|
|
fi
|
|
|
|
newbin "${S}_inv"/mpb-ctl/.mpb mpbi
|
|
newbin "${S}_herm"/mpb-ctl/.mpb mpbh
|
|
|
|
einfo "Several versions of mpb have been installed:"
|
|
einfo "mpb : regular version"
|
|
einfo "mpbi: configured for inversion symmetry"
|
|
einfo "mpbh: configured for hermitian epsilon"
|
|
if use mpi; then
|
|
newbin "${S}_mpi"/mpb-ctl/.mpb mpb-mpi
|
|
newbin "${S}_inv_mpi"/mpb-ctl/.mpb mpbh-mpi
|
|
newbin "${S}_herm_mpi"/mpb-ctl/.mpb mpbi-mpi
|
|
einfo "mpb-mpi : regular version with mpi"
|
|
einfo "mpbi-mpi: configured for inversion symmetry with mpi"
|
|
einfo "mpbh-mpi: configured for hermitian epsilon with mpi"
|
|
fi
|
|
}
|