3 \W: ã @ st d dl Z d dlmZmZmZmZmZmZ d dlm Z m Z mZ d dlm Z d dlmZ d dlmZ G dd„ de ƒZdS ) é N)ÚDistutilsExecErrorÚDistutilsPlatformErrorÚCompileErrorÚLibErrorÚ LinkErrorÚUnknownFileError)Ú CCompilerÚgen_preprocess_optionsÚgen_lib_options)Ú write_file)Únewer)Úlogc @ sŠ e Zd ZdZi ZdgZdddgZee ZdZdZ dZ d ZZd Z ddd „Zddd„Zddd„Zddd„Zd dd„Zd!dd„Zd"dd„ZdS )#ÚBCPPCompilerZbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exer c C s„ t j| |||ƒ d| _d| _d| _d | _ddddg| _ddddg| _d d ddg| _d d ddg| _ g | _ d ddg| _d dddg| _d S ) Nz bcc32.exezilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r Ú__init__ÚccÚlinkerÚlibZpreprocess_optionsÚcompile_optionsÚcompile_options_debugÚldflags_sharedÚldflags_shared_debugZldflags_staticÚldflags_exeÚldflags_exe_debug)ÚselfÚverboseZdry_runÚforce© r ú./usr/lib64/python3.6/distutils/bcppcompiler.pyr 5 s zBCPPCompiler.__init__Nc C sš | j ||||||ƒ\}} }} }|p$g }|jdƒ |rB|j| jƒ n|j| jƒ �xD| D �]:} y|| \}}W n tk r‚ wVY nX tjj|ƒ}tjj| ƒ} | j tjj | ƒƒ |dkr¸qV|dk�ry| jdd| |gƒ W qV tk �r } zt |ƒ‚W Y d d }~X qVX qV|| jk�rd}n|| jk�r,d}nd}d| }y,| j| jg| | ||g | |g ƒ W qV tk �r� } zt |ƒ‚W Y d d }~X qVX qVW | S ) Nz-cz.resz.rcZbrcc32z-foÚ z-Pz-o)Z_setup_compileÚappendÚextendr r ÚKeyErrorÚosÚpathÚnormpathÚmkpathÚdirnameÚspawnr r Ú _c_extensionsÚ_cpp_extensionsr )r ZsourcesÚ output_dirÚmacrosÚinclude_dirsÚdebugÚ extra_preargsÚextra_postargsZdependsÚobjectsÚpp_optsZbuildZcompile_optsÚobjÚsrcÚextÚmsgZ input_optZ output_optr r r ÚcompileQ sF (zBCPPCompiler.compilec C sŽ | j ||ƒ\}}| j||d�}| j||ƒr~|dg| }|r:y| j| jg| ƒ W qŠ tk rz } zt|ƒ‚W Y d d }~X qŠX ntjd|ƒ d S )N)r* z/uzskipping %s (up-to-date)) Ú_fix_object_argsÚlibrary_filenameÚ _need_linkr' r r r r r- ) r r0 Zoutput_libnamer* r- Útarget_langÚoutput_filenameZlib_argsr5 r r r Úcreate_static_lib’ s zBCPPCompiler.create_static_libc C sø | j ||ƒ\}}| j|||ƒ\}}}|r8tjdt|ƒƒ |d k rNtjj||ƒ}| j||ƒ�rè|t j krŽd}| r~| jd d … }q´| jd d … }n&d}| r¦| j d d … }n| jd d … }|d krÂd}n†tjj|ƒ\}}tjj|ƒ\}}tjj|d ƒ}tjj|d| ƒ}dg}x&|�pg D ]}|jd||f ƒ �qW | jt||fd | ƒ ttjj|ƒ}|g}g }xF|D ]>}tjjtjj|ƒƒ\}}|d k�r˜|j|ƒ n |j|ƒ �qfW x$|D ]}|jdtjj|ƒ ƒ �q®W |jdƒ |j|ƒ |jd |gƒ |jdƒ x<|D ]4}| j||| ƒ}|d k�r(|j|ƒ n |j|ƒ �q W |jdƒ |jdƒ |jd |gƒ |jd ƒ |j|ƒ | �r€| |d d…<