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 desc = ['PETSc:'] 15 desc.append(' Language used to compile PETSc: ' + self.clanguage) 16 return '\n'.join(desc)+'\n' 17 18 def setupHelp(self, help): 19 import nargs 20 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.')) 21 return 22 23 def setupDependencies(self, framework): 24 config.base.Configure.setupDependencies(self, framework) 25 26 return 27 28 def configureCLanguage(self): 29 '''Choose whether to compile the PETSc library using a C or C++ compiler''' 30 self.clanguage = self.framework.argDB['with-clanguage'].upper().replace('+','x').replace('X','x') 31 if not self.clanguage in ['C', 'Cxx']: 32 raise RuntimeError('Invalid C language specified: '+str(self.clanguage)) 33 if self.clanguage == 'Cxx': 34 self.logPrintBox('WARNING -with-clanguage=C++ is a developer feature and is *not* required for regular usage of PETSc either from C or C++') 35 self.logPrint('C language is '+str(self.clanguage)) 36 self.addDefine('CLANGUAGE_'+self.clanguage.upper(),'1') 37 self.addMakeMacro('CLANGUAGE',self.clanguage.upper()) 38 39 def configure(self): 40 self.executeTest(self.configureCLanguage) 41 return 42