107 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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'
 | 
						|
    cc_exe = 'icc'
 | 
						|
 | 
						|
 | 
						|
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 -std=c99 -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
 |