a DOg?@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_verr>/opt/alt/python39/lib64/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.57Zmsvcrtz,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_runforceZstatusZdetails 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)Zspawnrr 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_preargsr7Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrDsH          zCygwinCCompiler.linkcCs|dur d}g}|D]}tjtj|\}}||jddgvrRtd||f|rbtj|}|dvr|tj||||j q|tj|||j q|S)NrHr2r3z"unknown file type '%s' (from '%s'))r3r2) r=r>r@normcaseZsrc_extensionsr rArCrB obj_extension)r-Zsource_filenamesZ strip_dirrEZ obj_namesZsrc_namebaser6rrrobject_filenamess&    z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrH)__name__ __module__ __qualname__r)rJZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr"r9rDrLrrrrrWs ; Nrc@seZdZdZdddZdS)Mingw32CCompilerZmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nrrrr!z--entry _DllMain@12rHz1Cygwin 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.r/r0r1Z entry_pointrrrr"s.   zMingw32CCompiler.__init__N)rrr)rMrNrOr)r"rrrrrPsrPokznot 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 distutilsrSrrr$Zget_config_h_filenameopenreadcloseCONFIG_H_NOTOKOSErrorCONFIG_H_UNCERTAINstrerror)rSfnZconfig_hexcrrrr#Fs&      r#s(\d+\.\d+(\.\d+)*)cCst|d}t|durdSt|dtdj}z|}W|n |0t|}|durbdSt | d S)NrT)shellstdout) splitr rrr^rUrV RE_VERSIONsearchr groupdecode)cmd executableout out_stringresultrrr_find_exe_versionss    rjcCsgd}tdd|DS)N)zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)rj).0rerrr z get_versions..)tuple)Zcommandsrrrr&sr&cCstddg}|dS)Nrz -dumpmachinescygwin)rstripendswith)rhrrrrQs rQ)!r=rr; subprocessrrrreZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsrrr r Zdistutils.versionr Zdistutils.spawnr rrrPr$rWrYr#compilerarjr&rQrrrr0s*    ;1+