xref: /petsc/config/PETSc/options/languages.py (revision 3fc23ce8277e00a65c4b1be6e2b4535b56ba7978)
1from __future__ import generators
2import config.base
3
4class Configure(config.base.Configure):
5  def __init__(self, framework):
6    config.base.Configure.__init__(self, framework)
7    self.headerPrefix = ''
8    self.substPrefix  = ''
9    return
10
11  def __str1__(self):
12    if not hasattr(self, 'clanguage'):
13      return ''
14    return '  Language used to compile PETSc: ' + self.clanguage +'\n'
15
16  def setupHelp(self, help):
17    import nargs
18    help.addArgument('PETSc', '-with-clanguage=<C or C++>', nargs.Arg(None, 'C', 'Specify C (recommended) or C++ to compile PETSc. You can use C++ in either case.'))
19    return
20
21  def setupDependencies(self, framework):
22    config.base.Configure.setupDependencies(self, framework)
23
24    return
25
26  def configureCLanguage(self):
27    '''Choose whether to compile the PETSc library using a C or C++ compiler'''
28    self.clanguage = self.framework.argDB['with-clanguage'].upper().replace('+','x').replace('X','x')
29    if not self.clanguage in ['C', 'Cxx']:
30      raise RuntimeError('Invalid C language specified: '+str(self.clanguage))
31    if self.clanguage == 'Cxx':
32      self.logPrintBox('WARNING -with-clanguage=C++ is a developer feature and is *not* required for regular usage of PETSc either from C or C++')
33    self.logPrint('C language is '+str(self.clanguage))
34    self.addDefine('CLANGUAGE_'+self.clanguage.upper(),'1')
35    self.addMakeMacro('CLANGUAGE',self.clanguage.upper())
36
37  def configure(self):
38    self.executeTest(self.configureCLanguage)
39    return
40