62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
# Copyright 2013-2019 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 Steps(CMakePackage):
|
|
"""STochastic Engine for Pathway Simulation"""
|
|
|
|
homepage = "https://groups.oist.jp/cnu/software"
|
|
git = "https://github.com/CNS-OIST/STEPS.git"
|
|
|
|
version("3.3.0", submodules=True)
|
|
version("3.2.0", submodules=True)
|
|
version("develop", branch="master", submodules=True)
|
|
|
|
variant("native", default=True, description="Generate non-portable arch-specific code")
|
|
variant("lapack", default=False, description="Use new BDSystem/Lapack code for E-Field solver")
|
|
variant("petsc", default=False, description="Use PETSc library for parallel E-Field solver")
|
|
variant("mpi", default=True, description="Use MPI for parallel solvers")
|
|
|
|
depends_on("blas")
|
|
depends_on("lapack", when="+lapack")
|
|
depends_on("mpi", when="+mpi")
|
|
depends_on("petsc~debug+int64", when="+petsc")
|
|
depends_on("python")
|
|
depends_on("py-cython")
|
|
|
|
def cmake_args(self):
|
|
args = []
|
|
spec = self.spec
|
|
|
|
if "+native" in spec:
|
|
args.append("-DTARGET_NATIVE_ARCH:BOOL=True")
|
|
else:
|
|
args.append("-DTARGET_NATIVE_ARCH:BOOL=False")
|
|
|
|
if "+lapack" in spec:
|
|
args.append("-DUSE_BDSYSTEM_LAPACK:BOOL=True")
|
|
else:
|
|
args.append("-DUSE_BDSYSTEM_LAPACK:BOOL=False")
|
|
|
|
if "+petsc" in spec:
|
|
args.append("-DUSE_PETSC:BOOL=True")
|
|
else:
|
|
args.append("-DUSE_PETSC:BOOL=False")
|
|
|
|
if "+mpi" in spec:
|
|
args.append("-DUSE_MPI:BOOL=True")
|
|
else:
|
|
args.append("-DUSE_MPI:BOOL=False")
|
|
|
|
args.append('-DBLAS_LIBRARIES=' + spec['blas'].libs.joined(";"))
|
|
return args
|
|
|
|
def setup_run_environment(self, env):
|
|
# This recipe exposes a Python package from a C++ CMake project.
|
|
# This hook is required to reproduce what Spack PythonPackage does.
|
|
env.prepend_path('PYTHONPATH', self.prefix)
|