%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib64/python3.9/site-packages/numpy/distutils/fcompiler/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib64/python3.9/site-packages/numpy/distutils/fcompiler/__pycache__/gnu.cpython-39.pyc

a

z[ycP�
@sFddlZddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZddlm
Z
ddlmZddlmZddgZe�d�Zd	d
�ZGdd�de�ZGdd�de�Zd
d�Zedk�rBddlmZddlmZe�d�eed�� ��zeed�� ��Wn.e!�y@Z"zee"�WYdZ"["n
dZ"["00dS)�N)�Popen�PIPE�STDOUT)�filepath_from_subprocess_output)�	FCompiler)�LooseVersion�GnuFCompiler�Gnu95FCompilerzTarget: ([a-zA-Z0-9_\-]*)cCstjdkot��ddkS)N�win32rZ64bit)�sys�platform�architecture�rr�C/usr/lib64/python3.9/site-packages/numpy/distutils/fcompiler/gnu.py�is_win64src	@s�eZdZdZdZdZdd�Zdd�Zdd	gZd
dggd�d
d
gd
�ddgdggd
�d�Z	d
Z
d
Zej
dkrzejdkrzdgZejdkr�dD]Ze	e�d�q�dZdZdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd
S).r�gnu)�g77zGNU Fortran 77 compilercCs�|�d�r&||�d�dd���}qt|�dkrvt�d|�}|r�|�d�rZd|�d�fS|��d	kr�d
|�d�fSnft�d|�}|r�d
|�d�fSt�d|�}|r�|�d�}|�d
�s�|�d�s�|�d�r�d|fSd
|fSd}t||��dS)z6Handle the different versions of GNU fortran compilerszgfortran: warning�
�N�z	([0-9.]+)zGNU Fortranrr�gfortranzGNU Fortran\s+95.*?([0-9-.]+)z%GNU Fortran.*?\-?([0-9-.]+\.[0-9-.]+)�0�2�3z6A valid Fortran version was not found in this string:
)	�
startswith�find�strip�len�re�search�group�start�
ValueError)�self�version_string�m�v�errrrr�gnu_version_matchs.
�
�
zGnuFCompiler.gnu_version_matchcCs&|�|�}|r|ddkrdS|dS)Nrrr)r()r#r$r&rrr�
version_matchLs
zGnuFCompiler.version_matchrZf77N�-dumpversion)N�-g�-Wall�-fno-second-underscore)Nr+r,�ar�-cr�ranlib��version_cmd�compiler_f77�compiler_f90�compiler_fix�	linker_soZarchiverr0�
linker_exe�nt�cygwinz-fPICr
)r2r3r6r7�-mno-cygwin�g2c�gnu95cCs�|jdd�}tjdkrztj�dd�}|sjddl}|�d�}|s\d}d|��}tj	|dd�t
|�tjd<|�gd	��n
|�d
�tj�
d�r�|�d�|S)
Nr�darwinZMACOSX_DEPLOYMENT_TARGETrz10.9z.Env. variable MACOSX_DEPLOYMENT_TARGET set to �)�
stacklevel)z
-undefinedZdynamic_lookupz-bundlez-sharedZsunosz
-mimpure-text)r6rr�os�environ�get�	sysconfigZget_config_var�warnings�warn�str�extend�appendr)r#�opt�targetrC�srrr�get_flags_linker_soms 




z GnuFCompiler.get_flags_linker_soc	CsHzt�|jdg�}Wnttjfy.Yn0t|�}tj�|�SdS)Nz-print-libgcc-file-name)	�
subprocess�check_outputr3�OSError�CalledProcessErrorrr@�path�dirname)r#�outputrrr�get_libgcc_dir�s�
zGnuFCompiler.get_libgcc_dirc	Cs�tjdd�dkrd}ntjdkr(d}nd}d}|r�d�|�g}zt�|j|�}WnttjfylYn0t|�}t	j
�|�}|S)N��linuxzlibgfortran.sor=zlibgfortran.dylibz-print-file-name={0})rr�formatrMrNr3rOrPrr@rQrR)r#Zlibgfortran_nameZlibgfortran_dirZfind_lib_argrSrrr�get_libgfortran_dir�s"
�z GnuFCompiler.get_libgfortran_dircCs�g}tjdd�dkr�|��}|r�tjdkr�|�d�s�tj�|�}tj�|d|j�}tj�	|�s�tjj|gtj
fd�R�}tj�tj�|d��}tj�|d|j�}tj�	|�r�|�|�|�|�|�
�}|r�|�|�|S)NrUrVr
z/usr/libzlib%s.a��lib)rrrTrr@rQ�normpath�joinr;�exists�pardir�abspathrHrX)r#rI�drQ�rootZd2�lib_gfortran_dirrrr�get_library_dirs�s$


