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