B
    n\                 @   s   d dl mZmZmZ d dlZd dlmZ d dlmZm	Z	 ddddd	d
gZ
dd ZG dd deZG dd deZG dd deZG dd
 d
eZG dd deZG dd deZG dd	 d	eZedkrd dlmZ ed d dlmZ eedd  dS )    )divisionabsolute_importprint_functionN)simple_version_match)	FCompilerdummy_fortran_fileIntelFCompilerIntelVisualFCompilerIntelItaniumFCompilerIntelItaniumVisualFCompilerIntelEM64VisualFCompilerIntelEM64TFCompilerc             C   s   t d| f dS )Nz"Intel.*?Fortran.*?(?:%s).*?Version)start)r   )type r   >lib/python3.7/site-packages/numpy/distutils/fcompiler/intel.pyintel_version_match   s    r   c               @   s   e Zd Zdd Zdd ZdS )BaseIntelFCompilerc             C   s*   t  }dddd|d d|d g| jd< d S )	Nz<F77>z-FIz-Vz-cz.fz-oz.oversion_cmd)r   executables)selffr   r   r   update_executables   s    z%BaseIntelFCompiler.update_executablesc             C   s   d|kst d| S )N,z-Wl,-rpath=%s)AssertionError)r   dirr   r   r   runtime_library_dir_option   s    z-BaseIntelFCompiler.runtime_library_dir_optionN)__name__
__module____qualname__r   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdZdZedZddgZdddd	d
gdgddgddgddgdgdZ	dgZ
dZdZdd Zdd Zdd Zdd Zdd ZdS )r   intel)ifortz&Intel Fortran Compiler for 32-bit appsz32-bit|IA-32r!   ZifcNz-72z-w90z-w95z-FIz<F90>z-sharedarz-crranlib)r   compiler_f77compiler_f90compiler_fix	linker_soarchiverr#   z-fPICz-module z-Ic             C   s   dgS )Nz-FRr   )r   r   r   r   get_flags_free7   s    zIntelFCompiler.get_flags_freec             C   s   dgS )Nz-fPICr   )r   r   r   r   	get_flags:   s    zIntelFCompiler.get_flagsc             C   s(   |   }|r|dk rdnd}d|gS )N15openmpqopenmpz-fp-model strict -O1 -{})get_versionformat)r   vmpoptr   r   r   get_flags_opt=   s    zIntelFCompiler.get_flags_optc             C   s   g S )Nr   )r   r   r   r   get_flags_archB   s    zIntelFCompiler.get_flags_archc             C   sx   t | }|  }|r(|dkr(|d tjdkrty|d}|d W n tk
rb   d}Y nX ddg|||< |S )Nz8.0z-nofor_maindarwinz-sharedr   z-dynamiclibz-Wl,-undefined,dynamic_lookup)	r   get_flags_linker_sor.   appendsysplatformindexremove
ValueError)r   optr0   idxr   r   r   r5   E   s    




z"IntelFCompiler.get_flags_linker_so)r   r   r   compiler_typecompiler_aliasesdescriptionr   version_matchpossible_executablesr   Z	pic_flagsmodule_dir_switchmodule_include_switchr)   r*   r2   r3   r5   r   r   r   r   r       s(   

