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 __str__(self): 13 return '' 14 15 def setupHelp(self, help): 16 import nargs 17 return 18 19 def setupDependencies(self, framework): 20 config.base.Configure.setupDependencies(self, framework) 21 self.compilers = self.framework.require('config.compilers', self) 22 self.functions = self.framework.require('config.functions', self) 23 self.libraries = framework.require('config.libraries', self) 24 return 25 26 def configureFortranCommandLine(self): 27 '''Check for the mechanism to retrieve command line arguments in Fortran''' 28 29 # These are for when the routines are called from Fortran 30 if hasattr(self.compilers, 'FC'): 31 self.libraries.saveLog() 32 self.libraries.pushLanguage('FC') 33 if self.libraries.check('','', call = ' integer i\n character*(80) arg\n i = command_argument_count()\n call get_command_argument(i,arg)'): 34 self.addDefine('HAVE_FORTRAN_GET_COMMAND_ARGUMENT',1) 35 elif self.libraries.check('','', call = ' integer i\n character*(80) arg\n call getarg(i,arg)'): 36 self.addDefine('HAVE_FORTRAN_GETARG',1) 37 self.libraries.popLanguage() 38 self.logWrite(self.libraries.restoreLog()) 39 40 # These are for when the routines are called fraom C 41 # We should unify the naming conventions of these. 42 self.pushLanguage('C') 43 self.libraries.saveLog() 44 self.functions.saveLog() 45 # This one is not currently used in PETSc source code 46 if self.libraries.check('','get_command_argument', otherLibs = self.compilers.flibs, fortranMangle = 1): 47 self.addDefine('HAVE_GET_COMMAND_ARGUMENT',1) 48 if self.libraries.check('','getarg', otherLibs = self.compilers.flibs, fortranMangle = 1): 49 self.addDefine('HAVE_GETARG',1) 50 if self.functions.check('ipxfargc_', libraries = self.compilers.flibs): 51 self.addDefine('HAVE_PXFGETARG_NEW',1) 52 elif self.functions.check('f90_unix_MP_iargc', libraries = self.compilers.flibs): 53 self.addDefine('HAVE_NAGF90',1) 54 elif self.functions.check('PXFGETARG', libraries = self.compilers.flibs): 55 self.addDefine('HAVE_PXFGETARG',1) 56 elif self.functions.check('iargc_', libraries = self.compilers.flibs): 57 self.addDefine('HAVE_BGL_IARGC',1) 58 elif self.functions.check('GETARG@16', libraries = self.compilers.flibs): 59 self.addDefine('USE_NARGS',1) 60 self.addDefine('HAVE_IARG_COUNT_PROGNAME',1) 61 else: 62 self.functions.check('_gfortran_iargc', libraries = self.compilers.flibs) 63 self.popLanguage() 64 self.logWrite(self.libraries.restoreLog()) 65 self.logWrite(self.functions.restoreLog()) 66 return 67 68 def configure(self): 69 self.executeTest(self.configureFortranCommandLine) 70 return 71