ó \ÐKc@s´ddlZddlZddlZddlZddlZddlZddlmZmZm Z ddl m Z ddl m Z ddlmZddlmZddgZejd ƒZd „ZeƒrÚgZngZde fd „ƒYZdefd „ƒYZd „Zedkr°ddlmZejdƒeƒZejƒej ƒGHe!dƒy"eƒZejƒej ƒGHWne"k r¢Z#e#GHnXe!dƒndS(iÿÿÿÿN(tPopentPIPEtSTDOUT(tcpu(t FCompiler(t exec_command(tmsvc_runtime_libraryt GnuFCompilertGnu95FCompilersTarget: ([a-zA-Z0-9_\-]*)cCs#tjdko"tjƒddkS(Ntwin32it64bit(tsystplatformt architecture(((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytis_win64scBsdeZdZd"ZdZd„Zd„ZddgZid#dgd6d#dd d gd 6d#d 6d#d 6d#dd gd6ddgd6dgd6d#dd gd6Z d#Z d#Z e j dkr×ejdkr×dgZnejdkrx.dd ddgD]Ze ejdƒqùWndZdZd„Zd„Zd„Zd„Zd„Zd „Zd!„ZRS($tgnutg77sGNU Fortran 77 compilercCs¶tjd|ƒ}|sd Stjd|ƒ}|rGd|jdƒfStjd|ƒ}|r²|jdƒ}|jdƒs›|jdƒs›|jdƒr¥d |fSd|fSnd S( s6Handle the different versions of GNU fortran compilerss GNU FortransGNU Fortran\s+95.*?([0-9-.]+)tgfortranisGNU Fortran.*?([0-9-.]+)t0t2t3RN(tretmatchtNonetgroupt startswith(tselftversion_stringtmtv((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytgnu_version_match!s- cCs2|j|ƒ}| s&|ddkr*dS|dS(NiRi(RR(RRR((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyt version_match4stf77s --versiont version_cmds-gs-Walls-fno-second-underscoret compiler_f77t compiler_f90t compiler_fixt linker_sotars-crtarchivertranlibt linker_exetnttcygwins-fPICR s -mno-cygwintg2ctgnu95cCsø|jd}tjdkrÅtjjddƒ}|s¬ddlj}i}|j ƒ}|j ||ƒ|jddƒ}|tjd<|dkr¬d}t j |ƒq¬n|j ddd gƒn |jd ƒtjjd ƒrô|jd ƒn|S( NitdarwintMACOSX_DEPLOYMENT_TARGETiÿÿÿÿs10.3s2Env. variable MACOSX_DEPLOYMENT_TARGET set to 10.3s -undefinedtdynamic_lookups-bundles-sharedtsunoss -mimpure-text(R%R R tostenvirontgetRtdistutils.sysconfigt sysconfigtget_makefile_filenametparse_makefiletwarningstwarntextendtappendR(Rtoptttargettsctgtfilenamets((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytget_flags_linker_soes$     cCs<t|jdgddƒ\}}|s8tjj|ƒSdS(Ns-print-libgcc-file-nametuse_teei(RR"R2tpathtdirnameR(Rtstatustoutput((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytget_libgcc_dirŒs   cCsúg}tjd dkrö|jƒ}|rötjdkrã|jdƒ rãtjj|ƒ}tjjtjj|d|j ƒƒsãtjj tjj|dƒƒ}tjjtjj|d|j ƒƒrà|j |ƒqàqãn|j |ƒqön|S(NitlinuxR s/usr/libslib%s.as../../../../lib( R R RIRR2REtnormpathtexiststjoinR,tabspathR<(RR=tdtd2((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytget_library_dirs”s ( (cCsg}|jƒ}|dk rq|jd}|j||jf}tjjtjj||ƒƒsz|j}qzn |j}|dk r–|j |ƒn|j }t j dkrò|rò|j dkrò|j dƒtƒ}|rò|j |ƒqònt j dkr|j dƒn|S(Ns-picR tmsvctgccR.t cc_dynamic(RIRR,tstatic_lib_formattstatic_lib_extensionR2REtisfileRMR<t c_compilerR R t compiler_typeR(RR=ROR,tfRXt runtime_lib((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyt get_libraries¤s(   !     cCsdgS(Ns-g((R((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytget_flags_debug¾scCs8|jƒdkrdg}n dg}|jdƒ|S(Ns3.3.3s-O2s-O3s-funroll-loops(t get_versionR<(RR=((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyt get_flags_optÁs    cCsgS(N((R((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytget_flags_archËs(sg77N(t__name__t __module__RYtcompiler_aliasest descriptionRRtpossible_executablesRt executablestmodule_dir_switchtmodule_include_switchR2tnameR R t pic_flagstkeyR<R,tsuggested_f90_compilerRCRIRQR\R]R_R`(((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRs>        '     cBsLeZdZdZdZd„ZddgZiddgd6d dd d ged 6d dd ged 6d dd d ged 6ddgd6ddgd6dgd6d dgd6Z e j dkrùx4dd d d ddgD]Z e e j dƒqÛWndZdZdZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(!R-RsGNU Fortran 95 compilercCs2|j|ƒ}| s&|ddkr*dS|dS(NiRi(RR(RRR((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRÓstf95ss --versionR!s-Walls -ffixed-forms-fno-second-underscoreR"R#R$R%R&s-crR'R(R)R s -mno-cygwins-Js-IcCs\tjdksgSg}x<dddgD]+}t||ƒr)|jd|gƒq)q)W|S(s>Return a list of -arch flags for every supported architecture.R.tppcti686tx86_64s-arch(R R t _can_targetR;(Rtcmdt arch_flagstarch((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyt_universal_flagsúscCs8tj|ƒ}|j|jƒ}|r4||d*n|S(Ni(Rt get_flagsRuR#(RtflagsRs((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRvs  cCs8tj|ƒ}|j|jƒ}|r4||d*n|S(Ni(RRCRuR%(RRwRs((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRC s  cCsøtj|ƒ}tjdkrô|j}|rô|jdkrô|jƒ}|rñtjj |j ƒƒ}tjj |tj tj tj tj ƒ}tjj tjj ||dƒƒ}tjj |dƒ}tjj |ƒrî|j|ƒqîqñqôn|S(NR RRtlibs libmingwex.a(RRQR R RXRYt get_targetR2RERKRIRMtpardirRLR<(RR=RXR>ROtroottmingwdirtfull((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRQs  *$cCsåtj|ƒ}tjdkr.|jdƒntjdkrá|j}|r¤|jdkr¤d|kr¤|jdƒ}|j|ddƒ|j|ddƒq¤nt ƒrá|j}|rÏ|jdkrÏgSt d ƒ‚qán|S( NR.RTR RRRSitmingwextmingw32s1Only MS compiler supported with gfortran on win64( RR\R R tremoveRXRYtindextinsertRtNotImplementedError(RR=RXti((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyR\!s     cCsQt|jdgddƒ\}}|sMtj|ƒ}|rM|jdƒSndS(Ns-vRDiit(RR"tTARGET_RtsearchR(RRGRHR((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRy5s  cCs!tƒrdgStj|ƒSdS(Ns-O0(RRR_(R((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyR_?s (sgfortranN(RaRbRYRcRdRReRt _EXTRAFLAGSRfR R RkR<RgRhR,RuRvRCRQR\RyR_(((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRÎs<              cCsÜ|}tjddƒ\}}z¨tjj|ƒ}tjj|ƒdd}zR|jd|d|gƒt|dtdt d |ƒ}|j ƒ|j dkSWd tjj |ƒrÅtj |ƒnXWd tj |ƒXtS( sRReturn true is the command supports the -arch flag for the given architecture.tsuffixs.fis.os-archs-ctstderrtstdouttcwdN(ttempfiletmkstempR2RERFtsplitextR;RRRt communicatet returncodeRLR€tFalse(RrRttnewcmdtfidRARORHtp((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyRqEs t__main__(tlogisPress ENTER to continue...($RR2R R9R Rt subprocessRRRtnumpy.distutils.cpuinfoRtnumpy.distutils.fcompilerRtnumpy.distutils.exec_commandRtnumpy.distutils.misc_utilRt compilerstcompileR†RRˆRRRqRat distutilsR—t set_verbositytcompilert customizeR^t raw_inputt Exceptiontmsg(((sA/usr/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pytsB          ²w