summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/cray-fftw/package.py
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2021-05-18 10:25:14 +0200
committerGitHub <noreply@github.com>2021-05-18 02:25:14 -0600
commite3c59264d822adfdd969b4ca254adc3d15aabb60 (patch)
treed2841528ff16878c500a8b70d88aaf6afcf22420 /var/spack/repos/builtin/packages/cray-fftw/package.py
parent4cd53cadb043d522a0133a49070bc82451327e99 (diff)
downloadspack-e3c59264d822adfdd969b4ca254adc3d15aabb60.tar.gz
spack-e3c59264d822adfdd969b4ca254adc3d15aabb60.tar.bz2
spack-e3c59264d822adfdd969b4ca254adc3d15aabb60.tar.xz
spack-e3c59264d822adfdd969b4ca254adc3d15aabb60.zip
cray: fix builds on Alps/Eiger (CSCS) (#23470)
Co-authored-by: Tiziano Müller <tiziano.mueller@chem.uzh.ch>
Diffstat (limited to 'var/spack/repos/builtin/packages/cray-fftw/package.py')
-rw-r--r--var/spack/repos/builtin/packages/cray-fftw/package.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/cray-fftw/package.py b/var/spack/repos/builtin/packages/cray-fftw/package.py
index a2f913f827..ffc713d3a0 100644
--- a/var/spack/repos/builtin/packages/cray-fftw/package.py
+++ b/var/spack/repos/builtin/packages/cray-fftw/package.py
@@ -28,7 +28,48 @@ class CrayFftw(Package):
provides('fftw-api@3')
+ variant(
+ 'precision', values=any_combination_of(
+ 'float', 'double'
+ ).prohibit_empty_set().with_default('float,double'),
+ description='Build the selected floating-point precision libraries'
+ )
+
+ variant('openmp', default=False, description="Enable OpenMP support.")
+ variant('mpi', default=True, description='Activate MPI support')
+ depends_on('mpi', when='+mpi')
+
def install(self, spec, prefix):
raise InstallError(
self.spec.format('{name} is not installable, you need to specify '
'it as an external package in packages.yaml'))
+
+ @property
+ def libs(self):
+
+ # Reduce repetitions of entries
+ query_parameters = list(llnl.util.lang.dedupe(
+ self.spec.last_query.extra_parameters
+ ))
+
+ # List of all the suffixes associated with float precisions
+ precisions = [
+ ('float', 'f'),
+ ('double', ''),
+ ]
+
+ # Retrieve the correct suffixes, or use double as a default
+ suffixes = [v for k, v in precisions if k in query_parameters] or ['']
+
+ # Construct the list of libraries that needs to be found
+ libraries = []
+ for sfx in suffixes:
+ if 'mpi' in query_parameters and '+mpi' in self.spec:
+ libraries.append('libfftw3' + sfx + '_mpi')
+
+ if 'openmp' in query_parameters and '+openmp' in self.spec:
+ libraries.append('libfftw3' + sfx + '_omp')
+
+ libraries.append('libfftw3' + sfx)
+
+ return find_libraries(libraries, root=self.prefix, recursive=True)