zGnuFCompiler.get_library_dirscCs�g}|��}|durL|jd}|j||jf}tj�tj�||��sR|j}n|j}|durd|�|�|j	}t
jdkr�|r�|jdkr�|�d�t
jdkr�|�d�|S)Nz-picr
�msvc�gccr=�
cc_dynamic)
rTr;Zstatic_lib_formatZstatic_lib_extensionr@rQ�isfiler\rH�
c_compilerrr�
compiler_type)r#rIr`r;�frhrrr�
get_libraries�s$

�


zGnuFCompiler.get_librariescCsdgS)Nr+r�r#rrr�get_flags_debug�szGnuFCompiler.get_flags_debugcCs0|��}|r|dkrdg}ndg}|�d�|S)Nz3.3.3z-O2z-O3z-funroll-loops)�get_versionrH)r#r&rIrrr�
get_flags_opt�s
zGnuFCompiler.get_flags_optcCs^ddl}z|��d}Wnty.gYS0t�d�}g}|�|�D]}|d|g7}qH|S)z( Return detected arch flags from CFLAGS rNZCFLAGSz
-arch\s+(\w+)�-arch)rCZget_config_vars�KeyErrorr�compile�findall)r#rCZcflagsZarch_re�
arch_flags�archrrr�
_c_arch_flags�s

zGnuFCompiler._c_arch_flagscCsgS)Nrrlrrr�get_flags_arch�szGnuFCompiler.get_flags_archcCs\tjdkstjdkrt�d|vs$J�tjdkr8d|��Stj�d�rNd|��Sd|��SdS)	Nr
r9�,r=z-Wl,-rpath,�ZaixZos400z-Wl,-blibpath:z-Wl,-rpath=)rr�NotImplementedErrorr)r#�dirrrr�runtime_library_dir_option�s


z'GnuFCompiler.runtime_library_dir_option)�__name__�
__module__�__qualname__ri�compiler_aliases�descriptionr(r)�possible_executables�executables�module_dir_switch�module_include_switchr@�namerrZ	pic_flags�keyrHr;Zsuggested_f90_compilerrLrTrXrcrkrmrorvrwr|rrrrrsD-�

#
c	@seZdZdZdZdZdd�ZddgZdd	ggd
�gd�gd
�gd�d
dgdgddgd�ZdZ	dZ
ej�
d�r�ed�d�e��ddd�dkr�dD]Zee�d�q�dZdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�ZdS)1r	r<)rzGNU Fortran 95 compilercCs\|�|�}|r|ddkrdS|d}t|�dkr4n$tjdkrXdD]}|j|�d�qB|S)Nrrr�4r
)r2r3r4r5r6r7r:)r(rrrr�rH)r#r$r&r�rrrr)s

zGnu95FCompiler.version_matchrZf95�<F90>r*)Nr,r+z-ffixed-formr-)Nr,r+r-)r�r,r+r.r/r0Nr,r1z-Jz-Iryr6z	-lpthreadrr>Z64)r3r4r5r6r7z-maix64cCs^tjdksgSg}|��}d|vr0d||�d�<dD]$}t||�r4||vr4|�d|g�q4|S)z>Return a list of -arch flags for every supported architecture.r=Zi386�i686)Zppcr�Zx86_64Zppc64Zs390xrp)rrrv�index�_can_targetrG)r#�cmdrtZc_archsrurrr�_universal_flags<s
zGnu95FCompiler._universal_flagscCs*t�|�}|�|j�}|r&||dd�<|S�Nr)r�	get_flagsr�r4�r#�flagsrtrrrr�Ls

zGnu95FCompiler.get_flagscCs*t�|�}|�|j�}|r&||dd�<|Sr�)rrLr�r6r�rrrrLSs

z"Gnu95FCompiler.get_flags_linker_soc	Cs�t�|�}tjdkr�|j}|r�|jdkr�|��}|r�tj�	|�
��}tjj|gtjfd�R�}tj�|d�}tj�	|�}tj�
tj�|d��r�|�|�|��}|r�|�|�|S)Nr
rdrYrZzlibmingwex.a)rrcrrrhri�
get_targetr@rQr[rTr\r^r]rHrX)	r#rIrhrJr`rarQZmingwdirrbrrrrcZs 



