ó {fc@sŠdZdZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZmZddlmZd e fd „ƒYZd Zd Zd 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(tDistutilsExecErrort CompileErrortUnknownFileError(tlogt EMXCCompilerc Bs•eZdZdZdZdZdZdZdZdZ dddd„Z d „Z ddddddddddd „ Z dd d „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 d d ƒd g|_ dS(Ns%Python's GCC status: %s (details: %s)s<Python's pyconfig.h doesn't seem to support your compiler. s Reason: %s.s<Compiling may fail because of undefined preprocessor macros.s: gcc %s, ld %s tcompilers5gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wallt compiler_sot linker_exesgcc -Zomf -Zmt -Zcrtdllt linker_sosgcc -Zomf -Zmt -Zcrtdll -Zdlltgcc( Rt__init__tcheck_config_ht debug_printt CONFIG_H_OKtwarnt get_versionst gcc_versiont ld_versiont compiler_typetset_executablest dll_libraries(tselftverbosetdry_runtforcetstatustdetails((s./usr/lib64/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./usr/lib64/python2.7/distutils/emxccompiler.pyt_compileMs  cCs‰tj| pgƒ} tj|p$gƒ}tj|p9gƒ}|j|jƒ|dk r;||jkr;tjj|dƒ}tjjtjj |ƒƒ\}}tjj ||dƒ}dtjjtjj |ƒƒdddg}x|D]}|j d|ƒqóW|j t ||fd|ƒ|j |ƒn| sQ| j dƒntj||||||||d| | | | | ƒdS( Nis.defs$LIBRARY %s INITINSTANCE TERMINSTANCEsDATA MULTIPLE NONSHAREDtEXPORTSs "%s"s writing %ss-s(tcopytextendRtNonet EXECUTABLEtostpathtdirnametsplitexttbasenametjointappendtexecuteRRtlink(Rt target_desctobjectstoutput_filenamet output_dirt librariest library_dirstruntime_library_dirstexport_symbolstdebugt extra_preargsR&t build_tempt target_langttemp_dirtdll_namet dll_extensiontdef_filetcontentstsym((s./usr/lib64/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./usr/lib64/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.libt LIBRARY_PATHt;(R/tenvirontsplittKeyErrorR0R4texistsR-( RtdirstlibR@tshortlibtlonglibtemx_dirstdirt shortlibptlonglibp((s./usr/lib64/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./usr/lib64/python2.7/distutils/emxccompiler.pyRs2  P toksnot okt uncertaincCsŻddlm}ddl}|jtjdƒdkrAtdfS|jƒ}y.t|ƒ}z|j ƒ}Wd|j ƒXWn't k r¤}t d||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./usr/lib64/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./usr/lib64/python2.7/distutils/emxccompiler.pyR&s     (t__doc__t __revision__R/RsR+tdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRRpRRRR|RzRR(((s./usr/lib64/python2.7/distutils/emxccompiler.pyts$Ļ 4