��Qc@s�dZdZddlZddlZddlZddlmZmZddlm Z ddl
mZddlm
Z
mZmZddlmZd e fd
��YZdZdZd
Zd�Zd�ZdS(s�distutils.emxccompiler
Provides the EMXCCompiler class, a subclass of UnixCCompiler that
handles the EMX port of the GNU C compiler to OS/2.
s$Id$i�N(tgen_preprocess_optionstgen_lib_options(t
UnixCCompiler(t
write_file(tDistutilsExecErrortCompileErrortUnknownFileError(tlogtEMXCCompilercBs�eZdZdZdZdZdZdZdZdZ dddd�Z
d �Zddddddddddd
�Z
ddd�Zdd
�ZRS(temxs.objs.libs.dlls%s%ss.ress.exeic Cs�tj||||�t�\}}|jd||f�|tk rd|jdd|d�nt�\|_|_|j|j d|j|jf�|j
ddddd d
dd�d
g|_dS(Ns%Python's GCC status: %s (details: %s)s<Python's pyconfig.h doesn't seem to support your compiler. sReason: %s.s<Compiling may fail because of undefined preprocessor macros.s: gcc %s, ld %s
tcompilers5gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Walltcompiler_sot
linker_exesgcc -Zomf -Zmt -Zcrtdllt linker_sosgcc -Zomf -Zmt -Zcrtdll -Zdlltgcc(Rt__init__tcheck_config_htdebug_printtCONFIG_H_OKtwarntget_versionstgcc_versiont
ld_versiont
compiler_typetset_executablest
dll_libraries(tselftverbosetdry_runtforcetstatustdetails((s,/sys/lib/python2.7/distutils/emxccompiler.pyR*s" cCs�|dkrHy|jdd|g�Wq�tk
rD}t|�q�XnHy)|j|j||d|g|�Wntk
r�}t|�nXdS(Ns.rctrcs-rs-o(tspawnRRR(Rtobjtsrctexttcc_argstextra_postargstpp_optstmsg((s,/sys/lib/python2.7/distutils/emxccompiler.pyt_compileMscCs�tj|
pg�}
tj|p$g�}tj|p9g�}|j|j�|dk r;||jkr;tjj|d�}tjjtjj |��\}}tjj
||d�}dtjjtjj |��dddg}x|D]}|jd|�q�jt
||fd|�|j|�n| sQ|
jd�ntj||||||||d| |
|||
�dS( Nis.defs$LIBRARY %s INITINSTANCE TERMINSTANCEsDATA MULTIPLE NONSHAREDtEXPORTSs "%s"s
writing %ss-s(tcopytextendRtNonet
EXECUTABLEtostpathtdirnametsplitexttbasenametjointappendtexecuteRRtlink(Rttarget_desctobjectstoutput_filenamet
output_dirt librariestlibrary_dirstruntime_library_dirstexport_symbolstdebugt
extra_preargsR&t
build_tempttarget_langttemp_dirtdll_namet
dll_extensiontdef_filetcontentstsym((s,/sys/lib/python2.7/distutils/emxccompiler.pyR7[sF
tcCs�|dkrd}ng}x�|D]�}tjjtjj|��\}}||jdgkrxtd||f�n|r�tjj|�}n|dkr�|jtjj |||j
��q"|jtjj |||j��q"W|S(NRJs.rcs"unknown file type '%s' (from '%s')(R-R/R0R2tnormcasetsrc_extensionsRR3R5R4t
res_extensiont
obj_extension(Rtsource_filenamest strip_dirR;t obj_namestsrc_nametbaseR$((s,/sys/lib/python2.7/distutils/emxccompiler.pytobject_filenames�s"
$c
Cs�d|}d|}ytjdjd�}Wntk
rGg}nXxh||D]\}tjj||�}tjj||�} tjj|�r�|Stjj| �rS| SqSWdS(Ns%s.libs lib%s.libtLIBRARY_PATHt;(R/tenvirontsplittKeyErrorR0R4texistsR-(
RtdirstlibR@tshortlibtlonglibtemx_dirstdirt shortlibptlonglibp((s,/sys/lib/python2.7/distutils/emxccompiler.pytfind_library_file�s
N(t__name__t
__module__RRNtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatRMt
exe_extensionRR)R-R7RTRc(((s,/sys/lib/python2.7/distutils/emxccompiler.pyRs2 Ptoksnot okt uncertaincCs�ddlm}ddl}|jtjd�dkrAtdfS|j�}y.t|�}z|j �}Wd|j
�XWn'tk
r�}td||j
ffSX|j|d�dkr�td |fStd
|fSdS(s�Check if the current Python installation (specifically, pyconfig.h)
appears amenable to building extensions with GCC. Returns a tuple
(status, details), where 'status' is one of the following constants:
CONFIG_H_OK
all is well, go ahead and compile
CONFIG_H_NOTOK
doesn't look good
CONFIG_H_UNCERTAIN
not sure -- unable to read pyconfig.h
'details' is a human-readable string explaining the situation.
Note there are two ways to conclude "OK": either 'sys.version' contains
the string "GCC" (implying that this Python was built with GCC), or the
installed "pyconfig.h" contains the string "__GNUC__".
i�(t sysconfigNtGCCissys.version mentions 'GCC'scouldn't read '%s': %st__GNUC__s'%s' mentions '__GNUC__'s '%s' does not mention '__GNUC__'(t distutilsRmtstringtfindtsystversionRtget_config_h_filenametopentreadtclosetIOErrortCONFIG_H_UNCERTAINtstrerrortCONFIG_H_NOTOK(RmRqtfntftstexc((s,/sys/lib/python2.7/distutils/emxccompiler.pyR�s
c Cs�ddlm}ddlm}ddl}|d�}|r�tj|dd�}z|j�}Wd|j�X|j d|�}|r�||j
d ��}q�d}nd}d}||fS(
sa Try to find out the versions of gcc and ld.
If not possible it returns None for it.
i�(t
StrictVersion(tfind_executableNRs
-dumpversiontrs(\d+\.\d+\.\d+)i(tdistutils.versionR�tdistutils.spawnR�treR/tpopenRwRxtsearchtgroupR-( R�R�R�tgcc_exetoutt
out_stringtresultRR((s,/sys/lib/python2.7/distutils/emxccompiler.pyR&s (t__doc__t__revision__R/RsR+tdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRRpRRRR|RzRR(((s,/sys/lib/python2.7/distutils/emxccompiler.pyt<module>s$� 4
|