class IntelEM64TFCompiler(IntelFCompiler): compiler_type = 'intelem' version_match = intel_version_match('EM64T-based') for fc_exe in map(find_executable, ['ifort', 'efort', 'efc']): if os.path.isfile(fc_exe): break executables = { 'version_cmd' : [fc_exe, "-FI -V -c %(fname)s.f -o %(fname)s.o" \ % {'fname':dummy_fortran_file()}], 'compiler_f77' : [fc_exe,"-FI","-w90","-w95"], 'compiler_fix' : [fc_exe,"-FI"], 'compiler_f90' : [fc_exe], 'linker_so' : [fc_exe,"-shared"], 'archiver' : ["ar", "-cr"], 'ranlib' : ["ranlib"] } def get_flags_arch(self): opt = [] if cpu.is_PentiumIV() or cpu.is_Xeon(): opt.extend(['-tpp7', '-xW']) return opt
def update_executables(self): f = cyg2win32(dummy_fortran_file()) self.executables["version_cmd"] = [ "<F90>", "-V", "-c", f + ".f", "-o", f + ".o", ]
def update_executables(self): f = dummy_fortran_file() self.executables["version_cmd"] = [ "<F77>", "/FI", "/c", f + ".f", "/o", f + ".o", ]
class IntelVisualFCompiler(FCompiler): compiler_type = 'intelv' version_match = intel_version_match('32-bit') ar_exe = 'lib.exe' fc_exe = 'ifl' executables = { 'version_cmd' : [fc_exe, "-FI -V -c %(fname)s.f -o %(fname)s.o" \ % {'fname':dummy_fortran_file()}], 'compiler_f77' : [fc_exe,"-FI","-w90","-w95"], 'compiler_fix' : [fc_exe,"-FI","-4L72","-w"], 'compiler_f90' : [fc_exe], 'linker_so' : [fc_exe,"-shared"], 'archiver' : [ar_exe, "/verbose", "/OUT:"], 'ranlib' : None } compile_switch = '/c ' object_switch = '/Fo' #No space after /Fo! library_switch = '/OUT:' #No space after /OUT:! module_dir_switch = '/module:' #No space after /module: module_include_switch = '/I' def get_flags(self): opt = ['/nologo', '/MD', '/nbs', '/Qlowercase', '/us'] return opt def get_flags_free(self): return ["-FR"] def get_flags_debug(self): return ['/4Yb', '/d2'] def get_flags_opt(self): return ['/O3', '/Qip', '/Qipo', '/Qipo_obj'] def get_flags_arch(self): opt = [] if cpu.is_PentiumPro() or cpu.is_PentiumII(): opt.extend(['/G6', '/Qaxi']) elif cpu.is_PentiumIII(): opt.extend(['/G6', '/QaxK']) elif cpu.is_Pentium(): opt.append('/G5') elif cpu.is_PentiumIV(): opt.extend(['/G7', '/QaxW']) if cpu.has_mmx(): opt.append('/QaxM') return opt
class IntelItaniumVisualFCompiler(IntelVisualFCompiler): compiler_type = 'intelev' version_match = intel_version_match('Itanium') fc_exe = 'efl' # XXX this is a wild guess ar_exe = IntelVisualFCompiler.ar_exe executables = { 'version_cmd' : [fc_exe, "-FI -V -c %(fname)s.f -o %(fname)s.o" \ % {'fname':dummy_fortran_file()}], 'compiler_f77' : [fc_exe,"-FI","-w90","-w95"], 'compiler_fix' : [fc_exe,"-FI","-4L72","-w"], 'compiler_f90' : [fc_exe], 'linker_so' : [fc_exe,"-shared"], 'archiver' : [ar_exe, "/verbose", "/OUT:"], 'ranlib' : None }
class IntelItaniumFCompiler(IntelFCompiler): compiler_type = 'intele' version_match = intel_version_match('Itanium') #Intel(R) Fortran Itanium(R) Compiler for Itanium(R)-based applications #Version 9.1� � Build 20060928 Package ID: l_fc_c_9.1.039 #Copyright (C) 1985-2006 Intel Corporation.� All rights reserved. #30 DAY EVALUATION LICENSE for fc_exe in map(find_executable, ['ifort', 'efort', 'efc']): if os.path.isfile(fc_exe): break executables = { 'version_cmd' : [fc_exe, "-FI -V -c %(fname)s.f -o %(fname)s.o" \ % {'fname':dummy_fortran_file()}], 'compiler_f77' : [fc_exe,"-FI","-w90","-w95"], 'compiler_fix' : [fc_exe,"-FI"], 'compiler_f90' : [fc_exe], 'linker_so' : [fc_exe,"-shared"], 'archiver' : ["ar", "-cr"], 'ranlib' : ["ranlib"] }
def update_executables(self): f = cyg2win32(dummy_fortran_file()) self.executables['version_cmd'] = [ '<F90>', '-V', '-c', f + '.f', '-o', f + '.o' ]
def update_executables(self): f = dummy_fortran_file() self.executables['version_cmd'] = [ '<F77>', '-FI', '-V', '-c', f + '.f', '-o', f + '.o' ]
def update_executables(self): f = dummy_fortran_file() self.executables['version_cmd'] = ['<F77>', '-FI', '-V', '-c', f + '.f', '-o', f + '.o']
def update_executables(self): f = cyg2win32(dummy_fortran_file()) self.executables['version_cmd'] = ['<F90>', '-V', '-c', f+'.f', '-o', f+'.o']
def update_executables(self): f = dummy_fortran_file() self.executables["version_cmd"] = ["<F77>", "-FI", "-V", "-c", f + ".f", "-o", f + ".o"]
class IntelFCompiler(FCompiler): compiler_type = 'intel' version_match = intel_version_match('32-bit') for fc_exe in map(find_executable, ['ifort', 'ifc']): if os.path.isfile(fc_exe): break executables = { 'version_cmd' : [fc_exe, "-FI -V -c %(fname)s.f -o %(fname)s.o" \ % {'fname':dummy_fortran_file()}], 'compiler_f77' : [fc_exe,"-72","-w90","-w95"], 'compiler_fix' : [fc_exe,"-FI"], 'compiler_f90' : [fc_exe], 'linker_so' : [fc_exe,"-shared"], 'archiver' : ["ar", "-cr"], 'ranlib' : ["ranlib"] } pic_flags = ['-KPIC'] module_dir_switch = '-module ' # Don't remove ending space! module_include_switch = '-I' def get_flags(self): opt = self.pic_flags + ["-cm"] return opt def get_flags_free(self): return ["-FR"] def get_flags_opt(self): return ['-O3', '-unroll'] def get_flags_arch(self): opt = [] if cpu.has_fdiv_bug(): opt.append('-fdiv_check') if cpu.has_f00f_bug(): opt.append('-0f_check') if cpu.is_PentiumPro() or cpu.is_PentiumII() or cpu.is_PentiumIII(): opt.extend(['-tpp6']) elif cpu.is_PentiumM(): opt.extend(['-tpp7', '-xB']) elif cpu.is_Pentium(): opt.append('-tpp5') elif cpu.is_PentiumIV() or cpu.is_Xeon(): opt.extend(['-tpp7', '-xW']) if cpu.has_mmx() and not cpu.is_Xeon(): opt.append('-xM') if cpu.has_sse2(): opt.append('-arch SSE2') elif cpu.has_sse(): opt.append('-arch SSE') return opt def get_flags_linker_so(self): opt = FCompiler.get_flags_linker_so(self) v = self.get_version() if v and v >= '8.0': opt.append('-nofor_main') return opt
def update_executables(self): f = cyg2win32(dummy_fortran_file()) self.executables["version_cmd"] = ["<F90>", "-V", "-c", f + ".f", "-o", f + ".o"]
class AbsoftFCompiler(FCompiler): compiler_type = 'absoft' #version_pattern = r'FORTRAN 77 Compiler (?P<version>[^\s*,]*).*?Absoft Corp' version_pattern = r'(f90:.*?(Absoft Pro FORTRAN Version|FORTRAN 77 Compiler|Absoft Fortran Compiler Version|Copyright Absoft Corporation.*?Version))'+\ r' (?P<version>[^\s*,]*)(.*?Absoft Corp|)' # on windows: f90 -V -c dummy.f # f90: Copyright Absoft Corporation 1994-1998 mV2; Cray Research, Inc. 1994-1996 CF90 (2.x.x.x f36t87) Version 2.3 Wed Apr 19, 2006 13:05:16 # samt5735(8)$ f90 -V -c dummy.f # f90: Copyright Absoft Corporation 1994-2002; Absoft Pro FORTRAN Version 8.0 # Note that fink installs g77 as f77, so need to use f90 for detection. executables = { 'version_cmd' : ["f90", "-V -c %(fname)s.f -o %(fname)s.o" \ % {'fname':cyg2win32(dummy_fortran_file())}], 'compiler_f77' : ["f77"], 'compiler_fix' : ["f90"], 'compiler_f90' : ["f90"], 'linker_so' : ["f90"], 'archiver' : ["ar", "-cr"], 'ranlib' : ["ranlib"] } if os.name=='nt': library_switch = '/out:' #No space after /out:! module_dir_switch = None module_include_switch = '-p' def get_flags_linker_so(self): if os.name=='nt': opt = ['/dll'] # The "-K shared" switches are being left in for pre-9.0 versions # of Absoft though I don't think versions earlier than 9 can # actually be used to build shared libraries. In fact, version # 8 of Absoft doesn't recognize "-K shared" and will fail. elif self.get_version() >= '9.0': opt = ['-shared'] else: opt = ["-K","shared"] return opt def library_dir_option(self, dir): if os.name=='nt': return ['-link','/PATH:"%s"' % (dir)] return "-L" + dir def library_option(self, lib): if os.name=='nt': return '%s.lib' % (lib) return "-l" + lib def get_library_dirs(self): opt = FCompiler.get_library_dirs(self) d = os.environ.get('ABSOFT') if d: if self.get_version() >= '10.0': # use shared libraries, the static libraries were not compiled -fPIC prefix = 'sh' else: prefix = '' if cpu.is_64bit(): suffix = '64' else: suffix = '' opt.append(os.path.join(d, '%slib%s' % (prefix, suffix))) return opt def get_libraries(self): opt = FCompiler.get_libraries(self) if self.get_version() >= '10.0': opt.extend(['af90math', 'afio', 'af77math', 'U77']) elif self.get_version() >= '8.0': opt.extend(['f90math','fio','f77math','U77']) else: opt.extend(['fio','f90math','fmath','U77']) if os.name =='nt': opt.append('COMDLG32') return opt def get_flags(self): opt = FCompiler.get_flags(self) if os.name != 'nt': opt.extend(['-s']) if self.get_version(): if self.get_version()>='8.2': opt.append('-fpic') return opt def get_flags_f77(self): opt = FCompiler.get_flags_f77(self) opt.extend(['-N22','-N90','-N110']) v = self.get_version() if os.name == 'nt': if v and v>='8.0': opt.extend(['-f','-N15']) else: opt.append('-f') if v: if v<='4.6': opt.append('-B108') else: # Though -N15 is undocumented, it works with # Absoft 8.0 on Linux opt.append('-N15') return opt def get_flags_f90(self): opt = FCompiler.get_flags_f90(self) opt.extend(["-YCFRL=1","-YCOM_NAMES=LCS","-YCOM_PFX","-YEXT_PFX", "-YCOM_SFX=_","-YEXT_SFX=_","-YEXT_NAMES=LCS"]) if self.get_version(): if self.get_version()>'4.6': opt.extend(["-YDEALLOC=ALL"]) return opt def get_flags_fix(self): opt = FCompiler.get_flags_fix(self) opt.extend(["-YCFRL=1","-YCOM_NAMES=LCS","-YCOM_PFX","-YEXT_PFX", "-YCOM_SFX=_","-YEXT_SFX=_","-YEXT_NAMES=LCS"]) opt.extend(["-f","fixed"]) return opt def get_flags_opt(self): opt = ['-O'] return opt