From 467d501060dbad60584a310ab75d9c85778b1ee6 Mon Sep 17 00:00:00 2001 From: sknigh Date: Tue, 18 Sep 2018 19:06:13 -0700 Subject: [PATCH] sst-macro package: add versions and variants (#9271) Added variants for: mpi support, clang skeletonizer, building as static and/or shared, and more. --- .../builtin/packages/sst-macro/package.py | 71 ++++++++++++++----- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/sst-macro/package.py b/var/spack/repos/builtin/packages/sst-macro/package.py index 20da0481af..9722e30f36 100644 --- a/var/spack/repos/builtin/packages/sst-macro/package.py +++ b/var/spack/repos/builtin/packages/sst-macro/package.py @@ -22,40 +22,79 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -# -# Author: Samuel Knight -# Date: Feb 3, 2017 -# from spack import * class SstMacro(AutotoolsPackage): - """The SST/macro software package provides a simulator for large-scale - parallel computer architectures for the coarse-grained study of - distributed-memory applications. The simulator is driven from either a + """The Structural Simulation Toolkit Macroscale Element Library simulates + large-scale parallel computer architectures for the coarse-grained study + of distributed-memory applications. The simulator is driven from either a trace file or skeleton application. SST/macro's modular architecture can - be extended with additional network models, trace file formats, - software services, and processor models. + be extended with additional network models, trace file formats, software + services, and processor models. """ 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" 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') - depends_on('boost@1.59:') - depends_on('autoconf@1.68:', type='build', when='@master') - depends_on('automake@1.11.1:', type='build', when='@master') - depends_on('libtool@1.2.4:', type='build', when='@master') - depends_on('m4', type='build', when='@master') + depends_on('boost@1.59:', when='@:6.1.0') + + depends_on('autoconf@1.68:', type='build', when='@develop') + depends_on('automake@1.11.1:', type='build', when='@develop') + 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') def bootstrap(self): - if '@master' in self.spec: + if '@develop' in self.spec: Executable('./bootstrap.sh')() def configure_args(self): 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