v]c@`sddlmZmZmZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl m Z mZmZddlmZddlmZddlmZddlmZdd gZejd Zd ZergZngZdefd YZd efd YZdZe dkrddl!m"Z"ddl#m$Z$e"j%de&e$dj'ye&e$dj'Wne(k re&enXndS(i(tdivisiontabsolute_importtprint_functionN(tPopentPIPEtSTDOUT(tfilepath_from_subprocess_output(t FCompiler(t get_exception(t system_infot GnuFCompilertGnu95FCompilersTarget: ([a-zA-Z0-9_\-]*)cC`s#tjdko"tjddkS(Ntwin32it64bit(tsystplatformt architecture(((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytis_win64scB`seZdZd%ZdZdZdZddgZid&dgd6d&dd d gd 6d&d 6d&d 6d&dd gd6ddgd6dgd6d&dd gd6Z d&Z d&Z e j dkrejdkrdgZnejdkrx.dd ddgD]Ze ejdqWndZdZdZdZdZdZdZd Zd!Zd"Zd#Zd$ZRS('tgnutg77sGNU Fortran 77 compilercC`sTx*|jdr,||jdd}qWt|dkrtjd|}|r:|jdryd|jdfS|jdkrd |jdfSq:ntjd |}|rd |jdfStjd |}|r:|jd}|jd s#|jd s#|jdr-d|fSd |fSnd}t||dS(s6Handle the different versions of GNU fortran compilerssgfortran: warnings iis ([0-9.]+)s GNU FortranRitgfortransGNU Fortran\s+95.*?([0-9-.]+)s%GNU Fortran.*?\-?([0-9-.]+\.[0-9-.]+)t0t2t3s6A valid Fortran version was not found in this string: N(t startswithtfindtlentretsearchtgrouptstartt ValueError(tselftversion_stringtmtvterr((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytgnu_version_match)s* -  cC`s2|j|}| s&|ddkr*dS|dS(NiRi(R%tNone(R R!R#((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyt version_matchUstf77s -dumpversiont version_cmds-gs-Walls-fno-second-underscoret compiler_f77t compiler_f90t compiler_fixt linker_sotars-crtarchivertranlibt linker_exetnttcygwins-fPICR s -mno-cygwintg2ctgnu95cC`s|jd}tjdkrtjjdd}|sddlj}i}y |j }Wnt k rlnX|}|j |||jdd}|tjd<|dkrd}t j |ddqn|jd d d gn |jd tjjd r|jdn|S(NitdarwintMACOSX_DEPLOYMENT_TARGETis10.3s2Env. variable MACOSX_DEPLOYMENT_TARGET set to 10.3t stacklevelis -undefinedtdynamic_lookups-bundles-sharedtsunoss -mimpure-text(R-RRtostenvirontgetR&tdistutils.sysconfigt sysconfigtget_makefile_filenametAttributeErrortparse_makefiletwarningstwarntextendtappendR(R toptttargettsctgR@tfilenamets((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytget_flags_linker_sovs,       cC`sZytj|jdg}Wnttjfk r9nXt|}tjj|SdS(Ns-print-libgcc-file-name( t subprocesst check_outputR*tOSErrortCalledProcessErrorRR;tpathtdirnameR&(R toutput((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytget_libgcc_dirs  cC`stjd dkrd}ntjdkr4d}nd}d}|rdj|g}ytj|j|}Wnttjfk rqXt |}t j j |}n|S(Nitlinuxslibgfortran.soR6slibgfortran.dylibs-print-file-name={0}( RRR&tformatRNROR*RPRQRR;RRRS(R tlibgfortran_nametlibgfortran_dirt find_lib_argRT((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytget_libgfortran_dirs    cC`sGg}tjd dkr!|j}|r!tjdkr|jd rtjj|}tjj|d|j}tjj |stjj|tj fd}tjj tjj|d}tjj|d|j}tjj |r |j |q qn|j |q!n|j }|rC|j |n|S(NiRVR s/usr/libslib%s.aitlib(RRRURR;RRtnormpathtjoinR4texiststpardirtabspathRFR[(R RGtdRRtroottd2tlib_gfortran_dir((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytget_library_dirss$ ! cC`sg}|j}|dk rq|jd}|j||jf}tjjtjj||sz|j}qzn |j}|dk r|j |n|j }t j dkr|r|j dkr|j dnt j dkr|j dn|S(Ns-picR tmsvctgccR6t cc_dynamic(RUR&R4tstatic_lib_formattstatic_lib_extensionR;RRtisfileR^RFt c_compilerRRt compiler_type(R RGRbR4tfRm((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyt get_librariess"   !   cC`sdgS(Ns-g((R ((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytget_flags_debugscC`sD|j}|r*|dkr*dg}n dg}|jd|S(Ns3.3.3s-O2s-O3s-funroll-loops(t get_versionRF(R R#RG((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyt get_flags_opts     cC`s|ddlm}y|jd}Wntk r8gSXtjd}g}x'|j|D]}|d|g7}q^W|S(s( Return detected arch flags from CFLAGS i(R?tCFLAGSs -arch\s+(\w+)s-arch(t distutilsR?tget_config_varstKeyErrorRtcompiletfindall(R R?tcflagstarch_ret arch_flagstarch((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyt _c_arch_flagss cC`sgS(N((R ((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytget_flags_archscC`sftjd dks"tjdkr+tnd|ks=ttjdkrRdnd}d||fS(NitaixR t,R6t=s-Wl,-rpath%s%s(RRtNotImplementedErrortAssertionError(R tdirtsep((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytruntime_library_dir_option s " (RN(t__name__t __module__Rntcompiler_aliasest descriptionR%R'tpossible_executablesR&t executablestmodule_dir_switchtmodule_include_switchR;tnameRRt pic_flagstkeyRFR4tsuggested_f90_compilerRMRUR[RfRpRqRsR~RR(((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyR $sD ,       ,     cB`seZdZd(ZdZdZddgZiddgd6d)dd d d ged 6d)dd d ged 6d)dd d d ged6ddd gd6ddgd6dgd6d)dgd6Z dZ dZ e j d dkr@e djde jdd dkr@x1d d dddgD]Ze ejdqWq@ndZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Zd'ZRS(*R5RsGNU Fortran 95 compilercC`s|j|}| s&|ddkr*dS|d}|dkrCnItjdkrx7dddd d d gD]}|j|jd qkWn|S( NiRis4.R R)R*R+R,R-R1s -mno-cygwin(R%R&RRRRF(R R!R#R((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyR's   tf95ss -dumpversionR)s-Walls-gs -ffixed-forms-fno-second-underscoreR*R+R,R-R.s-crR/R0R1s-Js-IiRs -lpthreadiit64s-maix64cC`stjdksgSg}|j}d|krGd||jdReturn a list of -arch flags for every supported architecture.R6ti386ti686tppctx86_64tppc64s-arch(RRR~tindext _can_targetRE(R tcmdR|tc_archsR}((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyt_universal_flagsIs  cC`s8tj|}|j|j}|r4||d*n|S(Ni(R t get_flagsRR+(R tflagsR|((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyRYs  cC`s8tj|}|j|j}|r4||d*n|S(Ni(R RMRR-(R RR|((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyRM`s  c C`s tj|}tjdkr|j}|r|jdkr|j}|rtjj |j }tjj |tj fd}tjj |d}tjj |}tjj tjj |dr|j|qqqn|j}|r|j|n|S(NR RgiR\s libmingwex.a(R RfRRRmRnt get_targetR;RRR]RUR^R`R_RFR[( R RGRmRHRbRcRRtmingwdirRe((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyRfgs   ! cC`stj|}tjdkr.|jdntjdkr|j}|r|jdkrd|kr|jd}|j|dd|j|ddqn|j}|r|jdkrgSn|S( NR6RiR RgRhitmingwextmingw32( R RpRRtremoveRmRnRtinsert(R RGRmti((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyRpzs   cC`slytj|jdg}Wnttjfk r9n/Xt|}tj|}|rh|jdSdS(Ns-vit( RNROR*RPRQRtTARGET_RRR(R RTR"((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyRs  cC`stj}xY|D]Q}t|d:}x0tr]|jd}|sMPn|j|q.WWdQXqWtj|j}t j ddkr|j d}n|j dS(NtrbiiitasciiR( thashlibtsha1topentTruetreadtupdatetbase64t b32encodetdigestRt version_infotdecodetrstrip(R t filenamesthtfnRotblockttext((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyt _hash_filess   c C`s|j}|jdkr'tdn|jt|t|}trXd}nd}dtjjtjj |ddd } | d|d |} | d } | d } | d } tjj || }tjj || }tjj || }tjj |r||fS|r>d gt|dg}n|j || d|dt|dd|ddddgtrd}nd}d|d||g}|j s|jn|j|jg|||fS(seCreate a wrapper shared library for the given objects Return an MSVC-compatible lib RgsThis method only supports MSVCt win_amd64R R\iit.s .gfortran-s.dlls.defs.libs-Wl,--whole-archives-Wl,--no-whole-archivet output_dirtextra_postargss-Wl,--allow-multiple-definitions-Wl,--output-def,s-Wl,--export-all-symbolss-Wl,--enable-auto-imports-statics-mlong-double-64s /MACHINE:X64s /MACHINE:X86s/def:s/OUT:(RmRnRRtlistRR;RRtsplitexttbasenameR^Rltlink_shared_objectt initializedt initializetspawnR\(R tobjectsRt extra_dll_dirt chained_dllst is_archiveRmt object_hashttagRt root_nametdll_nametdef_nametlib_nametdll_pathtdef_pathtlib_patht specifiertlib_args((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyt_link_wrapper_libsP    "           cC`s |jdkS(NRg(Rg(Rn(R tcompiler((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytcan_ccompiler_linksc C`s!|jjdkrg}g}x@|D]8}|jjdrP|j|q%|j|q%Wg}g}xe|dddD]P} |j| g||d|dt\} } |jd| |jd| qW|s|S|j|||d|dt\} } | g|St ddS( s Convert a set of object files that are not compatible with the default linker, to a file that is compatible. Rgs.aNiRRisUnsupported C compiler( RmRntlowertendswithRFRRRtFalseR( R RRRtarchivest plain_objectstobjt chained_libsRtarchiveR\tdll((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pytwrap_unlinkable_objectss8  (RN(RRRnRRR'RR&t _EXTRAFLAGSRRRRRRFRRR4RRRMRfRpRRRRR(((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyR sF               > cC`s|}tjdd\}}tj|ztjj|}tjj|dd}zR|jd|d|gt|dt dt d |}|j |j dkSWd tjj |rtj|nXWd tj|XtS( s7Return true if the architecture supports the -arch flagtsuffixs.fis.os-archs-ctstderrtstdouttcwdN(ttempfiletmkstempR;tcloseRRRSRRERRRt communicatet returncodeR_RR(RR}tnewcmdtfidRKRbRTtp((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyRs  t__main__(tlog(tcustomized_fcompileriRtg95()t __future__RRRRR;RRCRRRRRNRRRtnumpy.distutils.exec_commandRtnumpy.distutils.fcompilerRtnumpy.distutils.compatRtnumpy.distutils.system_infoR t compilersRxRRRR R RRRuRtnumpy.distutilsRt set_verbositytprintRrt Exception(((sm/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.pyts@