summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2018-02-14 03:26:15 +0100
committerscheibelp <scheibel1@llnl.gov>2018-02-13 18:26:15 -0800
commit9ea9a4063a441e7a07043aabb24fadcf036359a9 (patch)
tree1f425e35e51d8f59f5a998b1e870f40c88081b2f
parent1f731cd787cafdc35411c6c3a4297f56e8bce53e (diff)
downloadspack-9ea9a4063a441e7a07043aabb24fadcf036359a9.tar.gz
spack-9ea9a4063a441e7a07043aabb24fadcf036359a9.tar.bz2
spack-9ea9a4063a441e7a07043aabb24fadcf036359a9.tar.xz
spack-9ea9a4063a441e7a07043aabb24fadcf036359a9.zip
fftw package: improved libs implementation (#7212)
Add query parameters to retrieve libraries based on precision (e.g. double or quad) and mpi/openmp support.
-rw-r--r--var/spack/repos/builtin/packages/fftw/package.py33
1 files changed, 31 insertions, 2 deletions
diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py
index b047574f82..87dc0cbba3 100644
--- a/var/spack/repos/builtin/packages/fftw/package.py
+++ b/var/spack/repos/builtin/packages/fftw/package.py
@@ -24,6 +24,8 @@
##############################################################################
from spack import *
+import llnl.util.lang
+
class Fftw(AutotoolsPackage):
"""FFTW is a C subroutine library for computing the discrete Fourier
@@ -88,8 +90,35 @@ class Fftw(AutotoolsPackage):
@property
def libs(self):
- result = find_libraries(['libfftw3'], root=self.prefix, recurse=True)
- return result
+
+ # 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', ''),
+ ('long_double', 'l'),
+ ('quad', 'q')
+ ]
+
+ # 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, recurse=True)
def autoreconf(self, spec, prefix):
if '+pfft_patches' in spec: