o
    xŸŽim:  ã                   @   s’   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZmZmZmZ ddlmZ ejdkr?ddlZG d	d
„ d
e	ƒZdS )a9  distutils.unixccompiler

Contains the UnixCCompiler class, a subclass of CCompiler that handles
the "typical" Unix-style command-line C compiler:
  * macros defined with -Dname[=value]
  * macros undefined with -Uname
  * include search directories specified with -Idir
  * libraries specified with -lllib
  * library search directories specified with -Ldir
  * compile handled by 'cc' (or similar) executable with -c option:
    compiles .c to .o
  * link static library handled by 'ar' command (possibly with 'ranlib')
  * link shared library handled by 'cc -shared'
é    N)Ú	sysconfig)Únewer)Ú	CCompilerÚgen_preprocess_optionsÚgen_lib_options)ÚDistutilsExecErrorÚCompileErrorÚLibErrorÚ	LinkError)ÚlogÚdarwinc                	   @   sê   e Zd ZdZddgdgdgddgdgddgddœZejdd… d	kr'd
ged
< g d¢ZdZdZ	dZ
dZdZd Z ZZeZejdkrDdZ		d'dd„Zdd„ Z	d(dd„Z				d)dd„Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd*d%d&„ZdS )+ÚUnixCCompilerÚunixNÚccz-sharedÚarz-cr)ÚpreprocessorÚcompilerÚcompiler_soÚcompiler_cxxÚ	linker_soÚ
linker_exeÚarchiverÚranlibé   r   r   )z.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%sÚcygwinz.exec              
   C   sÊ   |   d ||¡}|\}}}t||ƒ}	| j|	 }
|r|
 d|g¡ |r'||
d d…< |r.|
 |¡ |
 |¡ | js?|d u s?t||ƒrc|rJ|  tj	 
|¡¡ z|  |
¡ W d S  tyb } zt|ƒ‚d }~ww d S )Nú-or   )Z_fix_compile_argsr   r   ÚextendÚappendÚforcer   ÚmkpathÚosÚpathÚdirnameÚspawnr   r   )ÚselfÚsourceZoutput_fileZmacrosÚinclude_dirsÚextra_preargsÚextra_postargsÚ
fixed_argsÚignoreÚpp_optsZpp_argsÚmsg© r-   úmC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\setuptools/_distutils/unixccompiler.pyÚ
preprocessU   s*   




€ÿûzUnixCCompiler.preprocessc           	   
   C   sd   | j }tjdkrt ||| ¡}z|  || |d|g | ¡ W d S  ty1 } zt|ƒ‚d }~ww )Nr   r   )r   ÚsysÚplatformÚ_osx_supportÚcompiler_fixupr#   r   r   )	r$   ÚobjÚsrcÚextZcc_argsr(   r+   r   r,   r-   r-   r.   Ú_compileo   s   
ÿÿ€ÿzUnixCCompiler._compiler   c              
   C   s¬   |   ||¡\}}| j||d�}|  ||¡rN|  tj |¡¡ |  | j|g | | j	 ¡ | j
rLz|  | j
|g ¡ W d S  tyK } zt|ƒ‚d }~ww d S t d|¡ d S )N)Ú
output_dirúskipping %s (up-to-date))Ú_fix_object_argsÚlibrary_filenameÚ
_need_linkr   r    r!   r"   r#   r   Úobjectsr   r   r	   r   Údebug)r$   r=   Zoutput_libnamer8   r>   Útarget_langÚoutput_filenamer,   r-   r-   r.   Úcreate_static_libz   s*   ÿÿþþ	€ÿýzUnixCCompiler.create_static_libc              
   C   sÈ  |   ||¡\}}|  |||¡}|\}}}t| |||ƒ}t|ttd ƒfƒs(tdƒ‚|d ur3tj 	||¡}|  
