1from numpy.distutils.cpuinfo import cpu 2from numpy.distutils.fcompiler import FCompiler 3 4compilers = ['MIPSFCompiler'] 5 6class MIPSFCompiler(FCompiler): 7 8 compiler_type = 'mips' 9 description = 'MIPSpro Fortran Compiler' 10 version_pattern = r'MIPSpro Compilers: Version (?P<version>[^\s*,]*)' 11 12 executables = { 13 'version_cmd' : ["<F90>", "-version"], 14 'compiler_f77' : ["f77", "-f77"], 15 'compiler_fix' : ["f90", "-fixedform"], 16 'compiler_f90' : ["f90"], 17 'linker_so' : ["f90", "-shared"], 18 'archiver' : ["ar", "-cr"], 19 'ranlib' : None 20 } 21 module_dir_switch = None #XXX: fix me 22 module_include_switch = None #XXX: fix me 23 pic_flags = ['-KPIC'] 24 25 def get_flags(self): 26 return self.pic_flags + ['-n32'] 27 def get_flags_opt(self): 28 return ['-O3'] 29 def get_flags_arch(self): 30 opt = [] 31 for a in '19 20 21 22_4k 22_5k 24 25 26 27 28 30 32_5k 32_10k'.split(): 32 if getattr(cpu, 'is_IP%s'%a)(): 33 opt.append('-TARG:platform=IP%s' % a) 34 break 35 return opt 36 def get_flags_arch_f77(self): 37 r = None 38 if cpu.is_r10000(): r = 10000 39 elif cpu.is_r12000(): r = 12000 40 elif cpu.is_r8000(): r = 8000 41 elif cpu.is_r5000(): r = 5000 42 elif cpu.is_r4000(): r = 4000 43 if r is not None: 44 return ['r%s' % (r)] 45 return [] 46 def get_flags_arch_f90(self): 47 r = self.get_flags_arch_f77() 48 if r: 49 r[0] = '-' + r[0] 50 return r 51 52if __name__ == '__main__': 53 from numpy.distutils import customized_fcompiler 54 print(customized_fcompiler(compiler='mips').get_version()) 55