diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2018-02-14 03:26:15 +0100 |
---|---|---|
committer | scheibelp <scheibel1@llnl.gov> | 2018-02-13 18:26:15 -0800 |
commit | 9ea9a4063a441e7a07043aabb24fadcf036359a9 (patch) | |
tree | 1f425e35e51d8f59f5a998b1e870f40c88081b2f /var | |
parent | 1f731cd787cafdc35411c6c3a4297f56e8bce53e (diff) | |
download | spack-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.
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/fftw/package.py | 33 |
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: |