aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-physics/elk/elk-2.1.25.ebuild')
-rw-r--r--sci-physics/elk/elk-2.1.25.ebuild131
1 files changed, 131 insertions, 0 deletions
diff --git a/sci-physics/elk/elk-2.1.25.ebuild b/sci-physics/elk/elk-2.1.25.ebuild
new file mode 100644
index 000000000..ebab9ffa3
--- /dev/null
+++ b/sci-physics/elk/elk-2.1.25.ebuild
@@ -0,0 +1,131 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+inherit eutils flag-o-matic fortran-2 multilib toolchain-funcs
+
+DESCRIPTION="All-electron full-potential linearised augmented-plane wave (FP-LAPW)"
+HOMEPAGE="http://elk.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tgz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="-debug lapack libxc mpi openmp perl python test"
+
+RDEPEND="
+ lapack? (
+ virtual/blas
+ virtual/lapack )
+ libxc? ( >=sci-libs/libxc-1.2.0-r1[fortran] )
+ perl? ( dev-lang/perl )
+ python? ( dev-lang/python )
+ mpi? ( virtual/mpi )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig"
+
+DOCS=( README )
+
+FORTRAN_STANDARD=90
+
+pkg_setup() {
+ # fortran-2.eclass does not handle mpi wrappers
+ if use mpi; then
+ export FC="mpif90"
+ export F77="mpif77"
+ export CC="mpicc"
+ export CXX="mpic++"
+ else
+ tc-export FC F77 CC CXX
+ fi
+
+ use openmp && FORTRAN_NEED_OPENMP=1
+
+ fortran-2_pkg_setup
+
+ if use openmp; then
+ # based on _fortran-has-openmp() of fortran-2.eclass
+ local openmp=""
+ local fcode=ebuild-openmp-flags.f
+ local _fc=$(tc-getFC)
+
+ pushd "${T}"
+ cat <<- EOF > "${fcode}"
+ 1 call omp_get_num_threads
+ 2 end
+ EOF
+
+ for openmp in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp; do
+ "${_fc}" "${openmp}" "${fcode}" -o "${fcode}.x" && break
+ done
+
+ rm -f "${fcode}.*"
+ popd
+
+ append-flags "${openmp}"
+ fi
+}
+
+src_prepare() {
+ rm -rf src/{BLAS,LAPACK} || die
+ if use libxc; then
+ sed -i -e's/^\(SRC_libxc =\)/#\1/' "${S}/src/Makefile" || die
+ fi
+ if use mpi; then
+ sed -i -e's/^\(SRC_mpi =\)/#\1/' "${S}/src/Makefile" || die
+ fi
+
+ sed \
+ -e "s: -o : ${LDFLAGS} -o :g" \
+ -i src/{,eos,spacegroup}/Makefile || die
+}
+
+src_configure() {
+ append-fflags -I/usr/include
+
+ cat > make.inc <<- EOF
+ MAKE = make
+ F90 = $(tc-getFC)
+ F90_OPTS = ${FCFLAGS}
+ F77 = $(tc-getF77)
+ F77_OPTS = ${FFLAGS}
+ CC = $(tc-getCC)
+ CXX = $(tc-getCXX)
+ CFLAGS = ${CFLAGS}
+ CXXFLAGS = ${CXXFLAGS}
+ LD = $(tc-getLD)
+ AR = $(tc-getAR)
+ LIB_SYS =
+ LIB_LPK = $($(tc-getPKG_CONFIG) --libs lapack)
+ LIB_FFT = fftlib.a
+ EOF
+
+ if use libxc; then
+ echo "LIB_XC = -L/usr/$(get_libdir) -lxc" >> make.inc
+ echo "SRC_libxc = libxc_funcs.f90 libxc.f90 libxcifc.f90" >>make.inc
+ fi
+}
+
+MAKEOPTS+=" -j1"
+
+src_compile() {
+ emake -C src fft
+ emake -C src elk
+ emake -C src/eos
+ emake -C src/spacegroup
+}
+
+src_install() {
+ dobin src/elk src/protex src/eos/eos src/spacegroup/spacegroup
+ dobin utilities/elk-bands/elk-bands
+ use perl && dobin utilities/xps/xps_exc.pl utilities/wien2k-elk/se.pl
+ use python && dobin utilities/blocks2columns/blocks2columns.py
+ dodoc README
+ for doc in docs/*; do
+ dodoc $doc
+ done
+ insinto /usr/share/${P}
+ doins -r species utilities examples tests
+}