
    eCi                      @   d dl Z d dlZd dlZd dlZej                            ej                            e                    Zej                            e          Z	ej        
                    d e	           ddlmZmZmZ ddlmZ  e j        d          Zd Zd ZdS )    N   )buildingsharedutils)settingsminimal_runtime_shellc                    g }g }g }t           j        rAt           j        dk     s t           j        dk     st           j        dk     r
d|  d|  d}nSd|  d}nLt           j        r:t           j        dk     s t           j        dk     st           j        dk     rd	|  d}n	d }nd
|  d}dt           j         dg}t           j        dk    rt           j        dk    s|sOt           j	        r|dt          |           dgz  }n#|t           j         dt          |           dgz  }|r||gz  }t           j        rt           j	        r|dgz  }t           j        dk    rUt           j	        r|dt          |           dgz  }n$|dt           j         dt          |           dgz  }|d| d|  dgz  }t           j	        r4d                    |          }t           j        r
|d|z  gz  }n	|d|z  gz  }d}d}t          |          dk    r(t           j	        r||d         z   d z   S ||d         z   d!z   S t           j	        rt           j        rdt           j        st           j        rd"}nd#}t           j        rt           j         d$}	nd%}	d
t           j         d|d<   t           j	        s
|d&|	z  |gz  }t          d' ||z   D                       r||gz  }t          d( ||z   D                       r||gz  }d)                    |          }
|
d*d+                    |          z   d,z   z  }
t          |          dk    r|
d-d.                    |          z  z  }
|
S )/NiI i :   zCWebAssembly.compileStreaming ? WebAssembly.compileStreaming(fetch('z.wasm')) : binary('z.wasm')z$WebAssembly.compileStreaming(fetch('z.wasm'))z-!WebAssembly.instantiateStreaming && binary('zbinary('zscript('z')r   r   zwasm: r[]z
.wasm = r[z];zjs: js   zwasm: supportsWasm ? r[z] : 0zif (supportsWasm) zsupportsWasm ? z : script('z
.wasm.js')z,
  aP    // Detour the JS code to a separate variable to avoid instantiating with 'r' array as "this"
  // directly to avoid strict ECMAScript/Firefox GC problems that cause a leak, see
  // https://bugzil.la/1540101
  var js = URL.createObjectURL(new Blob([r[0]], { type: 'application/javascript' }));
  script(js).then((c) => c({
  %s
  }));z  // Detour the JS code to a separate variable to avoid instantiating with 'r' array as "this"
  // directly to avoid strict ECMAScript/Firefox GC problems that cause a leak, see
  // https://bugzil.la/1540101
  var js = r[0];
  js({
  %s
  });zD  var binary = (url) => fetch(url).then((rsp) => rsp.arrayBuffer());a    function script(url) { // Downloads a script file and adds it to DOM
    return new Promise((ok, err) => {
      var s = document.createElement('script');
      s.src = url;
      s.onload = () => {
#if MODULARIZE
#if WASM == 2
        // In MODULARIZEd WASM==2 builds, we use this same function to download
        // both .js and .asm.js that are structured with {{{ EXPORT_NAME }}}
        // at the top level, but also use this function to download the Wasm2JS
        // file that does not have an {{{ EXPORT_NAME }}} function, hence the
        // variable typeof check:
        if (typeof {{{ EXPORT_NAME }}} !== 'undefined') {
          var c = {{{ EXPORT_NAME }}};
          delete {{{ EXPORT_NAME }}};
          ok(c);
        } else {
          ok();
        }
#else
        var c = {{{ EXPORT_NAME }}};
        delete {{{ EXPORT_NAME }}};
        ok(c);
#endif
#else
        ok();
#endif
      };
      document.body.appendChild(s);
    });
  }
  z
.then(js);;zscript(url)z1script(url).then(() => URL.revokeObjectURL(url));z.js =  zVvar url = %sURL.createObjectURL(new Blob([r[0]], { type: 'application/javascript' }));c              3      K   | ]}d |v V  	dS )zbinary(N .0ss     F/home/ngoprek/emsdk/upstream/emscripten/tools/minimal_runtime_shell.py	<genexpr>z:generate_minimal_runtime_load_statement.<locals>.<genexpr>   &      AAAaAAAAAA    c              3      K   | ]}d |v V  	dS )zscript(Nr   r   s     r   r   z:generate_minimal_runtime_load_statement.<locals>.<genexpr>   r   r   
zPromise.all([z, z])z.then((r) => {
  %s
});z
  )r   *MINIMAL_RUNTIME_STREAMING_WASM_COMPILATIONMIN_SAFARI_VERSIONMIN_NODE_VERSIONMIN_FIREFOX_VERSION,MINIMAL_RUNTIME_STREAMING_WASM_INSTANTIATIONTARGET_JS_NAMEWASMWASM2JS
