Ejemplo n.º 1
0
class CompaqVisualFCompiler(FCompiler):

    compiler_type = "compaqv"
    description = "DIGITAL or Compaq Visual Fortran Compiler"
    version_pattern = (r"(DIGITAL|Compaq) Visual Fortran Optimizing Compiler"
                       r" Version (?P<version>[^\s]*).*")

    compile_switch = "/compile_only"
    object_switch = "/object:"
    library_switch = "/OUT:"  # No space after /OUT:!

    static_lib_extension = ".lib"
    static_lib_format = "%s%s"
    module_dir_switch = "/module:"
    module_include_switch = "/I"

    ar_exe = "lib.exe"
    fc_exe = "DF"

    if sys.platform == "win32":
        from numpy.distutils.msvccompiler import MSVCCompiler

        try:
            m = MSVCCompiler()
            m.initialize()
            ar_exe = m.lib
        except DistutilsPlatformError:
            pass
        except AttributeError as e:
            if "_MSVCCompiler__root" in str(e):
                print('Ignoring "%s" (I think it is msvccompiler.py bug)' %
                      (e))
            else:
                raise
        except IOError as e:
            if not "vcvarsall.bat" in str(e):
                print("Unexpected IOError in", __file__)
                raise e
        except ValueError as e:
            if not "'path'" in str(e):
                print("Unexpected ValueError in", __file__)
                raise e

    executables = {
        "version_cmd": ["<F90>", "/what"],
        "compiler_f77": [fc_exe, "/f77rtl", "/fixed"],
        "compiler_fix": [fc_exe, "/fixed"],
        "compiler_f90": [fc_exe],
        "linker_so": ["<F90>"],
        "archiver": [ar_exe, "/OUT:"],
        "ranlib": None,
    }

    def get_flags(self):
        return [
            "/nologo",
            "/MD",
            "/WX",
            "/iface=(cref,nomixed_str_len_arg)",
            "/names:lowercase",
            "/assume:underscore",
        ]

    def get_flags_opt(self):
        return [
            "/Ox", "/fast", "/optimize:5", "/unroll:0", "/math_library:fast"
        ]

    def get_flags_arch(self):
        return ["/threads"]

    def get_flags_debug(self):
        return ["/debug"]
Ejemplo n.º 2
0
class CompaqVisualFCompiler(FCompiler):

    compiler_type = 'compaqv'
    description = 'DIGITAL or Compaq Visual Fortran Compiler'
    version_pattern = (r'(DIGITAL|Compaq) Visual Fortran Optimizing Compiler'
                       r' Version (?P<version>[^\s]*).*')

    compile_switch = '/compile_only'
    object_switch = '/object:'
    library_switch = '/OUT:'  #No space after /OUT:!

    static_lib_extension = ".lib"
    static_lib_format = "%s%s"
    module_dir_switch = '/module:'
    module_include_switch = '/I'

    ar_exe = 'lib.exe'
    fc_exe = 'DF'

    if sys.platform == 'win32':
        from numpy.distutils.msvccompiler import MSVCCompiler

        try:
            m = MSVCCompiler()
            m.initialize()
            ar_exe = m.lib
        except DistutilsPlatformError:
            pass
        except AttributeError:
            msg = get_exception()
            if '_MSVCCompiler__root' in str(msg):
                print('Ignoring "%s" (I think it is msvccompiler.py bug)' %
                      (msg))
            else:
                raise
        except IOError:
            e = get_exception()
            if not "vcvarsall.bat" in str(e):
                print("Unexpected IOError in", __file__)
                raise e
        except ValueError:
            e = get_exception()
            if not "'path'" in str(e):
                print("Unexpected ValueError in", __file__)
                raise e

    executables = {
        'version_cmd': ['<F90>', "/what"],
        'compiler_f77': [fc_exe, "/f77rtl", "/fixed"],
        'compiler_fix': [fc_exe, "/fixed"],
        'compiler_f90': [fc_exe],
        'linker_so': ['<F90>'],
        'archiver': [ar_exe, "/OUT:"],
        'ranlib': None
    }

    def get_flags(self):
        return [
            '/nologo', '/MD', '/WX', '/iface=(cref,nomixed_str_len_arg)',
            '/names:lowercase', '/assume:underscore'
        ]

    def get_flags_opt(self):
        return [
            '/Ox', '/fast', '/optimize:5', '/unroll:0', '/math_library:fast'
        ]

    def get_flags_arch(self):
        return ['/threads']

    def get_flags_debug(self):
        return ['/debug']