Ñò §ÚêLc @sïdZdZddkZddkZddkZddklZlZddkl Z ddk l Z ddk l Z lZlZddklZd „Zd e fd „ƒYZd efd „ƒYZdZdZdZd„Zd„ZdS(sdistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). s@$Id: cygwinccompiler.py 73349 2009-06-11 09:17:19Z tarek.ziade $iÿÿÿÿN(tgen_preprocess_optionstgen_lib_options(t UnixCCompiler(t write_file(tDistutilsExecErrort CompileErrortUnknownFileError(tlogcCs£tiidƒ}|djo€ti|d|d!}|djodgS|djodgS|d jod gS|d jod gStd |ƒ‚ndS(saInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. sMSC v.iÿÿÿÿii t1300tmsvcr70t1310tmsvcr71t1400tmsvcr80t1500tmsvcr90sUnknown MS Compiler version %s N(tsystversiontfindt ValueError(tmsc_postmsc_ver((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyt get_msvcr;s     tCygwinCCompilerc BsƒeZdZdZdZdZdZdZdZdddd„Z d „Z d d d d d dd d d d d „ Z dd d „Z RS(tcygwins.os.as.dllslib%s%ss%s%ss.exeic Cs[ti||||ƒtƒ\}}|id||fƒ|tj o|id|ƒntƒ\|_|_|_ |i|i d|i|i|i fƒ|idjo d|_ n d|_ |idjo d}nd }|i d d d d dddddd|i |fƒ|idjodg|_ |idƒn tƒ|_ dS(Ns%Python's GCC status: %s (details: %s)sƒPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.s: gcc %s, ld %s, dllwrap %s s2.10.90tgcctdllwraps2.13s-shareds -mdll -statictcompilersgcc -mcygwin -O -Wallt compiler_sosgcc -mcygwin -mdll -O -Wallt compiler_cxxsg++ -mcygwin -O -Wallt linker_exes gcc -mcygwint linker_sos%s -mcygwin %ss2.91.57tmsvcrts,Consider upgrading to a newer version of gcc(Rt__init__tcheck_config_ht debug_printt CONFIG_H_OKtwarnt get_versionst gcc_versiont ld_versiontdllwrap_versiont compiler_typet linker_dlltset_executablest dll_librariesR(tselftverbosetdry_runtforcetstatustdetailst shared_option((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyR!\s<        c Cs­|djp |djoEy |idd|d|gƒWq©tj o}t|‚q©XnKy)|i|i||d|g|ƒWntj o}t|‚nXdS(Ns.rcs.restwindress-is-o(tspawnRRR(R.tobjtsrctexttcc_argstextra_postargstpp_optstmsg((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyt_compilešs  cCsáti| pgƒ} ti|pgƒ}ti|pgƒ}|i|iƒ|dj o2||ijp|idjotii|dƒ}tii tii |ƒƒ\}}tii ||dƒ}tii |d|dƒ}dtii |ƒdg}x|D]}|i |ƒqW|i t||fd|ƒ|id jo*| id |gƒ| id |gƒq‘|i |ƒn| p| i d ƒnti||||||||d| | | | | ƒdS( NRis.deftlibs.as LIBRARY %stEXPORTSs writing %sRs --output-libs--defs-s(tcopytextendR-tNonet EXECUTABLER+tostpathtdirnametsplitexttbasenametjointappendtexecuteRRtlink(R.t target_desctobjectstoutput_filenamet output_dirt librariest library_dirstruntime_library_dirstexport_symbolstdebugt extra_preargsR;t build_tempt target_langttemp_dirtdll_namet dll_extensiontdef_filetlib_filetcontentstsym((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyRM¨sL       tcCs |djo d}ng}xè|D]à}tiitii|ƒƒ\}}||iddgjotd||f‚n|otii|ƒ}n|djp |djo+|itii ||||i ƒƒq$|itii |||i ƒƒq$W|S(NRas.rcs.ress"unknown file type '%s' (from '%s')( RCRERFRHtnormcasetsrc_extensionsRRIRKRJt obj_extension(R.tsource_filenamest strip_dirRQt obj_namestsrc_nametbaseR9((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pytobject_filenames s$ $N(t__name__t __module__R*Rdtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR!R>RCRMRj(((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyRRs*>  XtMingw32CCompilercBs eZdZdddd„ZRS(tmingw32icCs§ti||||ƒ|idjo d}nd}|idjo d}nd}|iddd d d d d ddd|i||fƒg|_tƒ|_dS(Ns2.13s-shareds -mdll -statics2.91.57s--entry _DllMain@12RaRsgcc -mno-cygwin -O -WallRsgcc -mno-cygwin -mdll -O -WallRsg++ -mno-cygwin -O -WallRsgcc -mno-cygwinRs%s -mno-cygwin %s %s(RR!R(R'R,R+R-R(R.R/R0R1R4t entry_point((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyR!-s      (RkRlR*R!(((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyRr)stoksnot 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 distutilsRwtstringRRRR$tget_config_h_filenametopentreadtclosetIOErrortCONFIG_H_UNCERTAINtstrerrortCONFIG_H_NOTOK(RwR{tfntftstexc((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyR"`s     c Cs¼ddkl}ddkl}ddk}|dƒ}|ohti|ddƒ}|iƒ}|iƒ|i d|ƒ}|o||i d ƒƒ}q­d}nd}|d ƒ}|ohti|d dƒ}|iƒ}|iƒ|i d|ƒ}|o||i d ƒƒ} q.d} nd} |d ƒ} | ohti| d dƒ}|iƒ}|iƒ|i d|ƒ}|o||i d ƒƒ} q¯d} nd} || | fS(sj Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. iÿÿÿÿ(t LooseVersion(tfind_executableNRs -dumpversiontrs(\d+\.\d+(\.\d+)*)itlds -vRs --versions (\d+\.\d+(\.\d+)*)( tdistutils.versionRˆtdistutils.spawnR‰treREtpopenR~RtsearchtgroupRC( RˆR‰RŽtgcc_exetoutt out_stringtresultR'tld_exeR(t dllwrap_exeR)((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyR&“sD             (t__doc__t __revision__RERRAtdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRRzRRRRrR$RƒRR"R&(((s1/usr/lib64/python2.6/distutils/cygwinccompiler.pyts+$ ×3 3