aboutsummaryrefslogtreecommitdiff
blob: b4e40f540695e01c2dc69a13fe3bc3509fd27a48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=4

inherit autotools-utils eutils flag-o-matic fortran-2 toolchain-funcs

REAL_P="${P/_pre0/-tuto}"

DESCRIPTION="A DFT electronic structure code using a wavelet basis set"
HOMEPAGE="http://inac.cea.fr/L_Sim/BigDFT/"
SRC_URI="http://inac.cea.fr/L_Sim/BigDFT/${REAL_P}.tar.gz"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="cuda doc etsf_io mpi netcdf opencl test"

RDEPEND="
	=sci-libs/libxc-1*[fortran]
	virtual/blas
	virtual/fortran
	virtual/lapack
	mpi? ( virtual/mpi )
	cuda? ( dev-util/nvidia-cuda-sdk )
	opencl? (
		|| (
			dev-util/nvidia-cuda-sdk
			dev-util/amdstream
			)
		)
	etsf_io? ( sci-libs/etsf_io )
	netcdf? ( || (
				sci-libs/netcdf[fortran]
				sci-libs/netcdf-fortran
				)
			)"
DEPEND="${RDEPEND}
	dev-util/pkgconfig
	>=sys-devel/autoconf-2.59
	doc? ( virtual/latex-base )"

S="${WORKDIR}/${REAL_P}"

DOCS=( README INSTALL ChangeLog AUTHORS NEWS )

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"
	else
		tc-export FC F77 CC
	fi

	fortran-2_pkg_setup
}

src_prepare() {
	epatch "${FILESDIR}"/"${REAL_P}"-libxc_dir_include.patch
	eautoreconf
}

src_configure() {
	local modules="/usr/$(get_libdir)/finclude"
	local netcdff_libs="-lnetcdff"
	filter-flags '-m*' '-O*' "-pipe"
	local nvcflags="${CFLAGS}"
#	_filter-var nvcflags '-m*' '-O*' "-pipe"
	local myeconfargs=(
		$(use_enable mpi)
		--enable-optimised-convolution
		--enable-pseudo
		--enable-libbigdft
		--enable-binaries
		--disable-minima-hopping
		--with-moduledir="${modules}"
		--with-ext-linalg="$(pkg-config --libs-only-l lapack) \
			$(pkg-config --libs-only-l blas)"
		--with-ext-linalg-path="$(pkg-config --libs-only-L lapack) \
			$(pkg-config --libs-only-L blas)"
		--disable-internal-libxc
		--with-libxc-path="/usr"
		--with-libxc-include="${modules}"
		$(use_enable cuda cuda-gpu)
		$(use_with cuda cuda-path /opt/cuda)
		$(use_with cuda nvcc-flags "${nvcflags}")
		$(use_enable opencl)
		$(use_with opencl ocl-path /usr)
		$(use_with etsf_io etsf-io)
		$(use_with etsf_io etsf-io-path "/usr")
		$(use_with etsf_io netcdf-path "$(pkg-config --libs-only-L netcdf)")
		"$(use etsf_io && echo "--with-netcdf-libs=$(pkg-config --libs netcdf) ${netcdff_libs}")"
		FCFLAGS="${FCFLAGS:- ${FFLAGS:- -O2}} -I${modules}"
		LD="$(tc-getLD)"
		CPP="$(tc-getCPP)"
		)
	autotools-utils_src_configure
}

src_compile() {
	#autotools-utils_src_compile() expanded
	_check_build_dir
	pushd "${AUTOTOOLS_BUILD_DIR}" > /dev/null
	emake -j1
	sed -i -e's%\$(top_builddir)/[^ ]*/lib\([^ /$-]*\)\.a%-l\1%g' bigdft.pc
	popd > /dev/null

	use doc && autotools-utils_src_compile doc
}

src_test() {
	use test && autotools-utils_src_test
}

src_install() {
	autotools-utils_src_install HAVE_LIBXC=1
}