xref: /petsc/config/PETSc/options/languages.py (revision f5718a659ef69889f2c6fbadb0450f8a64d05808)
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