annotate DEPENDENCIES/mingw32/Python27/Lib/site-packages/numpy/distutils/fcompiler/intel.py @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2a2c65a20a8b
children
rev   line source
Chris@87 1 # http://developer.intel.com/software/products/compilers/flin/
Chris@87 2 from __future__ import division, absolute_import, print_function
Chris@87 3
Chris@87 4 import sys
Chris@87 5
Chris@87 6 from numpy.distutils.ccompiler import simple_version_match
Chris@87 7 from numpy.distutils.fcompiler import FCompiler, dummy_fortran_file
Chris@87 8
Chris@87 9 compilers = ['IntelFCompiler', 'IntelVisualFCompiler',
Chris@87 10 'IntelItaniumFCompiler', 'IntelItaniumVisualFCompiler',
Chris@87 11 'IntelEM64VisualFCompiler', 'IntelEM64TFCompiler']
Chris@87 12
Chris@87 13 def intel_version_match(type):
Chris@87 14 # Match against the important stuff in the version string
Chris@87 15 return simple_version_match(start=r'Intel.*?Fortran.*?(?:%s).*?Version' % (type,))
Chris@87 16
Chris@87 17 class BaseIntelFCompiler(FCompiler):
Chris@87 18 def update_executables(self):
Chris@87 19 f = dummy_fortran_file()
Chris@87 20 self.executables['version_cmd'] = ['<F77>', '-FI', '-V', '-c',
Chris@87 21 f + '.f', '-o', f + '.o']
Chris@87 22
Chris@87 23 class IntelFCompiler(BaseIntelFCompiler):
Chris@87 24
Chris@87 25 compiler_type = 'intel'
Chris@87 26 compiler_aliases = ('ifort',)
Chris@87 27 description = 'Intel Fortran Compiler for 32-bit apps'
Chris@87 28 version_match = intel_version_match('32-bit|IA-32')
Chris@87 29
Chris@87 30 possible_executables = ['ifort', 'ifc']
Chris@87 31
Chris@87 32 executables = {
Chris@87 33 'version_cmd' : None, # set by update_executables
Chris@87 34 'compiler_f77' : [None, "-72", "-w90", "-w95"],
Chris@87 35 'compiler_f90' : [None],
Chris@87 36 'compiler_fix' : [None, "-FI"],
Chris@87 37 'linker_so' : ["<F90>", "-shared"],
Chris@87 38 'archiver' : ["ar", "-cr"],
Chris@87 39 'ranlib' : ["ranlib"]
Chris@87 40 }
Chris@87 41
Chris@87 42 pic_flags = ['-fPIC']
Chris@87 43 module_dir_switch = '-module ' # Don't remove ending space!
Chris@87 44 module_include_switch = '-I'
Chris@87 45
Chris@87 46 def get_flags_free(self):
Chris@87 47 return ["-FR"]
Chris@87 48
Chris@87 49 def get_flags(self):
Chris@87 50 return ['-fPIC']
Chris@87 51
Chris@87 52 def get_flags_opt(self):
Chris@87 53 #return ['-i8 -xhost -openmp -fp-model strict']
Chris@87 54 return ['-xhost -openmp -fp-model strict']
Chris@87 55
Chris@87 56 def get_flags_arch(self):
Chris@87 57 return []
Chris@87 58
Chris@87 59 def get_flags_linker_so(self):
Chris@87 60 opt = FCompiler.get_flags_linker_so(self)
Chris@87 61 v = self.get_version()
Chris@87 62 if v and v >= '8.0':
Chris@87 63 opt.append('-nofor_main')
Chris@87 64 if sys.platform == 'darwin':
Chris@87 65 # Here, it's -dynamiclib
Chris@87 66 try:
Chris@87 67 idx = opt.index('-shared')
Chris@87 68 opt.remove('-shared')
Chris@87 69 except ValueError:
Chris@87 70 idx = 0
Chris@87 71 opt[idx:idx] = ['-dynamiclib', '-Wl,-undefined,dynamic_lookup']
Chris@87 72 return opt
Chris@87 73
Chris@87 74 class IntelItaniumFCompiler(IntelFCompiler):
Chris@87 75 compiler_type = 'intele'
Chris@87 76 compiler_aliases = ()
Chris@87 77 description = 'Intel Fortran Compiler for Itanium apps'
Chris@87 78
Chris@87 79 version_match = intel_version_match('Itanium|IA-64')
Chris@87 80
Chris@87 81 possible_executables = ['ifort', 'efort', 'efc']
Chris@87 82
Chris@87 83 executables = {
Chris@87 84 'version_cmd' : None,
Chris@87 85 'compiler_f77' : [None, "-FI", "-w90", "-w95"],
Chris@87 86 'compiler_fix' : [None, "-FI"],
Chris@87 87 'compiler_f90' : [None],
Chris@87 88 'linker_so' : ['<F90>', "-shared"],
Chris@87 89 'archiver' : ["ar", "-cr"],
Chris@87 90 'ranlib' : ["ranlib"]
Chris@87 91 }
Chris@87 92
Chris@87 93 class IntelEM64TFCompiler(IntelFCompiler):
Chris@87 94 compiler_type = 'intelem'
Chris@87 95 compiler_aliases = ()
Chris@87 96 description = 'Intel Fortran Compiler for 64-bit apps'
Chris@87 97
Chris@87 98 version_match = intel_version_match('EM64T-based|Intel\\(R\\) 64|64|IA-64|64-bit')
Chris@87 99
Chris@87 100 possible_executables = ['ifort', 'efort', 'efc']
Chris@87 101
Chris@87 102 executables = {
Chris@87 103 'version_cmd' : None,
Chris@87 104 'compiler_f77' : [None, "-FI"],
Chris@87 105 'compiler_fix' : [None, "-FI"],
Chris@87 106 'compiler_f90' : [None],
Chris@87 107 'linker_so' : ['<F90>', "-shared"],
Chris@87 108 'archiver' : ["ar", "-cr"],
Chris@87 109 'ranlib' : ["ranlib"]
Chris@87 110 }
Chris@87 111
Chris@87 112 def get_flags(self):
Chris@87 113 return ['-fPIC']
Chris@87 114
Chris@87 115 def get_flags_opt(self):
Chris@87 116 #return ['-i8 -xhost -openmp -fp-model strict']
Chris@87 117 return ['-xhost -openmp -fp-model strict']
Chris@87 118
Chris@87 119 def get_flags_arch(self):
Chris@87 120 return []
Chris@87 121
Chris@87 122 # Is there no difference in the version string between the above compilers
Chris@87 123 # and the Visual compilers?
Chris@87 124
Chris@87 125 class IntelVisualFCompiler(BaseIntelFCompiler):
Chris@87 126 compiler_type = 'intelv'
Chris@87 127 description = 'Intel Visual Fortran Compiler for 32-bit apps'
Chris@87 128 version_match = intel_version_match('32-bit|IA-32')
Chris@87 129
Chris@87 130 def update_executables(self):
Chris@87 131 f = dummy_fortran_file()
Chris@87 132 self.executables['version_cmd'] = ['<F77>', '/FI', '/c',
Chris@87 133 f + '.f', '/o', f + '.o']
Chris@87 134
Chris@87 135 ar_exe = 'lib.exe'
Chris@87 136 possible_executables = ['ifort', 'ifl']
Chris@87 137
Chris@87 138 executables = {
Chris@87 139 'version_cmd' : None,
Chris@87 140 'compiler_f77' : [None, "-FI", "-w90", "-w95"],
Chris@87 141 'compiler_fix' : [None, "-FI", "-4L72", "-w"],
Chris@87 142 'compiler_f90' : [None],
Chris@87 143 'linker_so' : ['<F90>', "-shared"],
Chris@87 144 'archiver' : [ar_exe, "/verbose", "/OUT:"],
Chris@87 145 'ranlib' : None
Chris@87 146 }
Chris@87 147
Chris@87 148 compile_switch = '/c '
Chris@87 149 object_switch = '/Fo' #No space after /Fo!
Chris@87 150 library_switch = '/OUT:' #No space after /OUT:!
Chris@87 151 module_dir_switch = '/module:' #No space after /module:
Chris@87 152 module_include_switch = '/I'
Chris@87 153
Chris@87 154 def get_flags(self):
Chris@87 155 opt = ['/nologo', '/MD', '/nbs', '/Qlowercase', '/us']
Chris@87 156 return opt
Chris@87 157
Chris@87 158 def get_flags_free(self):
Chris@87 159 return ["-FR"]
Chris@87 160
Chris@87 161 def get_flags_debug(self):
Chris@87 162 return ['/4Yb', '/d2']
Chris@87 163
Chris@87 164 def get_flags_opt(self):
Chris@87 165 return ['/O1'] # Scipy test failures with /O2
Chris@87 166
Chris@87 167 def get_flags_arch(self):
Chris@87 168 return ["/arch:IA-32", "/QaxSSE3"]
Chris@87 169
Chris@87 170 class IntelItaniumVisualFCompiler(IntelVisualFCompiler):
Chris@87 171 compiler_type = 'intelev'
Chris@87 172 description = 'Intel Visual Fortran Compiler for Itanium apps'
Chris@87 173
Chris@87 174 version_match = intel_version_match('Itanium')
Chris@87 175
Chris@87 176 possible_executables = ['efl'] # XXX this is a wild guess
Chris@87 177 ar_exe = IntelVisualFCompiler.ar_exe
Chris@87 178
Chris@87 179 executables = {
Chris@87 180 'version_cmd' : None,
Chris@87 181 'compiler_f77' : [None, "-FI", "-w90", "-w95"],
Chris@87 182 'compiler_fix' : [None, "-FI", "-4L72", "-w"],
Chris@87 183 'compiler_f90' : [None],
Chris@87 184 'linker_so' : ['<F90>', "-shared"],
Chris@87 185 'archiver' : [ar_exe, "/verbose", "/OUT:"],
Chris@87 186 'ranlib' : None
Chris@87 187 }
Chris@87 188
Chris@87 189 class IntelEM64VisualFCompiler(IntelVisualFCompiler):
Chris@87 190 compiler_type = 'intelvem'
Chris@87 191 description = 'Intel Visual Fortran Compiler for 64-bit apps'
Chris@87 192
Chris@87 193 version_match = simple_version_match(start='Intel\(R\).*?64,')
Chris@87 194
Chris@87 195 def get_flags_arch(self):
Chris@87 196 return ["/arch:SSE2"]
Chris@87 197
Chris@87 198
Chris@87 199 if __name__ == '__main__':
Chris@87 200 from distutils import log
Chris@87 201 log.set_verbosity(2)
Chris@87 202 from numpy.distutils.fcompiler import new_fcompiler
Chris@87 203 compiler = new_fcompiler(compiler='intel')
Chris@87 204 compiler.customize()
Chris@87 205 print(compiler.get_version())