diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/amrex/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/amrex/package.py | 133 |
1 files changed, 60 insertions, 73 deletions
diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 89533db2e6..abf1e54968 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -1,86 +1,73 @@ -############################################################################## -# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. +# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. # -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/spack/spack -# Please also see the NOTICE and LICENSE files for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -############################################################################## +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + from spack import * class Amrex(CMakePackage): - """AMReX is the successor to BoxLib. - It is a Block-Structured AMR Framework. - """ - - homepage = "https://ccse.lbl.gov/AMReX/index.html" - url = "https://github.com/AMReX-Codes/amrex.git" + """AMReX is a publicly available software framework designed + for building massively parallel block- structured adaptive + mesh refinement (AMR) applications.""" - version('17.06', git='https://github.com/AMReX-Codes/amrex.git', commit='836d3c7') - version('master', git='https://github.com/AMReX-Codes/amrex.git', tag='master') - version('develop', git='https://github.com/AMReX-Codes/amrex.git', tag='development') + homepage = "https://amrex-codes.github.io/amrex/" + git = "https://github.com/AMReX-Codes/amrex.git" - variant('dims', - default='3', - values=('1', '2', '3'), - multi=False, - description='Number of spatial dimensions') + version('develop', branch='development') + version('18.10.1', commit='260b53169badaa760b91dfc60ea6b2ea3d9ccf06') # tag:18.10.1 + version('18.10', commit='d37a266c38092e1174096e245326e9eead1f4e03') # tag:18.10 + version('18.09.1', commit='88120db4736c325a2d3d2c291adacaffd3bf224b') # tag:18.09.1 - variant('prec', - default='DOUBLE', - values=('FLOAT', 'DOUBLE'), - multi=False, - description='Floating point precision') - - variant('mpi', default=True, description='Enable MPI parallel support') - variant('openmp', default=False, description='Enable OpenMP parallel support') - variant('fortran', default=True, description='Enable Fortran support') - variant('debug', default=False, description='Enable debugging features') - variant('particles', default=False, description='Include particle classes in build') + # Config options + variant('dimensions', default='3', + description='Dimensionality', values=('2', '3')) + variant('shared', default=False, + description='Build shared library') + variant('mpi', default=True, + description='Build with MPI support') + variant('openmp', default=False, + description='Build with OpenMP support') + variant('precision', default='double', + description='Real precision (double/single)', + values=('single', 'double')) + variant('eb', default=False, + description='Build Embedded Boundary classes') + variant('fortran', default=False, + description='Build Fortran API') + variant('linear_solvers', default=True, + description='Build linear solvers') + variant('amrdata', default=False, + description='Build data services') + variant('particles', default=False, + description='Build particle classes') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release')) + # Build dependencies depends_on('mpi', when='+mpi') + depends_on('python@2.7:', type='build') + depends_on('cmake@3.5:', type='build') + conflicts('%clang') - def cmake_args(self): - spec = self.spec + def cmake_is_on(self, option): + return 'ON' if option in self.spec else 'OFF' - cmake_args = [ - '-DENABLE_POSITION_INDEPENDENT_CODE=ON', - '-DBL_SPACEDIM:INT=%d' % int(spec.variants['dims'].value), - '-DBL_PRECISION:STRING=%s' % spec.variants['prec'].value, - '-DENABLE_FMG=%s' % ('+fortran' in spec), - '-DENABLE_FBASELIB=%s' % ('+fortran' in spec), - '-DBL_DEBUG:INT=%d' % int('+debug' in spec), - '-DBL_USE_PARTICLES:INT=%d' % int('+particles' in spec), - '-DENABLE_MPI:INT=%d' % int('+mpi' in spec), - '-DENABLE_OpenMP:INT=%d' % int('+openmp' in spec), + def cmake_args(self): + args = [ + '-DUSE_XSDK_DEFAULTS=ON', + '-DDIM:STRING=%s' % self.spec.variants['dimensions'].value, + '-DBUILD_SHARED_LIBS:BOOL=%s' % self.cmake_is_on('+shared'), + '-DENABLE_MPI:BOOL=%s' % self.cmake_is_on('+mpi'), + '-DENABLE_OMP:BOOL=%s' % self.cmake_is_on('+openmp'), + '-DXSDK_PRECISION:STRING=%s' % + self.spec.variants['precision'].value.upper(), + '-DENABLE_EB:BOOL=%s' % self.cmake_is_on('+eb'), + '-DXSDK_ENABLE_Fortran:BOOL=%s' % self.cmake_is_on('+fortran'), + '-DENABLE_LINEAR_SOLVERS:BOOL=%s' % + self.cmake_is_on('+linear_solvers'), + '-DENABLE_AMRDATA:BOOL=%s' % self.cmake_is_on('+amrdata'), + '-DENABLE_PARTICLES:BOOL=%s' % self.cmake_is_on('+particles') ] - - if '+mpi' in spec: - cmake_args += [ - '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, - '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx - ] - if '+fortran' in spec: - cmake_args += [ - '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc - ] - cmake_args += ['-DENABLE_FORTRAN_MPI=%s' % ('+fortran' in spec)] - - return cmake_args + return args |