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