55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from numpy.distutils.cpuinfo import cpu
 | |
| from numpy.distutils.fcompiler import FCompiler
 | |
| 
 | |
| compilers = ['MIPSFCompiler']
 | |
| 
 | |
| class MIPSFCompiler(FCompiler):
 | |
| 
 | |
|     compiler_type = 'mips'
 | |
|     description = 'MIPSpro Fortran Compiler'
 | |
|     version_pattern =  r'MIPSpro Compilers: Version (?P<version>[^\s*,]*)'
 | |
| 
 | |
|     executables = {
 | |
|         'version_cmd'  : ["<F90>", "-version"],
 | |
|         'compiler_f77' : ["f77", "-f77"],
 | |
|         'compiler_fix' : ["f90", "-fixedform"],
 | |
|         'compiler_f90' : ["f90"],
 | |
|         'linker_so'    : ["f90", "-shared"],
 | |
|         'archiver'     : ["ar", "-cr"],
 | |
|         'ranlib'       : None
 | |
|         }
 | |
|     module_dir_switch = None #XXX: fix me
 | |
|     module_include_switch = None #XXX: fix me
 | |
|     pic_flags = ['-KPIC']
 | |
| 
 | |
|     def get_flags(self):
 | |
|         return self.pic_flags + ['-n32']
 | |
|     def get_flags_opt(self):
 | |
|         return ['-O3']
 | |
|     def get_flags_arch(self):
 | |
|         opt = []
 | |
|         for a in '19 20 21 22_4k 22_5k 24 25 26 27 28 30 32_5k 32_10k'.split():
 | |
|             if getattr(cpu, 'is_IP%s'%a)():
 | |
|                 opt.append('-TARG:platform=IP%s' % a)
 | |
|                 break
 | |
|         return opt
 | |
|     def get_flags_arch_f77(self):
 | |
|         r = None
 | |
|         if cpu.is_r10000(): r = 10000
 | |
|         elif cpu.is_r12000(): r = 12000
 | |
|         elif cpu.is_r8000(): r = 8000
 | |
|         elif cpu.is_r5000(): r = 5000
 | |
|         elif cpu.is_r4000(): r = 4000
 | |
|         if r is not None:
 | |
|             return ['r%s' % (r)]
 | |
|         return []
 | |
|     def get_flags_arch_f90(self):
 | |
|         r = self.get_flags_arch_f77()
 | |
|         if r:
 | |
|             r[0] = '-' + r[0]
 | |
|         return r
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     from numpy.distutils import customized_fcompiler
 | |
|     print(customized_fcompiler(compiler='mips').get_version())
 |