Chris@87
|
1 from __future__ import division, absolute_import, print_function
|
Chris@87
|
2
|
Chris@87
|
3 from numpy.distutils.ccompiler import simple_version_match
|
Chris@87
|
4 from numpy.distutils.fcompiler import FCompiler
|
Chris@87
|
5
|
Chris@87
|
6 compilers = ['SunFCompiler']
|
Chris@87
|
7
|
Chris@87
|
8 class SunFCompiler(FCompiler):
|
Chris@87
|
9
|
Chris@87
|
10 compiler_type = 'sun'
|
Chris@87
|
11 description = 'Sun or Forte Fortran 95 Compiler'
|
Chris@87
|
12 # ex:
|
Chris@87
|
13 # f90: Sun WorkShop 6 update 2 Fortran 95 6.2 Patch 111690-10 2003/08/28
|
Chris@87
|
14 version_match = simple_version_match(
|
Chris@87
|
15 start=r'f9[05]: (Sun|Forte|WorkShop).*Fortran 95')
|
Chris@87
|
16
|
Chris@87
|
17 executables = {
|
Chris@87
|
18 'version_cmd' : ["<F90>", "-V"],
|
Chris@87
|
19 'compiler_f77' : ["f90"],
|
Chris@87
|
20 'compiler_fix' : ["f90", "-fixed"],
|
Chris@87
|
21 'compiler_f90' : ["f90"],
|
Chris@87
|
22 'linker_so' : ["<F90>", "-Bdynamic", "-G"],
|
Chris@87
|
23 'archiver' : ["ar", "-cr"],
|
Chris@87
|
24 'ranlib' : ["ranlib"]
|
Chris@87
|
25 }
|
Chris@87
|
26 module_dir_switch = '-moddir='
|
Chris@87
|
27 module_include_switch = '-M'
|
Chris@87
|
28 pic_flags = ['-xcode=pic32']
|
Chris@87
|
29
|
Chris@87
|
30 def get_flags_f77(self):
|
Chris@87
|
31 ret = ["-ftrap=%none"]
|
Chris@87
|
32 if (self.get_version() or '') >= '7':
|
Chris@87
|
33 ret.append("-f77")
|
Chris@87
|
34 else:
|
Chris@87
|
35 ret.append("-fixed")
|
Chris@87
|
36 return ret
|
Chris@87
|
37 def get_opt(self):
|
Chris@87
|
38 return ['-fast', '-dalign']
|
Chris@87
|
39 def get_arch(self):
|
Chris@87
|
40 return ['-xtarget=generic']
|
Chris@87
|
41 def get_libraries(self):
|
Chris@87
|
42 opt = []
|
Chris@87
|
43 opt.extend(['fsu', 'sunmath', 'mvec'])
|
Chris@87
|
44 return opt
|
Chris@87
|
45
|
Chris@87
|
46 if __name__ == '__main__':
|
Chris@87
|
47 from distutils import log
|
Chris@87
|
48 log.set_verbosity(2)
|
Chris@87
|
49 from numpy.distutils.fcompiler import new_fcompiler
|
Chris@87
|
50 compiler = new_fcompiler(compiler='sun')
|
Chris@87
|
51 compiler.customize()
|
Chris@87
|
52 print(compiler.get_version())
|