Current File : //proc/self/root/proc/self/root/lib64/python2.7/site-packages/numpy/core/scons_support.pyo
�
E�`Qc@sdZddlZddlZddlmZmZmZ	ddl
mZddlZddl
mZddlmZddlmZddlmZmZmZddlmZddlZddlZdd	lmZdd
lm Z d�Zd�Z!d
�Z"d�Z#d�Z$d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*d�Z+d�Z,d�Z-d�Z.d�Z/d�Z0d�Z1d�Z2ede e"d�d e$�Z3ede e#d!�d e$�Z4ede e&d"�d e'�Z5ede e)d#�d e*�Z6dS($szCode to support special facilities to scons which are only useful for
numpy.core, hence not put into numpy.distutils.sconsi����N(tjointdirnametbasename(tdeepcopy(tdo_generate_api(tcheck_api_version(tLONG_DOUBLE_REPRESENTATION_SRCtpyodtlong_double_representation(t
process_c_str(tBuilder(tActioncCst|ttj��S(N(t_check_api_versiontpdirnametcode_generatorst__file__(t
apiversion((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pyRscCs:|jdd�}t|�dkr2|ddfS|SdS(Nt.iit(trsplittlen(tstringtsp((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pyt	split_extscCs@tg|D]}t|�^q
g|D]}|j^q&�dS(Ni(tnowrap_do_generate_numpy_apitstrtvalue(ttargettsourcetenvtits((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytdo_generate_numpy_api(scCs@tg|D]}t|�^q
g|D]}|j^q&�dS(Ni(tnowrap_do_generate_ufunc_apiRR(RRRRR((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytdo_generate_ufunc_api-scCs�tt|d��\}}t|�}t|�}t|d|d�}t|d|d�}|d}	|||	g}
|
|fS(s\Returns the list of targets generated by the code generator for array
    api and ufunc api.it__s.hs.cs.txt(RRR
t	pbasenametpjoin(RRRtbasetexttdirtbathtcttxttt((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytgenerate_api_emitter2s
cCs[t|d�}t|d�}|j�}|j�t|�}|j|�|j�dS(Ntwtri(topentreadtclosetprocess_strtwrite(t
targetfilet
sourcefileRR-Rtallstrtwritestr((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytdo_generate_from_templateCs


cCs@x9t||�D](\}}tt|�t|�|�qWdS(N(tzipR:R(RRRR-R((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytgenerate_from_templateMscCsNttt|d���\}}ttt|d��|�}|g|fS(Ni(RR$RR%R
(RRRR&R'R-((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytgenerate_from_template_emitterQs"cCsRt|d�}ddlm}|j|j|j�}|j|�|j�dS(NR/i����(tgenerate_umath(R1RR>t	make_codetdefdictRR5R3(R6R7RR-R>tcode((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytdo_generate_umathYs

cCs@x9t||�D](\}}tt|�t|�|�qWdS(N(R;RBR(RRRR-R((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pyR>`scCs!t|d�d}|g|fS(Nis.c(R(RRRR-((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytgenerate_umath_emitterdscCsRd}|jd�|j|d�}|r;|jd�n
|jd�|dkS(Ns]
int
main()
{
#if !(defined __GNUC__ && (__GNUC__ >= 4))
die from an horrible death
#endif
}
s/Checking if compiled with gcc 4.x or above ... s.cs yess noi(tMessaget
TryCompiletResult(tcontexttsrctst((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pyt	CheckGCC4ks	

cCs�d}yt|jd�}Wn
g}nXz:|jd|�|jjd|�|j|d�}Wd||jd<X|dr�|jd�n
|jd�|dS(Ns�
/* check whether libm is broken */
#include <math.h>
int main(int argc, char *argv[])
{
  return exp(-720.) > 1.0;  /* typically an IEEE denormal */
}
tLIBSs0Checking if math lib %s is usable for numpy ... s.cis Yes !s No !(RRRDtAppendUniquetTryRunRF(RGtmathlibRHtoldLIBSRI((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytCheckBrokenMathlibs


cCs;t|�dkr.|j|�}|s.dSn|j|�S(s�Return 1 if mlib is available and usable by numpy, 0 otherwise.

    mlib can be a string (one library), or a list of libraries.i(RtCheckLibRP(tconfigtmlibRI((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pyt
check_mlib�s
cCs:x!|D]}t||�r|SqWtjjd��dS(NssNo usable mathlib was found: chose another one using the MATHLIB env variable, eg 'MATHLIB=m python setup.py build'(RTtSConstErrorst	UserError(RRtmlibsRS((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytcheck_mlibs�s
cCs
tjdkS(sTReturn True if the NPY_NO_SIGNAL symbol must be defined in configuration
    header.twin32(tsystplatform(((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytis_npy_no_signal�scCsWtjd dkrd}n1ytjd}d}Wntk
rLd}nX|dkS(s<Returns True if we should define NPY_NOSMP, False otherwise.is2.4.2it	NPY_NOSMPi(R[tversiontostenvirontKeyError(tnosmp((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pyt
define_no_smp�s	



cCs�|jd�d}d}xDdddgD]3}|j|i|d6d�}|r)|}Pq)q)W|rv|j|�n
|jd�|S(NsChecking for inline keyword... s�
#ifndef __cplusplus
static %(inline)s int static_func (void)
{
    return 0;
}
%(inline)s int nostatic_func (void)
{
    return 0;
}
#endiftinlinet
__inline__t__inlines.ci(RDtNoneRERF(RGtbodyRetkwRI((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytCheckInline�s

cCs�idd6dd6dd6dd6dd	6d
d6}|jd�tid
d6}|j|d�}|r�t|jj�}tt|��}|j||�|S|s�|jd�ndS(NsIntel extended, little endiantINTEL_EXTENDED_12_BYTES_LEtINTEL_EXTENDED_16_BYTES_LEsIEEE Quad precision, big endiantIEEE_QUAD_BEs"IEEE Quad precision, little endiantIEEE_QUAD_LEs$IEEE Double precision, little endiantIEEE_DOUBLE_LEs!IEEE Double precision, big endiantIEEE_DOUBLE_BEs+Checking for long double representation... slong doublettypes.ci(	RDRRERtsconft
lastTargetRRRF(RGtmsgRiRItobjttp((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pytCheckLongDoubleRepresentation�s"

tactions$ARRAYPIGENCOMSTRtemitters$UFUNCAPIGENCOMSTRs$TEMPLATECOMSTRs$UMATHCOMSTR(7t__doc__R[R`tos.pathRR%RR
RR$tcopyRRt"code_generators.generate_numpy_apiRRt"code_generators.generate_ufunc_apiR!tsetup_commonRRRRRtnumscons.numdistR	R4t
SCons.NodeRUt
SCons.BuilderR
tSCons.ActionRRR R"R.R:R<R=RBR>RCRJRPRTRYR]RdRkRxtarray_api_gen_bldtufunc_api_gen_bldttemplate_bldt	umath_bld(((s>/usr/lib64/python2.7/site-packages/numpy/core/scons_support.pyt<module>sR