o 0i? @ s d dl Z d dlZd dlZd dlmZmZmZ d dlZd dlm Z d dl mZ d dlm Z mZmZmZ d dlmZ d dlmZ dd ZG d d de ZG dd d eZdZdZdZdd ZedZdd Zdd Zdd Z dS ) N)PopenPIPEcheck_output) UnixCCompiler) write_file)DistutilsExecErrorCCompilerErrorCompileErrorUnknownFileError)LooseVersion)find_executablec C s t jd} | dkr?t j| d | d }|dkrdgS |dkr$dgS |d kr+d gS |dkr2dgS |d kr9dgS td| d S )NzMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )sysversionfind ValueError)Zmsc_posZmsc_ver r @/opt/alt/python310/lib64/python3.10/distutils/cygwinccompiler.py get_msvcr= s r c @ sX e Zd Z dZdZdZdZdZdZdZ dd d Z dd Z dddZdddZ d S )CygwinCCompilercygwinz.o.az.dllzlib%s%sz%s%sz.exer c C s t | ||| t \}}| d||f |tur!| d| t \| _| _| _ | | j d| j| j| j f | jdkrCd| _nd| _| jdkrNd}nd }| jd ddd d| j|f d | jdkrodg| _ | d d S t | _ d S )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 -Wallzgcc -mcygwinz%s -mcygwin %sZcompilercompiler_soZcompiler_cxxZ linker_exeZ linker_so2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r __init__check_config_hZdebug_printCONFIG_H_OKwarnget_versionsgcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr )selfverbosedry_runforceZstatusZdetails shared_optionr r r r" b sN zCygwinCCompiler.__init__c C s |dks |dkr'z | dd|d|g W d S ty& } zt|d }~ww z| | j| |d|g | W d S tyI } zt|d }~ww )N.rc.resZwindresz-iz-o)Zspawnr r r )r- objsrcextZcc_argsextra_postargsZpp_optsmsgr r r _compile s zCygwinCCompiler._compileNc C sJ t | pg } t |p g }t |pg }|| j |d ur|| jks*| jdkrtj|d }tjtj |\}}tj ||d }tj |d| d }dtj | dg}|D ]}|| q^| t ||fd| | jd kr| d |g | d|g n|| | s| d t| |||||||d | | ||| d S ) Nr r z.deflibr z LIBRARY %sZEXPORTSz writing %sr z--output-libz--defz-s)copyextendr, Z EXECUTABLEr* ospathdirnamesplitextbasenamejoinappendZexecuter r link)r- Ztarget_descZobjectsZoutput_filename output_dirZ librariesZlibrary_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr7 Z build_tempZtarget_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymr r r rD sD zCygwinCCompiler.link c C s |d u rd}g }|D ]H}t jt j|\}}|| jddg vr*td||f |r2t j|}|dv rF|t j||| | j q|t j||| j q|S )NrH r2 r3 z"unknown file type '%s' (from '%s'))r3 r2 ) r= r> r@ normcaseZsrc_extensionsr rA rC rB obj_extension)r- Zsource_filenamesZ strip_dirrE Z obj_namesZsrc_namebaser6 r r r object_filenames s( z CygwinCCompiler.object_filenamesr r r ) NNNNNr NNNN)r rH )__name__ __module____qualname__r) rJ Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr" r9 rD rL r r r r r W s" ; Nr c @ s e Zd Z dZdddZdS )Mingw32CCompilerZmingw32r c C sx t | ||| | jdkrd}nd}| jdkrd}nd}t r#td| jdd d dd| j||f d g | _t | _d S )Nr r r r! z--entry _DllMain@12rH z1Cygwin gcc cannot be used with --compiler=mingw32zgcc -O -Wallzgcc -mdll -O -Wallzg++ -O -Wallr z%s %s %sr ) r r" r( r' is_cygwingccr r+ r* r, r )r- r. r/ r0 r1 Zentry_pointr r r r" s. zMingw32CCompiler.__init__NrM )rN rO rP r) r" r r r r rQ s rQ okznot okZ uncertainc C s ddl m} dtjv rtdfS | }z(t|}zd| v r,td| fW | W S t d| fW | W S | w t yW } ztd||jf fW Y d }~S d }~ww ) Nr ) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %s) Z distutilsrT r r r$ Zget_config_h_filenameopenreadcloseCONFIG_H_NOTOKOSErrorCONFIG_H_UNCERTAINstrerror)rT fnZconfig_hexcr r r r# F s&