cp2k: update to 4.1 + update of dependencies (#3561)

* libint: updated version, ported to AutotoolsPackage

* elpa: updated version, ported to AutotoolsPackage

* wannier90: updated version, ported to MakefilePackage

* pexsi: updated version, ported to MakefilePackage

* cp2k: updated version, removed wannier 90 from dependencies if cp2k@4.1

* plumed: updated version

Modifications:

* modules has been turned into a single variant, as different versions
  have different modules available
* added dictionaries for patches

* netlib-scalapack: ported to CMakePackage
This commit is contained in:
Massimiliano Culpo
2017-03-30 16:46:05 +02:00
committed by Adam J. Stewart
parent 73f78cb8c4
commit f9c0348891
8 changed files with 160 additions and 122 deletions

View File

@@ -37,6 +37,7 @@ class Cp2k(Package):
homepage = 'https://www.cp2k.org'
url = 'https://sourceforge.net/projects/cp2k/files/cp2k-3.0.tar.bz2'
version('4.1', 'b0534b530592de15ac89828b1541185e')
version('3.0', 'c05bc47335f68597a310b1ed75601d35')
variant('mpi', default=True, description='Enable MPI support')
@@ -47,14 +48,18 @@ class Cp2k(Package):
depends_on('lapack')
depends_on('blas')
depends_on('fftw')
depends_on('libint@:1.2', when='@3.0')
depends_on('libint@:1.2', when='@3.0,4.1')
depends_on('mpi', when='+mpi')
depends_on('scalapack', when='+mpi')
depends_on('plumed+shared+mpi', when='+plumed+mpi')
depends_on('plumed+shared~mpi', when='+plumed~mpi')
depends_on('pexsi', when='+mpi')
depends_on('wannier90', when='+mpi')
depends_on('pexsi+fortran', when='+mpi')
# Apparently cp2k@4.1 needs an "experimental" version of libwannier.a
# which is only available contacting the developer directly. See INSTALL
# in the stage of cp2k@4.1
depends_on('wannier90', when='@3.0+mpi')
depends_on('elpa', when='+mpi')
# TODO : add dependency on libsmm, libxsmm
@@ -94,6 +99,8 @@ def install(self, spec, prefix):
fcflags.append(spec['fftw'].cppflags)
fftw = find_libraries('libfftw3', root=spec['fftw'].prefix.lib)
ldflags = [fftw.search_flags]
if 'superlu-dist@4.3' in spec:
ldflags = ['-Wl,--allow-multiple-definition'] + ldflags
libs = [
join_path(spec['libint'].prefix.lib, 'libint.so'),
join_path(spec['libint'].prefix.lib, 'libderiv.so'),
@@ -147,10 +154,12 @@ def install(self, spec, prefix):
cppflags.extend([
'-D__parallel',
'-D__LIBPEXSI',
'-D__WANNIER90',
'-D__ELPA3',
'-D__SCALAPACK'
])
if 'wannier90' in spec:
cppflags.append('-D__WANNIER90')
fcflags.extend([
# spec['elpa:fortran'].cppflags
'-I' + join_path(
@@ -167,7 +176,6 @@ def install(self, spec, prefix):
libs.extend([
join_path(spec['elpa'].prefix.lib,
'libelpa.{0}'.format(dso_suffix)),
join_path(spec['wannier90'].prefix.lib, 'libwannier.a'),
join_path(spec['pexsi'].prefix.lib, 'libpexsi.a'),
join_path(spec['superlu-dist'].prefix.lib,
'libsuperlu_dist.a'),
@@ -180,6 +188,13 @@ def install(self, spec, prefix):
'libmetis.{0}'.format(dso_suffix)
),
])
if 'wannier90' in spec:
wannier = join_path(
spec['wannier90'].prefix.lib, 'libwannier.a'
)
libs.append(wannier)
libs.extend(scalapack)
libs.extend(self.spec['mpi'].mpicxx_shared_libs)
libs.extend(self.compiler.stdcxx_libs)