Ńņ §ŚźLc @sŠdZdZddkZddkZddkZddklZlZddkl Z ddk l Z ddk l Z lZlZddklZd 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: emxccompiler.py 34786 2003-12-02 12:17:59Z aimacintyre $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Ńti||||ƒtƒ\}}|id||fƒ|tj o|idd|dƒntƒ\|_|_|i|i d|i|ifƒ|i 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.6/distutils/emxccompiler.pyR*s"    cCsš|djo?y|idd|gƒWq–tj o}t|‚q–XnKy)|i|i||d|g|ƒWntj o}t|‚nXdS(Ns.rctrcs-rs-o(tspawnRRR (Rtobjtsrctexttcc_argstextra_postargstpp_optstmsg((s./usr/lib64/python2.6/distutils/emxccompiler.pyt_compileMs  cCs‘ti| pgƒ} ti|pgƒ}ti|pgƒ}|i|iƒ|dj oā||ijoŅtii|dƒ}tiitii |ƒƒ\}}tii ||dƒ}dtiitii |ƒƒdddg}x|D]}|i d|ƒqųW|i t ||fd|ƒ|i |ƒn| p| i dƒnti||||||||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.6/distutils/emxccompiler.pyR7[sH        tcCsų|djo d}ng}xŌ|D]Ģ}tiitii|ƒƒ\}}||idgjotd||f‚n|otii|ƒ}n|djo'|itii |||i ƒƒq$|itii |||i ƒƒ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.6/distutils/emxccompiler.pytobject_filenames¶s$ $ c Cs½d|}d|}ytididƒ}Wntj o g}nXxl||D]`}tii||ƒ}tii||ƒ} tii|ƒo|Stii| ƒo| SqUWdS(Ns%s.libs lib%s.libt LIBRARY_PATHt;(R/tenvirontsplittKeyErrorR0R4texistsR-( RtdirstlibR@tshortlibtlonglibtemx_dirstdirt shortlibptlonglibp((s./usr/lib64/python2.6/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.6/distutils/emxccompiler.pyRs2  P toksnot okt uncertaincCsŪddkl}ddk}|itidƒdjo tdfS|iƒ}y&t|ƒ}|i ƒ}|i ƒWn)t j o}t d||i ffSX|i|dƒdjotd |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.6/distutils/emxccompiler.pyRņs     c Cs½ddkl}ddkl}ddk}|dƒ}|ohti|ddƒ}|iƒ}|iƒ|i d|ƒ}|o||i 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.6/distutils/emxccompiler.pyR$s     (t__doc__t __revision__R/RsR+tdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRRpRRRR|RzRR(((s./usr/lib64/python2.6/distutils/emxccompiler.pyts$Ļ 2