||¡rÜ|| j | d|g }|	rMdg|d d…< |
rU|
|d d…< |r\| |¡ |  tj |¡¡ zf|tjkrs| jd d … }n| jd d … }|dkr·| jr·d}tj |d ¡dkrŸd}d|| v rŸ|d7 }d|| v s•tj || ¡d	kr¬d}nd}| j| ||| < tjd
krÂt ||¡}|  || ¡ W d S  tyÛ } zt|ƒ‚d }~ww t d|¡ d S )Nz%'output_dir' must be a string or Noner   z-gr   zc++Úenvé   ú=Z	ld_so_aixr   r9   )r:   Z_fix_lib_argsr   Ú
isinstanceÚstrÚtypeÚ	TypeErrorr    r!   Újoinr<   r=   r   r   r"   r   Z
EXECUTABLEr   r   r   Úbasenamer0   r1   r2   r3   r#   r   r
   r   r>   )r$   Ztarget_descr=   r@   r8   Ú	librariesÚlibrary_dirsÚruntime_library_dirsÚexport_symbolsr>   r'   r(   Ú
build_tempr?   r)   Zlib_optsZld_argsZlinkerÚiÚoffsetr,   r-   r-   r.   Úlink”   s`   ÿ
ÿÿÿ

ÿ
€ÿzUnixCCompiler.linkc                 C   ó   d| S )Nú-Lr-   )r$   Údirr-   r-   r.   Úlibrary_dir_optionÖ   ó   z UnixCCompiler.library_dir_optionc                 C   s   d|v pd|v S )NZgcczg++r-   )r$   Zcompiler_namer-   r-   r.   Ú_is_gccÙ   s   zUnixCCompiler._is_gccc                 C   sÜ   t j t d¡¡}tjd d… dkr/ddlm}m	} |ƒ }|r+||ƒddgkr+d| S d	| S tjd d
… dkr<d| S tjd d… dkrV|  
|¡rPdd	| gS dd	| gS |  
|¡rjt d¡dkrfd| S d| S d| S )NÚCCr   r   r   )Úget_macosx_target_verÚsplit_versioné
   é   z-Wl,-rpath,rT   é   Zfreebsdz-Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDÚyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r    r!   rJ   r   Úget_config_varr0   r1   Údistutils.utilrZ   r[   rX   )r$   rU   r   rZ   r[   Zmacosx_target_verr-   r-   r.   Úruntime_library_dir_optionÜ   s$   

z(UnixCCompiler.runtime_library_dir_optionc                 C   rS   )Nz-lr-   )r$   Úlibr-   r-   r.   Úlibrary_option
  rW   zUnixCCompiler.library_optionc                 C   sŽ  | j |dd�}| j |dd�}| j |dd�}| j |dd�}tjdkr8t d¡}t d|¡}	|	d u r3d	}
n|	 d
¡}
|D ]Š}tj	 
||¡}tj	 
||¡}tj	 
||¡}tj	 
||¡}tjdkrœ| d¡sl| d¡rœ| d¡sœtj	 
|
|d
d … |¡}tj	 
|
|d
d … |¡}tj	 
|
|d
d … |¡}tj	 
|
|d
d … |¡}tj	 |¡r¦|  S tj	 |¡r°|  S tj	 |¡rº|  S tj	 |¡rÄ|  S q:d S )NÚshared)Zlib_typeÚdylibÚ
xcode_stubÚstaticr   ÚCFLAGSz-isysroot\s*(\S+)ú/rC   z/System/z/usr/z/usr/local/)r;   r0   r1   r   r`   ÚreÚsearchÚgroupr    r!   rI   Ú
startswithÚexists)r$   Údirsrc   r>   Zshared_fZdylib_fZxcode_stub_fZstatic_fÚcflagsÚmZsysrootrU   re   rf   rh   rg   r-   r-   r.   Úfind_library_file  sH   



ÿþþÿzUnixCCompiler.find_library_file)NNNNN)Nr   N)
NNNNNr   NNNN)r   )Ú__name__Ú
__module__Ú__qualname__Úcompiler_typeZexecutablesr0   r1   Zsrc_extensionsZobj_extensionZstatic_lib_extensionÚshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZexe_extensionr/   r7   rA   rR   rV   rX   rb   rd   rs   r-   r-   r-   r.   r   -   sN    ù



ÿ
ÿ
üB.r   )Ú__doc__r    r0   rk   Ú	distutilsr   Údistutils.dep_utilr   Údistutils.ccompilerr   r   r   Údistutils.errorsr   r   r	   r
   r   r1   r2   r   r-   r-   r-   r.   Ú<module>   s    
