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())
 |