1*9d310bb7SBarry Smith#!/usr/bin/env python 2*9d310bb7SBarry Smithfrom __future__ import generators 3*9d310bb7SBarry Smithimport user 4*9d310bb7SBarry Smithimport config.base 5*9d310bb7SBarry Smith 6*9d310bb7SBarry Smithclass Configure(config.base.Configure): 7*9d310bb7SBarry Smith def __init__(self, framework): 8*9d310bb7SBarry Smith config.base.Configure.__init__(self, framework) 9*9d310bb7SBarry Smith self.headerPrefix = '' 10*9d310bb7SBarry Smith self.substPrefix = '' 11*9d310bb7SBarry Smith return 12*9d310bb7SBarry Smith 13*9d310bb7SBarry Smith def __str1__(self): 14*9d310bb7SBarry Smith if not hasattr(self, 'clanguage'): 15*9d310bb7SBarry Smith return '' 16*9d310bb7SBarry Smith return ' Clanguage: ' + self.clanguage +'\n' 17*9d310bb7SBarry Smith 18*9d310bb7SBarry Smith def setupHelp(self, help): 19*9d310bb7SBarry Smith import nargs 20*9d310bb7SBarry Smith 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*9d310bb7SBarry Smith return 22*9d310bb7SBarry Smith 23*9d310bb7SBarry Smith def setupDependencies(self, framework): 24*9d310bb7SBarry Smith config.base.Configure.setupDependencies(self, framework) 25*9d310bb7SBarry Smith return 26*9d310bb7SBarry Smith 27*9d310bb7SBarry Smith def configureCLanguage(self): 28*9d310bb7SBarry Smith '''Choose whether to compile the PETSc library using a C or C++ compiler''' 29*9d310bb7SBarry Smith self.clanguage = self.framework.argDB['with-clanguage'].upper().replace('+','x').replace('X','x') 30*9d310bb7SBarry Smith if not self.clanguage in ['C', 'Cxx']: 31*9d310bb7SBarry Smith raise RuntimeError('Invalid C language specified: '+str(self.clanguage)) 32*9d310bb7SBarry Smith self.framework.logPrint('C language is '+str(self.clanguage)) 33*9d310bb7SBarry Smith self.addDefine('CLANGUAGE_'+self.clanguage.upper(),'1') 34*9d310bb7SBarry Smith self.framework.require('config.setCompilers', None).mainLanguage = self.clanguage 35*9d310bb7SBarry Smith 36*9d310bb7SBarry Smith def configure(self): 37*9d310bb7SBarry Smith self.executeTest(self.configureCLanguage) 38*9d310bb7SBarry Smith return 39