1from __future__ import generators 2import config.base 3 4class Configure(config.base.Configure): 5 def __init__(self, framework): 6 config.base.Configure.__init__(self, framework) 7 self.headerPrefix = '' 8 self.substPrefix = '' 9 return 10 11 def __str__(self): 12 return '' 13 14 def setupHelp(self, help): 15 import nargs 16 return 17 18 def setupDependencies(self, framework): 19 config.base.Configure.setupDependencies(self, framework) 20 self.compilers = self.framework.require('config.compilers', self) 21 self.setCompilers = self.framework.require('config.setCompilers', 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 31 self.libraries.pushLanguage('FC') 32 self.libraries.saveLog() 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.logWrite(self.libraries.restoreLog()) 35 self.libraries.popLanguage() 36 self.addDefine('HAVE_FORTRAN_GET_COMMAND_ARGUMENT',1) 37 return 38 39 # These are for when the routines are called from C 40 # We should unify the naming conventions of these. 41 self.pushLanguage('C') 42 self.libraries.saveLog() 43 self.functions.saveLog() 44 if self.libraries.check('','getarg', otherLibs = self.compilers.flibs, fortranMangle = 1): 45 self.logWrite(self.functions.restoreLog()) 46 self.logWrite(self.libraries.restoreLog()) 47 self.popLanguage() 48 self.addDefine('HAVE_GETARG',1) 49 return 50 51 self.pushLanguage('C') 52 self.libraries.saveLog() 53 self.functions.saveLog() 54 if self.functions.check('ipxfargc_', libraries = self.compilers.flibs): 55 self.logWrite(self.functions.restoreLog()) 56 self.logWrite(self.libraries.restoreLog()) 57 self.popLanguage() 58 self.addDefine('HAVE_PXFGETARG_NEW',1) 59 return 60 61 self.pushLanguage('C') 62 self.libraries.saveLog() 63 self.functions.saveLog() 64 if self.functions.check('f90_unix_MP_iargc', libraries = self.compilers.flibs): 65 self.logWrite(self.functions.restoreLog()) 66 self.logWrite(self.libraries.restoreLog()) 67 self.popLanguage() 68 self.addDefine('HAVE_NAGF90',1) 69 return 70 71 self.pushLanguage('C') 72 self.libraries.saveLog() 73 self.functions.saveLog() 74 if self.functions.check('PXFGETARG', libraries = self.compilers.flibs): 75 self.logWrite(self.functions.restoreLog()) 76 self.logWrite(self.libraries.restoreLog()) 77 self.popLanguage() 78 self.addDefine('HAVE_PXFGETARG',1) 79 return 80 81 self.pushLanguage('C') 82 self.libraries.saveLog() 83 self.functions.saveLog() 84 if self.functions.check('iargc_', libraries = self.compilers.flibs): 85 self.logWrite(self.functions.restoreLog()) 86 self.logWrite(self.libraries.restoreLog()) 87 self.popLanguage() 88 self.addDefine('HAVE_BGL_IARGC',1) 89 return 90 91 self.pushLanguage('C') 92 self.libraries.saveLog() 93 self.functions.saveLog() 94 if self.functions.check('GETARG@16', libraries = self.compilers.flibs): 95 self.logWrite(self.functions.restoreLog()) 96 self.logWrite(self.libraries.restoreLog()) 97 self.popLanguage() 98 self.addDefine('USE_NARGS',1) 99 self.addDefine('HAVE_IARG_COUNT_PROGNAME',1) 100 return 101 102 self.pushLanguage('C') 103 self.libraries.saveLog() 104 self.functions.saveLog() 105 self.functions.check('_gfortran_iargc', libraries = self.compilers.flibs) 106 self.logWrite(self.functions.restoreLog()) 107 self.logWrite(self.libraries.restoreLog()) 108 self.popLanguage() 109 return 110 111 def configure(self): 112 if hasattr(self.setCompilers, 'FC'): 113 self.executeTest(self.configureFortranCommandLine) 114 return 115