summaryrefslogtreecommitdiff
path: root/numpy/distutils/fcompiler
diff options
context:
space:
mode:
authorAndrew Lawson <andrewl@olney.nag.co.uk>2017-10-19 16:48:27 +0100
committerAndrew Lawson <andrewl@olney.nag.co.uk>2017-10-19 16:48:27 +0100
commit6e01373d0b3b75ecd4534e7f928acf009f7b8c8f (patch)
tree60397ffcec20437828b1b9bc78507e58abbf12eb /numpy/distutils/fcompiler
parente9c85baf072f81b2a2e47e07b4d4e121ddbfb669 (diff)
downloadnumpy-6e01373d0b3b75ecd4534e7f928acf009f7b8c8f.tar.gz
ENH: Added compatability for the NAG Fortran compiler, nagfor
Diffstat (limited to 'numpy/distutils/fcompiler')
-rw-r--r--numpy/distutils/fcompiler/__init__.py2
-rw-r--r--numpy/distutils/fcompiler/nag.py58
2 files changed, 50 insertions, 10 deletions
diff --git a/numpy/distutils/fcompiler/__init__.py b/numpy/distutils/fcompiler/__init__.py
index 1d558319d..b08751226 100644
--- a/numpy/distutils/fcompiler/__init__.py
+++ b/numpy/distutils/fcompiler/__init__.py
@@ -738,7 +738,7 @@ _default_compilers = (
'intelvem', 'intelem')),
('cygwin.*', ('gnu', 'intelv', 'absoft', 'compaqv', 'intelev', 'gnu95', 'g95')),
('linux.*', ('gnu95', 'intel', 'lahey', 'pg', 'absoft', 'nag', 'vast', 'compaq',
- 'intele', 'intelem', 'gnu', 'g95', 'pathf95')),
+ 'intele', 'intelem', 'gnu', 'g95', 'pathf95', 'nagfor')),
('darwin.*', ('gnu95', 'nag', 'absoft', 'ibm', 'intel', 'gnu', 'g95', 'pg')),
('sunos.*', ('sun', 'gnu', 'gnu95', 'g95')),
('irix.*', ('mips', 'gnu', 'gnu95',)),
diff --git a/numpy/distutils/fcompiler/nag.py b/numpy/distutils/fcompiler/nag.py
index ae1b96faf..09affb2ea 100644
--- a/numpy/distutils/fcompiler/nag.py
+++ b/numpy/distutils/fcompiler/nag.py
@@ -1,15 +1,32 @@
from __future__ import division, absolute_import, print_function
import sys
+import re
from numpy.distutils.fcompiler import FCompiler
-compilers = ['NAGFCompiler']
+compilers = ['NAGFCompiler', 'NAGFORCompiler']
-class NAGFCompiler(FCompiler):
+class BaseNAGFCompiler(FCompiler):
+ version_pattern = r'NAG.* Release (?P<version>[^(\s]*)'
+
+ def version_match(self, version_string):
+ m = re.search(self.version_pattern, version_string)
+ if m:
+ return m.group('version')
+ else:
+ return None
+
+ def get_flags_linker_so(self):
+ return ["-Wl,-shared"]
+ def get_flags_opt(self):
+ return ['-O4']
+ def get_flags_arch(self):
+ return ['']
+
+class NAGFCompiler(BaseNAGFCompiler):
compiler_type = 'nag'
description = 'NAGWare Fortran 95 Compiler'
- version_pattern = r'NAGWare Fortran 95 compiler Release (?P<version>[^\s]*)'
executables = {
'version_cmd' : ["<F90>", "-V"],
@@ -22,24 +39,47 @@ class NAGFCompiler(FCompiler):
}
def get_flags_linker_so(self):
- if sys.platform=='darwin':
+ if sys.platform == 'darwin':
return ['-unsharedf95', '-Wl,-bundle,-flat_namespace,-undefined,suppress']
- return ["-Wl,-shared"]
- def get_flags_opt(self):
- return ['-O4']
+ return BaseNAGFCompiler.get_flags_linker_so(self)
def get_flags_arch(self):
version = self.get_version()
if version and version < '5.1':
return ['-target=native']
else:
- return ['']
+ return BaseNAGFCompiler.get_flags_arch(self)
def get_flags_debug(self):
return ['-g', '-gline', '-g90', '-nan', '-C']
+class NAGFORCompiler(BaseNAGFCompiler):
+
+ compiler_type = 'nagfor'
+ description = 'NAG Fortran Compiler'
+
+ executables = {
+ 'version_cmd' : ["nagfor", "-V"],
+ 'compiler_f77' : ["nagfor", "-fixed"],
+ 'compiler_fix' : ["nagfor", "-fixed"],
+ 'compiler_f90' : ["nagfor"],
+ 'linker_so' : ["nagfor"],
+ 'archiver' : ["ar", "-cr"],
+ 'ranlib' : ["ranlib"]
+ }
+
+ def get_flags_debug(self):
+ version = self.get_version()
+ if version and version > '6.1':
+ return ['-g', '-u', '-nan', '-C=all', '-thread_safe',
+ '-kind=unique', '-Warn=allocation', '-Warn=subnormal']
+ else:
+ return ['-g', '-nan', '-C=all', '-u', '-thread_safe']
+
+
if __name__ == '__main__':
from distutils import log
log.set_verbosity(2)
from numpy.distutils.fcompiler import new_fcompiler
- compiler = new_fcompiler(compiler='nag')
+ compiler = new_fcompiler(compiler='nagfor')
compiler.customize()
print(compiler.get_version())
+ print(compiler.get_flags_debug())