Open bdbaddog opened 6 years ago
This is quite old, still an issue?
Hmm. Looking at the code, I'd guess it's still an issue. ifort.py sets FORTRANFILESUFFIXES, and then calls the default fortran initializers.
if 'FORTRANFILESUFFIXES' not in env:
env['FORTRANFILESUFFIXES'] = ['.i']
else:
env['FORTRANFILESUFFIXES'].append('.i')
Which then does this:
try:
FortranSuffixes = env['FORTRANFILESUFFIXES']
except KeyError:
FortranSuffixes = ['.f', '.for', '.ftn']
So if I'm reading it right you end up with just .i as the known suffixes.
Move add_all_to_env
up above the adding of the .i
and .i90
suffixes?
Move
add_all_to_env
up above the adding of the.i
and.i90
suffixes?
Well, no, that doesn't work, because it's in the various add_*_to_env
routines where the known suffixes are added to the Object and SharedObject builders, so it's no good to add to that list later (unless the tool is prepared to do that addition itself).
@mwichmann Hi Mats, I ran into this as well but it's that it does not support .f90
either. I worked around it like this:
https://github.com/dnwillia-work/scons/commit/16e3cd2585a172ebd868d8bf8228c310beb0eadc
but ideally I think what you want here is that the Tool appends the additional suffixes. What I was finding is that the tool is overwriting but in this case Intel Fortran supports all the standard suffixes out of the box.
Was just poking at the FortranCommon part of this equation the other day, but I'm not sure the Intel variant is plugged in quite the same way. Be lovely if somebody gave me a spec for how everything does/should work, then we could just code it up :) Tools in general shouldn't overwrite construction variables, they should preserve what someone may have set if it makes sense. That's a widespread problem, unfortunately.
Personally I think the right thing to do is remove the .i
based suffixes entirely. So you could delete the code from the Intel Fortran modules that is setting that up and it will be fine.
If you look at the latest documentation those suffixes are not even mentioned anywhere.
As far as a spec goes, I don't think there is a standard reference for that, but it's basically like this:
.f
files are usually in fixed form format.f90
, .f95
, .f03
, .f08
are all free form formatted files and I think most compilers treat them as that.f
is capitalized as F
then the file should be run through the Fortran preprocessor before compilation.Regarding the version specific file extensions there is/was a convention I think that the module or code within uses features of that standard but that's not necessarily enforced by the compilers I think. Projects might adopt this convention because they have both modern and legacy Fortran.
This issue was originally created at: 2008-06-22 23:30:51. This issue was reported by:
audiofanatic
. audiofanatic said at 2008-06-22 23:30:51stevenknight said at 2008-06-23 05:35:20
cournape said at 2008-06-25 00:03:58
audiofanatic said at 2008-06-26 00:25:14
audiofanatic said at 2008-06-26 00:31:44
def GetTools(env): import SCons.Tool libTool = SCons.Tool.FindTool(['mslib', 'ar'], env) forTool = SCons.Tool.FindTool(['ifort', 'f90', 'fortran'], env) return (libTool, forTool)
def generate(env): import SCons.Tool libTool, forTool = GetTools(env) env.Tool(forTool) env.Tool(libTool)
def exists(env): libTool, forTool = GetTools(env) if not libTool: return 0 if not forTool: return 0 return 1
gregnoel said at 2010-07-21 16:58:12
gregnoel said at 2010-08-08 13:03:32