diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/gslib/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/gslib/package.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/gslib/package.py b/var/spack/repos/builtin/packages/gslib/package.py new file mode 100644 index 0000000000..f11ed17a56 --- /dev/null +++ b/var/spack/repos/builtin/packages/gslib/package.py @@ -0,0 +1,70 @@ +# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Gslib(Package): + """Highly scalable Gather-scatter code with AMG and XXT solvers""" + + homepage = "https://github.com/gslib/gslib" + git = "https://github.com/gslib/gslib.git" + + version('1.0.2', tag='v1.0.2') + version('1.0.1', tag='v1.0.1') + version('1.0.0', tag='v1.0.0') + + variant('mpi', default=True, description='Build with MPI') + variant('mpiio', default=True, description='Build with MPI I/O') + variant('blas', default=False, description='Build with BLAS') + + depends_on('mpi', when="+mpi") + depends_on('mpi', when="+mpiio") + depends_on('blas', when="+blas") + + conflicts('~mpi', when='+mpiio') + + def install(self, spec, prefix): + src_dir = 'src' + lib_dir = 'lib' + libname = 'libgs.a' + + if self.version == Version('1.0.1'): + makefile = 'Makefile' + else: + makefile = 'src/Makefile' + + cc = self.compiler.cc + + if '+mpiio' not in spec: + filter_file(r'MPIIO.*?=.*1', 'MPIIO = 0', makefile) + + if '+mpi' in spec: + cc = spec['mpi'].mpicc + else: + filter_file(r'MPI.*?=.*1', 'MPI = 0', makefile) + filter_file(r'MPIIO.*?=.*1', 'MPIIO = 0', makefile) + + make_cmd = "CC=" + cc + + if '+blas' in spec: + filter_file(r'BLAS.*?=.*0', 'BLAS = 1', makefile) + blas = spec['blas'].libs + ld_flags = blas.ld_flags + filter_file(r'\$\(LDFLAGS\)', ld_flags, makefile) + + if self.version == Version('1.0.1'): + make(make_cmd) + make('install') + install_tree(lib_dir, prefix.lib) + elif self.version == Version('1.0.0'): + with working_dir(src_dir): + make(make_cmd) + mkdir(prefix.lib) + install(libname, prefix.lib) + + # Should only install the headers (this will be fixed in gslib on + # future releases). + install_tree(src_dir, prefix.include) |