mips.py 1.7 KB

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