
    eCi$              "          d Z ddlZddlmZmZ ddlmZ ddlmZmZ  ej	        d          Z
dZd	Zd
ZdZdZ G d de          Z e            Z e            Zej        d	ddddej        dddddej        d	ddddej        dddddej        dddddej        d	ddddej        dddddej        dd ed!dej        d"d#dedej        d$d%d&edej        d'd(dddej        d)d*d+ddej         d,d-d.d+dej!        d/d0d1d2dej"        d3d4ed5diZ#e#$                                D ]I\  Z%Z&e&d6         ek    o#e&d7         ek    oe&d8         ek    oe&d9         ek    Z'e'rJ e%j(         d:            Jd; Z)d@d=Z*d> Z+d? Z,dS )Az?Utilities for mapping browser versions to webassembly features.    N)IntEnumauto   )diagnostics)settingsuser_settingsfeature_matrixiJ   D   i ia c                   :   e Zd Z e            Z e            Z e            Z e            Z e            Z e            Z	 e            Z
 e            Z e            Z e            Z e            Z e            Z e            Z e            Z e            ZdS )FeatureN)__name__
__module____qualname__r   MUTABLE_GLOBALSNON_TRAPPING_FPTOINTSIGN_EXTBULK_MEMORYJS_BIGINT_INTEGRATIONTHREADSPROMISE_ANYMEMORY64WORKER_ES6_MODULESOFFSCREENCANVAS_SUPPORTWASM_LEGACY_EXCEPTIONSWASM_EXCEPTIONSWEBGL2WEBGPUGROWABLE_ARRAYBUFFERS     8/b/s/w/ir/x/w/install/emscripten/tools/feature_matrix.pyr   r   !   s        DFF/TVV(+$&&DFF'+TVV(tvv DFF466DFF/466&466&$&&r!   r   =   i4 i )chromefirefoxsafarinodeK   A   iI i >   iD# O   C   N   ir U   i"       ip 8   3   q      i P   r   E   i   i _   d   iJ       i i`[       i r$   r%   r&   r'   z is no longer neededc                 x     t           v rdS  t          v rdS t                    } fd}t          j        |d         k     r |d           dS t          j        |d         k     r |d           dS t          j        |d         k     r |d	           dS d
|v r#t          j        |d
         k     r |d           dS dS )NFTc                     t          t          |           }t                              dj         d|  d|            d S )Nzcannot use z	 because z is too old: )getattrr   loggerdebugname)setting_namesetting_valuefeatures     r"   report_missingzcaniuse.<locals>.report_missing   sF    Hl33M
LL`w|``l``Q^``aaaaar!   r$   MIN_CHROME_VERSIONr%   MIN_FIREFOX_VERSIONr&   MIN_SAFARI_VERSIONr'   MIN_NODE_VERSION)disable_override_featuresenable_override_featuresmin_browser_versionsr   rI   rJ   rK   rL   )rG   min_versionsrH   s   `  r"   caniuserQ      s   )))5(((4%g.,b b b b b  <#999N'(((5!L$;;;N()))5 <#999N'(((5| 9L<P P PN%&&&5	r!   Fc                    |rt                               |            t          |                                          D ]\  }}d|                                 d}t
          |         |k     r|t          v r=|dk    r|dk    rDt          j        d| dt          |          d| d| d| d	
           tt          
                    d
| d| d|            t          t
          ||           dS )zgUpdates default settings for browser versions such that the given
  feature is available everywhere.
  MIN__VERSIONrK   pthreadscompatibility=z is not compatible with z (z or above required)z	Enabling z to accommodate N)rN   addrO   itemsupperr   r   r   warningrB   rC   setattr)rG   reasonoverriderD   min_versions        r"   enable_featurer`      sB     *  )))/8>>@@ - -dK($**,,(((D~##			'''Fj,@,@  8 8mD) 8 86 8 88 8"8 8 8	9 	9 	9 	9 	MMMMMVMMNNN$,,,'- -r!   c                 :    t                               |            dS )zMAllow the user to disable a feature that would otherwise be on by default.
  N)rM   rX   )rG   s    r"   disable_featurerb      s     (((((r!   c                     t           j        r#dt          v rt          t          j        d           t           j        r5t          t          j        d           t          t          j        d           n2t           j	        st           j
        rt          t          j        d           t           j        rt          t          j        d           t           j        dk    rt          t          j        d           t           j        r&t           j        rt          t          j        d           t           j        r&t           j	        rt          t          j        d           t           j        rt          t          j        d	           t           j        st           j        d
k    rDt           j        rt          t          j        d           d S t          t          j        d           d S d S )NWASM_BIGINTrU   z
shared-memzdynamic linkingr   r   zEXPORT_ES6 with -pthreadzEXPORT_ES6 with -sWASM_WORKERSr   wasmzJWasm Legacy exceptions (-fwasm-exceptions with -sWASM_LEGACY_EXCEPTIONS=1)zCWasm exceptions (-fwasm-exceptions with -sWASM_LEGACY_EXCEPTIONS=0))r   rd   r   r`   r   r   PTHREADSr   r   WASM_WORKERSSHARED_MEMORYRELOCATABLEr   r   
EXPORT_ES6r   r   r   SUPPORT_LONGJMPr   r    r!   r"   apply_min_browser_versionsrl      s    Am}<< 70-@@@ 67?J///7&
3333 6 6 67&555 ?7*,=>>>!7#Z000 KX. K7-/IJJJ QX2 Q7-/OPPP% O724MNNN u!9V!C!C& uW3  6B  C  C  C  C  CW,.sttttt	 "D!Cr!   )F)-__doc__loggingenumr   r    r   r   r   	getLoggerrB   UNSUPPORTEDOLDEST_SUPPORTED_CHROMEOLDEST_SUPPORTED_FIREFOXOLDEST_SUPPORTED_SAFARIOLDEST_SUPPORTED_NODEr   setrM   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   rY   rG   reqsalways_presentrD   rQ   r`   rb   rl   r    r!   r"   <module>rz      s~   F E                - - - - - - - -		+	,	,       ! ! ! ! !g ! ! !$  CEE 355  
	  
	! ! 
	  
	  
	" " 
/	  
	  
	  
.	  
.	  
	  
!	$ $ 
 	# # 

 	 	 
	" "Yr l *//11 C CMGTN&== :O'??:N&==: L$99  BBBBBBB	B  6- - - -8) ) )u u u u ur!   