MODULARIZElenEXPORT_NAMEWASM_WORKERSjoinPTHREADSany)target_basenameprefix_statementsthen_statementsmodularize_importsdownload_wasmfiles_to_load
binary_xhr
script_xhrscript_loadsave_jsloads              r   'generate_minimal_runtime_load_statementr4      sx   / 8 8"V++x/H6/Q/QU]UqtvUvUv Y\k  Y  Y  AP  Y  Y  Ymm W_VVVmm< 
8 "V++x/H6/Q/QU]UqtvUvUv^o^^^mm mm7777M :h5999:- mqX-22=2 U=M(:(:===>>X1SSS=O=OSSSTTo '&m  %x2 %8*$ ]a gPs=7I7IPPPQQex/CeesS`OaOaeeeffo]]]/]]]^^M   &899  
     oo  	   o V* *F 	1 1-**\99-**S00		 ' 5 '  HH1 H!kkGk '///ggg=("9===M! 'ru||%' 'o 	AA!@AAAAA &*%AA!@AAAAA &*% 
$	%	%$/DIIm44
4t
;;$A'&++o*F*FFFD	+r   c                    t                               d           t          j        |j                  }t
          j        r|                    dd          }n#|                    dt          |                    }t          j
                    }|                    d          5 }t          j        ||           t          j        |          }d d d            n# 1 swxY w Y   t          j        d|          rt          j        d|j        z   dz              |                    d	t
          j                  }|                    d
t
          j                  }|                    dt
          j                  }t
          j        r)t          j        |          }t          j        |           nd}|                    d|          }t          j        | ||j                   d S )Nz#generating HTML for minimal runtimez"{{{ DOWNLOAD_JS_AND_WASM_FILES }}}r   z.js)suffixz{{{\s*SCRIPT\s*}}}z--shell-file "z": MINIMAL_RUNTIME uses a different kind of HTML page shell file than the traditional runtime! Please see $EMSCRIPTEN/src/shell_minimal_runtime.html for a template to use as a basis.z{{{ TARGET_BASENAME }}}z{{{ EXPORT_NAME }}}z{{{ TARGET_JS_NAME }}}z({{{ JS_CONTENTS_IN_SINGLE_FILE_BUILD }}})loggerdebugr   	read_file
shell_pathr   SINGLE_FILEreplacer4   r   get_temp_filesget_file
write_filer   read_and_preprocessresearchexit_with_errorTARGET_BASENAMEr$   r   delete_file
output_eol)targetoptions	js_targetr)   shell
temp_files
shell_tempjs_contentss           r   generate_minimal_runtime_htmlrN      s   ,,4555
/',
-
-% zMM>CCEEMM>@ghw@x@xyyE$&&*%(( 5J	Z'''(44E5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Y$e,, |	*W-??  C{  {  |  |  |
--183K
L
L%
---x/C
D
D%
--0(2I
J
J%  /),,K	i    K
--BK
P
P%65'"455555s   #*CC C)loggingosrA   syspathdirnameabspath__file____scriptdir____rootdir__insertr   r   r   r   r   	getLoggerr7   r4   rN   r   r   r   <module>rZ      s     				 				 



 9 9::goom,, ;    % % % % % % % % % %      		2	3	3X X Xv6 6 6 6 6r   