123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- from __future__ import division, absolute_import, print_function
- import platform
- from distutils.unixccompiler import UnixCCompiler
- from numpy.distutils.exec_command import find_executable
- from numpy.distutils.ccompiler import simple_version_match
- if platform.system() == 'Windows':
- from numpy.distutils.msvc9compiler import MSVCCompiler
- class IntelCCompiler(UnixCCompiler):
- """A modified Intel compiler compatible with a GCC-built Python."""
- compiler_type = 'intel'
- cc_exe = 'icc'
- cc_args = 'fPIC'
- def __init__(self, verbose=0, dry_run=0, force=0):
- UnixCCompiler.__init__(self, verbose, dry_run, force)
- v = self.get_version()
- mpopt = 'openmp' if v and v < '15' else 'qopenmp'
- self.cc_exe = ('icc -fPIC -fp-model strict -O3 '
- '-fomit-frame-pointer -{}').format(mpopt)
- compiler = self.cc_exe
- if platform.system() == 'Darwin':
- shared_flag = '-Wl,-undefined,dynamic_lookup'
- else:
- shared_flag = '-shared'
- self.set_executables(compiler=compiler,
- compiler_so=compiler,
- compiler_cxx=compiler,
- archiver='xiar' + ' cru',
- linker_exe=compiler + ' -shared-intel',
- linker_so=compiler + ' ' + shared_flag +
- ' -shared-intel')
- class IntelItaniumCCompiler(IntelCCompiler):
- compiler_type = 'intele'
- # On Itanium, the Intel Compiler used to be called ecc, let's search for
- # it (now it's also icc, so ecc is last in the search).
- for cc_exe in map(find_executable, ['icc', 'ecc']):
- if cc_exe:
- break
- class IntelEM64TCCompiler(UnixCCompiler):
- """
- A modified Intel x86_64 compiler compatible with a 64bit GCC-built Python.
- """
- compiler_type = 'intelem'
- cc_exe = 'icc -m64'
- cc_args = '-fPIC'
- def __init__(self, verbose=0, dry_run=0, force=0):
- UnixCCompiler.__init__(self, verbose, dry_run, force)
- v = self.get_version()
- mpopt = 'openmp' if v and v < '15' else 'qopenmp'
- self.cc_exe = ('icc -m64 -fPIC -fp-model strict -O3 '
- '-fomit-frame-pointer -{}').format(mpopt)
- compiler = self.cc_exe
- if platform.system() == 'Darwin':
- shared_flag = '-Wl,-undefined,dynamic_lookup'
- else:
- shared_flag = '-shared'
- self.set_executables(compiler=compiler,
- compiler_so=compiler,
- compiler_cxx=compiler,
- archiver='xiar' + ' cru',
- linker_exe=compiler + ' -shared-intel',
- linker_so=compiler + ' ' + shared_flag +
- ' -shared-intel')
- if platform.system() == 'Windows':
- class IntelCCompilerW(MSVCCompiler):
- """
- A modified Intel compiler compatible with an MSVC-built Python.
- """
- compiler_type = 'intelw'
- compiler_cxx = 'icl'
- def __init__(self, verbose=0, dry_run=0, force=0):
- MSVCCompiler.__init__(self, verbose, dry_run, force)
- version_match = simple_version_match(start=r'Intel\(R\).*?32,')
- self.__version = version_match
- def initialize(self, plat_name=None):
- MSVCCompiler.initialize(self, plat_name)
- self.cc = self.find_exe('icl.exe')
- self.lib = self.find_exe('xilib')
- self.linker = self.find_exe('xilink')
- self.compile_options = ['/nologo', '/O3', '/MD', '/W3',
- '/Qstd=c99']
- self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3',
- '/Qstd=c99', '/Z7', '/D_DEBUG']
- class IntelEM64TCCompilerW(IntelCCompilerW):
- """
- A modified Intel x86_64 compiler compatible with
- a 64bit MSVC-built Python.
- """
- compiler_type = 'intelemw'
- def __init__(self, verbose=0, dry_run=0, force=0):
- MSVCCompiler.__init__(self, verbose, dry_run, force)
- version_match = simple_version_match(start=r'Intel\(R\).*?64,')
- self.__version = version_match
|