diff options
author | Andrew Lawson <andrewl@olney.nag.co.uk> | 2017-10-19 16:48:27 +0100 |
---|---|---|
committer | Andrew Lawson <andrewl@olney.nag.co.uk> | 2017-10-19 16:48:27 +0100 |
commit | 6e01373d0b3b75ecd4534e7f928acf009f7b8c8f (patch) | |
tree | 60397ffcec20437828b1b9bc78507e58abbf12eb /numpy/distutils/fcompiler | |
parent | e9c85baf072f81b2a2e47e07b4d4e121ddbfb669 (diff) | |
download | numpy-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__.py | 2 | ||||
-rw-r--r-- | numpy/distutils/fcompiler/nag.py | 58 |
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()) |