a  ze?@sddlZddlZddlZddlmZmZmZddlZddlm Z ddl m Z ddl m Z mZmZmZddlmZddlmZdd ZGd d d e ZGd d d eZdZdZdZddZedZddZddZddZ dS)N)PopenPIPE check_output) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError) LooseVersion)find_executablecCstjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)NzMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )sysversionfind ValueError)Zmsc_posZmsc_verrM/opt/bitninja-python-dojo/embedded/lib/python3.9/distutils/cygwinccompiler.py get_msvcr=s rc @sNeZdZdZdZdZdZdZdZdZ dd d Z d d Z dddZ dddZ d S)CygwinCCompilercygwinz.o.az.dllzlib%s%sz%s%sz.exercCst||||t\}}|d||f|turB|d|t\|_|_|_ ||j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |dnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrap2.13-shared -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %sZcompiler compiler_soZ compiler_cxxZ linker_exeZ linker_so2.91.57msvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforcestatusZdetails shared_optionrrrr#bsN     zCygwinCCompiler.__init__c Cs|dks|dkrXz|dd|d|gWqtyT}zt|WYd}~qd}~00nPz"||j||d|g|Wn,ty}zt|WYd}~n d}~00dS)N.rc.resZwindresz-iz-o)spawnrr r )r.objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles  zCygwinCCompiler._compileNcCsPt| p g} t|pg}t|p&g}||j|dur||jksV|jdkrtj|d}tjtj |\}}tj ||d}tj |d|d}dtj |dg}|D]}| |q| t ||fd||jd kr| d |g| d |gn | || s(| d t||||||||d| | | | | dS) Nrrz.deflibrz LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr-Z EXECUTABLEr+ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r.Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr:Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrGsH          zCygwinCCompiler.linkcCs|dur d}g}|D]}tjtj|\}}||jddgvrRtd||f|rbtj|}|dvr|tj||||j q|tj|||j q|S)NrKr4r5z"unknown file type '%s' (from '%s'))r5r4) r@rArCnormcaseZsrc_extensionsr rDrFrE obj_extension)r.Zsource_filenamesZ strip_dirrHZ obj_namesZsrc_namebaser9rrrobject_filenamess&    z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrK)__name__ __module__ __qualname__r*rMZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr#r<rGrOrrrrrWs ; Nrc@seZdZdZdddZdS)Mingw32CCompilerZmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nrrrr!z--entry _DllMain@12rKz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %sr) rr#r)r( is_cygwingccrr,r+r-r)r.r/r0r1r3Z entry_pointrrrr#s.   zMingw32CCompiler.__init__N)rrr)rPrQrRr*r#rrrrrSsrSokznot okZ uncertainc Csddlm}dtjvrtdfS|}z`t|}zHd|vrVtd|fW|WSt d|fW|WSW|n |0Wn6t y}zt d||j ffWYd}~Sd}~00dS) Nr) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %s) Z distutilsrVrrr%Zget_config_h_filenameopenreadcloseCONFIG_H_NOTOKOSErrorCONFIG_H_UNCERTAINstrerror)rVfnZconfig_hexcrrrr$Fs&      r$s(\d+\.\d+(\.\d+)*)cCst|d}t|durdSt|dtdj}z|}W|n |0t|}|durbdSt | d S)NrT)shellstdout) splitr rrrarXrY RE_VERSIONsearchr groupdecode)cmd executableout out_stringresultrrr_find_exe_versionss    rmcCsgd}tdd|DS)N)zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)rm).0rhrrr z get_versions..)tuple)commandsrrrr'sr'cCstddg}|dS)Nrz -dumpmachinescygwin)rstripendswith)rkrrrrTs rT)!r@rr> subprocessrrrreZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsrrr r Zdistutils.versionr Zdistutils.spawnr rrrSr%rZr\r$compilerdrmr'rTrrrr0s*    ;1+