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 ' Clanguage: ' + 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 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.framework.require('config.setCompilers', None).mainLanguage = self.clanguage 36 37 def configure(self): 38 self.executeTest(self.configureCLanguage) 39 return 40