B
    0*™\DQ  ã               @   sœ  d dl Z d dlZd dlZd dlZddlmZ ej ej¡Z	ej ej
¡Zej ej¡Zej ej¡Zdejkr‚ej ejd ¡Znej ej ej¡¡Zdd„ ZeeddƒZejdkrÎd	d
„ ZeeƒZeeƒZdd„ Zeƒ ZdZyesìejZW n ek
r   Y nX dd„ Zd+dd„Z d,dd„Z!dd„ Z"dd„ Z#dd„ Z$d-dd„Z%e &d¡Z'e &d¡Z(e &d¡Z)d.dd „Z*d!d"„ Z+da,d#d$„ Z-d%d&„ Z.d'd(„ Z/d)d*„ Z0dS )/é    Né   )ÚDistutilsPlatformErrorZ_PYTHON_PROJECT_BASEc             C   s.   x(dD ] }t j t j | d|¡¡rdS qW dS )N)z
Setup.distzSetup.localZModulesTF)ÚosÚpathÚisfileÚjoin)ÚdÚfn© r
   ú>C:\ALexclude\prg\programme\Python37\Lib\distutils\sysconfig.pyÚ_is_python_source_dir'   s    
r   Ú_homeÚntc             C   s0   | r,t j | ¡ t j t j td¡¡¡r,tS | S )NZPCbuild)r   r   ÚnormcaseÚ
startswithr   ÚPREFIX)r   r
   r
   r   Ú_fix_pcbuild0   s    r   c               C   s   t rtt ƒS ttƒS )N)Ú	_sys_homer   Úproject_baser
   r
   r
   r   Ú_python_build8   s    r   Ú c               C   s   dt jd d…  S )Nz%d.%dé   )ÚsysÚversion_infor
   r
   r
   r   Úget_python_versionL   s    r   c             C   s¼   |d kr| rt pt}tjdkrjtrL| r.tp,tS tj t	dƒd¡}tj 
|¡S dtƒ  t }tj |d|¡S tjdkrªtrœtj |d¡tjj tj |d¡ S tj |d¡S tdtj ƒ‚d S )	NÚposixÚsrcdirZIncludeÚpythonZincluder   ÚPCzFI don't know where Python installs its C header files on platform '%s')ÚBASE_EXEC_PREFIXÚBASE_PREFIXr   ÚnameÚpython_buildr   r   r   r   Úget_config_varÚnormpathr   Úbuild_flagsÚpathsepr   )Úplat_specificÚprefixZincdirZ
python_dirr
   r
   r   Úget_python_incT   s$    

r)   c             C   sž   |d kr&|r| rt pt}n| r"tp$t}tjdkr^tj |ddtƒ  ¡}|rN|S tj |d¡S n<tjdkrŒ|rztj |d¡S tj |dd¡S nt	dtj ƒ‚d S )Nr   Úlibr   zsite-packagesr   ZLibz?I don't know where Python installs its library on platform '%s')
r   r    ÚEXEC_PREFIXr   r   r!   r   r   r   r   )r'   Ústandard_libr(   Z	libpythonr
   r
   r   Úget_python_lib|   s"    

r-   c          
   C   sú  | j dkrötjdkr8tdƒs8dd l}| t¡ dtd< tdddd	d
ddddƒ	\	}}}}}}}}	}
dtj	kr¬tj	d }tjdkr¨dtj	kr¨| 
|¡r¨||t|ƒd …  }|}dtj	krÀtj	d }dtj	krÔtj	d }dtj	krêtj	d }n|d }dtj	kr|d tj	d  }d	tj	kr@|d tj	d	  }|d tj	d	  }dtj	kr‚|d tj	d  }|d tj	d  }|d tj	d  }dtj	kr˜tj	d }	dtj	kr¸|	d tj	d  }n|	d |
 }|d | }| j|||d | ||||d || _d S )NZunixÚdarwinZCUSTOMIZED_OSX_COMPILERr   ÚTrueZCCZCXXZOPTÚCFLAGSZCCSHAREDZLDSHAREDZSHLIB_SUFFIXZARZARFLAGSZCPPz -EÚLDFLAGSú ÚCPPFLAGS)ZpreprocessorÚcompilerZcompiler_soZcompiler_cxxZ	linker_soZ
linker_exeÚarchiver)Zcompiler_typer   Úplatformr#   Ú_osx_supportÚcustomize_compilerÚ_config_varsÚget_config_varsr   Úenvironr   ÚlenZset_executablesZshared_lib_extension)r4   r7   ZccZcxxÚoptZcflagsZccsharedZldsharedZshlib_suffixÚarZar_flagsZnewccZcppr5   Zcc_cmdr
   r
   r   r8   £   s\    


 











r8   c              C   sD   t r,tjdkr"tj tptd¡} q6tp(t} n
tdd} tj | d¡S )Nr   r   r   )r'   z
pyconfig.h)r"   r   r!   r   r   r   r   r)   )Zinc_dirr
   r
   r   Úget_config_h_filenameì   s    


r?   c              C   s\   t rtj tptd¡S tddd} d tƒ t	¡}t
tjdƒrL|dtjj 7 }tj | |d¡S )NZMakefiler   r   )r'   r,   zconfig-{}{}Ú
_multiarchz-%s)r"   r   r   r   r   r   r-   Úformatr   r%   Úhasattrr   Úimplementationr@   )Zlib_dirZconfig_filer
   r
   r   Úget_makefile_filenameù   s    rD   c             C   sž   |d kri }t  d¡}t  d¡}xx|  ¡ }|s0P | |¡}|rz| dd¡\}}yt|ƒ}W n tk
