summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/grid/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/grid/package.py')
-rw-r--r--var/spack/repos/builtin/packages/grid/package.py187
1 files changed, 99 insertions, 88 deletions
diff --git a/var/spack/repos/builtin/packages/grid/package.py b/var/spack/repos/builtin/packages/grid/package.py
index f868743efc..1427e2f2c6 100644
--- a/var/spack/repos/builtin/packages/grid/package.py
+++ b/var/spack/repos/builtin/packages/grid/package.py
@@ -10,111 +10,122 @@ class Grid(AutotoolsPackage):
"""Data parallel C++ mathematical object library."""
homepage = "https://github.com/paboyle/Grid"
- url = "https://github.com/paboyle/Grid/archive/refs/tags/0.8.2.tar.gz"
- git = "https://github.com/paboyle/Grid.git"
-
- maintainers = ['giordano']
-
- version('develop', branch='develop')
-
- variant('comms', default='mpi',
- values=('none', 'mpi', 'mpi3', conditional('shmem', when='^cray-mpich')),
- description='Choose communication interface')
- variant('fftw', default=True, description='Activate FFTW support')
- variant('lapack', default=False, description='Activate LAPACK support')
- variant('hdf5', default=False, description='Activate HDF5 support')
- variant('lime', default=False, description='Activate LIME support')
- variant('doxygen-doc', default=False,
- description='Build the documentation with doxygen')
- variant('gen-simd-width', default='64',
- description='Size (in bytes) of the generic SIMD vector type')
- variant('rng', default='sitmo', values=('sitmo', 'ranlux48', 'mt19937'),
- multi=False, description='RNG setting')
- variant('timers', default=True,
- description='System dependent high-resolution timers')
- variant('chroma', default=False,
- description='Chroma regression tests')
-
- depends_on('autoconf', type='build')
- depends_on('automake', type='build')
- depends_on('libtool', type='build')
- depends_on('m4', type='build')
- depends_on('gmp')
- depends_on('mpfr')
- depends_on('openssl')
-
- depends_on('mpi', when='comms=mpi')
- depends_on('cray-mpich', when='comms=shmem')
- depends_on('mpi@3:', when='comms=mpi3')
-
- depends_on('fftw-api@3', when='+fftw')
-
- depends_on('lapack', when='+lapack')
-
- depends_on('hdf5', when='+hdf5')
-
- depends_on('c-lime', when='+lime')
+ url = "https://github.com/paboyle/Grid/archive/refs/tags/0.8.2.tar.gz"
+ git = "https://github.com/paboyle/Grid.git"
+
+ maintainers = ["giordano"]
+
+ version("develop", branch="develop")
+
+ variant(
+ "comms",
+ default="mpi",
+ values=("none", "mpi", "mpi3", conditional("shmem", when="^cray-mpich")),
+ description="Choose communication interface",
+ )
+ variant("fftw", default=True, description="Activate FFTW support")
+ variant("lapack", default=False, description="Activate LAPACK support")
+ variant("hdf5", default=False, description="Activate HDF5 support")
+ variant("lime", default=False, description="Activate LIME support")
+ variant("doxygen-doc", default=False, description="Build the documentation with doxygen")
+ variant(
+ "gen-simd-width",
+ default="64",
+ description="Size (in bytes) of the generic SIMD vector type",
+ )
+ variant(
+ "rng",
+ default="sitmo",
+ values=("sitmo", "ranlux48", "mt19937"),
+ multi=False,
+ description="RNG setting",
+ )
+ variant("timers", default=True, description="System dependent high-resolution timers")
+ variant("chroma", default=False, description="Chroma regression tests")
+
+ depends_on("autoconf", type="build")
+ depends_on("automake", type="build")
+ depends_on("libtool", type="build")
+ depends_on("m4", type="build")
+ depends_on("gmp")
+ depends_on("mpfr")
+ depends_on("openssl")
+
+ depends_on("mpi", when="comms=mpi")
+ depends_on("cray-mpich", when="comms=shmem")
+ depends_on("mpi@3:", when="comms=mpi3")
+
+ depends_on("fftw-api@3", when="+fftw")
+
+ depends_on("lapack", when="+lapack")
+
+ depends_on("hdf5", when="+hdf5")
+
+ depends_on("c-lime", when="+lime")
depends_on("doxygen", type="build", when="+doxygen-doc")
def autoreconf(self, spec, prefix):
- Executable('./bootstrap.sh')()
+ Executable("./bootstrap.sh")()
def configure_args(self):
spec = self.spec
- args = ['--with-gmp', '--with-mpfr']
+ args = ["--with-gmp", "--with-mpfr"]
- if spec.satisfies('^intel-mkl'):
- if '+fftw' in spec or '+lapack' in spec:
- args.append('--enable-mkl')
+ if spec.satisfies("^intel-mkl"):
+ if "+fftw" in spec or "+lapack" in spec:
+ args.append("--enable-mkl")
else:
- if '+fftw' in spec:
- args.append('--with-fftw={0}'.format(self.spec['fftw'].prefix))
- if '+lapack' in spec:
- args.append('--enable-lapack={0}'.format(self.spec['lapack'].prefix))
+ if "+fftw" in spec:
+ args.append("--with-fftw={0}".format(self.spec["fftw"].prefix))
+ if "+lapack" in spec:
+ args.append("--enable-lapack={0}".format(self.spec["lapack"].prefix))
# lapack is searched only as `-llapack`, so anything else
# wouldn't be found, causing an error.
- args.append('LIBS={0}'.format(self.spec['lapack'].libs.ld_flags))
+ args.append("LIBS={0}".format(self.spec["lapack"].libs.ld_flags))
- if 'comms=none' not in spec:
+ if "comms=none" not in spec:
# The build system can easily get very confused about MPI support
# and what linker to use. In many case it'd end up building the
# code with support for MPI but without using `mpicxx` or linking to
# `-lmpi`, wreaking havoc. Forcing `CXX` to be mpicxx should help.
- args.extend([
- "CC={0}".format(spec['mpi'].mpicc),
- "CXX={0}".format(spec['mpi'].mpicxx),
- ])
-
- args += self.enable_or_disable('timers')
- args += self.enable_or_disable('chroma')
- args += self.enable_or_disable('doxygen-doc')
-
- if 'avx512' in spec.target:
- args.append('--enable-simd=AVX512')
- elif 'avx2' in spec.target:
- args.append('--enable-simd=AVX2')
- elif 'avx' in spec.target:
- if 'fma4' in spec.target:
- args.append('--enable-simd=AVXFMA4')
- elif 'fma' in spec.target:
- args.append('--enable-simd=AVXFMA')
+ args.extend(
+ [
+ "CC={0}".format(spec["mpi"].mpicc),
+ "CXX={0}".format(spec["mpi"].mpicxx),
+ ]
+ )
+
+ args += self.enable_or_disable("timers")
+ args += self.enable_or_disable("chroma")
+ args += self.enable_or_disable("doxygen-doc")
+
+ if "avx512" in spec.target:
+ args.append("--enable-simd=AVX512")
+ elif "avx2" in spec.target:
+ args.append("--enable-simd=AVX2")
+ elif "avx" in spec.target:
+ if "fma4" in spec.target:
+ args.append("--enable-simd=AVXFMA4")
+ elif "fma" in spec.target:
+ args.append("--enable-simd=AVXFMA")
else:
- args.append('--enable-simd=AVX')
- elif 'sse4_2' in spec.target:
- args.append('--enable-simd=SSE4')
- elif spec.target == 'a64fx':
- args.append('--enable-simd=A64FX')
- elif 'neon' in spec.target:
- args.append('--enable-simd=NEONv8')
+ args.append("--enable-simd=AVX")
+ elif "sse4_2" in spec.target:
+ args.append("--enable-simd=SSE4")
+ elif spec.target == "a64fx":
+ args.append("--enable-simd=A64FX")
+ elif "neon" in spec.target:
+ args.append("--enable-simd=NEONv8")
else:
- args.extend([
- '--enable-simd=GEN',
- '--enable-gen-simd-width={0}'.format(
- spec.variants['gen-simd-width'].value)
- ])
-
- args.append('--enable-comms={0}'.format(spec.variants['comms'].value))
- args.append('--enable-rng={0}'.format(spec.variants['rng'].value))
+ args.extend(
+ [
+ "--enable-simd=GEN",
+ "--enable-gen-simd-width={0}".format(spec.variants["gen-simd-width"].value),
+ ]
+ )
+
+ args.append("--enable-comms={0}".format(spec.variants["comms"].value))
+ args.append("--enable-rng={0}".format(spec.variants["rng"].value))
return args