| import sys |
| |
| from numpy.distutils.fcompiler import FCompiler, dummy_fortran_file |
| from sys import platform |
| from os.path import join, dirname, normpath |
|
|
| compilers = ['ArmFlangCompiler'] |
|
|
| import functools |
|
|
| class ArmFlangCompiler(FCompiler): |
| compiler_type = 'arm' |
| description = 'Arm Compiler' |
| version_pattern = r'\s*Arm.*version (?P<version>[\d.-]+).*' |
|
|
| ar_exe = 'lib.exe' |
| possible_executables = ['armflang'] |
|
|
| executables = { |
| 'version_cmd': ["", "--version"], |
| 'compiler_f77': ["armflang", "-fPIC"], |
| 'compiler_fix': ["armflang", "-fPIC", "-ffixed-form"], |
| 'compiler_f90': ["armflang", "-fPIC"], |
| 'linker_so': ["armflang", "-fPIC", "-shared"], |
| 'archiver': ["ar", "-cr"], |
| 'ranlib': None |
| } |
|
|
| pic_flags = ["-fPIC", "-DPIC"] |
| c_compiler = 'arm' |
| module_dir_switch = '-module ' |
|
|
| def get_libraries(self): |
| opt = FCompiler.get_libraries(self) |
| opt.extend(['flang', 'flangrti', 'ompstub']) |
| return opt |
|
|
| @functools.lru_cache(maxsize=128) |
| def get_library_dirs(self): |
| """List of compiler library directories.""" |
| opt = FCompiler.get_library_dirs(self) |
| flang_dir = dirname(self.executables['compiler_f77'][0]) |
| opt.append(normpath(join(flang_dir, '..', 'lib'))) |
|
|
| return opt |
|
|
| def get_flags(self): |
| return [] |
|
|
| def get_flags_free(self): |
| return [] |
|
|
| def get_flags_debug(self): |
| return ['-g'] |
|
|
| def get_flags_opt(self): |
| return ['-O3'] |
|
|
| def get_flags_arch(self): |
| return [] |
|
|
| def runtime_library_dir_option(self, dir): |
| return '-Wl,-rpath=%s' % dir |
|
|
|
|
| if __name__ == '__main__': |
| from distutils import log |
| log.set_verbosity(2) |
| from numpy.distutils import customized_fcompiler |
| print(customized_fcompiler(compiler='armflang').get_version()) |
|
|
|
|