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