sst-macro package: add versions and variants (#9271)

Added variants for: mpi support, clang skeletonizer, building as
static and/or shared, and more.
This commit is contained in:
sknigh 2018-09-18 19:06:13 -07:00 committed by scheibelp
parent 3f04ebf600
commit 467d501060

View file

@ -22,40 +22,79 @@
# License along with this program; if not, write to the Free Software # License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
#
# Author: Samuel Knight <sknigh@sandia.gov>
# Date: Feb 3, 2017
#
from spack import * from spack import *
class SstMacro(AutotoolsPackage): class SstMacro(AutotoolsPackage):
"""The SST/macro software package provides a simulator for large-scale """The Structural Simulation Toolkit Macroscale Element Library simulates
parallel computer architectures for the coarse-grained study of large-scale parallel computer architectures for the coarse-grained study
distributed-memory applications. The simulator is driven from either a of distributed-memory applications. The simulator is driven from either a
trace file or skeleton application. SST/macro's modular architecture can trace file or skeleton application. SST/macro's modular architecture can
be extended with additional network models, trace file formats, be extended with additional network models, trace file formats, software
software services, and processor models. services, and processor models.
""" """
homepage = "http://sst.sandia.gov/about_sstmacro.html" homepage = "http://sst.sandia.gov/about_sstmacro.html"
url = "https://github.com/sstsimulator/sst-macro/releases/download/v6.1.0_Final/sstmacro-6.1.0.tar.gz" url = "https://github.com/sstsimulator/sst-macro/releases/download/v6.1.0_Final/sstmacro-6.1.0.tar.gz"
git = "https://github.com/sstsimulator/sst-macro.git" git = "https://github.com/sstsimulator/sst-macro.git"
version('master', branch='master') version('develop', branch='devel')
version('8.0.0', sha256='8618a259e98ede9a1a2ce854edd4930628c7c5a770c3915858fa840556c1861f')
version('6.1.0', '98b737be6326b8bd711de832ccd94d14') version('6.1.0', '98b737be6326b8bd711de832ccd94d14')
depends_on('boost@1.59:') depends_on('boost@1.59:', when='@:6.1.0')
depends_on('autoconf@1.68:', type='build', when='@master')
depends_on('automake@1.11.1:', type='build', when='@master') depends_on('autoconf@1.68:', type='build', when='@develop')
depends_on('libtool@1.2.4:', type='build', when='@master') depends_on('automake@1.11.1:', type='build', when='@develop')
depends_on('m4', type='build', when='@master') depends_on('libtool@1.2.4:', type='build', when='@develop')
depends_on('m4', type='build', when='@develop')
depends_on('binutils', type='build')
depends_on('zlib', type=('build', 'link'))
depends_on('otf2', when='+otf2')
depends_on('llvm+clang@:5.99.99', when='+skeletonizer')
depends_on('mpi', when='+mpi')
variant('otf2', default=False, description='Enable OTF2 trace emission and replay support')
variant('skeletonizer', default=False, description='Enable Clang source-to-source autoskeletonization')
variant('threaded', default=False, description='Enable thread-parallel PDES simulation')
variant('mpi', default=True, description='Enable distributed PDES simulation')
variant('static', default=True, description='Build static libraries')
variant('shared', default=True, description='Build shared libraries')
@run_before('autoreconf') @run_before('autoreconf')
def bootstrap(self): def bootstrap(self):
if '@master' in self.spec: if '@develop' in self.spec:
Executable('./bootstrap.sh')() Executable('./bootstrap.sh')()
def configure_args(self): def configure_args(self):
args = ['--disable-regex'] args = ['--disable-regex']
# Set CFLAGS and CXXFLAGS so they won't automatically insert '-g'
env['CFLAGS'] = '-O2'
env['CXXFLAGS'] = '-O2'
spec = self.spec
args.append(
'--enable-static=%s' % ('yes' if '+static' in spec else 'no'))
args.append(
'--enable-shared=%s' % ('yes' if '+shared' in spec else 'no'))
if spec.satisfies("@8.0.0:"):
args.extend([
'--%sable-otf2' % ('en' if '+otf2' in spec else 'dis'),
'--%sable-multithread' % (
'en' if '+threaded' in spec else 'dis')
])
if '+skeletonizer' in spec:
args.append('--with-clang=' + spec['llvm'].prefix)
# Optional MPI support
if '+mpi' in spec:
env['CC'] = spec['mpi'].mpicc
env['CXX'] = spec['mpi'].mpicxx
env['F77'] = spec['mpi'].mpif77
env['FC'] = spec['mpi'].mpifc
return args return args