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.setCompilers = self.framework.require('config.setCompilers', 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 32 self.libraries.pushLanguage('FC') 33 self.libraries.saveLog() 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.logWrite(self.libraries.restoreLog()) 36 self.libraries.popLanguage() 37 self.addDefine('HAVE_FORTRAN_GET_COMMAND_ARGUMENT',1) 38 return 39 40 self.libraries.pushLanguage('FC') 41 self.libraries.saveLog() 42 if self.libraries.check('','', call = ' integer i\n character*(80) arg\n call getarg(i,arg)'): 43 self.logWrite(self.libraries.restoreLog()) 44 self.libraries.popLanguage() 45 self.addDefine('HAVE_FORTRAN_GETARG',1) 46 return 47 48 # These are for when the routines are called from C 49 # We should unify the naming conventions of these. 50 self.pushLanguage('C') 51 self.libraries.saveLog() 52 self.functions.saveLog() 53 if self.libraries.check('','getarg', otherLibs = self.compilers.flibs, fortranMangle = 1): 54 self.logWrite(self.functions.restoreLog()) 55 self.logWrite(self.libraries.restoreLog()) 56 self.popLanguage() 57 self.addDefine('HAVE_GETARG',1) 58 return 59 60 self.pushLanguage('C') 61 self.libraries.saveLog() 62 self.functions.saveLog() 63 if self.functions.check('ipxfargc_', libraries = self.compilers.flibs): 64 self.logWrite(self.functions.restoreLog()) 65 self.logWrite(self.libraries.restoreLog()) 66 self.popLanguage() 67 self.addDefine('HAVE_PXFGETARG_NEW',1) 68 return 69 70 self.pushLanguage('C') 71 self.libraries.saveLog() 72 self.functions.saveLog() 73 if self.functions.check('f90_unix_MP_iargc', libraries = self.compilers.flibs): 74 self.logWrite(self.functions.restoreLog()) 75 self.logWrite(self.libraries.restoreLog()) 76 self.popLanguage() 77 self.addDefine('HAVE_NAGF90',1) 78 return 79 80 self.pushLanguage('C') 81 self.libraries.saveLog() 82 self.functions.saveLog() 83 if self.functions.check('PXFGETARG', libraries = self.compilers.flibs): 84 self.logWrite(self.functions.restoreLog()) 85 self.logWrite(self.libraries.restoreLog()) 86 self.popLanguage() 87 self.addDefine('HAVE_PXFGETARG',1) 88 return 89 90 self.pushLanguage('C') 91 self.libraries.saveLog() 92 self.functions.saveLog() 93 if self.functions.check('iargc_', libraries = self.compilers.flibs): 94 self.logWrite(self.functions.restoreLog()) 95 self.logWrite(self.libraries.restoreLog()) 96 self.popLanguage() 97 self.addDefine('HAVE_BGL_IARGC',1) 98 return 99 100 self.pushLanguage('C') 101 self.libraries.saveLog() 102 self.functions.saveLog() 103 if self.functions.check('GETARG@16', libraries = self.compilers.flibs): 104 self.logWrite(self.functions.restoreLog()) 105 self.logWrite(self.libraries.restoreLog()) 106 self.popLanguage() 107 self.addDefine('USE_NARGS',1) 108 self.addDefine('HAVE_IARG_COUNT_PROGNAME',1) 109 return 110 111 self.pushLanguage('C') 112 self.libraries.saveLog() 113 self.functions.saveLog() 114 self.functions.check('_gfortran_iargc', libraries = self.compilers.flibs) 115 self.logWrite(self.functions.restoreLog()) 116 self.logWrite(self.libraries.restoreLog()) 117 self.popLanguage() 118 return 119 120 def configure(self): 121 if hasattr(self.setCompilers, 'FC'): 122 self.executeTest(self.configureFortranCommandLine) 123 return 124