1#!/usr/bin/env python 2from __future__ import generators 3import config.base 4 5class Configure(config.base.Configure): 6 def __init__(self, framework): 7 config.base.Configure.__init__(self, framework) 8 self.headerPrefix = '' 9 self.substPrefix = '' 10 return 11 12 def __str1__(self): 13 desc = [] 14 if hasattr(self, 'integerSize'): 15 desc.append(' Integer size: ' + str(self.integerSize)) 16 return '\n'.join(desc)+'\n' 17 18 def setupHelp(self, help): 19 import nargs 20 help.addArgument('PETSc', '-with-64-bit-indices=<bool>', nargs.ArgBool(None, 0, 'Use 64 bit integers (long long) for indexing in vectors and matrices')) 21 return 22 23 def setupDependencies(self, framework): 24 config.base.Configure.setupDependencies(self, framework) 25 self.setCompilers = framework.require('config.setCompilers', self) 26 self.libraries = framework.require('config.libraries', None) 27 self.compilers = framework.require('config.compilers', None) 28 return 29 30 def configureIndexSize(self): 31 if self.framework.argDB['with-64-bit-indices']: 32 self.integerSize = 64 33 self.addDefine('USE_64BIT_INDICES', 1) 34 if self.libraries.check('-lgcc_s.1', '__floatdidf'): 35 self.compilers.LIBS += ' '+self.libraries.getLibArgument('-lgcc_s.1') 36 self.addMakeMacro('PETSC_INDEX_SIZE', '64') 37 else: 38 self.integerSize = 32 39 self.addMakeMacro('PETSC_INDEX_SIZE', '32') 40 return 41 42 def configure(self): 43 self.executeTest(self.configureIndexSize) 44 return 45