Merged revisions 2867-2879 via svnmerge from
[scons.git] / src / engine / SCons / Tool / f95.py
index 94786c847f8ca821f36c952d7202d21a884879c6..545894a74a8918a3bf41087cde656e6565886115 100644 (file)
@@ -37,99 +37,21 @@ import SCons.Defaults
 import SCons.Tool
 import SCons.Util
 import fortran
+from SCons.Tool.FortranCommon import add_all_to_env, add_f95_to_env
 
 compilers = ['f95']
 
-#
-F95Suffixes = ['.f95']
-F95PPSuffixes = []
-if SCons.Util.case_sensitive_suffixes('.f95', '.F95'):
-    F95PPSuffixes.append('.F95')
-else:
-    F95Suffixes.append('.F95')
-
-#
-F95Scan = SCons.Scanner.Fortran.FortranScan("F95PATH")
-
-for suffix in F95Suffixes + F95PPSuffixes:
-    SCons.Tool.SourceFileScanner.add_scanner(suffix, F95Scan)
-del suffix
-
-#
-fVLG = fortran.VariableListGenerator
-
-F95Generator = fVLG('F95', 'FORTRAN', '_FORTRAND')
-F95FlagsGenerator = fVLG('F95FLAGS', 'FORTRANFLAGS')
-F95CommandGenerator = fVLG('F95COM', 'FORTRANCOM', '_F95COMD')
-F95CommandStrGenerator = fVLG('F95COMSTR', 'FORTRANCOMSTR', '_F95COMSTRD')
-F95PPCommandGenerator = fVLG('F95PPCOM', 'FORTRANPPCOM', '_F95PPCOMD')
-F95PPCommandStrGenerator = fVLG('F95PPCOMSTR', 'FORTRANPPCOMSTR', '_F95PPCOMSTRD')
-ShF95Generator = fVLG('SHF95', 'SHFORTRAN', 'F95', 'FORTRAN', '_FORTRAND')
-ShF95FlagsGenerator = fVLG('SHF95FLAGS', 'SHFORTRANFLAGS')
-ShF95CommandGenerator = fVLG('SHF95COM', 'SHFORTRANCOM', '_SHF95COMD')
-ShF95CommandStrGenerator = fVLG('SHF95COMSTR', 'SHFORTRANCOMSTR', '_SHF95COMSTRD')
-ShF95PPCommandGenerator = fVLG('SHF95PPCOM', 'SHFORTRANPPCOM', '_SHF95PPCOMD')
-ShF95PPCommandStrGenerator = fVLG('SHF95PPCOMSTR', 'SHFORTRANPPCOMSTR', '_SHF95PPCOMSTRD')
-
-del fVLG
-
-#
-F95Action = SCons.Action.Action('$_F95COMG ', '$_F95COMSTRG')
-F95PPAction = SCons.Action.Action('$_F95PPCOMG ', '$_F95PPCOMSTRG')
-ShF95Action = SCons.Action.Action('$_SHF95COMG ', '$_SHF95COMSTRG')
-ShF95PPAction = SCons.Action.Action('$_SHF95PPCOMG ', '$_SHF95PPCOMSTRG')
-
-def add_to_env(env):
-    """Add Builders and construction variables for f95 to an Environment."""
-    env.AppendUnique(FORTRANSUFFIXES = F95Suffixes + F95PPSuffixes)
-
-    static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
-    for suffix in F95Suffixes:
-        static_obj.add_action(suffix, F95Action)
-        shared_obj.add_action(suffix, ShF95Action)
-        static_obj.add_emitter(suffix, fortran.FortranEmitter)
-        shared_obj.add_emitter(suffix, fortran.ShFortranEmitter)
-
-    for suffix in F95PPSuffixes:
-        static_obj.add_action(suffix, F95PPAction)
-        shared_obj.add_action(suffix, ShF95PPAction)
-        static_obj.add_emitter(suffix, fortran.FortranEmitter)
-        shared_obj.add_emitter(suffix, fortran.ShFortranEmitter)
-
-    env['_F95G']           = F95Generator
-    env['_F95FLAGSG']      = F95FlagsGenerator
-    env['_F95COMG']        = F95CommandGenerator
-    env['_F95COMSTRG']     = F95CommandStrGenerator
-    env['_F95PPCOMG']      = F95PPCommandGenerator
-    env['_F95PPCOMSTRG']   = F95PPCommandStrGenerator
-
-    env['_SHF95G']         = ShF95Generator
-    env['_SHF95FLAGSG']    = ShF95FlagsGenerator
-    env['_SHF95COMG']      = ShF95CommandGenerator
-    env['_SHF95COMSTRG']   = ShF95CommandStrGenerator
-    env['_SHF95PPCOMG']    = ShF95PPCommandGenerator
-    env['_SHF95PPCOMSTRG'] = ShF95PPCommandStrGenerator
-
-    env['_F95INCFLAGS'] = '$( ${_concat(INCPREFIX, F95PATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
-
-    env['_F95COMD']     = '$_F95G -o $TARGET -c $_F95FLAGSG $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES'
-    env['_F95PPCOMD']   = '$_F95G -o $TARGET -c $_F95FLAGSG $CPPFLAGS $_CPPDEFFLAGS $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES'
-    env['_SHF95COMD']   = '$_SHF95G -o $TARGET -c $_SHF95FLAGSG $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES'
-    env['_SHF95PPCOMD'] = '$_SHF95G -o $TARGET -c $_SHF95FLAGSG $CPPFLAGS $_CPPDEFFLAGS $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES'
-
 def generate(env):
-    fortran.add_to_env(env)
-
-    import f77
-    f77.add_to_env(env)
+    add_all_to_env(env)
+    add_f95_to_env(env)
 
-    import f90
-    f90.add_to_env(env)
+    fcomp = env.Detect(compilers) or 'f95'
+    env['F95']  = fcomp
+    env['SHF95']  = fcomp
 
-    add_to_env(env)
+    env['FORTRAN']  = fcomp
+    env['SHFORTRAN']  = fcomp
 
-    env['_FORTRAND']        = env.Detect(compilers) or 'f95'
 
 def exists(env):
     return env.Detect(compilers)