rn   Y nX |||< q"| |¡}|r"d|| d¡< q"W |S )Nz"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
r   r   r   )ÚreÚcompileÚreadlineÚmatchÚgroupÚintÚ
ValueError)ÚfpÚgZ	define_rxZundef_rxÚlineÚmÚnÚvr
   r
   r   Úparse_config_h  s(    


  

rR   z"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c          	   C   sÌ  ddl m} || ddddd}|d kr*i }i }i }x”| ¡ }|d krFP t |¡}|r4| dd¡\}}	|	 ¡ }	|	 dd¡}
d	|
krŠ|	||< q4yt|	ƒ}	W n$ t	k
rº   |	 dd	¡||< Y q4X |	||< q4W d
}x¶|r„x¨t
|ƒD ]š}|| }t |¡pt |¡}|rx| d¡}d}||kr2t|| ƒ}nˆ||krBd}nx|tjkrZtj| }n`||kr®| d¡rˆ|dd … |krˆd}n$d| |krœd}nt|d|  ƒ}nd ||< }|r~|| ¡ d … }|d | ¡ … | | }d	|krü|||< nzyt|ƒ}W n" t	k
r*   | ¡ ||< Y n
X |||< ||= | d¡r~|dd … |kr~|dd … }||kr~|||< qâ||= qâW qÐW | ¡  x.| ¡ D ]"\}}	t|	tƒr˜|	 ¡ ||< q˜W | |¡ |S )Nr   )ÚTextFiler   Úsurrogateescape)Zstrip_commentsZskip_blanksZ
join_linesÚerrorsr   z$$r   ú$)r0   r1   r3   TFZPY_é   )Zdistutils.text_filerS   rG   Ú_variable_rxrH   rI   ÚstripÚreplacerJ   rK   ÚlistÚ_findvar1_rxÚsearchÚ_findvar2_rxÚstrr   r;   r   ÚendÚstartÚcloseÚitemsÚ
isinstanceÚupdate)r	   rM   rS   rL   ZdoneZnotdonerN   rO   rP   rQ   ZtmpvZrenamed_variablesr!   ÚvalueÚfoundÚitemZafterÚkr
   r
   r   Úparse_makefile'  s„    








 


rj   c             C   sZ   xTt  | ¡pt | ¡}|rP| ¡ \}}| d|… | | d¡¡ | |d …  } qP qW | S )Nr   r   )r\   r]   r^   ÚspanÚgetrI   )ÚsÚvarsrO   Zbegr`   r
   r
   r   Úexpand_makefile_vars‘  s    *ro   c           
   C   sV   t j ddjtjtjttjddƒd¡} t	| t
ƒ tƒ dgdƒ}|j}i at |¡ d S )NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r@   r   )Zabir6   Z	multiarchÚbuild_time_varsr   )r   r;   rl   rA   r   Úabiflagsr6   ÚgetattrrC   Ú
__import__ÚglobalsÚlocalsrp   r9   re   )r!   Z_temprp   r
   r
   r   Ú_init_posix¬  s    rv   c              C   s~   i } t ddd| d< t ddd| d< tdd| d< t ¡ d | d< d	| d
< tƒ  dd¡| d< tj tj 	t
j¡¡| d< | ad S )Nr   r   )r'   r,   ZLIBDESTZ
BINLIBDEST)r'   Z	INCLUDEPYÚ
EXT_SUFFIXz.exeZEXEÚ.r   ZVERSIONZBINDIR)r-   r)   Ú_impÚextension_suffixesr   rZ   r   r   ÚdirnameÚabspathr   Ú
executabler9   )rM   r
   r
   r   Ú_init_nt¼  s    r~   c              G   s`  t d kr*tƒ  dtj ¡}|r(|ƒ  ni a tt d< tt d< t  d¡}|d k	rV|t d< t  dt¡}tjdkrœtrŽtj	 
tƒ ¡}tj	 ||¡}ntj	 
tƒ ¡}tj	 tj	 |¡¡t d< trtjdkrt}tj	 t d ¡s|t ¡ krtj	 |t d ¡}tj	 |¡t d< tjdkr*d	d l}| t ¡ | rXg }x| D ]}| t  |¡¡ q:W |S t S d S )
NZ_init_r(   Úexec_prefixrw   ÚSOr   r   r.   r   )r9   rt   rl   r   r!   r   r+   r   r"   r   r{   rD   r   r|   r$   ÚisabsÚgetcwdr   r6   r7   Zcustomize_config_varsÚappend)ÚargsÚfuncr€   r   Úbaser7   Zvalsr!   r
   r
   r   r:   Ï  s@    




r:   c             C   s*   | dkrdd l }| dtd¡ tƒ  | ¡S )Nr€   r   z SO is deprecated, use EXT_SUFFIXr   )ÚwarningsÚwarnÚDeprecationWarningr:   rl   )r!   r‡   r
   r
   r   r#     s    r#   )r   N)r   r   N)N)N)1ry   r   rE   r   rU   r   r   r$   r(   r   r   r+   Úbase_prefixr    Úbase_exec_prefixr   r;   r|   r   r{   r}   r   rr   r   r!   r   r   r"   r%   rq   ÚAttributeErrorr   r)   r-   r8   r?   rD   rR   rF   rX   r\   r^   rj   ro   r9   rv   r~   r:   r#   r
   r
   r
   r   Ú<module>   sT   



(
'I




jJ