# Copyright 2013-2022 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.package import *
class Discotec(CMakePackage):
"""This project contains DisCoTec, a code for the distributed sparse
grid combination technique with MPI parallelization."""
homepage = "https://github.com/SGpp/DisCoTec"
url = "https://github.com/SGpp/DisCoTec"
git = "https://github.com/SGpp/DisCoTec"
maintainers("freifrauvonbleifrei", "pfluegdk")
version("main", branch="main")
variant("compression", default=False, description="Write sparse grid files compressed")
variant("ft", default=False, description="DisCoTec with algorithm-based fault tolerance")
variant("gene", default=False, description="Build for GENE (as task library)")
variant("hdf5", default=True, description="Interpolation output with HDF5")
variant("lto", default=True, description="Build with link-time optimization")
variant("openmp", default=True, description="Parallelize with OpenMP")
variant("timing", default=True, description="With high-res timers")
variant("selalib", default=False, description="Build selalib example")
variant("vtk", default=False, description="Build with VTK support")
depends_on("boost +test +serialization +filesystem +system +program_options +date_time")
depends_on("cmake@3.24.2:", type="build")
depends_on("glpk")
depends_on("highfive+mpi+boost+ipo", when="+hdf5")
depends_on("lz4", when="+compression")
depends_on("mpi")
depends_on("selalib", when="+selalib")
depends_on("vtk", when="+vtk")
def cmake_args(self):
args = [
self.define("DISCOTEC_BUILD_MISSING_DEPS", False),
self.define_from_variant("DISCOTEC_WITH_COMPRESSION", "compression"),
self.define_from_variant("DISCOTEC_ENABLEFT", "ft"),
self.define_from_variant("DISCOTEC_GENE", "gene"),
self.define_from_variant("DISCOTEC_OPENMP", "openmp"),
self.define_from_variant("DISCOTEC_TIMING", "timing"),
self.define_from_variant("DISCOTEC_USE_HIGHFIVE", "hdf5"),
self.define_from_variant("DISCOTEC_USE_LTO", "lto"),
self.define_from_variant("DISCOTEC_USE_VTK", "vtk"),
self.define_from_variant("DISCOTEC_WITH_SELALIB", "selalib"),
]
if "+selalib" in self.spec:
args.append(self.define("SELALIB_DIR", self.spec["selalib"].prefix.cmake))
return args