19d310bb7SBarry Smith#!/usr/bin/env python 29d310bb7SBarry Smithfrom __future__ import generators 39d310bb7SBarry Smithimport config.base 49d310bb7SBarry Smith 59d310bb7SBarry Smithclass Configure(config.base.Configure): 69d310bb7SBarry Smith def __init__(self, framework): 79d310bb7SBarry Smith config.base.Configure.__init__(self, framework) 89d310bb7SBarry Smith self.headerPrefix = '' 99d310bb7SBarry Smith self.substPrefix = '' 109d310bb7SBarry Smith return 119d310bb7SBarry Smith 129d310bb7SBarry Smith def __str1__(self): 139d310bb7SBarry Smith if not hasattr(self, 'clanguage'): 149d310bb7SBarry Smith return '' 15a9acdec7SBarry Smith return ' Language used to compile PETSc: ' + self.clanguage +'\n' 169d310bb7SBarry Smith 179d310bb7SBarry Smith def setupHelp(self, help): 189d310bb7SBarry Smith import nargs 199d310bb7SBarry 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.')) 209d310bb7SBarry Smith return 219d310bb7SBarry Smith 229d310bb7SBarry Smith def setupDependencies(self, framework): 239d310bb7SBarry Smith config.base.Configure.setupDependencies(self, framework) 240542e31aSBarry Smith 259d310bb7SBarry Smith return 269d310bb7SBarry Smith 279d310bb7SBarry Smith def configureCLanguage(self): 289d310bb7SBarry Smith '''Choose whether to compile the PETSc library using a C or C++ compiler''' 299d310bb7SBarry Smith self.clanguage = self.framework.argDB['with-clanguage'].upper().replace('+','x').replace('X','x') 309d310bb7SBarry Smith if not self.clanguage in ['C', 'Cxx']: 319d310bb7SBarry Smith raise RuntimeError('Invalid C language specified: '+str(self.clanguage)) 32bb376940SSatish Balay if self.clanguage == 'Cxx': 33408d3fceSSatish Balay self.logPrintBox('WARNING -with-clanguage=C++ is a developer feature and is *not* required for regular usage of PETSc either from C or C++') 347ad10985SMatthew G. Knepley self.logPrint('C language is '+str(self.clanguage)) 359d310bb7SBarry Smith self.addDefine('CLANGUAGE_'+self.clanguage.upper(),'1') 36*f5718a65SBarry Smith self.addMakeMacro('CLANGUAGE',self.clanguage.upper()) 379d310bb7SBarry Smith 389d310bb7SBarry Smith def configure(self): 399d310bb7SBarry Smith self.executeTest(self.configureCLanguage) 409d310bb7SBarry Smith return 41