zGnu95FCompiler.get_library_dirscCs�t�|�}tjdkr|�d�tjdkr�|j}|rn|jdkrnd|vrn|�d�}|�|dd�|�|dd�|j}|r�|jdkr�gS|S)	Nr=rfr
rdrerZmingwexZmingw32)	rrkrr�removerhrir��insert)r#rIrh�irrrrkms




zGnu95FCompiler.get_librariesc	Cszz<tj|jdgtjtjd�}|��\}}|p0d|p6d}WnttjfyTYn"0t|�}t�	|�}|rv|�
d�SdS)Nz-v)�stdin�stderr�r�)rMrr3r�communicaterOrPr�TARGET_Rrr )r#�p�stdoutr�rSr%rrrr�s
�

zGnu95FCompiler.get_targetc	Cszt��}|D]J}t|d��,}|�d�}|s,q8|�|�qWd�q1sL0Yqt�|���}|�d�}|�	d�S)N�rbi�ascii�=)
�hashlibZsha1�open�read�update�base64Z	b32encodeZdigest�decode�rstrip)r#�	filenames�h�fnrj�block�textrrr�_hash_files�s
,
zGnu95FCompiler._hash_filescCs`|j}|jdkrtd��|�t|�t|��}t�r:d}nd}dtj�tj�	|d��ddd�}	|	d	|d
|}
|
d}|
d}|
d
}
tj�
||�}tj�
||�}tj�
||
�}tj�|�r�||fS|r�dgt|�dg}|j|||t|�dd|ddddgd�t��r d}nd}d|d||g}|j
�sF|��|�|jg|�||fS)zeCreate a wrapper shared library for the given objects

        Return an MSVC-compatible lib
        rdzThis method only supports MSVCZ	win_amd64r
rZrN��.z
.gfortran-z.dllz.defz.libz-Wl,--whole-archivez-Wl,--no-whole-archivez-Wl,--allow-multiple-definitionz-Wl,--output-def,z-Wl,--export-all-symbolsz-Wl,--enable-auto-importz-staticz-mlong-double-64)�
output_dirZextra_postargsz/MACHINE:X64z/MACHINE:X86z/def:z/OUT:)rhrir"r��listrr@rQ�splitext�basenamer\rgZlink_shared_objectZinitializedZ
initializeZspawnrZ)r#�objectsr��
extra_dll_dir�chained_dlls�
is_archiverhZobject_hash�tagr�Z	root_nameZdll_nameZdef_nameZlib_nameZdll_pathZdef_pathZlib_pathZ	specifierZlib_argsrrr�_link_wrapper_lib�s`
������z Gnu95FCompiler._link_wrapper_libcCs
|jdvS)N)rd)ri)r#Zcompilerrrr�can_ccompiler_link�sz!Gnu95FCompiler.can_ccompiler_linkcCs�|jjdkr�g}g}|D](}|���d�r6|�|�q|�|�qg}g}|ddd�D]6}	|j|	g|||dd�\}
}|�d|
�|�d|�qX|s�|S|j||||dd�\}
}|
g|Std	��dS)
z�
        Convert a set of object files that are not compatible with the default
        linker, to a file that is compatible.
        rdz.aN���T)r�r�rFzUnsupported C compiler)rhri�lower�endswithrHr�r�r")r#r�r�r�ZarchivesZ
plain_objects�objZchained_libsr��archiverZZdllrrr�wrap_unlinkable_objects�s<�
�

z&Gnu95FCompiler.wrap_unlinkable_objects)r}r~rrir�r�r)r�r�r�r�rrrrHr
r�r;r�r�rLrcrkr�r�r�r�r�rrrrr	
s@�
>c	Cs�|dd�}tjdd�\}}t�|�z�tj�|�}tj�|�dd}zZ|�d|d|g�t|t	t
|d�}|��|jdkWtj�
|�r�t�|�Wt�|�Sntj�
|�r�t�|�0Wt�|�nt�|�0dS)	z7Return true if the architecture supports the -arch flagNz.f)�suffixrz.orpz-c)r�r��cwd)�tempfileZmkstempr@�closerQrRr�rGrrrr��
returncoder]r�)r�ruZnewcmdZfid�filenamer`rSr�rrrr�s*


�
��r��__main__)�log)�customized_fcompilerr>rZg95)#rr@rrDrr�r�r�rMrrrZnumpy.distutils.exec_commandrZnumpy.distutils.fcompilerrZdistutils.versionrZ	compilersrrr�rrr	r�r}Z	distutilsr�Znumpy.distutilsr�Z
set_verbosity�printrn�	Exception�errrr�<module>s<
q



Zerion Mini Shell 1.0