xref: /petsc/config/PETSc/options/indexTypes.py (revision bebe2cf65d55febe21a5af8db2bd2e168caaa2e7)
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