U
    O8c                     @   s   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 )    N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startr   )type r   C/tmp/pip-unpacked-wheel-fd_gsd75/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 )	N<F77>-FIz-Vz-c.fz-o.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 apps32-bit|IA-32r'   ZifcNz-72-w90-w95r   <F90>-sharedar-crranlib)r   compiler_f77compiler_f90compiler_fix	linker_soarchiverr/   -fPICz-module z-Ic                 C   s   dgS )Nz-FRr   r   r   r   r   get_flags_free5   s    zIntelFCompiler.get_flags_freec                 C   s   dgS )Nr5   r   r6   r   r   r   	get_flags8   s    zIntelFCompiler.get_flagsc                 C   s2   |   }|r|dk rdnd}dddddd	|gS )
NZ15ZopenmpZqopenmpz	-fp-modelstrictz-O1z-assumeZminus0z-{})get_versionformat)r   vZmpoptr   r   r   get_flags_opt;   s      zIntelFCompiler.get_flags_optc                 C   s   g S Nr   r6   r   r   r   get_flags_archA   s    zIntelFCompiler.get_flags_archc                 C   sx   t | }|  }|r(|dkr(|d tjdkrtz|d}|d W n tk
rb   d}Y nX ddg|||< |S )Nz8.0z-nofor_maindarwinr,   r   z-dynamiclibz-Wl,-undefined,dynamic_lookup)	r   get_flags_linker_sor:   appendsysplatformindexremove
ValueError)r   optr<   idxr   r   r   rA   D   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_switchr7   r8   r=   r?   rA   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efcNr   r)   r*   r+   r,   r-   r.   r/   r   r0   r2   r1   r3   r4   r/   
r#   r$   r%   rJ   rK   rL   r   rM   rN   r   r   r   r   r   r   T   s   

c                   @   sR   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S )r   Zintelemr   z&Intel Fortran Compiler for 64-bit appsz)EM64T-based|Intel\(R\) 64|64|IA-64|64-bitr'   rQ   rR   Nr   r+   r,   r-   r.   r/   rS   rT   r   r   r   r   r   h   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 appsr(   c                 C   s(   t  }ddd|d d|d g| jd< d S )Nr   z/FIz/cr   z/or   r   r   r   r   r   r   r      s      z'IntelVisualFCompiler.update_executableszlib.exer'   ZiflN/verbose/OUT:rS   z/c z/Foz/module:z/Ic                 C   s   ddddddg}|S )Nz/nologoz/MDz/nbsz/names:lowercasez/assume:underscorez/fppr   )r   rH   r   r   r   r8      s
     zIntelVisualFCompiler.get_flagsc                 C   s   g S r>   r   r6   r   r   r   r7      s    z#IntelVisualFCompiler.get_flags_freec                 C   s   ddgS )Nz/4Ybz/d2r   r6   r   r   r   get_flags_debug   s    z$IntelVisualFCompiler.get_flags_debugc                 C   s   ddgS )Nz/O1z/assume:minus0r   r6   r   r   r   r=      s    z"IntelVisualFCompiler.get_flags_optc                 C   s   ddgS )Nz
/arch:IA32z/QaxSSE3r   r6   r   r   r   r?      s    z#IntelVisualFCompiler.get_flags_archc                 C   s   t d S r>   )NotImplementedErrorr    r   r   r   r"      s    z/IntelVisualFCompiler.runtime_library_dir_option)r#   r$   r%   rJ   rL   r   rM   r   ar_exerN   r   Zcompile_switchZobject_switchZlibrary_switchrO   rP   r8   r7   rW   r=   r?   r"   r   r   r   r   r      s2   
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eflNr   r)   r*   z-4L72z-wr+   r,   rU   rV   rS   )r#   r$   r%   rJ   rL   r   rM   rN   r   rY   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   g S r>   r   r6   r   r   r   r?      s    z'IntelEM64VisualFCompiler.get_flags_archN)r#   r$   r%   rJ   rL   r   rM   r?   r   r   r   r   r
      s   
__main__)log   )customized_fcompilerr&   )compiler)rC   Znumpy.distutils.ccompilerr   Znumpy.distutils.fcompilerr   r   Z	compilersr   r   r   r   r   r   r	   r
   r#   	distutilsr[   set_verbosityZnumpy.distutilsr]   printr:   r   r   r   r   <module>   s*     62

