3  f¨:ã@sŽddlZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z m Z mZmZddlmZejdkrzddlZGdd „d eƒZdS) éN)Ú sysconfig)Únewer)Ú CCompilerÚgen_preprocess_optionsÚgen_lib_options)ÚDistutilsExecErrorÚ CompileErrorÚLibErrorÚ LinkError)ÚlogÚdarwinc sôeZdZdZddgdgdgddgdgddgddœZejdd…d krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkr�dZ‡fdd„Zd.dd„Zdd„Zd/d d!„Zd0d"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd1d,d-„Z‡ZS)2Ú UnixCCompilerZunixNZccz-sharedÚarz-cr)Ú preprocessorÚcompilerÚ compiler_soÚ compiler_cxxÚ linker_soÚ linker_exeÚarchiverÚranlibér rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%sÚcygwinz.execsFt|j|ƒj|||ƒ\}}}tjdƒ}|r<||kr<|j|ƒ|||fS)NÚLIBDIR)ÚsuperÚ __class__Ú _fix_lib_argsrÚget_config_varÚremove)ÚselfÚ librariesÚ library_dirsÚruntime_library_dirsZlibdir)r©ú2/opt/alt/python36/lib64/python3.6/unixccompiler.pyrUs    zUnixCCompiler._fix_lib_argsc CsÒ|jd||ƒ}|\}}}t||ƒ} |j| } |r>| jd|gƒ|rN|| dd…<|r\| j|ƒ| j|ƒ|js~|dks~t||ƒrÎ|r”|jtj j |ƒƒy|j | ƒWn*t k rÌ} zt | ƒ‚WYdd} ~ XnXdS)Nz-or)Z_fix_compile_argsrrÚextendÚappendÚforcerÚmkpathÚosÚpathÚdirnameÚspawnrr) rÚsourceZ output_fileZmacrosZ include_dirsÚ extra_preargsÚextra_postargsÚ fixed_argsÚignoreÚpp_optsZpp_argsÚmsgr#r#r$Ú preprocess_s$      zUnixCCompiler.preprocessc Csp|j}tjdkr tj|||ƒ}y |j|||d|g|ƒWn*tk rj}zt|ƒ‚WYdd}~XnXdS)Nr z-o)rÚsysÚplatformÚ _osx_supportÚcompiler_fixupr,rr) rÚobjÚsrcZextZcc_argsr/r2rr3r#r#r$Ú_compileys   zUnixCCompiler._compilercCs²|j||ƒ\}}|j||d�}|j||ƒr¢|jtjj|ƒƒ|j|j|g||j ƒ|j r®y|j|j |gƒWq®t k rž}zt |ƒ‚WYdd}~Xq®Xn t jd|ƒdS)N)Ú output_dirzskipping %s (up-to-date))Ú_fix_object_argsÚlibrary_filenameÚ _need_linkr(r)r*r+r,rÚobjectsrrr r Údebug)rr@Zoutput_libnamer<rAÚ target_langÚoutput_filenamer3r#r#r$Úcreate_static_lib„s zUnixCCompiler.create_static_libcCsº|j||ƒ\}}|j|||ƒ}|\}}}t||||ƒ}t|ttdƒfƒsPtdƒ‚|dk rftjj ||ƒ}|j ||ƒ�rª||j |d|g}| rœdg|dd…<| r¬| |dd…<| rº|j | ƒ|j tjj|ƒƒy®|tjkrè|jdd…}n|jdd…}| dk�rR|j�rRd}tjj|dƒdk�rDd}xd||k�rB|d7}�q(W|j|||<tjd k�rjtj||ƒ}|j||ƒWn,tk �r¦}zt|ƒ‚WYdd}~XnXn tjd |ƒdS) Nz%'output_dir' must be a string or Nonez-oz-grzc++Úenvéú=r zskipping %s (up-to-date))r=rrÚ isinstanceÚstrÚtypeÚ TypeErrorr)r*Újoinr?r@r%r(r+rZ EXECUTABLErrrÚbasenamer5r6r7r8r,rr r rA)rZ target_descr@rCr<r r!r"Zexport_symbolsrAr.r/Z build_temprBr0Zlib_optsZld_argsZlinkerÚir3r#r#r$ÚlinkžsH      zUnixCCompiler.linkcCsd|S)Nz-Lr#)rÚdirr#r#r$Úlibrary_dir_optionØsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NÚgcczg++r#)rZ compiler_namer#r#r$Ú_is_gccÛszUnixCCompiler._is_gcccCsÜtjjtjdƒƒ}tjdd…dkr,d|Stjdd…dkrFd|Stjdd…d krz|j|ƒrnd d|gSd d|gStjdd…d ksžtjdd…d kr¦d|gS|j|ƒrÐtjdƒdkrÆd|Sd|Snd|SdS)NÚCCrr z-LéZfreebsdz -Wl,-rpath=ézhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathÚGNULDÚyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r)r*rMrrr5r6rS)rrPrr#r#r$Úruntime_library_dir_optionÞs    $  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rÚlibr#r#r$Úlibrary_option szUnixCCompiler.library_optioncCs�|j|dd�}|j|dd�}|j|dd�}|j|dd�}tjdkrptjdƒ}tjd|ƒ} | dkrfd } n | jd ƒ} �x|D�]} tj j | |ƒ} tj j | |ƒ} tj j | |ƒ}tj j | |ƒ}tjdkoÞ| j d ƒsâ| j d ƒoÞ| j d ƒ �rBtj j | | d d…|ƒ} tj j | | d d…|ƒ} tj j | | d d…|ƒ}tj j | | d d…|ƒ}tj j | ƒ�rT| Stj j |ƒ�rf|Stj j | ƒ�rx| Stj j |ƒrx|SqxWdS)NÚshared)Zlib_typeÚdylibÚ xcode_stubÚstaticr ÚCFLAGSz-isysroot\s+(\S+)ú/rFz/System/z/usr/z /usr/local/) r>r5r6rrÚreÚsearchÚgroupr)r*rLÚ startswithÚexists)rÚdirsrZrAZshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsÚmZsysrootrPr\r]r_r^r#r#r$Úfind_library_file s>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)Ú__name__Ú __module__Ú __qualname__Z compiler_typeZ executablesr5r6Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr4r;rDrOrQrSrYr[riÚ __classcell__r#r#)rr$r -sF       6,r )r)r5rbZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r6r7r r#r#r#r$Ús