From 6d8e0699f4d558c031ceb4c4e2f2414b8a530aac Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 21 Feb 2020 15:30:25 -0500 Subject: shtools: New package (#15133) * shtools: New package * shtools: Convert to MakefilePackage, use Spack's generic compiler flags * shtools: Make function location explicit --- .../repos/builtin/packages/shtools/package.py | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/shtools/package.py diff --git a/var/spack/repos/builtin/packages/shtools/package.py b/var/spack/repos/builtin/packages/shtools/package.py new file mode 100644 index 0000000000..77871d7a36 --- /dev/null +++ b/var/spack/repos/builtin/packages/shtools/package.py @@ -0,0 +1,47 @@ +# Copyright 2013-2020 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 Shtools(MakefilePackage): + """SHTOOLS - Spherical Harmonic Tools""" + + homepage = "https://shtools.github.io/SHTOOLS/" + url = "https://github.com/SHTOOLS/SHTOOLS/archive/v4.5.tar.gz" + + maintainers = ['eschnett'] + + version('4.5', sha256='1975a2a2bcef8c527d321be08c13c2bc479e0d6b81c468a3203f95df59be4f89') + + # Note: This package also provides Python wrappers. We do not + # install these properly yet, only the Fortran library is + # installed. + + variant('openmp', default=True, description="Enable OpenMP support") + + depends_on('blas') + depends_on('fftw') + depends_on('lapack') + + # Options for the Makefile + def makeopts(self, spec, prefix): + return [ + "F95={0}".format(self.compiler.fc), + ("F95FLAGS={0} -O3 -std=f2003 -ffast-math". + format(self.compiler.pic_flag)), + "OPENMPFLAGS={0}".format(self.compiler.openmp_flag), + "BLAS={0}".format(spec['blas'].libs), + "FFTW={0}".format(spec['fftw'].libs), + "LAPACK={0}".format(spec['lapack'].libs), + "PREFIX={0}".format(prefix), + ] + + def build(self, spec, prefix): + target = 'fortran-mp' if spec.satisfies('+openmp') else 'fortran' + make(target, *self.makeopts(self, spec, prefix)) + + def install(self, spec, prefix): + make('install', *self.makeopts(self, spec, prefix)) -- cgit v1.2.3-60-g2f50