U Wzf_h9ã@s’dZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d „d e ƒZdS) a9distutils.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äeZdZdZddgdgdgddgdgddgddœZejdd…d krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZd,dd„Zdd„Zd-dd„Zd.d d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd/d*d+„ZdS)0Ú UnixCCompilerÚunixNÚccz-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.exec CsÒ| d||¡}|\}}}t||ƒ} |j| } |r>|  d|g¡|rN|| dd…<|r\|  |¡|  |¡|js~|dks~t||ƒrÎ|r”| tj   |¡¡z|  | ¡Wn*t k rÌ} z t | ƒ‚W5d} ~ XYnXdS)Nú-or)Z_fix_compile_argsrrÚextendÚappendÚforcerÚmkpathÚosÚpathÚdirnameÚspawnrr) ÚselfÚsourceZ output_fileÚmacrosÚ include_dirsÚ extra_preargsÚextra_postargsÚ fixed_argsÚignoreÚpp_optsZpp_argsÚmsg©r.ú{/private/var/folders/n9/53xbvtmd7sjg1q1l55xmpg58n4mgng/T/pip-unpacked-wheel-slp6y8a5/setuptools/_distutils/unixccompiler.pyÚ preprocessUs$      zUnixCCompiler.preprocessc Csp|j}tjdkr t |||¡}z | |||d|g|¡Wn*tk rj}z t|ƒ‚W5d}~XYnXdS)Nr r)rÚsysÚplatformÚ _osx_supportÚcompiler_fixupr#rr) r$ÚobjÚsrcÚextÚcc_argsr)r,rr-r.r.r/Ú_compileos ÿÿ zUnixCCompiler._compilerc Cs²| ||¡\}}|j||d}| ||¡r¢| tj |¡¡| |j|g||j ¡|j r®z| |j |g¡Wq®t k rž}z t |ƒ‚W5d}~XYq®Xn t  d|¡dS)N)Ú output_dirúskipping %s (up-to-date))Ú_fix_object_argsÚlibrary_filenameÚ _need_linkrr r!r"r#rÚobjectsrrr r Údebug)r$r?Zoutput_libnamer:r@Ú target_langÚoutput_filenamer-r.r.r/Úcreate_static_libzs$ ÿ ÿþþ zUnixCCompiler.create_static_libc CsÚ| ||¡\}}| |||¡}|\}}}t||||ƒ}t|ttdƒfƒsPtdƒ‚|dk rftj  ||¡}|  ||¡rÊ||j |d|g}| rœdg|dd…<| r¬| |dd…<| rº|  | ¡|  tj |¡¡zÎ|tjkrè|jdd…}n|jdd…}| dkrr|jrrd}tj |d¡dkr@d}d||kr@|d7}q&tj ||¡d kr\d}nd}|j||||<tjd krŠt ||¡}| ||¡Wn,tk rÆ}z t|ƒ‚W5d}~XYnXn t d |¡dS) Nz%'output_dir' must be a string or Nonerz-grzc++Úenvéú=Z ld_so_aixr r;)r<Z _fix_lib_argsrÚ isinstanceÚstrÚtypeÚ TypeErrorr r!Újoinr>r?rrr"rZ EXECUTABLErrrÚbasenamer1r2r3r4r#rr r r@)r$Z target_descr?rBr:Ú librariesÚ library_dirsÚruntime_library_dirsÚexport_symbolsr@r(r)Ú build_temprAr*Zlib_optsZld_argsZlinkerÚiÚoffsetr-r.r.r/Úlink”sZÿ ÿÿÿ      zUnixCCompiler.linkcCsd|S)Nú-Lr.)r$Údirr.r.r/Úlibrary_dir_optionÖsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NÚgcczg++r.)r$Z compiler_namer.r.r/Ú_is_gccÙszUnixCCompiler._is_gcccCs°tj t d¡¡}tjdd…dkr,d|Stjdd…dkrFd|Stjdd…d krz| |¡rnd d|gSd d|gS| |¡r¤t d ¡d kršd|Sd|Snd|SdS)NÚCCrr rUéZfreebsdz -Wl,-rpath=ézhp-uxz-Wl,+sz+sÚGNULDÚyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r r!rLrÚget_config_varr1r2rY)r$rVrr.r.r/Úruntime_library_dir_optionÜs     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr.)r$Úlibr.r.r/Úlibrary_optionszUnixCCompiler.library_optioncCsœ|j|dd}|j|dd}|j|dd}|j|dd}tjdkrpt d¡}t d|¡} | dkrfd } n |  d ¡} |D] } tj   | |¡} tj   | |¡} tj   | |¡}tj   | |¡}tjdkr@|   d ¡sà|   d ¡r@|   d ¡s@tj   | | d d…|¡} tj   | | d d…|¡} tj   | | d d…|¡}tj   | | d d…|¡}tj   | ¡rV| Stj   |¡rl|Stj   | ¡r‚| Stj   |¡rt|SqtdS)NÚshared)Zlib_typeÚdylibÚ xcode_stubÚstaticr ÚCFLAGSz-isysroot\s*(\S+)ú/rEz/System/z/usr/z /usr/local/) r=r1r2rr_ÚreÚsearchÚgroupr r!rKÚ startswithÚexists)r$Údirsrar@Zshared_fZdylib_fZ xcode_stub_fZstatic_fÚcflagsÚmÚsysrootrVrcrdrfrer.r.r/Úfind_library_file sF      ÿþþ  zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)Ú__name__Ú __module__Ú __qualname__Ú compiler_typeZ executablesr1r2Zsrc_extensionsZ obj_extensionZstatic_lib_extensionÚshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionr0r9rCrTrWrYr`rbrrr.r.r.r/r -s`ù    ÿ  ÿ ü B*r )Ú__doc__r r1riÚ distutilsrÚdistutils.dep_utilrÚdistutils.ccompilerrrrÚdistutils.errorsrrr r r r2r3r r.r.r.r/Ús