xref: /petsc/config/PETSc/options/indexTypes.py (revision 4e4bbfaa3814cc83b5851d85be69070845f5653e)
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/8) + ' bytes')
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