c               @   sV   e Zd ZdZdZdZedZdddgZddd	d
dgdd	gdgddgddgdgdZ	dS )r
   Zinteler   z'Intel Fortran Compiler for Itanium appszItanium|IA-64r!   efortefcNz-FIz-w90z-w95z<F90>z-sharedr"   z-crr#   )r   r$   r&   r%   r'   r(   r#   )
r   r   r   r>   r?   r@   r   rA   rB   r   r   r   r   r   r
   U   s   

c               @   sj   e Zd ZdZdZdZedZdddgZddd	gdd	gdgd
dgddgdgdZ	dd Z
dd Zdd ZdS )r   Zintelemr   z&Intel Fortran Compiler for 64-bit appsz)EM64T-based|Intel\(R\) 64|64|IA-64|64-bitr!   rE   rF   Nz-FIz<F90>z-sharedr"   z-crr#   )r   r$   r&   r%   r'   r(   r#   c             C   s   dgS )Nz-fPICr   )r   r   r   r   r*   |   s    zIntelEM64TFCompiler.get_flagsc             C   s(   |   }|r|dk rdnd}d|gS )Nr+   r,   r-   z-fp-model strict -O1 -{})r.   r/   )r   r0   r1   r   r   r   r2      s    z!IntelEM64TFCompiler.get_flags_optc             C   s   dgS )N r   )r   r   r   r   r3      s    z"IntelEM64TFCompiler.get_flags_arch)r   r   r   r>   r?   r@   r   rA   rB   r   r*   r2   r3   r   r   r   r   r   i   s   

c               @   s   e Zd ZdZdZedZdd ZdZddgZ	d	d	gd	gd	gd	ged
dgd	dZ
dZdZdZdZdZdd Zdd Zdd Zdd Zdd Zdd Zd	S )r	   Zintelvz-Intel Visual Fortran Compiler for 32-bit appsz32-bit|IA-32c             C   s(   t  }ddd|d d|d g| jd< d S )Nz<F77>z/FIz/cz.fz/oz.or   )r   r   )r   r   r   r   r   r      s    z'IntelVisualFCompiler.update_executableszlib.exer!   ZiflNz/verbosez/OUT:)r   r$   r&   r%   r'   r(   r#   z/c z/Foz/module:z/Ic             C   s   dddddg}|S )Nz/nologoz/MDz/nbsz/names:lowercasez/assume:underscorer   )r   r<   r   r   r   r*      s    zIntelVisualFCompiler.get_flagsc             C   s   g S )Nr   )r   r   r   r   r)      s    z#IntelVisualFCompiler.get_flags_freec             C   s   ddgS )Nz/4Ybz/d2r   )r   r   r   r   get_flags_debug   s    z$IntelVisualFCompiler.get_flags_debugc             C   s   dgS )Nz/O1r   )r   r   r   r   r2      s    z"IntelVisualFCompiler.get_flags_optc             C   s   ddgS )Nz
/arch:IA32z/QaxSSE3r   )r   r   r   r   r3      s    z#IntelVisualFCompiler.get_flags_archc             C   s   t d S )N)NotImplementedError)r   r   r   r   r   r      s    z/IntelVisualFCompiler.runtime_library_dir_option)r   r   r   r>   r@   r   rA   r   ar_exerB   r   Zcompile_switchZobject_switchZlibrary_switchrC   rD   r*   r)   rH   r2   r3   r   r   r   r   r   r	      s0   c               @   sX   e Zd ZdZdZedZdgZej	Z	dddddgddd	d
gdgddge	ddgddZ
dS )r   Zintelevz.Intel Visual Fortran Compiler for Itanium appsZItaniumZeflNz-FIz-w90z-w95z-4L72z-wz<F90>z-sharedz/verbosez/OUT:)r   r$   r&   r%   r'   r(   r#   )r   r   r   r>   r@   r   rA   rB   r	   rJ   r   r   r   r   r   r      s   

c               @   s&   e Zd ZdZdZeddZdd ZdS )r   Zintelvemz-Intel Visual Fortran Compiler for 64-bit appszIntel\(R\).*?64,)r   c             C   s   dgS )NrG   r   )r   r   r   r   r3      s    z'IntelEM64VisualFCompiler.get_flags_archN)r   r   r   r>   r@   r   rA   r3   r   r   r   r   r      s   
__main__)log   )customized_fcompilerr    )Zcompiler)Z
__future__r   r   r   r7   Znumpy.distutils.ccompilerr   Znumpy.distutils.fcompilerr   r   Z	compilersr   r   r   r
   r   r	   r   r   r   Z	distutilsrL   Zset_verbosityZnumpy.distutilsrN   printr.   r   r   r   r   <module>   s&   5"1

